分析一个带宏的恶意样本,通过宏代码释放恶意文件至本机执行,释放的恶意样本可实现多条远控功能
0x01 网络行为
122.216.201.108
0x02 持久化
将自身写入SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run实现自启动
0x03 详细分析/功能介绍
3.1 宏代码分析
Auto_Open()子过程调用useraddeeLoadr 和 open_pp两个子过程,useraddeeLoadr用于释放恶意文件wardhmrias.exe并执行,open_pp打开ppt文件
useraddeeLoadr首先生成文件的释放路径
然后根据不同操作系统版本,向Zip文件写入不同数据
之后,在再将Zip中的文件解压出来,并执行
Unaddeeip子过程,将Zip中的文件复制出来,完成解压操作
3.2 wardhmrias.exe分析
接下来分析宏代码释放的恶意程序wardhmrias.exe。
首先观察入口点,判断为C#编写的WinForm程序
进入 Form1() ,首先进行组件初始化,并添加表单关闭和加载事件
分析Form1_FormClosing,该函数先判断wardhmrias.exe是否存在,不存在则创建一个新的wardhmrias.exe
然后将wardhmrias.exe写入注册表"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run,实现自启动
Form1_Load,设置窗体不可见
wardhmriasdo_stadrt(),数据初始化,设置Timer
通过计时器回调函数执行连接C2的操作
计时器回调函数为this.wardhmriasIPSrFI(); 创建socket,连接远程服务器
wardhmriassee_spyo() ,循环接收主控端命令,执行相应的操作。
先获取NetworkStream,再从中读取主控端发送的命令
创建命令字典
根据读取到的命令数据进行相应操作:
"wardhmrias-puatsrt",1 将自己写入注册表
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
"wardhmrias-gedatavs",3 遍历进程,并将进程信息写入NetworkStream,发送主控端
用于发送数据的函数如下
"wardhmrias-thdaumb",5 获取指定路径的图像文件及其名称、创建时间
"wardhmrias-praocl",7 遍历进程
"wardhmrias-fialsz",9 获取指定路径的文件信息
"wardhmrias-dodawf",11 读取数据并写入指定文件
"wardhmrias-enadpo",13 结束指定进程
"wardhmrias-scarsz",17 设置wardgmriasscrfSize
"wardhmrias-diars",19 获取驱动信息
"wardhmrias-staops",21 设置标志位
"wardhmrias-csdacreen",23 捕获屏幕
"wardhmrias-cnals",25 设置标志位
"wardhmrias-doawr",27 同11 读数据写入文件
"wardhmrias-scaren",29 创建线程捕获屏幕
"wardhmrias-fladr",31 遍历指定路径的子目录(如果存在)
"wardhmrias-udalt",33 读取NetStream数据写入debdrivca.exe文件并执行
"wardhmrias-inafo",35 获取用户相关信息
"wardhmrias-ruanf",37 启动指定进程
"wardhmrias-fiale",39 获取指文件内容
"wardhmrias-dealt",41 删除文件
"wardhmrias-flaes",43 获取指定路径下的文件
"wardhmrias-afaile",45 获取指定文件内容及相关信息
"wardhmrias-liastf",47 获取指定扩展名的文件
检查命令是否完整: 扩展名+文件名
检查文件扩展名 符合则获取相关文件信息发送服务器
- 本文作者: 莫一
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1585
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!