
Scanner di entropia per Linux per rilevare binari compressi o crittografati correlati a malware. Trova file e processi Linux dannosi e fornisce output con hash crittografici.
sandfly-entropyscan è un'utilità per scansionare rapidamente file o processi in esecuzione e riportare la loro entropia (misura di casualità) e se sono eseguibili di tipo ELF Linux/Unix. Alcuni malware per Linux sono impacchettati o crittografati e mostrano un'entropia molto alta. Questo strumento può trovare rapidamente file eseguibili e processi ad alta entropia che spesso sono dannosi.
L'entropia è una misura di casualità. Per dati binari, 0.0 significa non-casuale e 8.0 perfettamente casuale. Una buona crittografia appare come rumore bianco casuale e sarà vicina a 8.0. Una buona compressione rimuove dati ridondanti, facendoli apparire più casuali di quanto non siano decompressi, e di solito sarà a 7.7 o superiore.
Molti eseguibili malware sono impacchettati per evitare il rilevamento e rendere più difficile il reverse engineering. La maggior parte dei binari Linux standard non sono impacchettati perché non cercano di nascondere cosa sono. Cercare file ad alta entropia è un buon modo per trovare programmi che potrebbero essere dannosi semplicemente per avere questi due attributi: alta entropia ed eseguibilità.
Utilizzo di sandfly-entropyscan:
-csv
output dei risultati in formato CSV (nomefile, percorso, entropia, elf_file [true|false], MD5, SHA1, SHA256, SHA512)
-delim
cambia il delimitatore predefinito per i file CSV da "," a uno a scelta ("|", ecc.)
-dir stringa
nome della directory da analizzare
-file stringa
percorso completo di un singolo file da analizzare
-proc
controlla i processi in esecuzione (default: solo controllo ELF)
-elf
controlla solo gli eseguibili ELF
-entropy float
mostra qualsiasi file/processo con entropia maggiore o uguale a questo valore (min 0.0 - max 8.0, default 0 per mostrare tutti i file)
-version
mostra la versione ed esci
Cerca qualsiasi file eseguibile sotto /tmp:
sandfly-entropyscan -dir /tmp -elf
Cerca eseguibili ad alta entropia (7.7 e superiore) (spesso impacchettati o crittografati) sotto /var/www:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Genera entropia e hash crittografici di tutti i processi in esecuzione in formato CSV:
sandfly-entropyscan -proc -csv
Cerca qualsiasi processo con entropia superiore a 7.7, indicando che è probabilmente impacchettato o crittografato:
sandfly-entropyscan -proc -entropy 7.7
Genera valori di entropia e hash crittografici di tutti i file sotto /bin e output in formato CSV (ad esempio per salvare e confrontare hash):
sandfly-entropyscan -dir /bin -csv
Scansiona una directory per tutti i file (ELF o meno) con entropia maggiore di 7.7: (potenzialmente un elenco molto ampio di file compressi, png, jpg, file oggetto, ecc.)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
Controlla rapidamente un file e genera entropia, hash crittografici e mostra se è eseguibile:
sandfly-entropyscan -file /dev/shm/suspicious_file
Esegui controlli a campione su sistemi che pensi abbiano un problema di malware. Oppure puoi automatizzare la scansione in modo da ottenere un output se viene trovato qualcosa ad alta entropia in un luogo inaspettato. O semplicemente segnala qualsiasi file eseguibile di tipo ELF che si trova in un posto strano (ad esempio in /tmp o nella directory HTML di un utente). Per esempio:
Un binario ad alta entropia è apparso nella directory /var/www del sistema? Potrebbe essere che qualcuno abbia messo un dropper malware sul tuo sito web:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Imposta un task cron per scansionare le directory /tmp, /var/tmp e /dev/shm per qualsiasi tipo di file eseguibile, che sia ad alta entropia o meno. I file eseguibili sotto le directory tmp possono spesso essere dropper malware.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
Imposta un altro cron o una scansione di sicurezza automatica per controllare a campione i tuoi sistemi per binari altamente compressi o crittografati in esecuzione:
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
Ci sono alcuni script di compilazione di base che compilano per varie piattaforme. Puoi usarli per compilare o modificarli a tuo piacimento. Per i responder di incidenti, potrebbe essere utile tenere binari precompilati pronti per la tua macchina di indagine.
build.sh - Compila per il sistema operativo corrente su cui lo esegui.
Usiamo un metodo semplice per vedere se un file può essere di tipo eseguibile ELF. Possiamo individuare file in formato ELF per più piattaforme. Anche se il malware ha binari dropper per Intel/AMD, MIPS e Arm, saremo comunque in grado di individuarli tutti.
È possibile segnalare un binario legittimo che ha un'alta entropia a causa di come è stato compilato, o perché è stato impacchettato per motivi legittimi. Altri file come .zip, .gz, .png, .jpg e simili hanno anche un'entropia molto alta perché sono formati compressi. La compressione rimuove la ridondanza in un file, facendolo apparire più casuale e con maggiore entropia.
Su Linux, potresti trovare alcuni tipi di librerie (file .so) segnalati se scansionano le directory delle librerie.
Tuttavia, la nostra esperienza è che i binari eseguibili con alta entropia sono spesso dannosi. Questo è particolarmente vero se li trovi in aree in cui normalmente gli eseguibili non dovrebbero essere (come le directory tmp o html).
Il calcolo dell'entropia richiede la lettura di tutti i byte del file e il loro conteggio per ottenere un numero finale. Può utilizzare molta CPU e I/O su disco, specialmente su file system molto grandi o file molto grandi. Il programma ha un limite interno per cui non calcola l'entropia su file superiori a 2 GB, né tenterà di calcolare l'entropia su file che non sono di tipo regolare (ad esempio, non tenterà di calcolare l'entropia su dispositivi come /dev/zero).
Poi calcoliamo gli hash MD5, SHA1, SHA256 e SHA512. Ognuno di questi richiede di scorrere nuovamente il file. La velocità è ragionevole sui sistemi moderni, ma se stai esplorando un file system molto grande, potrebbe richiedere del tempo per completare.
Se dici al programma di guardare solo i file ELF, i calcoli di entropia/hash non avverranno a meno che non sia un tipo ELF, risparmiando molto tempo (ad esempio, ignorerà enormi file di database che non sono eseguibili).
Se vuoi automatizzare questo programma, è meglio non fargli esplorare l'intero filesystem di root a meno che tu non lo voglia specificamente. Un approccio mirato sarà più veloce e più utile per controlli a campione. Inoltre, usa il flag ELF, poiché ridurrà drasticamente i tempi di ricerca elaborando solo i tipi di file eseguibili.
Per i responder di incidenti, eseguire sandfly-entropyscan sull'intera directory di livello superiore "/" potrebbe essere una buona idea solo per ottenere rapidamente un elenco di potenziali candidati impacchettati da investigare. Questo aumenterà CPU e I/O su disco. Tuttavia, probabilmente non ti interessa a quel punto, dato che la macchina stava già minando criptovalute da 598 ore quando gli amministratori se ne sono accorti.
Ancora, usa il flag ELF per arrivare ai probabili eseguibili problematici e ignorare il rumore.
C'è uno script chiamato scripts/testfiles.sh che creerà due file. Uno sarà pieno di dati casuali e l'altro non sarà per niente casuale. Quando esegui lo script, creerà i file e avvierà sandfly-entropyscan in modalità di rilevamento eseguibili. Dovresti vedere due file. Uno con entropia molto alta (a 8.0 o vicino) e uno pieno di dati non casuali che dovrebbe essere a 0.00 per bassa entropia. Esempio:
./testfiles.sh
Creazione di file simile a eseguibile ad alta entropia casuale nella directory corrente.
Creazione di file simile a eseguibile a bassa entropia nella directory corrente.
high.entropy.test, entropy: 8.00, elf: true
low.entropy.test, entropy: 0.00, elf: true
Puoi anche caricare l'utilità upx e comprimere un eseguibile e vedere quali valori restituisce.
Sandfly Security produce una piattaforma EDR (Endpoint Detection and Response) senza agenti per Linux. I controlli automatizzati dell'entropia sono solo una delle migliaia di cose che cerchiamo per trovare intrusi senza caricare alcun software sui tuoi endpoint Linux.
Ottieni una licenza gratuita e scopri di più qui sotto:
https://www.sandflysecurity.com @SandflySecurity