【软件逆向-重启型msi银狐分析】此文章归类为:软件逆向。
银狐经过不断迭代,免杀、混淆越做越强,给分析过程不断增加难度,最近几个月,这种msi的银狐安装包,非常流行,特点是点击安装后不断重启,已达到免杀目的。

简要分析了银狐该变种的启动加载流程
1.第一阶段
该阶段,主要是msi解压,释放安装文件(file.dat),执行msi的CustumAction(hrsv.tac),可以发现实际是一个dll,代码被虚拟机保护,有两个导出函数,最终发现两个函数逻辑一致。


hrsv会启动以下线程,1和4会根据CleverSoarInst、CleverSoar服务的状态,做出相应动作
No1.主线程
判断是否存在CleverSoar服务,本阶段不存在,则将file.dat解密为7z数据格式,写入res.dat,然后创建task.xml
No2.工作线程
负责反调试,循环调用IsDebuggerPresent,CheckRemoteDebuggerPresent
No3.工作线程
循环调用GetSystemMetrics
No4.工作线程
判断名称为CleverSoar和CleverSoarInst的服务是否存在
本阶段均不存在,RPC调用services.exe的第C号方法,传入以下命令行,创建CleverSoarInst服务
1 | cmd.exe / c start / B " " C:\Windows\System32\regsvr32.exe " C:\Program Files (x86)\Windows NT\hrsv.tac"
|
rpc原理见https://bbs.kanxue.com/thread-285258.htm
然后调用ZwInitiatePowerAction函数重启
第一阶段完成后,目录如下

2.第二阶段
重启后hrsv再次被执行
No1.主线程
判断是否存在CleverSoar服务,本阶段不存在,则将file.dat解密为7z数据格式,写入res.dat,创建task.xml
No4.工作线程
判断是否存在CleverSoar服务和CleverSoarInst服务,本阶段CleverSoarInst存在,CleverSoar不存在,执行以下逻辑
解出7zx.exe
RPC调用services.exe的第C号方法,分别执行删除CleverSoarInst服务,创建名为turminoob的计划任务,编辑注册表,创建CleverSoar服务,命令行:
1 2 3 | cmd / c start sc delete CleverSoarInst
cmd / c start schtasks / create / tn turminoob / xml "C:\Program Files (x86)\Windows NT\task.xml"
sc create CleverSoar displayname = CleverSoar binPath = "C:\Program Files (x86)\Windows NT\tProtect.dll" type = kernel start = auto
|
创建完CleverSoar服务后,hrsv解压res.dat

将.bin文件解密为.dat文件,再解压local3.dat为tProtect.dll
随后RPC调用services.exe的第C号方法,重启,
1 | cmd / c shutdown - f - r - t 00
|
hrsv自身也有重启逻辑,二阶段完成后,目录如下

3.第三阶段
重启后hrsv执行
No1.主线程
判断是否存在CleverSoar服务,本阶段存在,RPC调用services.exe的第C号方法,传入命令行,start CleverSoar服务,并创建turminoob计划任务,修改注册表
No4.工作线程
判断存在CleverSoar服务,本阶段存在,执行
创建三环\.\TfSysMon文件,创建线程和tProtect服务通信,tProtect主要负责加系统钩子,创建进程、创建线程、Image加载、CmpCallback监控注册表,关闭杀软、调试器,且关闭后无法启动
解压locale.dat、locale2.dat为恶意可执行文件winnt.exe、runtime.exe
执行两个恶意程序
1 | cmd.exe / q / c SCHTASKS / Create / F / TN \PayloadTask + locale后面数字 / RU orange / RL HIGHEST / SC ONCE / ST 00 : 00 / TR "C:\\Program Files (x86)\\Windows NT\\解压后程序名.exe" " & SCHTASKS / Run / TN \PayloadTask + locale后面数字 & schtasks / Delete / TN \PayloadTask + locale后面数字 / F
|
关闭防火墙
1 2 3 | netsh advfirewall set allprofiles state off
netsh firewall set opmode mode = disable profile = ALL
netsh firewall set opmode mode = disable
|
关闭wuauserv,取消windows更新
1 2 | net stop wuauserv
sc config wuauserv start = disabled
|
如果是win10,执行恶意程序后,解压缩locale4.dat 为curl.dll(驱动),locale7.dat为hotdog.exe 并将dll建立内核服务,执行保护线程
1 | sc create Nidhogg displayname = Nidhogg binPath = "C:\Program Files (x86)\Windows NT\curl.dll" type = kernel start = auto
|
保护线程利用hotdog和curl,实际上就是Nidhog的客户端和驱动,实现进程隐藏
1 2 3 | cmd.exe / q / c start / B hotdog.exe process add regsvr32 PID
cmd.exe / q / c start / B hotdog.exe driver hide "C:\Program Files (x86)\Windows NT\curl.dll"
cmd.exe / q / c start / B hotdog.exe driver hide "C:\Program Files (x86)\Windows NT\tProtect.dll"
|
No5.工作线程
循环遍历目录,设置文件属性为隐藏
最终目录如下

winnt.exe 包含恶意域名qq.qiubai7770.com
runtime.exe 包含恶意域名8005.twilight.zip
msi sha1 6c6e1b0736ff4e5cdc944fcb5e94e7ce0ab71645
来源卡饭
最后于 5小时前
被mb_jonavsjj编辑
,原因:
更多【软件逆向-重启型msi银狐分析】相关视频教程:www.yxfzedu.com