Stack overflow in PlugX RAT

admin 2024年1月4日23:27:18Stack overflow in PlugX RAT已关闭评论23 views字数 1026阅读3分25秒阅读模式

Black Hat USA 2017 上 @professor__plum 分享了几款常见RAT(Xtreme、PlugX、Gh0st)中存在的漏洞,利用这些漏洞可以反向攻击 C&C Server,本文以 PlugX RAT 为例进行漏洞分析

1. 漏洞分析

1.1 Delphi

图片

PlugX RAT 由 Delphi 语言开发,直接使用 IDA 对其分析会因缺少符号表导致系统库函数无法识别,分析起来非常不方便。可以使用 IDR 加载 bin 文件,导出 IDC 脚本供 IDA 使用,如下:

图片

逆向 Delphi 程序时还需要注意的一点就是传参方式,Delphi 中默认的传参方式是前 3 个参数通过寄存器 eax、edx、ecx 传递,其余参数通过堆栈传递,如上图中 ShowMessage、MoveMemory 的调用。

1.2 漏洞成因

漏洞出现在 Server 与 Client 的通信中:

图片

Server 在接收到客户端的请求包后首先对包头进行解析,而后将整个包完整地拷贝到栈上(0x00549D51 MoveMemory),典型的栈溢出。有趣的是,在内存拷贝操作的之后开发者再一次对包进行解析(0x00549D93, DecodePacket_),在其中判断包的大小并且如果数据过大会进行弹框提示:

图片

但此时上层栈帧已被破坏,再做检查为时已晚。

2. 漏洞利用

2.1 加解密函数

目前市面的 PlugX RAT 大概有3个版本,对此漏洞而言区别主要在于它们对流量加解密方式的不同:

图片

以 Type I 为例可编写如下加解密函数:

图片

2.2 保护机制的绕过

图片

No GS、NO PIE,只需要考虑 DEP,而程序中存在丰富的 Gadgets,例如CreateProcess、WinExec、VirtualAlloc、VirtualProtect 等,这使得通过 ROP 绕过 DEP 变得十分简单。

基于 VirtualProtect 可编写如下 ROP:

图片

2.3 利用截图

图片

点击『阅读原文』可下载样本、IDB 及完整的 exploit。

3. 参考

  • https://www.blackhat.com/docs/us-17/thursday/us-17-Grange-Digital-Vengeance-Exploiting-The-Most-Notorious-C&C-Toolkits.pdf

  • https://www.blackhat.com/docs/asia-14/materials/Haruyama/Asia-14-Haruyama-I-Know-You-Want-Me-Unplugging-PlugX.pdf

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月4日23:27:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Stack overflow in PlugX RAThttps://cn-sec.com/archives/2365716.html