SUNBURST
Rilevamento per C2 Stage-1 di SUNBURST utilizzando l'Entropia di Shannon
Utilizzo dell'Entropia di Shannon per rilevare algoritmi di generazione di domini (DGA).
Dovrebbero essere inseriti solo FQDN nella funzione o letti da un file CSV.
SYNTAX: Prefisso_o_sottodominio.Dominio.TLD
Creato a causa di APT che sfruttano DGA a stringhe lunghe per la Kill Chain: C2.
Identifica URL a stringhe lunghe con alta entropia > 2 Deviazioni Standard.
Osservando il limite superiore del 2.5% degli URL con prefissi/sottodomini lunghi.
Salvataggio di metadati extra se gli analisti CND ne hanno bisogno (es. Lunghezza del Prefisso)
Requisiti:
- Python 3.9+
- Python presente nella variabile PATH
- Tutte le importazioni elencate (pip install, se necessario)
- Il log DNS di input ha 1 FQDN per riga (nessuna altra punteggiatura)
- Cisco Top-1M (CSV, ZIP) o Majestic (CSV) Top-1M presenti nella stessa cartella dello script.
Come Eseguire (MODALITÀ INTERATTIVA ATTIVA, vedi VARIABILI):
- Installare Python 3.9.x
- Preparare tutti i file di input con la formattazione corretta (domini in un file di testo, 1 per riga, senza punteggiatura)
- Assicurarsi che i file di input siano nella stessa directory/cartella di questo script.
4a) (Windows) Aprire questo script in Python IDLE o Visual Studio Code.
4b) (Linux) $~: python3 shannon.py
- Inserire il file di log DNS da esaminare.
- Inserire il file Cisco Umbrella (CSV/ZIP) o Majestic Top-1M (CSV) da utilizzare.
- Attendere la generazione dei valori di Frequenza ed Entropia di Shannon.
- Esaminare i file di output.
Come Eseguire (MODALITÀ INTERATTIVA DISATTIVATA, vedi VARIABILI):
- Installare Python 3.9.x
- Preparare tutti i file di input con la formattazione corretta (domini in un file di testo, 1 per riga, senza punteggiatura)
- Assicurarsi che i file di input siano nella stessa directory/cartella di questo script.
4a) (Windows) Aprire questo script in Python IDLE o Visual Studio Code.
4b) (Linux) $~: python3 shannon.py
- Il log di input da analizzare è "domains.txt", vedi VARIABILI.
- Scegliere il file Top-N per costruire la probabilità del dizionario, vedi VARIABILI.
- Attendere la generazione dei valori di Frequenza ed Entropia di Shannon.
- Esaminare i file di output.
Assunzioni:
- Lettere maiuscole e minuscole hanno uguale probabilità di comparsa.
a) Trascurando che i nodi TOR alterano la sensibilità alle maiuscole/minuscole nelle query DNS e la codifica 0x20.
- La tabella di frequenza dei caratteri ETOAN è insufficiente a causa della mancanza di: 0-9, "-" e ""
a) I domini possono contenere trattini (-), underscore () e numeri.
- Non progettato per contrastare la DGA di ExploderBot.
- Input: semplice file di testo, ogni URL sulla propria riga - nient'altro.
- L'input è composto esclusivamente da stringhe URL senza caratteri proibiti.
- I file di input e output devono essere nella stessa cartella di questo script.
- Python3 è nella variabile PATH.
Set di Dati (Domini):
Il set di dati utilizzato è stato derivato dal log delle query di Pi-Hole (finestra di 12 ore) estratto da SQLite.
BASH:
$~: sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp >='$(($(date +%s) - 43200))'" > domains.txt
I dati sono stati deduplicati utilizzando Excel > Data > Remove Duplicates
Sono stati rimossi anche i dati per i Reverse Lookup (PTR) in-addr.arpa.
Set di Dati (Probabilità):
Sfruttando i risultati di RedCanary per l'analisi DGA, questo script prende l'URL e calcola l'entropia di Shannon.
Fase di Testing DevOps:
- shannon.py (1.0) - Far funzionare i calcoli con il Dizionario statico di RedCanary.
- shannon.py (1.1) - Test minori integrati nella 1.0.
- dictionary.py (1.0) - Test di apertura/chiusura di Cisco + Majestic Top-1M.
- shannon.py (2.0) - Combinazione della 1.0 con le funzioni testate di dictionary.py.
Riferimenti:
Splunk Shannon Entropy - da dove è nata l'idea*
https://www.splunk.com/en_us/blog/tips-and-tricks/when-entropy-meets-shannon.html
SANS Mark Baggett - Strumento usato da RedCanary per analizzare Alexa Top 1M
https://github.com/markbaggett/freq
RedCanary - Blog da cui provengono i punteggi di Probabilità
https://redcanary.com/blog/threat-hunting-entropy/
Alexa's Top 1M Domains - Corpus di dati utilizzato da RedCanary
https://www.alexa.com/topsites
DGA Detector
https://github.com/exp0se/dga_detector
Entropia di Shannon - Formula
https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800