安全路透社
当前位置:安全路透社 > 网络转载 > 正文

解析U盘病毒传播之文件欺骗

* 本文作者:scu-igroup

前言

现如今,U盘作为便携的存储设备,方便人们的同时,也成为了黑客传播病毒的载体。U盘病毒传播,从早期利用 Autorun.inf运行的U盘病毒,到震网病毒的0day 利用,再到近几年的 BADUSB,都曾是病毒传播的方式。笔者近期在Freebuf上见到采用诱导用户点击病毒文件的传播方式,见这篇文章 ,觉得比较有意思,于是照着这种思路,简单地实现了一遍,现将这两天的所得总结如下。

功能简介

如何完成诱导用户点击?该U盘病毒通过伪造U盘中的同名文件或文件夹,同时将真实的文件或文件夹隐藏,以诱导用户点击同名的病毒文件,来完成病毒的运行和传播。如下图所示:

1.png

第一行的文件为原来的文件,而且属性已经改为隐藏,第二行为替换后的文件。当用户想使用原来的文件时,由于原来的文件已经隐藏,所以同名的新创建的文件被点击。这时,新创建的文件不仅会打开原来的文件,还能继续在后台运行。对于用户来说,原来的文件已经打开了,并未见到任何异常。而对于攻击者而言,只要设计好新创建文件的程序,就能利用一直运行的新创建的文件程序来完成入侵主机的攻击。

程序设计流程

整个程序的设计流程是相当简单的,U盘盘符获取->选中被替换文件并将其隐藏 ->替换文件程序设计。U盘盘符获取利用常用的API函数即可实现,关键在第二部分如何进行被替换文件的选择,以及第三部分替换文件程序如何设计才更具有欺骗性。

详细分析

1.U盘盘符的获取

 利用GetLogicalDrives()获取磁盘设备,再利用GetDriveType()判断是否是 U盘设备从而获得U盘盘符。

2.jpg

 

2.被替换文件的选择

这里是设计的关键,首先我们要考虑替换什么样的文件,而什么样的文件又该优先替换。常用的文件类型如.exe、.doc/.docx 、 .txt、.ppt、.pdf 是我们首先考虑替换掉的,因为这些文件放入 U盘是最可能被使用的。同时,从文件替换优先级来思考,则由文件的修改时间来排列这些文件被替换的优先顺序是合理且有效的。最后考虑到设计的可行性,我们将文件名长度也纳入文件被替换优先级的影响因素,因为我们的替换文件为一个可执行程序所以必须以 .exe 结尾,当用户未开启显示文件后缀的时候,这个没有任何影响。反之,多出来的 .exe后缀还是极为显眼的,这时一个长的文件名就起到作用了。有心的朋友应该会发现,在日常使用电脑时,过长的文件名会自动省略文件名末尾,这时自然就看不到文件多出来的后缀了。因此对于被替换文件的优先级选择,首先考虑文件名长度,其次考虑文件最近修改时间。

判断文件替换优先级时先判断文件名长度,如果大于指定的长度,这里为40个字符。因为正常电脑不经过设置,超过40个字符长度,文件名末尾就会被隐藏。如下图所示:

3.png

这时就可以实现文件欺骗而不易使用户察觉。因此,程序运行时先遍历U盘根目录下的所有文件和文件夹,一旦发现长度满足的就马上针对该文件进行替换。但是当U盘根目录中没有符合长度的文件存在时,就以文件修改日期为优先级判断标准,最近改动过的文件是最有可能被用户再次使用的,这种情况下只要用户未开启文件类型显示,或者用户不够细心,也可以实现文件欺骗。

4.png

       如上图所示,文件名都比较短,程序运行时只考虑修改日期,故修改日期最新的文件ksolaunch.exe被优先替换。修改日期优先级的判断依赖于 Windows 平台下的一个WIN32_FIND_DATA结构,这个结构体存储着文件的一些属性,该结构的定义如下:

 

5.png

循环取出每个文件的最近修改时间,再利用简单的递归比较,就能获得最新修改的文件,然后进行替换。

最后不得不说的就是用来进行文件替换程序的设计。考虑到文件必须具有欺骗性,名字部分除了末尾的必不可少的.exe后缀以外,其他都必须一样。还有就是图标的问题,如果一个word文档的图标,突然变成了一个可执行程序的图标,那一眼就能被发现。所以用来进行文件替换的文件必须具有欺骗性的图标。

如下是常用的图标资源文件

6.png

替换文件的图标资源文件是由网上图标提取工具提取出的,网上有很多这种工具的资源,关键是要找到存储相关图标资源的文件,本文利用的图标资源可在C:\Windows\System32\shell32.dll、 C:\Windows\Installer\{90140000-0011-0000-0000-0000000FF1CE}\wordicon.exe 、C:\Windows\Installer\{90140000-0011-0000-0000-0000000FF1CE}\pptico.exe ,这三个路径下获取,本文结尾会提供实现代码,其中也包括这些图标资源文件。

除此之外,当用户点击了替换后的文件,必须能启动原来被隐藏的文件,这样才能做到了无痕迹,所以替换文件程序中必须包括创建进程的功能。本文是利用ShellExecute()函数创建进程的。这样就可以在进程创建代码后面随意添加自己需要的功能,达到入侵主机而不被用户发现的目的。至此,一个文件欺骗入侵技术的整个流程就实现了。以下是替换文件程序:

7.png

总结

利用文件欺骗的方法来实现入侵主机的方法,虽然没有什么技术上的难点,但胜在易实现,且具有很强的迷惑性,让人防不胜防。针对这种类型的U盘病毒,最好方式就是养成打开文件名后缀,并打开显示隐藏文件选项的习惯,不轻易运行 U 盘中的可执行文件。不过,部分杀软如360已经禁止运行U盘中的可执行文件,因此,这种方法也越来越具有局限性。

最后附上源代码地址:http://github.com/scu-igroup/Deceptive-document,还有就是我的程序功能演示:

录像18.gif

* 本文作者:scu-igroup

未经允许不得转载:安全路透社 » 解析U盘病毒传播之文件欺骗

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册