这个病毒通过可移动存储介质传播,使用了应用层APC注入和dga域名技术,整个执行过程分为4个阶段,首先从资源节中解密出一段shellcode和一个PE,执行shellcode,创建一个同名的傀儡进程,将解密出来的PE注入这个傀儡进程中启动,然后启动并通过apc注入的方式注入系统进程svchost.exe,从内存中解密了1248个dga域名尝试连接,并执行后续的恶意操作。
MD5: 9de070f6864bc64e0fcac70a0c881cfb
SHA1: 8b5c9c3f7ca2921542252b92d749696c75f617b2
SHA256: d59d469759bce4bb41ffa92a617570770db3e9712a1da308301131f6806c8123
文件大小: 118 KB (121,344 字节)
Link date: 6:43 2011/3/18
Publisher: n/a
Company: Tometa Software, Inc.
Description: Owo Giqer Idif
Product: Bomisyh
Prod version: 2, 8
File version: 2, 8, 7
MachineType: 32-bit
Verified: Unsigned
第1阶段 病毒母体
从资源节中解密一段数据,数据包括一段shellcode和一个pe,执行这段shellcode,
这个样本的主体功能如下,注册了一个异常处理函数用来处理程序异常,后面会通过主动div 0来产生异常,会触发调用这个函数,应该是用来对抗调试用的。
注册一个回调函数,每隔20毫秒调用一次,主要功能在这个回调函数中。
TimeQueueHandle = CreateTimerQueue()
CreateEventA(hEvent,0,0,0)
RtlInitializeCriticalSection(gCriticalSection_40C7C0);
//捕获程序产生的异常,使用自定义函数TopLevelExceptionFilter_4011A0来处理
SetUnhandledExceptionFilter(TopLevelExceptionFilter_4011A0);
gTickCount_40C7E4 = GetTickCount();
//注册一个回调函数,每隔20毫秒调用一次
CreateTimerQueueTimer(hNewTimer_v6,TimeQueueHandle_v5,sub_401540,0,1,20,0);
从资源节中读取名为doma的资源。
解密资源节中数据,分配一段0x820大小的可执行内存,将解密出内容的前0x820字节拷贝过去 这是一段shellcode,将0x820至0x27220作为参数传入(这是一个PE)。
使用OD动态调试,将这段shellcode dump出来,下面分析这段shellocode。
第2阶段 shellcode
这段shellcode的主要功能是创建一个同名的傀儡进程,将pe注入其中执行。
首先获取下列api的地址。
然后创建一个同名的进程,将参数中的PE注入到傀儡进程中启动。
下面重要分析这个PE。
第3阶段 同名傀儡进程
注入傀儡进程中的pe的基本信息如下:
Verified: Unsigned
Link date: 20:23 2017/10/26
MachineType: 32-bit
MD5: F5CD7C49DEF09E1DEBC4559F1A7EB3BB
SHA1: 980C52CACD969F9524FBE254F5F42753654AFA92
SHA256: 763e1dd259fde007e1d1bb28c46b5941d44dad8754b9604485cf24682847f786
编译器: Microsoft Visual C/C++(2010)[-]
链接程序: Microsoft Linker(10.0)[GUI32]
文件大小: 154 KB (158,208 字节)
首先获取命令行参数,若带参数的话,说明用户点击了lnk文件,使用资源管理器打开同名的文件夹或执行同名的文件。
读取系统的磁盘信息,判断当前系统是否为沙箱环境,是的话,退出。
遍历注册表中的开机启动项,跳过自身的启动项({893B0615-D58A-CE78-7A5B-D4C7F40D0C54}
)和文件路径中含有关键字\\Microsoft\\Windows\\Themes、 \\WindowsUpdate、 \\Windows Live
的项。
若文件路径含有\Temp、'{'、'}'、.exe,或者启动项中含有'{'、'}'、 "Microsoft"、 "Windows" 、"Kernel"的话,删除相应的启动项。
对应其它启动项,关闭对应的进程,若是隐藏文件,重启后将其删除。
创建一个名创建名为{893B0615-D58A-CE78-7A5B-D4C7F40D0C54}
的事件对象,防双开,若存在同名的event,返回0x12345678。
创建进程C:\windows\system32\svchost.exe
,并挂起,将当前病毒副本拷贝进行svchost进程空间,将当前程序的内存镜像复制到svchost进程中,APC注入svchost进程,执行sub_407140函数。
第4阶段 svchost.exe
在svchost.exe的进程空间中主要执行sub_407140的功能,病毒的主要的功能就在这个函数中。
1.首先添加了一个计划任务,然后在注册表中添加了一个开机启动项,启动项和计划任务均为{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54}
,均指向文件c:\programdata\{893B0616-D589-CE78-7A5B-D4C7F40D0C54}\2484d689.exe
。
2.若当前病毒进程是从U盘上感染的,删除掉U盘上的病毒母体。
接下来,创建了一系列线程,来执行不同的操作。
3.创建线程Thread_405c20,创建一个死循环,每隔5秒,检查一次计划任务和注册表中的开机启动项,若被删除了,再添加一遍。
4.创建线程Thread_406110,创建一个死循环线程(间隔10s),通过CRC方式对比当前内存母体与磁盘母体文件是否相同,不同则将内存母体替换磁盘母体(便于实时更新,或者是防止母体文件被篡改)
5.创建线程Thread_408F70,感染可移动存储介质。遍历U盘根目录的文件,根据不同的驱动器生成一个隐藏文件和文件名(不同的系统上不一样),将病毒副本释放其中。如这样的文件名
如X:\\{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe
。
隐藏根目录下的文件夹,创建一个同名的快捷方式,lnk文件的target如%comspec% /c "{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe '原来的目录名\'"
,当用户的点击这个lnk文件时,会先执行病毒副本,然后再打开原来的目录或文件。
6.创建线程Thread_406370,从C2下载新的病毒版本,若比当前版本新,则会更新内存和磁盘上的病毒文件。这个下载的链接是从全局变量gPayload_428010中解密得到的。
7.从系统中寻找一个进程(跳过teamviewer.exe和tv_w32.exe,当前进程和64位的进程),将sub_401fc0注入,作用是当当前进程退出后,启动病毒母体。
没有找到合适的进程的话,启动一个notepad进程进行注入。用来保护自身进程被kill。
8.将当前时间写入注册表HKEY_CURRENT_USER\Software\Classes\CLSID\{893B0615-D58A-CE78-7A5B-D4C7F40D0C54}
9.连接C2,这里共解密出1428个不同的C2地址,会逐个请求这些域名,直到找到可用的c2地址,与其建立连接,会将当前系统信息发送给控制端,从c2下载载荷执行,执行后续的恶意行为。这一部分逻辑比较复杂。
感染U盘的症状
感染前
感染后
lnk文件的目标为%comspec% /c "{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe 'python逆向\'"
这样,用户在点击快捷方式之后,就会运行病毒,并将对应的目录名传递给病毒,病毒会打开相应的目录,并执行感染系统的操作。
hash
MD5: 9de070f6864bc64e0fcac70a0c881cfb
SHA1: 8b5c9c3f7ca2921542252b92d749696c75f617b2
MD5: F5CD7C49DEF09E1DEBC4559F1A7EB3BB
SHA1: 980C52CACD969F9524FBE254F5F42753654AFA92
文件
c:\programdata\{893B0616-D589-CE78-7A5B-D4C7F40D0C54}\2484d689.exe
U盘中类类似这种文件
X:\{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe
Event对象 {152B2E26-FDB9-5268-7A5B-D4C7F40D0C54} 防双开
名为{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54}的计划任务
注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54}
HKEY_CURRENT_USER\Software\Classes\CLSID\{893B0615-D58A-CE78-7A5B-D4C7F40D0C54} 用来记录时间戳
域名
v1.eakalra.ru:1281
v1.op17.ru:6006
v1.zgclgdb.ru:8518
v1.yekfhsh.ru:7372
v1.fasefja.ru:3410
v1.hpifnad.ru:3721
......更多请查看原文
参考资料
◆一款正在活跃的U盘感染型病毒分析-华盟网 (77169.net)https://www.77169.net/html/185673.html
◆一款正在活跃的U盘感染型病毒分析 (sohu.com)https://www.sohu.com/a/204633647_354899
◆终端安全系列-计划任务详解-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/2318604
看雪ID:mb_zuyotbmd
https://bbs.kanxue.com/user-home-868846.htm
*本文为看雪论坛优秀文章,由 mb_zuyotbmd 原创,转载请注明来自看雪社区