
Servizio Windows che crea sessioni SMB fittizie per simulare accessi utente con privilegi elevati, attirando gli aggressori verso macchine honeypot per rilevamento precoce e risposta agli incidenti.
/ | / || ___ \ / __| () / | / |
\ --.| . . || |_/ / \ --. ___ ___ ___ _ ___ _ __ \ --. _ __ ___ ___ | |_ ___ _ __ --. \ |/| || ___ \ --. \/ _ \/ __/ __| |/ _ \| '_ \ --. \ ' \ / _ \ / _ | _/ _ \ '|
/_/ / | | || |/ / /_/ / /_ _ \ | () | | | | /_/ / |) | () | () | || / |
_/_| |/_/ _/ _||//|___/|| || _/| ./ _/ _/|| ___||
| |
|_|
Benvenuto! Questa è un'utilità che può essere compilata con Visual Studio 2019 (o versioni successive). L'obiettivo di questo programma è creare una falsa sessione SMB. Lo scopo principale è quello di fungere da metodo per attirare gli aggressori ad accedere a un dispositivo esca (honey-device). Questo programma viene fornito senza garanzie di alcun tipo.
Questo programma richiederà di modificare leggermente il codice. Alla riga 144, viene chiamata l'API Windows CreateProcessWithLogonW, con due parametri forniti di default: svc-admin (il nome utente) e contoso.com (il dominio). È necessario modificare questi valori con qualcosa che corrisponda alla vostra rete di produzione.
CreateProcessWithLogonW(L"DomainAdminUser", L"YourDomain.com", NULL, LOGON_NETCREDENTIALS_ONLY, <snip>);
Dopo aver modificato il codice e compilato, è necessario installare il servizio. È possibile farlo con il seguente comando:
sc create servicename binpath="C:\ProgramData\Services\Inject\service.exe" start="auto"
Per verificare che il programma funzioni correttamente, è necessario controllare le sessioni presenti sul sistema. Ciò può essere fatto con il seguente comando:
C:\ProgramData\Services\Inject> net sessions
Computer User name Client Type Opens Idle time
-------------------------------------------------------------------------------
\\[::1] svc-admin 0 00:00:04
The command completed successfully.
Si consiglia di ricontrollare dopo circa 13 minuti per verificare che sia stata creata una nuova sessione e che il programma funzioni correttamente.
La teoria alla base è che quando un avversario esegue SharpHound e raccoglie sessioni e analizza i percorsi di attacco dai principali compromessi, può identificare che un utente con privilegi elevati ha effettuato l'accesso su un'infrastruttura di Tier-2 (Workstation), alla quale (apparentemente) può accedere e quindi dumpare le credenziali per ottenere l'accesso come amministratore di dominio.
Nello scenario sopra, un aggressore ha compromesso l'utente '[email protected]' che è amministratore locale su lab-wkst-2.contoso.com. L'utente svc-admin ha effettuato l'accesso su lab-wkst-2.contoso.com, il che significa che tutto ciò che l'aggressore deve fare è accedere alla Workstation, eseguire Mimikatz e dumpare le credenziali. Allora, come si monitora questo?
L'implementazione di questo strumento è importante, così come il monitoraggio. Se si implementa lo strumento senza monitoraggio, è effettivamente inutile; pertanto il monitoraggio è un must. Il modo più efficace per monitorare questo host è di attivare un avviso per qualsiasi accesso. Questo programma è meglio utilizzato su un host senza attività utente che sia unito al dominio con strumenti di monitoraggio aziendali standard (EDR, AV, Inoltro eventi di Windows, ecc.). È altamente consigliato avere un avviso via email, SMS e molti altri se possibile per garantire che gli incidenti che coinvolgono questa macchina vengano gestiti il più rapidamente possibile, poiché questa ha la più alta probabilità che un vero aggressore interagisca con la workstation in questione.
Ringraziamenti a Microsoft per aver fornito il codice template del servizio e per l'eccellente documentazione delle API Windows.