0x00 前言

样本hash:e1d363f853f2e666ef062102db360dce
下载到本地,看样子是doc格式的文档
image.png

0x01 windows模块分析

样本更名为doc,打开运行:
image.png

韩国(朝鲜)主题文档,看样子是宏利用。

尝试查看宏代码:
image.png

还是利用之前帖子里面提到的aopr进行破解,破解之后打开宏代码如下:
image.png

可以看到代码最开始对操作系统做了一个判断,接着是一些解密和转换。
程序的入口点在最下面的AutoOpen函数:
image.png

AutoOpen

拼接路径”C:\Users\Shyt\AppData\Local\Temp\ujzwbyjntbpmh.ps1”
看到这里基本可以确定程序会将上面看到的数据解密并写入到ujzwbyjntbpmh.ps1文件中了。
image.png
这里因为运行了两次,所以多出了一个snphhuatvsbkw.ps1文件,但其实两个文件是完全相同的,因为这里是根据随机数计算出来的文件名,所以每次运行,在%temp%目录下都会多一个文件。
image.png

接着程序会依次调用四个解密函数,将ps代码写入到刚才创建的文件中
image.png

最后通过一句shell命令执行,这里shell命令翻译出来其实是:
Shell powershell -ExecutionPolicyBypass -file spath, 0
这里的spath就是释放的ps文件的路径

ujzwbyjntbpmh.ps1

打开ps文件,映入眼帘的是三个硬编码的C2地址:
https://towingoperations.com/chat/chat.php
https://baseballcharlemagnelegardeur.com/wp-content/languages/common.php
https://www.tangowithcolette.com/pages/common.php
域名分别为:
towingoperations.com
baseballcharlemagnelegardeur.com
www.tangowithcolette.com
image.png

该地址早已和Lazarus关联起来
image.png

翻看一下代码,可以看到入口点在最后面的mlp函数
image.png

直接上powershell ISE 调试:
在mlp函数下断点然后运行报错
因为在此系统中禁止执行脚本。有关详细信息,请参阅 “get-help about_signing”
image.png
这是由于powershell权限导致的,以管理员身份启动一个powershell,执行set-executionpolicy remotesigned即可。
image.png

再次运行,成功命中断点:
image.png

powershell ISE调试中
F10 逐过程
F11 单步
shift + F11 跳出函数
F5 运行
F9 设置断点

F11进来之后,程序还是跳到了代码最开始的地方开始执行:
image.png

对于已经执行过的命令,可以在下方的DBG窗口中打印变量值
image.png
这里可以看到又是利用随机数生成了两个字符串,结合后面的代码,$unm将作为请求参数,而$fnm应该是一个文件名。

接着是创建web访问对象,然后依次设置参数,最后发起请求。
image.png

请求信息如下:
image.png

如果请求失败则休眠60s
image.png

然后请求其他地址,一直循环。

如果请求成功,则会通过$w.Write($pbdy,0,$pbdy.Length)发送一些其他数据到服务器:

image.png

而Write函数的参数是$pbdy,在$pbdy中有一个重要参数是$fnm,所以程序这里应该是上传文件到服务器。
image.png

格式化一下,$pdby如下:
image.png

远控模块

如果请求成功,则最后会执行到inses函数:
image.png

nmsg2

slp函数,程序休眠:
image.png

nmsg3

结束当前程序:
image.png

nmsg11

收集当前计算机一些基本信息,并进行格式转换,存储
image.png

nmsg12

检索程序当前状态:
image.png

nmsg14

显示当前程序的一些配置信息:
image.png

nmsg15

更新恶意程序的配置文件
image.png

nmsg18

以隐藏方式启动cmd
image.png

nmsg20

上传文件
image.png

nmsg21

下载文件
image.png

nmsg24

通过Start-Process执行命令
image.png

macOS模块分析

在宏代码中就已经判断了操作系统,如果是MacOS操作系统则执行如下代码:
image.png

程序通过curl下载https://nzssdm.com/assets/mt.dat保存到本地的/tmp目录,文件名为长度为12的随机字符。
然后通过chmon +x 给文件赋予权限
popen执行

现在域名好像已经无法访问了
VT查询一下发现大概是今年五月份攻击者所使用的域名:
image.png

通过关联查询,找到了这个mt文件:
image.png
且被标记为CVE-2017-8759
image.png

mt.dat是一个二进制文件,下载到本地之后可以通过IDA查看
查看mt.dat文件的字符串信息:
image.png

可以看到请求头 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 和windows powershell脚本中一样,且出现了和powershell中相同的地址:
https://towingoperations.com/chat/chat.php
https://baseballcharlemagnelegardeur.com/wp-content/languages/common.php
https://www.tangowithcolette.com/pages/common.php
网络请求函数InitNetInfo:
image.png

如果InitNetInfo请求成功则通过Send函数发送数据
如果Send函数发送成功,则通过Recv接收
租后UninitNetInfo释放
image.png

Send内容同powershell看到的基本相同
image.png

macOs中的远控分析
image.png