HardHat C2

HardHat é um framework de comando e controle (C2) multi-usuário baseado em C# .NET, projetado para auxiliar em engajamentos de red team e testes de penetração. Ele visa melhorar a qualidade de vida durante os engajamentos, fornecendo um framework C2 robusto e fácil de usar.
HardHat possui três componentes principais:
- Um teamserver ASP.NET
- Um cliente .NET Blazor
- Implants baseados em C# integrados
- Suporte para implants de terceiros em outras linguagens
A documentação completa está disponível em https://docs.hardhat-c2.net/.
NOTA: HardHat está em uma versão Alpha; pode conter bugs, funcionalidades ausentes e acontecimentos inesperados. Obrigado por testá-lo e por favor reporte quaisquer problemas ou funcionalidades ausentes para que possam ser resolvidos.
Comunidade
Junte-se à nossa comunidade no Discord para conversar sobre HardHat C2, programação, red teaming e tópicos gerais de segurança cibernética. Também é um ótimo lugar para pedir ajuda, enviar bugs ou novas funcionalidades, e ficar atualizado sobre as últimas adições.
Contribuições de código são bem-vindas! Sinta-se à vontade para enviar solicitações de funcionalidades, pull requests, ou enviar suas ideias no Discord.
Funcionalidades
Suporte a Assets Personalizados
- Assets são os Implants e plugins associados para o team server e cliente.
Para ver os disponíveis e aprender como criar mais, confira o HardHat Toolbox
Teamserver & Cliente
- Contas de operador individuais com controle de acesso baseado em funções (RBAC)
- Permite personalização de conta
- Permite acesso restrito a funcionalidades específicas (ex.: função de convidado somente leitura, aprovação opsec do líder de equipe - WIP)
- Gerenciadores (Listeners)
- Geração Dinâmica de Payload (EXE, DLL, shellcode, comando PowerShell)
- Criação e edição de perfis C2 em tempo real no cliente
- Personalização da geração de payload
- Tempo de sleep/jitter
- Data de expiração
- Horário de trabalho
- Tipo (EXE, DLL, shellcode, comando PowerShell)
- Comandos incluídos (WIP)
- Opção de executar ConfuserEx
- Upload & Download de arquivos
- Visualização em Grafo
- GUI do Navegador de Arquivos
- Log de Eventos
- Log em JSON para eventos e tarefas
- Rastreamento de saques (Loot)
- Rastreamento de Indicadores de Comprometimento (IOC)
- Proxies de pivô (SOCKS 4a, encaminhamento de porta)
- Armazenamento de credenciais
- Histórico de comandos com preenchimento automático
- Comando de ajuda detalhado
- Terminal bash interativo se o cliente estiver no Linux ou PowerShell no Windows
- Permite análise e registro automáticos de comandos de terminal como proxychains
- Armazenamento persistente em banco de dados dos itens do teamserver (contas de usuário, Gerenciadores, Engenheiros, Eventos, tarefas, creds, downloads, uploads, etc.)
- Rastreamento de Entidades de Reconhecimento (rastrear informações sobre usuários/dispositivos, metadados aleatórios conforme necessário)
- Arquivos compartilhados para alguns comandos (veja a página do teamserver para detalhes)
- Janela de interação baseada em abas para emitir comandos
- Opção de saída baseada em tabela para alguns comandos (ex.:
ls, ps, etc.)
- Análise automática da saída do Seatbelt para criar "entidades de reconhecimento" para referência conveniente

Engenheiros
- Implant do framework C# .NET para dispositivos Windows (atualmente apenas suporte a CLR/.NET 4)
- Apenas um implant no momento, mas buscando adicionar outros
- Pode ser gerado como EXE, DLL, shellcode ou stager PowerShell
- Criptografia RC4 da memória e heap do payload durante o sleep (apenas EXE / DLL)
- Criptografia AES de toda comunicação de rede
- Integração com ConfuserEx para ofuscação
- Comunicação HTTP, HTTPS, TCP, SMB
- TCP e SMB podem funcionar peer-to-peer (P2P) em configurações bind ou reverse
- Chave única por implant gerada no momento da compilação
- Múltiplos URIs de callback dependendo do perfil C2
- Integração com P/Invoke e D/Invoke para chamadas de API do Windows
- Suporte a SOCKS 4a
- Encaminhamento de Porta Reverso e Encaminhamento de Porta
- Todos os comandos executados como jobs assíncronos e canceláveis
- Opção de executar comandos de forma síncrona, se desejado
- Execução de assembly inline e execução de shellcode inline
- Injeção de DLL
- Execute assembly e integração com Mimikatz
- Mimikatz não está embutido no implant, mas é enviado quando comandos específicos são emitidos
- Várias ferramentas de enumeração local e de rede
- Comandos de manipulação de tokens
- Comandos de Movimento Lateral
- Jump (psexec, wmi, wmi-ps, winrm, dcom)
- Execução Remota (WIP)
- Correção da Interface de Verificação Antimalware (AMSI) e Rastreamento de Eventos para Windows (ETW)
- PowerShell Não Gerenciado
- Armazenamento de Scripts permite carregar vários scripts de uma vez
- Spawn & Inject
- Run, execute e shell

Primeiros Passos
Instalação
Docker
- Instale o Docker e o Docker Compose
- Execute
docker compose up -d
- Opcionalmente, forneça
HARDHAT_ADMIN_USERNAME e/ou HARDHAT_ADMIN_PASSWORD como variáveis de ambiente; se omitidos, o nome de usuário admin padrão e a senha gerada aleatoriamente serão escritos nos logs do teamserver na primeira execução
- Navegue para https://localhost:7096/ no seu navegador
Manual
- Instale o .NET 7 SDK da Microsoft
- Execute
dotnet run a partir do diretório .\TeamServer para compilar e iniciar o teamserver
- Execute
dotnet run https://<TEAMSERVER_HOST>:<TEAMSERVER_PORT> a partir do diretório HardHatC2Client
- Por exemplo, assumindo que seu teamserver está rodando no mesmo host e porta padrão:
dotnet run https://127.0.0.1:5000
- Navegue para https://localhost:7096/ no seu navegador
Para configurar o endereço de escuta do teamserver (ou seja, onde os clientes se conectarão), edite .\TeamServer\Properties\LaunchSettings.json e altere "applicationUrl": "https://127.0.0.1:5000" para o local e porta desejados.
Configuração
- Faça login na interface web do cliente usando o nome de usuário e senha definidos com variável de ambiente ou impressos no STDOUT pelo teamserver
- Navegue até a página de Configurações e crie uma nova conta de usuário
- Se bem-sucedido, uma mensagem aparecerá; você pode então fazer login com essa conta para acessar o cliente completo
Acompanhamento de Versões
- Lançamento Alpha 0.2 - 6/7/23
- Lançamento Alpha - 29/3/23