Atualização rápida para incluir exploração Follina (01/06/2022) - NinjaC2 irá gerar o documento e servir o payload HTML.
Mais informações: https://www.linkedin.com/posts/ahmed-khlief-499321a7_i-just-pushed-a-quick-update-to-ninjac2-to-activity-6937661951007170560-Tmps
Ninja V2.2 Lançado (27/03/2022).
Novas funcionalidades incluindo:
verifique a URL para mais informações sobre funcionalidades e como usar a automação AWS EC2:
- nova interface de utilizador para o script CnC
- Agora cada campanha incluirá todos os ficheiros relacionados com a campanha e o ficheiro de configuração.
- novo script para automatizar a criação de instâncias AWS com configuração NinjaC2.
- Script Invoke-Mimikatz PowerShell atualizado para a versão mais recente do Mimikatz.
- Correções de bugs
Ninja V2.1 Lançado (31/07/2021).
verifique as novas funcionalidades aqui: https://shells.systems/ninjac2-v2-1-new-webshell-agent-more-features-and-updated-av-bypass/
Ninja V2.0 Lançado (16/04/2021).
Ninja V2.0 reconstruído para usar python3 com novas funcionalidades:
- Ofuscação de variável de payload cada vez que o payload é solicitado para contornar AV
- gerar shellcodes usando nasm e donut
- novo comando (migrate) para fazer migração de processos.
- novo comando de persistência usando tarefas agendadas
- nova versão pré-compilada do Mimikatz para PowerShell
- novos payloads.
- script de bypass AMSI atualizado.
O que é Ninja ?
Ninja C2 é um servidor C2 de código aberto criado pela Purple Team para fazer enumeração furtiva de computadores e Active Directory sem ser detetado por SIEM e AVs. Ninja ainda está em versão beta e quando a versão estável for lançada, conterá muitas mais técnicas furtivas e anti-forenses para criar um verdadeiro desafio para a equipa azul, garantindo que todas as defesas estão configuradas corretamente e que conseguem detetar ataques sofisticados.
Ninja usa Python para servir o payload e controlar os agentes. Os agentes são baseados em C# e PowerShell, que podem contornar os principais AVs. Ninja comunica com os agentes num canal seguro encriptado com AES-256 e a chave não está codificada, mas é gerada aleatoriamente no início da campanha. Cada agente que se conecta ao C2 obtém a chave e, se o C2 for reiniciado, uma nova chave será usada por todos os agentes antigos e novos. Ninja também randomiza os URLs de callback para cada campanha para contornar a deteção estática.
- A principal funcionalidade no Ninja chama-se DA (Defense Analysis), que fará a enumeração necessária para obter as informações importantes abaixo e fazer análise sobre elas para obter uma pontuação para as defesas do sistema e deteção de sandbox.
- Detetar soluções SIEM: atualmente deteta SPLUNK, Log beat collector, sysmon.
- detetar AV de duas formas: usando comando PowerShell e usando processos.
- verificar se o registo do PowerShell está ativado
- verificar se o utilizador tem privilégios de administrador
- fornecer informações sobre o sistema: nome do host, SO, número de compilação, hora local, fuso horário, última inicialização e BIOS.
- fornecer informações sobre as atualizações de segurança instaladas.
- fornecer uma pontuação de dureza do sistema (system pwn hardness) baseada em múltiplos fatores.
- fornecer uma pontuação de deteção de sandbox baseada em (privilégios, fabricante da BIOS, se está ou não no domínio, existência de processos sysinternals).
- mostrar todos os utilizadores do domínio (usando comandos PowerShell).
- mostrar todos os grupos do domínio (usando comandos PowerShell).
- mostrar todos os computadores do domínio (usando powerview.ps1 - retirado de: https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerView/powerview.ps1).
- mostrar partilhas disponíveis.
Ninja foi projetado para ser fácil de configurar e de adicionar mais comandos e fazer automação para tarefas aborrecidas. Pode encontrar muitos comandos curtos que um red teamer tem dificuldade em memorizar e pesquisar. Por favor, consulte este artigo para saber mais sobre o Ninja: https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/
Funcionalidades chave do Ninja
Ninja está repleto de várias funcionalidades que permitem obter informações sobre o seu próximo compromisso antes de precisar de implementar todo o seu arsenal ou ferramentas e técnicas, tais como:
- Análise de Defesa
- automação para ataque kerberoast, desde a geração de tickets Kerberos até à extração dos hashes SPN no formato hashcat.
- automação para dc_sync para obter hashes de uma lista de utilizadores ou grupo de administradores de domínio.
- Automação não detetada para obter grupos a que o utilizador pertence e os utilizadores membros de um grupo.
- Automação para recolha de dados do AD no BloodHound.
- payloads C# personalizados que encriptam strings para contornar deteção estática.
- codificar qualquer comando para unicode base64 para ser usado em comandos codificados do PowerShell.
- encriptação total de todas as comunicações entre agente e comando e controlo para contornar deteção de AV e IPS.
- URLs dinâmicos para todas as funções, basta colocar a sua lista de nomes de URLs e o C2 irá usá-los aleatoriamente para contornar qualquer deteção estática.
- obter chave de encriptação aleatória em tempo real (não codificada) sempre que o agente se conecta (mesmo reconexão precisa de uma nova chave)
- tirar screenshots e enviá-los encriptados para o C2
- enviar ficheiros do C2 para a vítima encriptados para contornar AV e IPS
- transferir ficheiros da vítima encriptados para contornar AV e IPS
- payloads em estágios para contornar deteção (base64 e base52)
- contorna AVs (testado no Kaspersky e Trend Micro)
- Contorna deteção SIEM (testado no Splunk a recolher logs de eventos normais juntamente com logs do sysmon) não testado no registo de blocos de script e módulos do PowerShell v5 (será feito na próxima versão).
- definir o intervalo de beacon dinamicamente mesmo depois do agente conectado e fornecer um intervalo de beacon inicial nas configurações de início da campanha
- registo de todos os comandos e resultados para poder retornar a qualquer dado que tenha perdido na sua operação.
- definir a configuração uma vez quando iniciar a campanha e aproveitar.
- interruptor global de morte para encerrar campanhas.
- eliminar entradas de tabela.
- todos os payloads escritos na pasta payloads para fácil acesso e personalização adicional.
- fácil de adicionar automação para qualquer comando que deseje.
Requisitos
note que a compilação de C# depende da assembly System.Management.Automation.dll com hash SHA1 c669667bb4d7870bc8bb65365d30071eb7fb86fe.
Alguns comandos Ninja requerem os módulos abaixo (já existentes na pasta modules) e precisa de obter atualizações dos seus repositórios:
Invoke-Kerberoast : https://raw.githubusercontent.com/xan7r/kerberoast/master/autokerberoast.ps1
Invoke-Mimikatz : https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-Mimikatz.ps1
Sharphound : https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.ps1
PowerView : https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerView/powerview.ps1
Instalação
Em primeiro lugar, certifique-se de que descarrega a versão mais recente do Ninja usando o seguinte comando:
git clone https://github.com/ahmedkhlief/Ninja/
Precisa de configurar o Ninja executando o script install.sh:
chmod +x ./install.sh
sudo ./install.sh
Depois disso, precisa de inicializar a campanha:
python3 start_campaign.py
Agora pode iniciar o servidor Ninja:
python3 Ninja.py
Será saudado com o seguinte ao executá-lo: