一种 Au3 远控木马变种样本分析
0x01 Au3 简介
AutoIt3 (简称 Au3)是一种能够在Windows GUI 或 DOS 上实现一系列自动化任务的脚本语言,其语法类似BASIC。
使用 Au3 开发的程序,能够具有以下功能:
0x02 变种木马简介
近期,本人通过在网上部署的各个 VPS 节点蜜罐,捕获到一种新型的 Au3 脚本木马变种。在以往,大多数以 Au3 编码的恶意程序攻击中,主要都是以窃取键盘输入的木马为主,比如,2016 年腾讯电脑管家在 FreeBuf 上报道的 《异次元窃贼:使用AutoIt脚本进行键盘记录窃取的“新奇玩法”》 所述。
本次所捕获的新型变种,保留了以往的利用代码框架,但功能上明显增强,甚至还有部分神秘的功能模块可能还处于测试阶段,没有被攻击程序调用。可以认为,该新型木马变种的作者在原有的利用代码框架上,进行了增配和强化,使其完全具备远控木马的功能。甚至利用了 Au3 脚本自身的优越姿势,模拟人的键鼠操作,“手动” 退出了某厂商的些杀软进程(比如国际著名的 Avast杀毒软件)。
0x03变种木马分析
3.1 可疑文件
可疑文件被嵌入在某文档中,以邮件的方式进行传播:
提取出可执行程序样本后,发现该样本为 RAR 自解压程序:
使用 RAR 打开后,发现攻击者在解压配置中加入了某国语言的热门小说内容来逃避杀软检测:
清理解压配置中无用信息后得到配置信息如图:
分析自解压的配置信息发现,当用户双击文档中嵌入的 exe 程序时会触发自解压程序,将压缩包文件尽数解压到 %temp%\xxxx 目录下,该解压过程中的进度条被隐藏。且在解压过程中,如果遇到文件已存在的情况,则会直接覆盖(不会提示用户)。
分析解压后的文件发现,压缩包内存在各种类型的文件共二十多个, 其后缀名包括:bmp、mp3、dat、icm、jpg、ppt、docx、pdf、xl、ico、txt、exe 等。其中,除了 file1.exe 和 file2、file3 文件之外,其他的文件皆为文本文件:
任意打开压缩包内的文本文件发现,这些文本文件的内容都是一些字符串,此处推测这些文件存在的目的可能是为了欺骗杀软对压缩包内容的检测:
分析 file1.exe、 file2、file3 三个文件后发现:file1.exe 是 Au3 脚本的解释器,file2 是 Au3 脚本,file3 为 ini 配置文件。
对可执行程序 file1.exe 进行查杀发现,全球 63 款主流杀软对该文件的检出率为 0 。这种情况只有两种可能,一种可能是该程序确实为 Au3 官方发布的安全程序;另一种可能是该程序经过牛逼的免杀处理后,对全球主流杀软都具有免杀能力。这里唯一可以确定的一点是,该程序确实是 Au3 脚本的解释器,确实能够运行 Au3 脚本。
file1.exe 文件的签名情况如下:
直接双击运行 file1.exe 时,会提示选择用户手动一个 Au3 脚本(来编译并执行):
3.2 脚本分析
对 file2 进行分析发现,该脚本文件的源码通过大量增加无用注释(; 号开头的行都是单行注释)和无用代码(#-d-d-d 开头的大多是无用代码,且不干扰程序正常运行)的方式来增加内容和文件体积,此处推测目的是用于提高静态检测的难度以及使用大文件来逃避多数杀软的云查杀功能。
删除无用行后得到 6 KB 的代码:
从代码可知,file2 脚本运行时会加载 file3 的的内容,那么 file3 是不是程序的配置文件呢?我们载入 file3 来看看:
file3 中出现了熟悉的 [Setting],没错,经过分析发现 file3 就是一个 ini 配置文件。为了后续的分析更加直观,我们接下来将 file1.exe 改名为 AutoIt3.exe,将 file2 改名为 main.au3,将 file3 改名为 config.ini。
研究发现,该脚本执行过程的简述如下:
综上所述,整个木马程序的执行流程如下:
分析 config.ini 文件发现,依然是存在混淆信息:
匹配等号行发现,共有 7 个配置参数:
除了常规的配置外,还发现文件中大段大段的十六进制数据块上存在两对标记:
研究发现,标记内的数据为加密的十六进制数据块:
为了方便后续的分析,[Data] 标签和 [eData] 内连续的十六进制数据块 我们命名为HexBlock1,[sData] 和 [esData] 标签内的十六进制数据块我们命名为HexBlock2。
分析脚本文件 main.au3 的源码发现,代码中加入大量双引号和 and 符号 "&" 来逃避杀软的静态检测:
部分数据块也采用了临时替换组装的方式来逃避杀软的静态检测:
解密之后为:
上传到云端后发现仅有2款杀软能够检测出 main.au3 为恶意文件:
由于样本源码不打算公开,此处仅摘取脚本中的一些函数做介绍。需要注意的是,这些函数大部分是 Au3 官方提供的,而具有攻击性的 payload 代码大部分是存储在 DLL 数据里面:
3.3 进程注入
考虑到直接拿脚本源码中的解密逻辑去提取 DLL 数据内容比较抽象,此处分析内容主要以逆向为主。分析发现,攻击脚本 attack.au3 执行之后,会启动以下程序(优先使用v4):
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe
或者C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe
先下一波断点(API 断点仅供参考):
bp kernel32.CreateProcessW bp kernel32.MoveFileA bp ws2_32.recv bp ws2_32.send bp Kernel32.WriteFile bp Kernel32.ReadProcessMemory bp Kernel32.WriteProcessMemory bp Kernel32.CreateFileW bp Kernel32.CreateFileA bp Kernel32.SetThreadContext
运行至启动 RegSvcs.exe 程序时,观察堆栈内容:
观察到 CreationFlags = CREATE_SUSPENDED,其作用是程序启动后便立即停止运行,只分配了内存空间。随后观察到注入的 DLL 数据被分成五次写入到新建的 RegSvcs.exe 进程内存:
第一次:
第二次:
第三次:
第四次:
第五次:
提取五次注入的内存块,即得到注入到 RegSvcs.exe 进程的 DLL 完整数据,我们将其命名为 inject.dll。
3.4 远控行为
得到 inject.dll 后,发现该模块为 C# 源码编写,用 dnSpy 载入分析发现,木马运行时,首先建立与远控服务器的心跳包连接,将受害者主机的基本信息回传到木马服务器。在心跳包监听中,如果收到服务器的指令,则按照指令执行相应的代码。可接受的指令部分如下:
指令
作用
kl
开启 KeyLogger 键盘记录模块
nk
使用指定的密码加密通讯流量
~
收集当前进程信息
~
源码中仅声明该指令,未定义具体操作
@
收集本地文件夹目录(只记录到文件夹名称,且排除系统目录)
#
收集指定文件夹内文件名
up
上传指定文件到服务器
dl
下载指定文件到受害者主机
Ex
执行系统命令或运行某程序
rb
在注册表中注册开启自启
mmm
退出自身进程
%_
尝试关闭指定进程
此外,源码中有些函数虽然定义了功能,但没有写调用代码,此处不做详细说明。此外,该远控木马客户端上线时,回传本机基础信息使用的是 BASE64 编码来加密流量.:
0x04 免杀思路总结
对该木马的免杀思路总结大概就是这几条,当程序开始往进程注入 DLL 时,已是赤裸裸的进攻,不再具备免杀特性。
0x05 攻击来源分析
攻击者使用的远控服务的 IP 地址为 192.68.x.x ,所在地为瑞典,使用的通讯协议为 tcp ,端口 7771:
根据第三方情报数据显示,该远控端 IP 早在 2016 年就被捕获过可疑行为:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有