在U盘中发现病毒

前段时间需要往虚拟机中拷贝点资料,如同往常一样,插上我的U盘,并且在虚拟机的设置中选择连接U盘。奇怪的是这次的连接时间较以往长,并且还出现了“自动播放”窗口:

图1 自动播放窗口

在扫描完后,来到了U盘的打开类型选择窗口:

图2

以前我在虚拟机中使用U盘,都没有出现过“自动播放”的情况。尽管如此,我这次也没在意,选择了“打开文件夹以查看文件”。但是在U盘中却发现了奇怪的文件:

图3

上图的红框中的这几个文件,之所以说很奇怪,是因为它们都是使用了文件夹的图标,貌似是一个文件夹,但是在文件名称的后面却跟着一个“.exe”的小尾巴。诚然,我的U盘中本来确实有这四个文件夹,但是我不记得给他们加上了“.exe”这样的小尾巴。而不带小尾巴的真实的文件夹却找不到了。这就让我很是怀疑,于是分别查看这几个文件的属性:

图4

可见这四个并不是文件夹,而是不折不扣的应用程序,并且它们的大小还都是一致的。看到这里,就可以基本确定了,我的U盘是中了病毒了。

尝试手动消灭病毒

初步分析,这个病毒会将自身伪装成我的U盘中本来存在的文件夹,从而诱惑我去点击。那么原始的文件夹是被删除了还是被隐藏了呢?不妨在设置里面调整一下:

图5

然后就能够看到隐藏的文件与文件夹了:

图6

在上图中,红色框中的就是病毒程序,蓝色框中的就是我的原始文件夹。可见它们只是被设置成了隐藏,而没有被删除,看来病毒还是比较人性化的。通过设置,除了显示出了我本来的文件夹外。上图的第三行第四列出现了一个名为autorun.inf的文件,而第四行第四列出现了一个同样是文件夹的图标,名为Recycle.exe的文件,看来这个文件很可能与下面的四个文件也是一伙的。打开autorun.inf,看看它的内容是什么:

[AutoRun]

open=Recycle.exe

shell\1=打开(&O)

shell\1\Command=Recycle.exe

shell\2=浏览(&B)

shell\2\Command=Recycle.exe

shellexecute=Recycle.exe

很明显,每次U盘自动播放,都会运行Recycle.exe这个程序。那么现在可以尝试一下,将autorun.inf、Recycle.exe以及另外四个病毒文件删除掉,然后拔出U盘,之后在虚拟机中重新连接U盘。本以为病毒就不会再出现了,但是“自动播放”对话框再次出现,打开U盘,本来被删除的病毒再次顽强地回来了。这只能说明,病毒对于我们的操作系统也产生了影响,应当分析一下病毒对于系统的改动情况。

为了简单起见,这次不妨使用“火眼”帮我们进行分析。主要看一下它对注册表的修改情况以及看看它将自身隐藏在了什么位置:

图7 注册表监控

看来病毒在Run下创建了自启动项目。不过我的虚拟机中的Run下面的病毒名称和“火眼”提供的名称不一样,看来病毒可能是随机地对自身进行了命名操作,那么这里需要将这个位置删除掉。再看一下文件的监控:

图8 文件监控

同样的,在我的虚拟机系统中的病毒文件名称和上图中的名称也是不一致的,不过没关系,毕竟也是定位到了。但是首先应当利用任务管理器将病毒进程结束掉,然后再删除病毒本体:

这样一来,我们就成功地通过纯手动的方式,解决掉了这个病毒。

补充说明两个知识

最后还有两个问题需要补充说明。第一个问题是需要给大家讲解一下“自动播放”。事实上,U盘病毒传播技术的原理是病毒首先打开U盘的自动播放功能,然后向U盘写入病毒程序和autorun.inf文件,autorun.inf文件记录了用户选择何种程序来打开U盘的文件。如果autorun.inf指向了病毒程序,那么Windows就会运行这个程序,从而引发病毒。U盘自动播放功能的设置,是在注册表的

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer这个路径下面的“NoDriveTypeAutoRun”键值的位置。对于XP系统来说,这个值默认为0x91:

图10

这个0x91代表的是所有被禁止自动运行的设备值的总和。将0x91转换为二进制数就是10010001,其中每一位代表一个设备,在Windows系统中,不同设备会用下表中的不同数值进行表示:

上表中,数值为“0”表示设备运行,“1”表示设备不运行。可以发现,默认情况下,Windows禁止80H、10H以及01H这些设备自动运行,这些数值累加起来,正好就是16进制的91。从这个角度来说,由于U盘的的设备值为04H,那么事实上只要我们将“NoDriveTypeAutoRun”的键值设置为0x91+0x04,也就是0x95,就可以禁止U盘的自动播放功能了。

第二个需要说明的问题是,我之所以能够发现病毒文件,主要还是因为病毒名称的后面带了一个“.exe”的小尾巴。事实上,我们是可以通过设置来让文件的扩展名始终无法显示的。在注册表中找到

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt中的UnCheckedValue项,将它的值设为1,那么无论在“文件夹选项”中如何更改,文件扩展名都是无法显示的。相信如果病毒的作者知道这一点并且运用在这个病毒身上,那么我一会中招的。

小结

我个人觉得,只要我们平时养成危机意识,那么即便我们的计算机中没有安装任何杀毒软件,病毒也是难有可乘之机的。当然我在这里还是建议大家,最好还是安装杀毒软件,并且及时更新病毒库,不要给恶意程序任何机会。

