概述
最近准备找工作,准备学习一手APT组织相关的样本,最近在某社交网站上发现大佬发的Confucius样本。
Confucius,国内有安全公司也将其命名为魔罗桫,是一个长期针对中国,巴基斯坦,尼泊尔等进行网络间谍攻击活动的APT组织,其主要针对政府机构,军工企业,核能香港等行业。
有样本hash后,可通过免费沙箱AnyRun(app.any.run),搜索下载样本,该沙箱可通过邮箱注册便可免费下载样本,对于恶意软件分析学习者来说是个获取样本的好途径。
同时还发现某社交媒体上存在乐于分享的安全研究人员,会将一些样本放在https://bazaar.abuse.ch/
免费分享,这个地方也能免费获取道样本分析学习。
样本分析
样本名: update
MD5: feb6a0dc922843c710bd18edddb67980
文件格式:RTF
疑似下载地址: http://mlservices.online/sync/update
文件修改日期: 2020/08/07
样本获取途径: https://app.any.run/tasks/d10c0f31-e78e-47dd-916e61c7b8850e20/#
确定该样本是RTF格式文档后,可以使用oletools工具中的rtfobj对其进行分析,oletools可直接通过pip install -U oletools直接安装,使用rtfobj.exe解析该样本结果如下:
可见样本中存在两个OLE,其中有一个dll,且路径疑似为C:\Users\Dev\Desktop\07082020_8570_S\bing.dll。猜测其为攻击者的路径,而通过anyrun沙箱进程,可发现该样本会启动公式编辑器进行网络链接,所以猜测是公式编辑器漏洞利用样本。
由此可推断该样本大致行为如下:
我对漏洞不太了解,不太会分析,但可以学习网上关于公式编辑器漏洞的的分析,尝试去分析。首先设置注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE,添加debugger设置为调试器,当样本利用漏洞成功即会启动EQNEDT32.EXE,从而利用调试器附加。
双击样本,成功附加:
首先尝试网上提到的cve-2017-11882漏洞的下断点地址:0x411658成功进入shellcode
首先尝试获取“LoadLibraryA”等API。
之后利用LoadLibraryA尝试加载temp目录下bing.dll。
获取bing.dll文件中mark导出函数。
获取成功后便调用该函数
通过调试分析后发现,该样本启动后,其中ole对象文件bing.dll会释放在Temp目录下。然后样本利用公式编辑器漏洞触发执行shellcode.Shellcode主要功能为加载执行bing.dll的导出函数 mark。
bing.dll信息如下:
文件名: bing.dll
Md5: 70ab7f173c9ad785fc0d585c8ca685f9
编译时间: 2021:02:04 10:57:55+00:00
Pdb: C:\Users\admin\Documents\dll\linknew\Release\linknew.pdb
这个dll的文件路径用户名为admin,而最初的RTF文件中ole对象的路径用户名为DEV,故猜测一波,在该组织中,admin负责编写木马。DEV则负责将木马与诱饵文档进行打包处理。
此处利用IDA分析bing.dll,直接分析其导出函数mark.该函数较长,直接并未看出什么问题,还是老实的进行单步跟踪。调试 发现,函数刚开始通过解密操作,在内存解出一个lnk路径以及一个URL:
之后会获取URLDownloadToFileA函数并利用该函数http://mlservices.online/content/upgrade
下载文件保存到”C:/Users/lxxx/Appdata/Roaming\csrs.exe中
并在自启动目录下创建了new.lnk文件,该lnk指向下载保存的csrs.exe。这样文件下载成功会便会在电脑重启的时候启动执行了。
文件名 csrs.exe
MD5:5871d1a94b005c017c8da45e8687b719
编译时间:2021:02:04 00:37:16+00:00
继续从https://bazaar.abuse.ch/sample/a6e56c81c88fdaa28cbd3bf72635c5becb164f75f51ff0aabd46ee7723d4ac23/获取样本。
拿到样本后先使用peid查壳:
发现并未加壳,直接IDA打开分析。该样本会在执行后先开辟一段内存空间,然后利用异或的方式直接解密出一段数据,然后调用该内存。
只能再次拿出X64DBG对其进行分析调试,查看解出的数据是什么格式。调试发现,解出数据包含一段pe文件。猜测前面的乱码数据是为了加载后面的pe文件。
调试发现前面的shellcode将对重新开辟一段内存空间,将PE文件拷入新开辟的空间中,之后进行调用。
调用pe文件是一个dll文件,被加载起来后,从.bss读取数据解密出相关配置信息
之后判断权限,若不是管理员权限且系统为win10,则使用sdlt.exe进行提权。
若不是在管理员权限下且不为win10时,则获取资源中pe文件。抹掉PE头后,内存加载执行
该资源文件成功加载后,尝试从其资源“”WM_DISP”获取数据,释放”dismcore.dll”,”ellocnak.xml”到”%TEMP%”目录下,调用COM组件IFileOperation,从而实现绕过UAC,复制文件dismcore.dll到系统路径。
然后创建pkgmgr.exe进程,将之前释放的%temp%\ellocnak.xml作为参数传入,使得
pkgmgr.exe加载dismcore.dll,读取ellocnak.xml内容,进一步调用注册表项读取自身程序路径。最终实现自身提权。
若权限属于高权限后,样本则进入部署流程。则执行powershell命令添加排除项,以躲避windowsdefender的查杀,拷贝自身到c:\programdata并命名为rundll32.exe,设置持久化。
部署完成后,样本将进入上线流程。
以密钥warzone160加密数据与C2通信,获取指令执行。
对warzone搜索发现,发现该样本是WARZONE RAT,其官方介绍如下,拥有多种功能 。
同时从代码中也可以看到对应的指令功能。
总结:
样本分析十分枯燥,加油,勉励前行。