1. 概述
近期,观成科技安全团队针对疑似OilRig组织恶意文档进行了分析,并还原了该文档释放的恶意Powershell后门与服务器之间的通信过程。该文档通过两个Powershell脚本来分别进行命令获取与执行,命令和执行结果都使用AES-256-CBC算法进行加密,通信使用HTTP隐蔽隧道,将加密后的数据隐藏在HTTP协议载荷部分传输。
2. 功能描述
表 2‑1 样本Hash
文档Apply Form.docm中包含恶意宏代码,宏代码执行后会释放3个脚本文件,Updater.vbs、Script.ps1和Temp.ps1,并创建名为“WindowsUpdate”的计划任务来执行Updater.vbs,为整个攻击流程建立持久化机制。
脚本Script.ps1启动后会从服务器获取控制指令,并以控制指令作为参数,执行temp.ps1。temp.ps1启动后执行控制指令,将结果上传至服务器。
3. 通信机制
1.1 上线
Script.ps1通过查找注册表项Registry::HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\http\,获取到默认浏览器,并根据默认浏览器选择不同的UserAgent。
连接http://45.xx.xx.xx /get,获取受害机唯一ID,然后将ID写入C:\Users\username\AppData\Local\Microsoft\Windows\Update\ID.txt。
图 3‑1 获取ID
1.2 指令执行
Script.ps1访问相同的URL,使用HTTP POST将AES-256-CBC加密后的ID发送给服务器,并以此来获取后续命令。加密密钥和IV如下所示。
表 3‑1 加密密钥和IV
图 3‑2 获取指令
脚本中共实现了3种指令类型,“0”、“1”和“2”。
1.1.1 指令“0”
将获取到的命令解密后得到如下字符。
0!@#EWQ796!@#EWQpowershell -command Get-Process^%$RTY: |
脚本使用“^%$RTY”分割服务器发来的命令序列,命令序列以“:”结尾。上表中包含1个命令序列。每个命令序列使用“!@#EWQ”继续进行分割。分割后的第1个字符串代表指令类型,第2个字符串是命令序列的数字标识,第3个字符串是将要执行的powershell命令。
Temp.ps1通过http://45.xx.xx.xx /put将命令执行结果发送给服务器。
图 3‑3 发送执行结果
发送给服务器的数据由2部分构成,以“!@#EWQ”进行分割。
命令数字标识 | !@#EWQ | 执行结果 | !@#EWQ |
1.1.2 指令“1”
指令类型“1”的内容由3部分组成,以“!@#EWQ”分割。
表 3‑2 指令构成
完整示例如下。
1!@#EWQ796!@#EWQC:\Users\test\AppData\Local\Microsoft\Windows\Update\test2022.txt^%$RTY: |
图 3‑4 指令“1”
图 3‑5 发送执行结果
1.1.3 指令“2”
指令类型“2”的内容由4部分组成,以“!@#EWQ”分割。
表 3‑3 指令构成
完整内容如下。
2!@#EWQ796!@#EWQC:\Users\test\AppData\Local\Microsoft\Windows\Update\test2022.txt!@#EWQR2V0LU5ldElQQ29uZmlndXJhdGlvbg==^%$RTY: |
图 3‑6 指令“2”
命令写入文件失败,生成数据“RES!#%796!@#EWQError Occurred!@#EWQ”,加密后发送给服务器。
命令写入文件成功,生成数据“RES!#%796!@#EWQFile Copied Succesfully!@#EWQ”,加密后发送给服务器。
图 3‑7 发送成功信息
4. 产品检测
观成科技“瞰云-加密威胁智能检测系统”已经可以对该powershell后门进行检出。
图 4‑1 “瞰云”告警信息
5. 总结
本次分析的Powershell后门服务器给受害机发送指令时,给指令中的每个命令序列都赋予了不同的数字标识,这些数字标识会和执行结果一起上传给服务器。因为有数字标识的存在,使得恶意脚本执行完命令上报固定数据时,会生成不同的加密结果,利用常见协议构建隐蔽加密隧道进行加密传输的恶意家族层出不穷,观成科技安全团队对这类威胁将持续跟踪。