一例白加黑样本的分析

概述

这是一个典型的白加黑的恶意代码,原始样本是一个自解压文件,可能是钓鱼样本,使用了一个合法签名的exe加载一个恶意的dll,在内存中解密和运行恶意载荷,,创建启动项的方式很特别,没有传播功能。

原始样本 sogou_pinyin_setup.exe

样本的基本信息

SHA256:31110b94ab2c3f672149658d0962ce11593801076ac51c844fe31a6c9ee7fd36
MD5:1c3e486b4243ead7ce573b1aba6ffddc
SHA1:1740e5de664533f974473c39ba3f68627b2037df
文件大小: 1.34 MB (1,407,798 字节)
Detect It Easy信息
PE32
    sfx: 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:    669F91E219A7D85DE6C19EFE3B183659B7C40C205BF844F505C7E53D9DB06911


ppt\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.pdb

ppt\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.pdb


ppt\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.
调用MoveFileExAL:\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 > nul

start "" "[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 内存中加载的dll

pdb 路径
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.vt

C:\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,创建开机启动项和对注册表的操作很特别。有点疑问的话是没有传播模块,不排除钓鱼的嫌疑。

参考资料

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值