linux病毒通过U盘传播,一个通过U盘传播的病毒详细分析,近期抓的但是是09年的病毒...

本帖最后由 清香白莲 于 2017-8-30 10:30 编辑

1.介绍

sample_sha1:0c9dec73697f74a8657e538eef8016a515e6cbc0图标:

55fd2b2273b5a8b4531f72773c469d6e.gif

图标.png (2 KB, 下载次数: 11)

2017-7-15 17:40 上传

传播途径:U盘,硬盘

该样本是某个群友在自己学校打印店里抓到的虫子。VT上显示最早上传时间是2009年。样本本身是Delphi程序,但是会释放一个VB程序。程序应该是中国人编写的,程序中含有“中华人民共和国万岁”和“感动中国特别奉献”等字样。

该样本会将自己伪装成文件夹,将除C盘以外的所有磁盘的文件夹隐藏,并将自身拷贝过去,并重命名为原文件夹名的名称,同时程序运行过程中会尝试打开与自身同名的文件夹,用户很难发现自己中毒。破坏力最大的是,当样本检测到当前日期为每月的1号、10号、21号或29号时,会将磁盘(C盘除外)里的所有文件删除。

2.行为分析

2.1注册表行为:

1. 新添加键

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\dongtian]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dongtian]

2. 删除值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt] "CheckedValue"=dword:00000001

3. 新添加值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] "msfsa"="C:\\windows\\avb.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\dongtian] "Type"=dword:00000110 "Start"=dword:00000002 "ErrorControl"=dword:00000000 "ImagePath"=“C:/Windows/System32/javasc.exe”"DisplayName"="mywinter" "ObjectName"="LocalSystem" "Description"="dfdf"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\dongtian\Security]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dongtian]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dongtian\Security]

4. 改变值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL] "CheckedValue"=dword:00000001 "CheckedValue"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "Hidden"=dword:00000001 ->00000002 "HideFileExt"=dword:00000000 ->00000001

2.2创建服务

服务名称:dongtian

显示名称:mywinter

描述:dfdf

可执行文件的路径: C:\windows\system32\javasc.exe

启动类型:自动

2.3释放文件

GHO.exe , javasc.exe, mscb.exe, sdafdf.exe, nasm.exe, mydat1, mydat2

3.详细分析

3.1总体分析:

这是一个Delphi程序,使用Delphi Decompiler分析。有五个响应过程:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片2.png (28.46 KB, 下载次数: 2)

2017-7-15 17:40 上传

在IDA中分析,主程序流程很简单,CreateForm创建Form,然后Run进入消息响应循环:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片3.png (21.21 KB, 下载次数: 2)

2017-7-15 17:40 上传

接下来对各个响应过程进行详细分析。

3.2 FormCreat

在CreateForm时进入FormCreat过程,下图是FormCreat的流程图:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片4.png (27.98 KB, 下载次数: 1)

2017-7-15 17:40 上传

具体步骤:

①程序在开始调用ParamStr(0),获取自身进程名,比较进程名是不是javasc.exe,如果是则②,否则走③;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片5.png (44.1 KB, 下载次数: 1)

2017-7-15 17:40 上传

55fd2b2273b5a8b4531f72773c469d6e.gif

图片6.png (9.45 KB, 下载次数: 1)

2017-7-15 17:40 上传

②将自身拷贝到C:\Windows下,并命名为sdafdf.exe,同时运行sdafdf.exe,之后便调用halt0()退出;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片7.png (21.84 KB, 下载次数: 1)

2017-7-15 17:40 上传

③首先会判断与程序自己同名的文件夹是否存在,

55fd2b2273b5a8b4531f72773c469d6e.gif

图片8.png (12.66 KB, 下载次数: 1)

2017-7-15 17:40 上传

如果存在则会调用ShellExecuteA打开文件夹,

55fd2b2273b5a8b4531f72773c469d6e.gif

图片9.png (12.37 KB, 下载次数: 1)

2017-7-15 17:40 上传

无论与自己同名的文件夹是否存在,接下来都会判断C:\windows\avb.exe是否存在,如果存在,则④,否则⑧;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片10.png (3.16 KB, 下载次数: 3)

2017-7-15 17:40 上传

④修改注册表(sub_44F3A0),然后进入⑤;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片11.png (30.67 KB, 下载次数: 1)

2017-7-15 17:40 上传

⑤并且创建拷贝自身C:\windows\system32\javasc.exe,并在sub_44E5CC中将javasc.exe注册为服务,进入⑥;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片12.png (16.79 KB, 下载次数: 1)

2017-7-15 17:40 上传

55fd2b2273b5a8b4531f72773c469d6e.gif

图片13.png (66.01 KB, 下载次数: 1)

2017-7-15 17:40 上传

⑥修改注册表不显示隐藏文件,并且修改文件夹选项也没用,删除文件夹选项中的隐藏已知文件类型的扩展名选项,删除这个键;

55fd2b2273b5a8b4531f72773c469d6e.gif

图片14.png (9.44 KB, 下载次数: 0)

2017-7-15 17:40 上传

(左图为正常情况下文件夹选项,右图为感染蠕虫后文件夹选项)

55fd2b2273b5a8b4531f72773c469d6e.gif

图片15.png (49.12 KB, 下载次数: 0)

2017-7-15 17:40 上传

55fd2b2273b5a8b4531f72773c469d6e.gif

图片16.png (48.83 KB, 下载次数: 0)

2017-7-15 17:40 上传

⑦接下来再次修改注册表,将avb.exe加入注册表Runonce中,之后退出;

⑧首先创建拷贝自身C:\windows\avb.exe,这里和上面拷贝方法相同,进入⑨;

