
** SOSPESO ** Framework C2 che utilizza Background Intelligent Transfer Service (BITS) come protocollo di comunicazione e Direct Syscalls + Dinvoke per l'elusione dell'hooking in modalità utente degli EDR.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS è un framework C2 che utilizza il Background Intelligent Transfer Service (BITS) di Microsoft per stabilire il canale di comunicazione tra l'host compromesso e il backend. Il backend C2 è nascosto dietro un'applicazione web Flask apparentemente innocua ed è accessibile solo quando le richieste HTTP ricevute dall'app contengono un header di autenticazione valido. Poiché questo strumento è pensato per ambienti altamente monitorati, sono state implementate le seguenti funzionalità per evitare il rilevamento da parte di EDR e AV:
Per quanto riguarda l'architettura, LOLBITS è composto da 3 elementi principali:
Per impedire l'ispezione del contenuto da parte dei proxy, tutto il contenuto rilevante inviato tra l'agente e il server C2 viene crittografato utilizzando RC4 con una chiave segreta preshared generata casualmente. Un diagramma di alto livello del comportamento dell'infrastruttura è mostrato nell'immagine seguente:
Per evitare che il Blue Team possa riprodurre alcune delle vecchie richieste e scoprire l'infrastruttura backend C2, ogni header di autenticazione viene generato casualmente ed è valido solo per un singolo ciclo (un ciclo è composto da una richiesta POST seguita da una richiesta GET, in quest'ordine). I vecchi header di autenticazione verranno ignorati e per quelle richieste verrà visualizzato il sito web innocuo.
Alcune funzionalità di questo strumento sono state implementate riutilizzando codice da altri progetti o grazie all'impegno di diversi ricercatori di sicurezza informatica. Di seguito elenco alcuni dei lavori e progetti esterni che sono stati utilizzati in un modo o nell'altro per migliorare questo strumento:
Per l'infrastruttura C2 è necessario un Windows Server 2016 o superiore con Python 3.4+ e PowerShell 5.1+. L'agente C# è stato testato con successo su Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 e Windows 10. Per compilarlo è richiesto:
1.- Clona questo repository sul tuo server C2
git clone https://github.com/Kudaes/LOLBITS.git
2.- Installa il server Web (IIS) tramite Windows Server Manager. Assicurati di installare i ruoli CGI, ASP.NET e .NET Extensibility.
Installa anche le funzionalità .NET Framework e BITS per IIS.
3.- Esegui lo script setup.ps1 come amministratore per distribuire l'intera infrastruttura e configurare l'agente C#.
4.- Compila l'agente C#. La compilazione genererà un file .exe e una dipendenza esterna (Newtonsoft.Json.dll). Puoi generare un unico .exe utilizzando ILMerge o inviare entrambi i file all'host compromesso. Per evitare output di DEBUG, assicurati di compilare il progetto come Applicazione Windows.
5.- (Opzionale) Per impostazione predefinita, lo script setup.ps1 creerà un nuovo sito Web in IIS chiamato lawlbits in ascolto sulla porta HTTP predefinita (80/TCP). Questo nuovo sito Web non utilizza HTTP su TLS e, sebbene il contenuto delle richieste inviate dall'agente C# al C2 sia crittografato utilizzando RC4 con una chiave segreta preshared generata casualmente, si consiglia di configurare l'uso di HTTPS per il nuovo sito. A tal fine, consiglio di utilizzare Let's Encrypt su lawlbits, uno dei modi più semplici per configurare HTTPS. Successivamente, ricordati di modificare la variabile Url in Program.cs per utilizzare HTTPS invece di HTTP, che è il comportamento predefinito.
Per ottenere la reverse shell digita python lawlbin.py in un cmd del server C2 ed esegui l'agente C# sull'host compromesso.
Poiché questo progetto nasce dalle ceneri di un precedente progetto fallito, alcune delle vecchie funzionalità sono state mantenute. Il vecchio progetto era una shell dove tutti i comandi disponibili venivano eseguiti utilizzando esclusivamente Living of The Land Binaries. È da qui che deriva il "LOL" di LOLBITS, ed è per questo che le seguenti funzionalità vengono eseguite utilizzando esclusivamente LOLBINS (questo potrebbe aiutare a bypassare AWS e alcuni filtri AV/EDR):
Sebbene queste funzionalità possano essere interessanti in alcuni ambienti (hmm scaricare file remoti senza usare PowerShell? Mi piace!), le ho mantenute solo per riutilizzare parte del vecchio codice per la console C2. Di seguito è riportato un elenco con altre funzionalità che sono sicuro saranno più utili in un contesto classico di red team:
Per suggerimenti sull'utilizzo, digita help o <comando> help.
Qualsiasi contributo sarà molto apprezzato.
git checkout -b feature/AmazingFeature)git commit -m 'Aggiungi qualche AmazingFeature')git push origin feature/AmazingFeature)Distribuito con licenza GNU. Vedi LICENSE per maggiori informazioni.