
Uno strumento di analisi e classificazione di malware.
Inhale è uno strumento di analisi e classificazione di malware in grado di automatizzare e scalare molte operazioni di analisi statica.
Questa è la versione beta, a scopo di test, feedback e sviluppo comunitario.
Inhale è nato come una serie di piccoli script che usavo per raccogliere e analizzare grandi quantità di malware da fonti diverse. Esistono molti framework e strumenti per fare lavori simili, ma nessuno si adattava davvero al mio flusso di lavoro per trovare rapidamente, classificare e memorizzare informazioni su un gran numero di file. Alcuni richiedono anche costose chiavi API e altri servizi a pagamento.
Ho finito per trasformare questi script in qualcosa che le persone possono rapidamente configurare e utilizzare, sia che si esegua da un server di ricerca, un laptop o un computer a basso costo come un Raspberry Pi.
Questo strumento è progettato per funzionare su Linux utilizzando Python3, ElasticSearch, radare2, yara e binwalk. jq è anche necessario per stampare in modo leggibile l'output del database. Ecco alcune istruzioni di base per l'installazione.
Ci sono molte cose nel file config.yml che non sono ancora state impostate, lasciale stare a meno che non sia diversamente indicato in questa documentazione.
Installa i requisiti
python3 -m pip install -r requirements.txt
Un database non è necessario per usare Inhale, ma se desideri impostarne uno, segui queste istruzioni e imposta l'opzione "enable_database" in config.yml su True.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo service elasticsearch start
Puoi anche installare manualmente seguendo questa documentazione
Inoltre puoi impostare un ELK stack completo per scopi di visualizzazione e analisi dei dati. Non è necessario per l'uso di questo strumento.
È importante installare radare2 dal repo, e non dal tuo gestore di pacchetti. Le versioni dei gestori di pacchetti non hanno tutte le funzionalità necessarie per inhale.
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
sudo apt-get install automake libtool make gcc
wget https://github.com/VirusTotal/yara/archive/v3.10.0.tar.gz
tar xvzf v3.10.0.tar.gz
cd yara-3.10.0/
./bootstrap.sh
./configure
make
sudo make install
Se ricevi errori riguardanti oggetti condivisi, prova questo per risolvere.
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
sudo ldconfig
Probabilmente è meglio installare binwalk semplicemente dal repo.
git clone https://github.com/ReFirmLabs/binwalk
cd binwalk
sudo python3 setup.py install
Maggiori informazioni sull'installazione di funzionalità aggiuntive per binwalk si trovano qui.
Questa è una libreria che calcola l'hash di sezioni di file ELF per l'analisi delle famiglie di malware. telfhash dipende da tlsh, quindi le istruzioni per installarli entrambi sono le seguenti:
Configura tlsh
git clone https://github.com/trendmicro/tlsh
cd tlsh
./make.sh
cd py_ext/
python3 ./setup.py build
sudo python3 ./setup.py install
Configura telfhash
git clone https://github.com/trendmicro/telfhash
cd telfhash
sudo python3 setup.py install
Se vuoi usare un server web per ospitare l'output di inhale da condividere, imposta le variabili in config.yml con i percorsi appropriati e assicurati che le directory esistano!
web:
gen_html: False
webdir: "/var/www/html/" # The actual web directory
fqdn: "http://threat.land" # Your website
in_path: "/var/www/html/inhaled/" # The path to inhale output
ex_path: "/var/www/html/exhaled/" # The path for db query cache output
Per usare l'output html, esegui inhale così:
python3 inhale.py [all your args here] --html
Specifica il file da analizzare in base al tipo:
-f INFILE Analyze a single file
-d DIRECTORY Analyze a directory of files
-u URLFILE Analyze a remote file (url)
-r RDIRECTORY Analyze a remote directory (url)
-l URLLIST Analyze a list of URLs in a text file
Altre opzioni:
-t TAGS Add additional tags to the output.
-b Turn off binwalk signatures
-y YARARULES Specify custom Yara Rules
-o OUTDIR Store scraped files in specific output dir (default: ./files/<date>/)
-i Just print info, don't add files to database
--html Save output as html to the webdir.
Eseguendo inhale.py verrà eseguita tutta l'analisi su un file/directory/url dato e verrà stampata sul terminale.
Visualizza info su /bin/ls, ma non aggiungere al database
python3 inhale.py -f /bin/ls -i
Aggiungi la directory 'malwarez' al database
python3 inhale.py -d malwarez/
Scarica questo file e aggiungilo al database
python3 inhale.py -u https://thugcrowd.com/chal/skull
Scarica tutto in questa directory remota, etichetta tutto come "phishing":
python3 inhale.py -r http://someurl.com/opendir/ -t phishing
SUGGERIMENTO: Usa questa ricerca di hashtag di Twitter per trovare directory aperte interessanti che potrebbero contenere malware. Usa a tuo rischio.
Puoi passare le tue regole yara con -y, questo è un grande lavoro in corso e quasi tutto in "YaraRules" proviene da https://github.com/kevthehermit/PasteHunter/tree/master/YaraRules. Un ringraziamento a @KevTheHermit
Usa db.sh per interrogare (Presto sarà un bel script)
db.sh *something* | jq .
Il seguente è il modello dati attuale utilizzato per il database elasticsearch. Non tutti questi campi saranno utilizzati per ogni file. I tag r2_* sono tipicamente riservati a binari di qualche tipo.