在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. C++对象的生存期笔记

    下面随笔记录了C++对象的生存期知识 静态生存期 这种生存期与程序的运行期相同. 在文件作用域中声明的对象具有这种生存期. 在函数内部声明静态生存期对象,要冠以关键字static . 动态生存期 块作 ...

  2. 【HTB系列】 靶机Swagshop的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:是大方子(Ms08067实验室核心成员) 总结与反思 使用vi提权 magento漏洞的利用 magescan 工具的使用 靶机 ...

  3. pip命令安装python包到指定目录

    pip install wxpython --target=D:\Server\Python38\Lib\site-packages

  4. JAVA多线程与锁机制

    JAVA多线程与锁机制 1 关于Synchronized和lock synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码 ...

  5. Java I/O流 04

    I/O流·其他流 序列流 * A:什么是序列流 * 序列流可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始,读完后再读下一个 * B:使用方式 * 整合两个:Sequen ...

  6. CVE-2016-5734-phpmyadmin-4.0.x-4.6.2-代码执行

    参考 https://www.jianshu.com/p/8e44cb1b5b5b 漏洞原因 phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.在其查找并替换字符串功能中,将用户 ...

  7. 关于PHP的__construct()函数

    1 <?php 2 header("Content-Type:text/html;charset=utf-8");//调整为utf-8编码格式 3 class car 4 { ...

  8. Azure AD, Endpoint Manger(Intune), SharePoint access token 的获取

    本章全是干货,干货,干货,重要的事情说三遍. 最近在研究Azure, Cloud相关的东西,项目中用的是Graph API(这个在下一章会相信介绍),可能是Graph API推出的时间比较晚,部分AP ...

  9. CSS浮动布局带来的高度塌陷以及其解决办法

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. 【LeetCode】2020-03 每日一题

    121. 买卖股票的最佳时机(简单) [分类]:模拟.思维 [题解]:可以用O(n)的复杂度完成,只需要在遍历的时候记录到当前位置为止买入股票的最小价格minn,再维护一个当前卖出股票价(a-minn ...