⑨创建拷贝自身C:\windows\system32\javasc.exe,并在sub_44E5CC中将javasc.exe注册为服务,接下来再次修改注册表,将avb.exe加入注册表Runonce中,进入⑩;

⑩比较进程名是不是C:\windows\avb.exe,如果是则⑪,否则⑫;

⑪创建拷贝自身C:\windows\mscb.exe,并执行,之后调用halt0()退出;

⑫比较是不是C:\windows\mscb.exe,如果不是,则程序调用halt0()退出,如果是则CreateForm过程正常退出,程序继续运行,进行下面timer的响应过程。

3.3 timer4:

首先关闭计时器,然后读取资源,释放C:\windows\nasm.exe,并且运行nasm。nasm.exe的分析下文再介绍

55fd2b2273b5a8b4531f72773c469d6e.gif

图片17.png (30.51 KB, 下载次数: 1)

2017-7-15 17:40 上传

3.4 timer2:

首先获取当前系统时间

55fd2b2273b5a8b4531f72773c469d6e.gif

图片18.png (20.01 KB, 下载次数: 1)

2017-7-15 17:40 上传

然后在0x0044F2DE处,获取磁盘信息,具体获取过程:设置寄存器bl的值由0x43增加到0x5B,进行24循环,遍历C盘到Z盘,利用DiskSize判断磁盘是否存在,利用DriverType获取磁盘类型:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片19.png (69.1 KB, 下载次数: 1)

2017-7-15 17:40 上传

获取磁盘信息结束后,会对之前获取的系统时间重新编码为年月日的形式,之后开始比较,如果当期时间为2009年3月之前,则Timer2过程就结束,并且判断当期日期是不是1号,10号,21号或29号病毒,如果是这几个日期会进行删除操作:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片20.png (56.2 KB, 下载次数: 0)

2017-7-15 17:40 上传

删除所有文件

55fd2b2273b5a8b4531f72773c469d6e.gif

图片21.png (22.58 KB, 下载次数: 0)

2017-7-15 17:40 上传

3.5 Timer1:

这是该样本最重要的感染部分,首先会遍历目录,获取目录下的所有文件夹名,下图保存的是获取的文件夹信息,从123到新建文件夹均是文件夹名:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片22.png (32.67 KB, 下载次数: 1)

2017-7-15 17:40 上传

之后设置文件夹属性,将文件夹隐藏:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片23.png (11.11 KB, 下载次数: 1)

2017-7-15 17:40 上传

然后创建以文件夹名为名称的可执行程序,伪装成文件夹:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片24.png (27.41 KB, 下载次数: 1)

2017-7-15 17:40 上传

其中CopyFile的第三个参数为True,表示若拷贝过去的文件路径下已存在相同文件,那么不替换文件。

3.6 timer3:

修改注册表

55fd2b2273b5a8b4531f72773c469d6e.gif

图片25.png (34.46 KB, 下载次数: 1)

2017-7-15 17:40 上传

3.7 nasm.exe

在timer4过程中释放了nasm.exe。nasm.exe与mscb.exe之间实现了双进程守护,两个进程彼此创建。首先在PEID中查看nasm.exe发现是VB程序,祭出VB反编译神器VB Decompiler。

55fd2b2273b5a8b4531f72773c469d6e.gif

图片26.png (26.1 KB, 下载次数: 2)

2017-7-15 17:40 上传

nasm.exe程序较简单,VB Decompiler反编译的结果也很清晰,基本就是源码,VB De反编译出nasm.exe程序中的函数有以下几个:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片27.png (12.99 KB, 下载次数: 0)

2017-7-15 17:40 上传

其中Proc_403E60的作用是返回字符串“C:\Windows”,Proc_403FC0是Proc_403E60调用的一个中间过程,对字符串进行处理。

Proc_402A20利用CreateToolhelp32Snapshot、Process32First、Process32Next这三个API遍历进程,获取进程列表:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片28.png (59.57 KB, 下载次数: 0)

2017-7-15 17:40 上传

Form_Load_403260的作用是调用Proc_403510,Proc_403510会将masb.exe文件的前0x5000字节存储为“C:\Windows\mydat1”,将后面的字节存储为“C:\Windows\mydat2”:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片29.png (37.07 KB, 下载次数: 0)

2017-7-15 17:40 上传

三个文件属性比较:

55fd2b2273b5a8b4531f72773c469d6e.gif

图片30.png (34.34 KB, 下载次数: 0)

2017-7-15 17:40 上传

processhelp_Timer_4038D0会循环进程列表中有没有mscb.exe进程和heihu.exe进程。笔者研究了很久,也没找到heihu.exe程序是哪一个程序,但是如果程序检测到heihu.exe进程的存在,nasm.exe就会执行关机的shell命令:"shutdown -f -s -t 10 -c  heihu error!"

55fd2b2273b5a8b4531f72773c469d6e.gif

图片31.png (13.62 KB, 下载次数: 1)

2017-7-15 17:40 上传

如果mscb.exe进程不存在,processhelp_Timer_4038D0会运行mscb.exe程序,但是如果processhelp_Timer_4038D0检测到C:\Windows路径下没有mscb.exe文件,则会执行existh_Timer_4038D0;existh_Timer_4038D0利用了和Proc_403510相同的手法,不过这一次是将mydat1和mydat2文件合并存储为mscb.exe程序。

至此,nasm与mscb.exe成为了守护彼此的“情侣”进程!

4.总结

本次分析的病毒,利用了各种途径让自己存活下来,虽然分析过程比较长,但是程序流程还是很清晰。该病毒将自己伪装成文件夹,通过U盘传播,利用守护进程保证自己难以被杀死,将自己注册为服务,实现了内存常驻。解压密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值