
Scanner basato su IOC e YARA per il rilevamento di indicatori di compromesso tramite regex su nomi di file, firme YARA, corrispondenza di hash e controlli di back-connect C2 sugli endpoint.
Ho scritto un nuovo scanner YARA Open Source chiamato LOKI RS (Rust). LOKI (Python) è ora ufficialmente deprecato.
Questo progetto è ora in modalità di manutenzione inattiva. Ciò significa che, sebbene accetti pull request per correzioni di bug e problemi semplici, attualmente non ho tempo per aggiungere nuove funzionalità o espandere quelle esistenti. Per anni, la mia attenzione è stata rivolta allo sviluppo di uno scanner più avanzato, THOR, che offre una serie di miglioramenti rispetto a questo progetto. Una versione gratuita, THOR Lite, è disponibile; è più veloce, più stabile e rigorosamente testata nei nostri ambienti CI—semplicemente una soluzione migliore. Puoi trovare un confronto degli scanner open-source, gratuiti e commerciali qui.
Ho anche iniziato a lavorare su una versione basata su Rust di LOKI chiamata LOKI 2. Tuttavia, non sono sicuro di quando raggiungerà la parità di funzionalità con l'attuale rilascio di LOKI. Inoltre, ho creato un diagramma di flusso per aiutarti a decidere quale scanner soddisfi meglio le tue esigenze.

Scanner per Indicatori Semplici di Compromissione
Il rilevamento si basa su quattro metodi di rilevamento:
1. IOC basato sul nome file
Corrispondenza regex sul percorso/nome file completo
2. Controllo regole YARA
Corrispondenza firma YARA sui dati del file e sulla memoria dei processi
3. Controllo hash
Confronta hash dannosi noti (MD5, SHA1, SHA256) con i file scansionati
4. Controllo connessione C2
Confronta gli endpoint di connessione dei processi con gli IOC C2 (nuovo dalla versione v.10)
Controlli aggiuntivi:
1. Controllo del filesystem di Regin (tramite --reginfs)
2. Controllo anomalie dei processi (basato su [Sysforensics](http://goo.gl/P99QZQ))
3. Scansione di file SWF decompressi (nuovo dalla versione v0.8)
4. Controllo dump SAM
Il binario Windows è compilato con PyInstaller e dovrebbe funzionare come applicazione x86 su sistemi sia x86 che x64.
Nessun requisito se usi l'EXE compilato.
Se vuoi compilarlo da solo:
usage: loki.py [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-t remote-syslog-port] [-a alert-level] [-w warning-level]
[-n notice-level] [--allhds] [--alldrives] [--printall]
[--allreasons] [--noprocscan] [--nofilescan] [--vulnchecks]
[--nolevcheck] [--scriptanalysis] [--rootkit] [--noindicator]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug] [--maxworkingset MAXWORKINGSET]
[--syslogtcp] [--logfolder log-folder] [--nopesieve]
[--pesieveshellc] [--nolisten]
[--excludeprocess EXCLUDEPROCESS] [--force]
Loki - Simple IOC Scanner
argomenti facoltativi:
-h, --help mostra questo messaggio di aiuto ed esci
-p path Percorso da scansionare
-s kilobyte Dimensione massima del file da controllare in KB (default 5000 KB)
-l log-file File di log
-r remote-loghost Sistema syslog remoto
-t remote-syslog-port Porta syslog remota
-a alert-level Punteggio di allerta
-w warning-level Punteggio di avviso
-n notice-level Punteggio di notifica
--allhds Scansiona tutti i dischi rigidi locali (solo Windows)
--alldrives Scansiona tutte le unità (incluse unità di rete e supporti rimovibili)
--printall Stampa tutti i file scansionati
--allreasons Stampa tutti i motivi che hanno causato il punteggio
--noprocscan Salta la scansione dei processi
--nofilescan Salta la scansione dei file
--vulnchecks Esegue i controlli delle vulnerabilità
--nolevcheck Salta il controllo della distanza di Levenshtein
--scriptanalysis Analisi statistica per script per rilevare codice offuscato (beta)
--rootkit Salta il controllo dei rootkit
--noindicator Non mostrare un indicatore di progresso
--dontwait Non attendere all'uscita
--intense Modalità di scansione intensiva (scansiona anche tipi di file sconosciuti e tutte le estensioni)
--csv Scrivi formato log CSV su STDOUT (elaborazione automatica)
--onlyrelevant Stampa solo avvisi o allerte
--nolog Non scrivere un file di log locale
--update Aggiorna le firme dal sotto-repository "signature-base"
--debug Output di debug
--maxworkingset MAXWORKINGSET Dimensione massima del working set dei processi da scansionare (in MB, default 100 MB)
--syslogtcp Usa TCP invece di UDP per la registrazione syslog
--logfolder log-folder Cartella da usare per la registrazione quando il file di log non è specificato
--nopesieve Non eseguire scansioni pe-sieve
--pesieveshellc Esegue la scansione shellcode pe-sieve
--nolisten Non mostrare le connessioni in ascolto
--excludeprocess EXCLUDEPROCESS Specifica un nome eseguibile da escludere dalle scansioni, può essere usato più volte
--force Forza la scansione su una cartella specifica (anche se esclusa con esclusione forzata nel codice di LOKI