这个样本是会释放两个dll和一个驱动模块,通过感染USB设备中exe文件传播,会向C&C下载PE执行,通过rookit关闭常用的杀软,是一例典型的感染型病毒,有一定的学习价值。
原始样本
样本的基本信息
Verified: Unsigned
Link date: 16:41 2010/8/3
Publisher: n/a
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: 32-bit
MD5: 9DBD5F2FD6DC745CFF7BF40F79A2751B
SHA1: EF5AA1DC70293449BE93B848343C262D820747C9
PESHA1: 98B25E06B3F51E9AA30595200BE98360ADB45F6F
PE256: C51B1056C7CCF08DD8C4AD5C8AC042741BE50A68A66F68C5B9A61B2C6C6BBDA6
SHA256: A007B83DB8CBF3A443A172D73A2E5F9539CCEEBDB1E86599AAEE8D17CB525766
IMP: 44E7AF86D13BD689602E96DCCC077D31
该样本的功能比较简单,在系统目录下释放了两个dll,文件名是随机生成的,使用rundll32调用这两个dll的Execute函数。
然后把自己拷贝系统目录(C:\windows\system32\)下,命名为system.exe
释放的两个dll的基本信息
0x1600-0xd600.dll:
Verified: Unsigned
Link date: 16:40 2010/8/3
Publisher: n/a
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: 32-bit
MD5: F42BDE03A60AA8430290C9598DB10D40
SHA1: CDFBDD3CBC04150D1E1B1892DEA6450A379CA00D
PESHA1: AF2D794219940E61717BA2F2DED642D066C7C9F7
PE256: 5E685D465FAC902157D8BEAF3A8155A4D5C99772B40F3E548452F3B5A0101BAF
SHA256: E1E875C1D42F3196306887D31CFD5D49C0BED29926BCB0DAAC1B9DCD365127CE
IMP: 9A36BF7D2561DAEFD227467B3E92D494
0xec00-0x4a00.dll:
Verified: Unsigned
Link date: 16:40 2010/8/3
Publisher: n/a
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: 32-bit
MD5: 056AC80D746CEE3A003D283ADEECA989
SHA1: A0985DDDFB010D8F784B1515264691008CF8673A
PESHA1: 215D42B95AC59DF7338F0CEE5873695E24792AE4
PE256: C3ADBAD848CBF746E066419B5DED789BF378F3FCE29C5D879AFDE2E2D37B4E7B
SHA256: C115B42F9838E9BA531D9A1D5DC2881BBF2874933E8F85314FAEBA90064076DA
IMP: 970FAC8680ECC98ADE1D72E260CA2FC7
下面重点分析一下这两个dll
0xec00-0x4a00.dll
首先创建了一个名为SeBebugPrivilege的互斥量,防止双开。
创建了三个线程。
线程1 sub_10002000
第一线程是从CC下载PE执行
首先会从http://tsa13.t12hg.com:8080/sa13/d.txt下载一个文本文本,其中每一行是一个PE文件链接,然后再依次下载这些PE文件,保存为C:\windows\system32[随机字符].exe,调用winexec执行。
线程2 sub_100021B0
线程2 在注册表中将自身添加为开机启动项,启动项名为system,指向C:\windows\system32\system.exe
线程3 sub_10002E20
线程3的作用是感染USB设备
首先遍历系统内所有盘符,获取驱动器属性,找到USB设备
遍历U盘中所有目录,找到PE文件,删除同名的exet文件,感染exe
感染EXE过程:
在目标pe文件中添加两个节,
第一个节 节名是随机生成的,写入sub_10005000,并将pe的执行入口修改到这里。
第二个节 节名为空,内容是自身副本.
当用户点击U盘中被感染的exe文件时,会首先执行sub_10005000中的代码,首先会遍历自身的节表,找到最后一个节(里面是system.exe的副本),将其保存为C:\windows\system32\system.exe,并执行。
将被感染的文件重命名为.exet文件,并隐藏。
还原出原始的PE文件,保存后再打开,这样用户完全无感的情况下就被感染了。
0x1600-0xd600.dll
这个dll的主要功能是关闭杀软,主要的功能在Exucute函数中
首先关闭和禁用windows defender和系统防火墙
解密并释放了一个驱动程序,保存在
C:\Program Files\\KAV\\CDriver.sys
加载并启动这个驱动,服务名为aav,这个驱动程序主要用来关闭杀软,下一节会重点分析。
首先关闭系统中常见杀软的进程和服务,最后关闭了系统的安全策略
重点分析一下KillAV_100016A0函数。
KillAV_100016A0
该函数首先打开驱动设备对象,驱动的符号链接名为\\.\ccc
该函数中有一个杀软文件名的hash列表
AvHashList[0] = 0x164CFA74; // 杀软程序的hash值
AvHashList[1] = 0x45470A4A;
AvHashList[2] = 0x4FEDA50D;
AvHashList[3] = 0x19C93F2D;
AvHashList[4] = 0x13CA8828;
AvHashList[5] = 0x3ADCBDE7;
AvHashList[6] = 0x2B3CDE89;
AvHashList[7] = 0x1C847040;
AvHashList[8] = 0x537987BF;
AvHashList[9] = 0x478FD21E;
AvHashList[10] = 0x498C0C71;
AvHashList[11] = 0x5583BB21;
AvHashList[12] = 0x1BAB5D2F;
AvHashList[13] = 0x4F2FBA5D;
AvHashList[14] = 0x76497166;
AvHashList[15] = 0x7C98CB4A;
AvHashList[16] = 0x3DF2B1A5;
AvHashList[17] = 0x6503969F;
AvHashList[18] = 0x7B9B11DA;
AvHashList[19] = 0x66B2765F;
AvHashList[20] = 0x42ECD6E9;
AvHashList[21] = 0x4943E14C;
AvHashList[42] = 0xCEFE30D;
AvHashList[22] = 0x15D2C220;
AvHashList[23] = 0x7D4E0DE4;
AvHashList[24] = 0x6FC69904;
AvHashList[25] = 0x756ED81C;
AvHashList[26] = 0x58323429;
AvHashList[27] = 0xB0C69E2;
AvHashList[28] = 0x394DA81A;
AvHashList[29] = 0x65A5668E;
AvHashList[30] = 0x47F1C7C1;
AvHashList[31] = 0x3F28EA27;
AvHashList[32] = 0x47961D3B;
AvHashList[33] = 0x217F3E03;
AvHashList[34] = 0x2034E6E0;
AvHashList[35] = 0x50A10259;
AvHashList[36] = 0x7D6C72B3;
AvHashList[37] = 0x3F4DB63D;
AvHashList[38] = 0x4AB0954F;
AvHashList[39] = 0xB4642F0;
AvHashList[41] = 0x40832288;
向驱动模块发送指令,hook SSDT中的ZwCreateProcessEx函数,拦截上述进程的进程创建操作,控制码为0x222006。删除注册表中Macfee的服务项。
遍历系统中的所有进程,计算其文件hash,若在上面的列表中,将进程的pid发送给驱动程序,将其关闭,控制码为0x222009。
停止和删除360安全卫士、瑞星、McAfee、NOD32的服务。
最后,向驱动发送指令,卸载SSDT中针对ZwCreateProcessEx的HOOK,控制码为0x222007.
下面重点分析一下这个驱动程序。
CDriver.sys
这个驱动的主要功能是关闭杀软进程,基本信息为
Verified: Unsigned
Link date: 16:31 2010/8/2
Publisher: n/a
Company: Microsoft Corporation
Description: The driver for the supercool driver-based tool
Product: Supercool driver-based tool
Prod version: 1.0
File version: 1.0.0.950
MachineType: 32-bit
MD5: 6AD5C8644299EE28CBB2523C89A82B8E
SHA1: 71F8C912D2156630CE2F562FB8B1C187E1AA29E1
PESHA1: 1314038EEEF5A1BA06EC2FAC1DA7519DA34F5F10
PE256: A8A289DB92D7B0318967B79A32C442AAD5AD33E692FD9EFFAA80F18AB6C7C96F
SHA256: 9FA2C365DE2A920DA38E6CFA11EEC698DED6068DAF96A82F979A27E05CBF1164
IMP: 9C213807982738BE9582191EA86403C9
pdb:c:\users\icyheart\docume~1\visual~2\projects\download\driver\objchk_wxp_x86\i386\Driver.pdb
在DriverEntry中创建设备和符号链接
设备名为 \Device\ccc
符号链接名为 \DosDevices\ccc 应用层\\.\ccc
在IRP_MJ_DEVICE_CONTROL消息的处理函数中处理应用层DeviceIoControl的指令。
这个函数会根据不同的控制码执行不同的操作。
- 0x22E14B 根据应用层输入的service_id和地址 设置SSDT中特定api
- 0x222009 根据pid关闭指定进程
- 0x222006 Hook ZwCreateProcessEx 拦截特定的杀软进程的进程创建操作
- 0x222007 UnHook ZwCreateProcessEx
在hook函数中,提取出当前进程的路径,计算文件名的hash值与给定的列表中hash值进行比对,如果在其中,就阻止其创建进程。
总结
IOC
HASH
9DBD5F2FD6DC745CFF7BF40F79A2751B
F42BDE03A60AA8430290C9598DB10D40
056AC80D746CEE3A003D283ADEECA989
6AD5C8644299EE28CBB2523C89A82B8E
文件
C:\windows\system32\system.exe
或C:\windows\syswow64\system.exe
C:\windows\system32\[随机名].dll
或C:\windows\syswow64\[随机名].dll
C:\Program Files\KAV\CDriver.sys
互斥量
SeBebugPrivilege
注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\system
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aav
url
http://tsa13.t12hg.com:8080/sa13/d.txt
驱动信息
设备对象名 \Device\ccc
符号链接名为 \DosDevices\ccc
pdb
c:\users\icyheart\docume~1\visual~2\projects\download\driver\objchk_wxp_x86\i386\Driver.pdb