
Imaginary C2 è uno strumento Python che mira ad aiutare nell'analisi comportamentale (di rete) del malware. Imaginary C2 ospita un server HTTP che cattura le richieste HTTP verso domini/IP selezionati. Inoltre, lo strumento mira a rendere facile riprodurre le risposte Command-and-Control catturate / i payload serviti.
autore: Felix Weyne (sito web) (Twitter)
Imaginary C2 è uno strumento Python che mira ad aiutare nell'analisi comportamentale (di rete) dei malware.
Imaginary C2 ospita un server HTTP che cattura le richieste HTTP verso domini/IP selezionati. Inoltre, lo strumento mira a semplificare la riproduzione delle risposte Command-and-Control catturate/delle payload servite.
Utilizzando questo strumento, un analista può fornire al malware risposte di rete coerenti (ad es. istruzioni C&C per il malware da eseguire). Inoltre, l'analista può catturare e ispezionare le richieste HTTP verso un dominio/IP che è offline al momento dell'analisi.

Imaginary C2 fornisce due script per convertire catture di pacchetti (PCAP) o archivi di sessioni Fiddler in definizioni di richieste che possono essere analizzate da Imaginary C2. Tramite questi script l'utente può estrarre URL e domini delle richieste HTTP, nonché le risposte HTTP. In questo modo, è possibile riprodurre rapidamente le risposte HTTP per una determinata richiesta HTTP.
requisiti: Imaginary C2 richiede Python 2.7 e Windows.
moduli: Attualmente, Imaginary C2 contiene tre moduli e due file di configurazione:
definizioni delle richieste: Ogni richiesta (HTTP) definita nella configurazione delle richieste consiste di due parametri:
Parametro 1: Percorso URL della richiesta HTTP (noto come urlType)
| Valore | Significato |
|---|---|
| fixed | Definisce il percorso URL come stringa letterale |
| regex | Definisce un pattern regex da confrontare con il percorso URL |
Parametro 2: Sorgente della risposta HTTP (noto come sourceType)
| Valore | Significato |
|---|---|
| data | Imaginary C2 risponderà con il contenuto di un file su disco |
| python | Imaginary C2 eseguirà uno script Python. L'output dello script Python definisce la risposta HTTP. |
Imaginary C2 può essere utilizzato per simulare l'hosting di componenti e file di configurazione di TrickBot. Inoltre, può essere utilizzato anche per simulare i server di web injection di TrickBot.
All'esecuzione, il downloader di TrickBot si connette a un insieme di IP hardcoded per recuperare alcuni file di configurazione. Uno di questi file di configurazione contiene le posizioni (indirizzi IP) dei server dei plugin TrickBot. Il downloader di TrickBot scarica i plugin (moduli) da questi server e li decripta. I moduli decriptati vengono quindi iniettati in un'istanza di svchost.exe.

Uno dei plugin di TrickBot è chiamato injectdll, un plugin responsabile dei webinject di TrickBot. Il plugin injectdll recupera regolarmente un insieme aggiornato di configurazioni di webinject. Per ogni sito web (bancario) targettizzato nella configurazione, viene definito l'indirizzo di un webfake server. Quando una vittima naviga su un sito web (bancario) targettizzato da TrickBot, il suo browser viene segretamente reindirizzato al webfake server. Il webfake server ospita una replica del sito web targettizzato. Questo sito replica viene solitamente utilizzato in un attacco di ingegneria sociale per frodare la vittima.
Il video seguente mostra il downloader di TrickBot in esecuzione all'interno di svchost.exe e che si connette a Imaginary C2 per scaricare due moduli. Ogni modulo scaricato viene iniettato in una nuova istanza di svchost.exe. Il modulo webinject tenta di rubare le password salvate dal browser e di esfiltrare le password rubate al server TrickBot. Visitando un sito web bancario targettizzato, TrickBot reindirizza il browser al webfake server. Nella demo, il webfake server ospita il messaggio: "Risposta predefinita del server Imaginary C2" (video completo).

| Nome file | Funzione |
|---|
| 1. imaginary_c2.py | Ospita il semplice server HTTP di Python. Modulo principale. |
| 2. redirect_to_imaginary_c2.py | Modifica il file hosts di Windows e la tabella di routing (IP) di Windows. |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | Estrae le risposte HTTP dalle catture di pacchetti. Aggiunge i domini e gli URL delle richieste HTTP corrispondenti ai file di configurazione. |
| 4. redirect_config.txt | Contiene domini e IP che devono essere reindirizzati a localhost (al server HTTP Python). |
| 5. requests_config.txt | Contiene le definizioni dei percorsi URL con le corrispondenti fonti di dati. |