
Framework modulare per la raccolta e la correlazione di artefatti di analisi malware
Subparse è un framework modulare sviluppato da Josh Strochein, Aaron Baker e Odin Bernstein. Il framework è progettato per analizzare e indicizzare file di malware e presentare le informazioni trovate durante l'analisi in un visualizzatore web ricercabile. Il framework è modulare e utilizza un motore di parsing principale, moduli di parsing e una varietà di arricchitori che aggiungono ulteriori informazioni agli indici dei malware. I valori di input principali per il framework sono directory di file malware, che il motore di parsing principale o un motore di parsing specificato dall'utente analizza prima di aggiungere ulteriori informazioni da qualsiasi motore di arricchimento specificato dall'utente, il tutto prima di indicizzare le informazioni analizzate in un indice Elasticsearch. Le informazioni raccolte possono quindi essere cercate e visualizzate tramite un visualizzatore web, che permette anche di filtrare in base a qualsiasi valore raccolto da qualsiasi file. Attualmente ci sono 3 motori di parsing, i motori di parsing predefiniti (PEParser, OLEParser e ELFParser), e 2 motori di arricchimento (ABUSEEnricher e CAPEEnricher).
Per iniziare a utilizzare Subparse, è necessario installare e configurare alcuni programmi richiesti/consigliati prima di provare a lavorare con il nostro software.
| Software |
|---|
Dopo aver installato il software richiesto/consigliato sul tuo sistema, ci sono alcuni altri passaggi da eseguire per installare Subparse.
sudo apt-get install build-essential pip3 install -r ./requirements.txt
docker-compose up
Nota: potrebbe richiedere un po' di tempo a causa del download delle immagini e della configurazione dei contenitori necessari a Subparse.
Opzioni della riga di comando disponibili per subparse/parser/subparse.py:
Per visualizzare i risultati dei parser di Subparse, naviga su localhost:8080. Se hai problemi a visualizzare il sito, assicurati che il contenitore sia avviato in Docker e che non ci sia un altro processo in esecuzione sulla porta 8080 che possa impedire l'accesso al sito.
Prima di eseguire qualsiasi parser, vengono raccolte informazioni generali sul campione indipendentemente dal tipo di file sottostante. Queste informazioni includono:
I parser vengono eseguiti SOLO sui campioni che corrispondono al tipo di file. Ad esempio, i file PE verranno eseguiti di default dal PEParser poiché il tipo di file corrisponde a quelli che il PEParser è in grado di esaminare.
Questi moduli sono opzionali e verranno eseguiti SOLO se specificati tramite il flag -e | --enrichers sulla riga di comando.
La vista web di Subparse è stata costruita utilizzando Bootstrap per il CSS, ciò permette di utilizzare qualsiasi CSS integrato di Bootstrap quando si sviluppano i propri file Vue.js personalizzati per Parser/Arricchitori. Abbiamo anche fornito un esempio per ciascuno per aiutare a iniziare e abbiamo implementato alcuni widget personalizzati per facilitare il processo di sviluppo e promuovere la standardizzazione nel modo in cui le informazioni vengono visualizzate. Tutti i file Vue.js vengono utilizzati per visualizzare dinamicamente le informazioni dal Parser/Arricchitore personalizzato e fungono da modelli per i dati.
Nota: Le convenzioni di denominazione sia per i nomi delle classi che dei file devono essere rigorosamente rispettate; questo è la prima cosa da controllare se si incontrano problemi nel far eseguire il proprio Parser/Arricchitore personalizzato. La convenzione di denominazione del tuo Parser/Arricchitore deve utilizzare lo stesso nome in tutti i file e nomi di classe.
L'oggetto logger è un'implementazione singleton del logger Python predefinito. Per un uso approfondito, fare riferimento alla Documentazione Ufficiale. Per Subparse, gli unici metodi di logging che consigliamo di utilizzare sono i livelli di logging per l'output. Questi sono:
| Stato |
|---|
| Collegamento |
|---|
| Docker | Richiesto | Guida all'installazione |
| Python3.8.1 | Richiesto | Guida all'installazione |
| Pyenv | Consigliato | Guida all'installazione |
| Argomento | Alternativa | Obbligatorio | Descrizione |
|---|
| -h | --help | No | Mostra il menu di aiuto |
| -d SAMPLES_DIR | --directory SAMPLES_DIR | Sì | Directory dei campioni da analizzare |
| -e ENRICHER_MODULES | --enrichers ENRICHER_MODULES | No | Moduli di arricchimento da utilizzare per analisi aggiuntive |
| -r | --reset | No | Resetta/elimina tutti i dati nel cluster Elasticsearch configurato |
| -v | --verbose | No | Mostra output dettagliato della riga di comando |
| -s | --service-mode | No | Entra in modalità servizio che permette di aggiungere ulteriori campioni a SAMPLES_DIR durante l'elaborazione |