病毒木马查杀实战第014篇:U盘病毒之手动查杀的更多相关文章

  1. 病毒木马查杀实战第022篇:txt病毒研究

    前言 反病毒爱好者们非常喜欢讨论的一个问题就是,现在什么样的病毒才算得上是主流,或者说什么样的病毒才是厉害的病毒呢?我们之前的课程所解说的都是Ring3层的病毒.所以有些朋友可能会觉得.那么Ring0 ...

  2. 病毒木马查杀实战第024篇:MBR病毒之编程解析引导区

    前言 通过之前的学习,相信大家已经对磁盘的引导区有了充分的认识.但是我们之前的学习都是利用现成的工具来对引导区进行解析的,而对于一名反病毒工程师而言,不单单需要有扎实的逆向分析功底,同时也需要有很强的 ...

  3. 病毒木马查杀实战第023篇:MBR病毒之引导区的解析

    前言 引导型病毒指寄生在磁盘引导区或主引导区的计算机病毒.这种病毒利用系统引导时,不对主引导区的内容正确与否进行判别的缺点,在引导系统的过程中入侵系统,驻留内存,监视系统运行,伺机传染和破坏.按照引导 ...

  4. 病毒木马查杀实战第025篇:JS下载者脚本木马的分析与防御

    前言 这次我与大家分享的是我所总结的关于JS下载者脚本木马的分析与防御技术.之所以要选择这样的一个题目,是因为在日常的病毒分析工作中,每天都会遇到这类病毒样本,少则几个,多则几十个(当然了,更多的样本 ...

  5. 病毒木马查杀实战第011篇:QQ盗号木马之专杀工具的编写

    前言 由于我已经在<病毒木马查杀第004篇:熊猫烧香之专杀工具的编写>中编写了一个比较通用的专杀工具的框架,而这个框架对于本病毒来说,经过简单修改也是基本适用的,所以本文就不讨论那些重叠的 ...

  6. 病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析

    前言 按照我的个人习惯,在运用诸如IDA Pro与OllyDBG对病毒进行逆向分析之前,我都会利用一些自动化的工具,通过静态或动态的分析方法(参见<病毒木马查杀第008篇:熊猫烧香之病毒查杀总结 ...

  7. 病毒木马查杀实战第009篇:QQ盗号木马之手动查杀

    前言 之前在<病毒木马查杀第002篇:熊猫烧香之手动查杀>中,我在不借助任何工具的情况下,基本实现了对于"熊猫烧香"病毒的查杀.但是毕竟"熊猫烧香" ...

  8. 病毒木马查杀实战第020篇:Ring3层主动防御之基本原理

    前言 假设说我们的计算机中安装有杀毒软件,那么当我们有意或无意地下载了一个恶意程序后.杀软一般都会弹出一个对话框提示我们,下载的程序非常可能是恶意程序,建议删除之类的.或者杀软就不提示.直接删除了:或 ...

  9. 病毒木马查杀实战第012篇:QQ盗号木马之逆向分析

    前言 在本系列的文章中,对每一个病毒分析的最后一个部分,若无特殊情况,我都会采用逆向分析的手段来为读者彻底剖析目标病毒.但是之前的"熊猫烧香"病毒,我用了三篇文章的篇幅(每篇250 ...

随机推荐

  1. 剑指 Offer 67. 把字符串转换成整数 + 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  2. POJ-1015(背包变形+输出路径)

    Jury Compromise POJ-1015 推荐几个较好的介绍和理解:https://blog.csdn.net/lyy289065406/article/details/6671105 htt ...

  3. 设计模式之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式的由来 所有设计模式都是为解决某类问题而产生的,那么简单工厂模式是为解决什么问题呢?我们假设有以下业务场景: 在一个学生选课系统中,文科生用户选课时,我们要获得文科生的所有课程列表:理 ...

  4. 1.4 数据库和常用SQL语句(正文)——MySQL数据库命令和SQL语句

    前面我们已经讲述了,登录时,我们使用mysql –u root –p命令进行,此时如果设置了密码,则需要输入密码. 输入密码后即进入MySQL的操作界面,此时,命令行窗体左侧显示"mysql ...

  5. Python:垃圾回收

    有很多不同的方法来实现垃圾回收,例如跟踪,引用计数,转义分析,时间戳和心跳信号等.不同的语言依赖于不同的垃圾回收实现,例如,有些将其与编译器和运行时系统集成在一起.而其他语言则可能需要事后设置,甚至可 ...

  6. python plt画图横纵坐标0点重合

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot a ...

  7. golang 微服务以及相关web框架

    golang 中国gocn golang Applicable to all database connection pools xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常 ...

  8. Python中并发、多线程等

    1.基本概念 并发和并行的区别: 1)并行,parallel 同时做某些事,可以互不干扰的同一时刻做几件事.(解决并发的一种方法) 高速公路多个车道,车辆都在跑.同一时刻. 2)并发 concurre ...

  9. C++如何解析函数调用

    C语言是一个简单的语言.用户针对每一个函数,只能设置一个唯一的函数签名.但是C++而言,就给了我们很多的灵活性: 你可以将多个函数设置为相同的名字(overloading) 你可以使用内置操作符重载( ...

  10. 一文读懂SuperEdge拓扑算法

    前言 SuperEdge service group 利用 application-grid-wrapper 实现拓扑感知,完成了同一个 nodeunit 内服务的闭环访问 在深入分析 applica ...