HardHat C2

HardHat è un framework multi‑utente Command & Control (C2) basato su C# .NET, progettato per supportare operazioni di red team e penetration test. Mira a migliorare la qualità della vita durante gli impegni fornendo un framework C2 robusto e facile da usare.
HardHat è composto da tre componenti principali:
- Un teamserver ASP.NET
- Un client Blazor .NET
- Impianti C# integrati
- Supporto per impianti di terze parti in altri linguaggi
La documentazione completa è disponibile su https://docs.hardhat-c2.net/.
NOTA: HardHat è in rilascio Alpha; presenterà bug, funzionalità mancanti e possono accadere cose inaspettate. Grazie per averlo provato; segnala eventuali problemi o funzionalità mancanti in modo che possano essere affrontati.
Unisciti alla nostra community su Discord per parlare di HardHat C2, programmazione, red teaming e temi generali di cybersecurity. È anche un ottimo posto per chiedere aiuto, segnalare bug o nuove funzionalità e rimanere aggiornato sugli ultimi sviluppi.
I contributi di codice sono benvenuti! Sentiti libero di inviare richieste di funzionalità, pull request o condividere le tue idee su Discord.
Caratteristiche
Supporto per Asset Personalizzati
- Gli Asset sono gli Impianti e i plugin associati per il team server e il client.
Per vedere quelli disponibili e imparare a crearne di nuovi, dai un'occhiata a HardHat Toolbox
Teamserver & Client
- Account operatori individuali con controllo degli accessi basato su ruoli (RBAC)
- Consente la personalizzazione dell'account
- Consente l'accesso limitato a funzionalità specifiche (es. ruolo ospite solo visualizzazione, approvazione opsec del caposquadra – in lavorazione)
- Manager (Listener)
- Generazione dinamica di Payload (EXE, DLL, shellcode, comando PowerShell)
- Creazione e modifica al volo dei profili C2 direttamente dal client
- Personalizzazione della generazione dei payload
- Tempo di sleep/jitter
- Data di kill
- Orari di lavoro
- Tipo (EXE, DLL, shellcode, comando PowerShell)
- Comandi inclusi (in lavorazione)
- Opzione per eseguire ConfuserEx
- Upload & Download di file
- Vista a Grafo
- GUI di Esplora File
- Registro Eventi
- Logging JSON per eventi e task
- Tracciamento del bottino
- Tracciamento degli Indicatori di Compromissione (IOC)
- Proxy di pivot (SOCKS 4a, Port forward)
- Archivio credenziali
- Cronologia comandi con completamento automatico
- Comando di aiuto dettagliato
- Terminale bash interattivo (se il client è su Linux) o PowerShell (su Windows)
- Consente l'analisi e il logging automatico dei comandi terminale come proxychains
- Archiviazione persistente su database degli elementi del teamserver (account utente, Manager, Engineer, eventi, task, credenziali, download, upload, ecc.)
- Tracciamento delle entità di ricognizione (informazioni su utenti/dispositivi, metadati casuali se necessario)
- File condivisi per alcuni comandi (vedi pagina del teamserver per i dettagli)
- Finestra di interazione basata su schede per impartire comandi
- Output basato su tabella per alcuni comandi (es.
ls, ps, ecc.)
- Analisi automatica dell'output di Seatbelt per creare "entità di ricognizione" per un comodo riferimento
- Tema scuro e chiaro 🤮

Engineer
- Impianto C# .NET per dispositivi Windows (attualmente solo supporto CLR/.NET 4)
- Al momento un solo impianto, ma si sta lavorando per aggiungerne altri
- Può essere generato come EXE, DLL, shellcode o stager PowerShell
- Crittografia RC4 della memoria del payload e dell'heap durante lo sleep (solo EXE/DLL)
- Crittografia AES di tutte le comunicazioni di rete
- Integrazione di ConfuserEx per l'offuscamento
- Comunicazione HTTP, HTTPS, TCP, SMB
- TCP e SMB possono funzionare peer‑to‑peer (P2P) in configurazioni bind o reverse
- Chiave univoca per ogni impianto generata al momento della compilazione
- URI di callback multipli a seconda del profilo C2
- Integrazione di P/Invoke e D/Invoke per chiamate API Windows
- Supporto SOCKS 4a
- Reverse Port Forward e Port Forward
- Tutti i comandi vengono eseguiti come job asincroni e cancellabili
- Opzione per eseguire comandi in modo sincrono, se desiderato
- Esecuzione di assembly inline e shellcode inline
- Iniezione DLL
- Esecuzione di assembly e integrazione di Mimikatz
- Mimikatz non è integrato nell'impianto, ma viene inviato quando vengono impartiti comandi specifici
- Vari strumenti di enumerazione locale e di rete
- Comandi per la manipolazione dei token
- Steal Token Mask (in lavorazione)
- Comandi per Movimento Laterale
- Jump (psexec, wmi, wmi-ps, winrm, dcom)
- Esecuzione remota (in lavorazione)
- Patching di AMSI (Antimalware Scan Interface) e ETW (Event Tracing for Windows)
- PowerShell non gestito
- Script Store consente di caricare più script contemporaneamente
- Spawn & Inject
- Run, execute e shell

Per iniziare
Installazione
Docker
- Installa Docker e Docker Compose
- Esegui
docker compose up -d
- Opzionalmente, fornisci
HARDHAT_ADMIN_USERNAME e/o HARDHAT_ADMIN_PASSWORD come variabili d'ambiente; se omesse, il nome utente admin predefinito e la password generata casualmente verranno scritti nei log del teamserver al primo avvio
- Vai su https://localhost:7096/ nel tuo browser
Manuale
- Installa .NET 7 SDK da Microsoft
- Esegui
dotnet run dalla directory .\TeamServer per compilare e avviare il teamserver
- Esegui
dotnet run https://<HOST_TEAMSERVER>:<PORTA_TEAMSERVER> dalla directory HardHatC2Client
- Ad esempio, supponendo che il teamserver sia in esecuzione sullo stesso host e sulla porta predefinita:
dotnet run https://127.0.0.1:5000
- Vai su https://localhost:7096/ nel tuo browser
Per configurare l'indirizzo di ascolto del teamserver (cioè dove i client si collegheranno), modifica .\TeamServer\Properties\LaunchSettings.json e cambia "applicationUrl": "https://127.0.0.1:5000" con la posizione e la porta desiderate.
Configurazione
- Accedi all'interfaccia web del client utilizzando il nome utente e la password impostati tramite variabile d'ambiente o stampati su STDOUT dal teamserver
- Vai alla pagina Impostazioni e crea un nuovo account utente
- Se l'operazione riesce, apparirà un messaggio; puoi quindi accedere con quell'account per utilizzare il client completo
Tracciamento delle versioni
- Rilascio Alpha 0.2 - 6/7/23
- Rilascio Alpha - 29/3/23