
Malwoverview è uno strumento di prima risposta per la caccia alle minacce attraverso VirusTotal, Hybrid Analysis, URLHaus, Polyswarm, Malshare, Alien Vault, Malpedia, Malware Bazaar, ThreatFox, Triage, IPInfo, Shodan, AbuseIPDB, GreyNoise, URLScan.io, Whois/RDAP, NIST e VulnCheck. Supporta l'arricchimento LLM, l'estrazione di IOC, la scansione YARA e l'analisi Android.
Copyright (C) 2018-2026 Alexandre Borges (https://exploitreversing.com)
Questo programma è software libero: puoi redistribuirlo e/o modificarlo
secondo i termini della GNU General Public License come pubblicata dalla
Free Software Foundation, versione 3 della Licenza, o
(a tua scelta) qualsiasi versione successiva.
Questo programma è distribuito nella speranza che possa essere utile,
ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di
COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la
GNU General Public License per maggiori dettagli.
Vedi la GNU Public License su <http://www.gnu.org/licenses/>.
Nota importante: Malwoverview NON invia campioni a nessun endpoint per impostazione predefinita,
quindi rispetta eventuali accordi di non divulgazione (NDA). Esistono opzioni specifiche
che inviano esplicitamente i campioni, ma queste opzioni sono spiegate nella guida.
Malwoverview.py è uno strumento di prima risposta per il threat hunting, che esegue una triage iniziale e rapida di campioni di malware, URL, indirizzi IP, domini, famiglie di malware, IOC e hash. Inoltre, Malwoverview è in grado di ottenere report di comportamento dinamici e statici, inviare e scaricare campioni da diversi endpoint. In poche parole, funziona come un client per le principali sandbox esistenti.
Questo strumento mira a:
Alexandre Borges (https://github.com/alexandreborges) | proprietario del progetto e sviluppatore principale
Artur Marzano (https://github.com/Macmod) | co-sviluppatore principale
Corey Forman (https://github.com/digitalsleuth) | responsabile dell'integrazione con REMnux
Christian Clauss (https://github.com/cclauss)
Dalla versione 6.0.0 esiste un nuovo branch chiamato "dev". Tutti i contributi e le proposte devono essere fatti su questo branch "dev".
I professionisti che vogliono contribuire devono aprire una issue spiegando il miglioramento proposto e come migliorerebbe il progetto. Una volta accettato, viene autorizzato/a a inviare la PR, che verrà testata.
Una volta testate tutte le modifiche, questa nuova versione di Malwoverview viene replicata sul branch master e viene generato un nuovo pacchetto Python.
Questo strumento è stato testato su REMnux, Ubuntu, Kali Linux, macOS e Windows. Malwoverview può essere installato eseguendo il seguente comando:
* pip3.11 install git+https://github.com/alexandreborges/malwoverview
oppure...
* python -m pip install -U malwoverview
Se vuoi installare Malwoverview su macOS, devi eseguire i seguenti comandi:
* /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
* brew install libmagic
* pip3 install urllib3==1.26.6
* pip3 install -U malwoverview
* Aggiungi la directory dei binari Python alla variabile PATH modificando il file .bash_profile nella tua home
directory. Esempio:
export PATH=$PATH:/Users/alexandreborges/Library/Python/3.9/bin
* Esegui: . ./.bash_profile
Se stai installando Malwoverview su Windows, assicurati che le seguenti condizioni siano vere
DOPO aver installato Malwoverview:
* python-magic NON è installato. (pip show python-magic)
* python-magic-bin È installato. (pip show python-magic-bin)
Alcune funzionalità richiedono dipendenze opzionali. Installale secondo necessità:
* Scansione YARA: pip install malwoverview[yara]
* Verifica firma: pip install malwoverview[signature]
* Esporta report PDF: pip install malwoverview[pdf]
* Dashboard TUI: pip install malwoverview[tui]
* Tutte le opzionali: pip install malwoverview[all]
È possibile iniziare a usare Malwoverview senza inserire tutte le API. Tuttavia, per usare tutte le opzioni di Malwoverview, devi inserire la rispettiva API dei seguenti servizi: VirusTotal, Hybrid Analysis, URLHaus, Malshare, Polyswarm, Alien Vault, Malpedia, Triage, IPInfo, Malware Bazaar, ThreatFox, VulnCheck, Shodan, AbuseIPDB, GreyNoise e URLScan.io nel file di configurazione .malwapi.conf, che deve essere presente (o creato) nella home directory (/home/[username] o /root su Linux, e C:\Users[username] su Windows. In alternativa, gli utenti possono creare un file di configurazione personalizzato e indicarlo utilizzando l'opzione -c.
Da notare: se il file .malwapi.conf non esiste nella tua home directory, devi crearlo!
Una nota speciale su Alien Vault: è necessario iscriversi ai pulse sul sito di Alien Vault prima di usare l'opzione -n 1.
Una nota speciale su Malshare e Shodan: entrambi i servizi richiedono che la loro chiave API venga inviata nell'URL stesso, e nessuno dei due documenta un'intestazione o un corpo della richiesta come alternativa (l'endpoint hashlookup di Malshare è una POST, ma la chiave viaggia comunque nella query string). Malwoverview sostituisce queste due chiavi con [REDACTED] in ogni messaggio di errore che stampa, così non finiscono nell'output che incolli in un bug report, ma la chiave viene comunque registrata nei log di accesso di quei servizi e in qualsiasi proxy che termina TLS tra te e loro. Tratta entrambe le chiavi come esposte al gestore del servizio e ruotale come faresti con qualsiasi altra credenziale.
Il file di configurazione .malwapi.conf ha il seguente formato:
[VIRUSTOTAL]
VTAPI =
[HYBRID-ANALYSIS]
HAAPI =
[MALSHARE]
MALSHAREAPI =
[HAUSSUBMIT]
HAUSSUBMITAPI =
[POLYSWARM]
POLYAPI =
[ALIENVAULT]
ALIENAPI =
[MALPEDIA]
MALPEDIAAPI =
[TRIAGE]
TRIAGEAPI =
[IPINFO]
IPINFOAPI =
[BAZAAR]
BAZAARAPI =
[THREATFOX]
THREATFOXAPI =
[VULNCHECK]
VULNCHECKAPI =
[URLHAUS]
URLHAUSAPI =
[SHODAN]
SHODANAPI =
[ABUSEIPDB]
ABUSEIPDBAPI =
[GREYNOISE]
GREYNOISEAPI =
[URLSCANIO]
URLSCANIOAPI =
[LLM]
PROVIDER = claude
CLAUDE_API_KEY =
CLAUDE_MODEL = claude-opus-4-8
GEMINI_API_KEY =
OPENAI_API_KEY =
OPENAI_MODEL = gpt-4o-mini
OLLAMA_URL = http://localhost:11434
OLLAMA_MODEL = llama3.1
Le API possono essere richieste sui rispettivi siti web dei servizi:
Malwoverview supporta l'arricchimento delle minacce basato su LLM tramite il flag --enrich. Dopo qualsiasi query, viene aggiunta una valutazione della minaccia generata dall'IA, con livello di rischio, identificazione della famiglia di malware, mappatura MITRE ATT&CK e raccomandazioni per gli analisti.
Sono supportati tre provider. Configurane uno nella sezione [LLM] di .malwapi.conf:
18. Anthropic Claude (a pagamento, migliore qualità)
I migliori risultati per l'analisi dell'intelligence sulle minacce. Identifica con precisione le famiglie
di malware, mappa tecniche MITRE ATT&CK precise e fornisce raccomandazioni
attuabili basate su conoscenze reali delle minacce.
Configurazione:
a) Crea un account API su https://console.anthropic.com/ (separato
dall'abbonamento claude.ai)
b) Vai su Settings → Billing → Add credit (minimo $5, pay-per-use)
c) Vai su Settings → API Keys → Create Key
d) Copia la chiave (inizia con sk-ant-api03-...)
e) Configura .malwapi.conf:
[LLM]
PROVIDER = claude
CLAUDE_API_KEY = sk-ant-api03-your-key-here
CLAUDE_MODEL = claude-opus-4-8
CLAUDE_MODEL è opzionale e il valore predefinito è claude-opus-4-8. Scelte comuni:
- claude-opus-4-8 — Migliore qualità (predefinito)
- claude-sonnet-4-6 — Ottimo equilibrio tra qualità e costo
- claude-haiku-4-5 — Il più veloce ed economico
Costo: ~$0.02-0.04 per chiamata di arricchimento usando il modello Opus predefinito (meno con
Sonnet o Haiku). Un credito di $5 fornisce circa 125-250 chiamate di arricchimento Opus.
19. Google Gemini (richiede fatturazione)
Risultati di buona qualità. Richiede un account di fatturazione Google Cloud.
Configurazione:
a) Vai su https://aistudio.google.com/apikeys
b) Accedi con l'account Google
c) Fai clic su Create API Key → copia la chiave
d) Abilita la fatturazione: fai clic sul link del progetto accanto alla tua chiave → Google Cloud
Console → Billing → Link a billing account
e) Configura .malwapi.conf:
[LLM]
PROVIDER = gemini
GEMINI_API_KEY = your-gemini-key-here
GEMINI_MODEL = gemini-2.0-flash
Nota: il livello gratuito ha un limite di velocità basso (2-5 richieste al minuto). Per
limiti superiori, abilita la fatturazione pay-per-use.
20. OpenAI (a pagamento)
Risultati di buona qualità usando i modelli GPT. Richiede un account OpenAI con
crediti API.
Configurazione:
a) Crea un account su https://platform.openai.com/signup
b) Vai su https://platform.openai.com/api-keys → Create new secret key
c) Aggiungi la fatturazione su https://platform.openai.com/settings/organization/billing
d) Configura .malwapi.conf:
[LLM]
PROVIDER = openai
OPENAI_API_KEY = sk-your-key-here
OPENAI_MODEL = gpt-4o-mini
Modelli disponibili:
- gpt-4o-mini — Il più economico (~$0.002 per arricchimento), buona qualità (predefinito)
- gpt-4o — Qualità migliore (~$0.01 per arricchimento)
21. Ollama (gratuito, locale, privato)
Viene eseguito interamente sulla tua macchina. Nessuna chiave API necessaria, nessun dato lascia il tuo
sistema. Adatto ad ambienti in cui l'invio di dati sulle minacce a API cloud
non è consentito. La qualità dipende dal modello scelto.
Configurazione:
a) Scarica e installa Ollama da https://ollama.com/download
(disponibile per Windows, Linux e macOS)
b) Apri un terminale e scarica un modello:
ollama pull qwen2.5:14bModelli consigliati:
- qwen2.5:14b — Qualità migliore a dimensioni ragionevoli (9 GB, richiede 16 GB di RAM)
- llama3.1:8b — Buona qualità, più piccolo (5 GB, richiede 8 GB di RAM)
- llama3.1:70b — Qualità eccellente, grande (40 GB, richiede 48 GB di RAM)
c) Ollama si avvia automaticamente e serve su http://localhost:11434
d) Configura .malwapi.conf:
[LLM]
PROVIDER = ollama
OLLAMA_URL = http://localhost:11434
OLLAMA_MODEL = qwen2.5:14b
Prestazioni: una GPU con 12+ GB di VRAM garantisce risposte rapide (5-10s).
Solo CPU è più lento (30-60s) ma funzionale. I modelli più grandi (14b, 70b)
richiedono più VRAM e potrebbero andare in timeout sulla CPU se la memoria è
insufficiente. Il modello llama3.1:8b è consigliato per macchine con
memoria GPU limitata (6 GB o meno).
Tempi di risposta previsti:
- Claude API: 3-8 secondi
- Gemini API: 3-8 secondi
- Ollama (GPU con VRAM sufficiente): 5-15 secondi
- Ollama (solo CPU, modello 8b): 30-60 secondi
- Ollama (solo CPU, modello 14b+): 60-300 secondi
Esempi di utilizzo:
# CLI: append --enrich to any query
malwoverview -v 8 -V <hash> --enrich
malwoverview -ip 1 -IP 8.8.8.8 --enrich
malwoverview --correlate-hash <hash> --enrich
# Interactive REPL: toggle enrichment on/off or switch provider
malwoverview --interactive
malwoverview> set enrich on # use provider from config
malwoverview> set enrich claude # switch to Claude
malwoverview> set enrich ollama # switch to Ollama
malwoverview> set enrich openai # switch to OpenAI
malwoverview> set enrich off # disable enrichment
malwoverview> vt hash <hash> # malware analysis + enrichment
malwoverview> nist cve CVE-2024-3400 # CVE lookup + enrichment
malwoverview> vulncheck cve CVE-2024-3400 # VulnCheck + enrichment
# TUI: click the Enrich button to cycle through providers
# Enrich (OFF) → claude → gemini → openai → ollama → OFF
# Green button = provider active and configured
# Yellow button = provider selected but API key missing
# Default button = enrichment disabled
malwoverview --tui
Il servizio e l'accettazione si basano sulla verifica della community. Pertanto, è consigliato inviare una richiesta API dal proprio indirizzo e-mail aziendale e NON da uno pubblico/gratuito (Gmail, Outlook e così via). Inoltre, sarebbe ottimo fornire maggiori informazioni su di sé (account LinkedIn, X/Twitter, Mastodon, BlueSky, ecc.) poiché ciò faciliterebbe la verifica della propria identità, del profilo professionale e della legittimità, accelerando l'approvazione della richiesta.
Ogni operazione di Triage si basa sull'ID Triage di ciascun artefatto, quindi è necessario usare l'opzione "-x 1 -X <attribute>:<value>" per cercare l' ID corretto dell'artefatto e poi usare queste informazioni ID con le restanti opzioni di Triage (-x [2-7]) per ottenere maggiori informazioni di threat hunting dall'endpoint Triage.
A partire dalla seconda metà del 2025, sarà richiesta una Auth-Key (API) per utilizzare i servizi URLHaus, Malware Bazaar e Threat Fox.
Malwoverview è stato scritto per produrre un output per uno sfondo scuro del terminale. Tuttavia, esiste l'opzione -o 0 che cambia e adatta i colori dell'output per uno sfondo chiaro.
Per verificare l'installazione, esegui:
malwoverview --help
Ulteriori informazioni sono disponibili su:
(PYPI.org repository) https://pypi.org/project/malwoverview/
(Github) https://github.com/alexandreborges/malwoverview
Se si desidera eseguire l'installazione manuale (di solito non è necessaria), è sufficiente eseguire pochi passaggi, come mostrato nella sottosezione successiva.
Versione Python 3.11 o successiva (Solo Python 3.x !!! NON funziona usando Python 2.7)
$ apt-get install python3.11 (for example)
Python-magic.
Per installare il pacchetto python-magic puoi eseguire il seguente comando:
$ pip3.11 install python-magic
Oppure puoi compilarlo dal repository github:
$ git clone https://github.com/ahupp/python-magic
$ cd python-magic/
$ python3.11 setup.py build
$ python3.11 setup.py install
Poiché ci sono seri problemi legati all'esistenza di due versioni del pacchetto python-magic, si consiglia di installarlo da Github (seconda procedura sopra) e copiare il file magic.py nella STESSA directory dello strumento malwoverview.
Installa tutti i pacchetti Python necessari:
$ pip3.11 install -r requirements.txt
OR
$ pip3.11 install -U pefile
$ pip3.11 install -U colorama
$ pip3.11 install -U simplejson
$ pip3.11 install -U python-magic
$ pip3.11 install -U requests
$ pip3.11 install -U validators
$ pip3.11 install -U geocoder
$ pip3.11 install -U polyswarm-api
$ pip3.11 install -U pathlib
$ pip3.11 install -U configparser
Per controllare un dispositivo Android è necessario installare lo strumento "adb":
$ sudo apt get install adb
PS: prima di provare le opzioni Android, controlla:
* If the adb tool is listed in the PATH environment variable.
* If the system has authorized access to the device by using "adb devices -l"
usage: python malwoverview.py -c -d -o <0|1> -v <1-20> -V -a <1-13> -A -l <1-8> -L <hash|file type> -j <1-8> -J -p <1-8> -P -y <1-5> -Y -n <1-5> -N -m <1-9> -M -b <1-15> -B -x <1-9> -X -ip <1-8> -IP -O --nist <1-5> --NIST -vc <1-8> -VC -s <1-2> -S -ab <1> -AB -gn <1> -GN -wh <1-2> -WH -ct <1-2> -CT -u <1-5> -U --correlate-hash --extract-iocs <file|url> --yara --yara-target --peinfo <file|directory> --entropy-threshold --sigcheck <file|directory> --no-signature --sig-verify-mode <any|first|all|best> --output-format text|json|csv --proxy --quiet --verbose --no-cache --cache-ttl --cache-stats --prune-cache --clear-cache --no-resolve --defang --no-ioc-filter --report html|pdf --interactive --tui --attack-map
Malwoverview è uno strumento di prima risposta per il threat hunting scritto da Alexandre Borges.
OPZIONI MALWARE: Opzioni di analisi malware e query di intelligence
-h, --help
+ mostra questo messaggio di aiuto ed esce
-c CONFIG FILE, --config CONFIG FILE
+ Usa un file di configurazione personalizzato per specificare le API.
-d DIRECTORY, --directory DIRECTORY
+ Specifica la directory contenente i campioni di malware da controllare su VIRUS TOTAL.
+ Usa l'opzione -D per decidere se stai usando un'API VT pubblica o un'API VT Premium.
-o BACKGROUND, --background BACKGROUND
+ Adatta i colori dell'output a un terminale con colore di sfondo chiaro.
+ Il valore predefinito è un terminale con colore di sfondo scuro.
-v VIRUSTOTAL, --virustotal_option VIRUSTOTAL
+ -v 1: data un file tramite l'opzione -V, interroga il database VIRUS TOTAL (API v.3)
per ottenere il report del file indicato attraverso l'opzione -V.
+ v 2: mostra un report antivirus per un determinato file usando l'opzione -V (API v.3);
+ v 3: uguale a -v2, ma vengono mostrati anche IAT ed EAT del binario (API v.3);
+ v 4: estrae l'overlay;
+ v 5: invia un URL alla scansione VT;
+ v 6: invia un indirizzo IP a Virus Total;
+ v 7: questa opzione ottiene un report sul dominio fornito da Virus Total;
+ v 8: verifica un determinato hash su Virus Total;
+ v 9: invia un campione a VT (fino a 32 MB). Usa la barra / per specificare il
file di destinazione su sistemi Windows. Richiede di passare il file campione con l'opzione -V;
+ -v 10: verifica gli hash da un file fornito tramite l'opzione -V. Questa opzione usa
l'API pubblica VT v.3;
+ -v 11: verifica gli hash da un file fornito tramite l'opzione -V. Questa opzione usa
l'API Premium v.3;
+ -v 12: mostra le informazioni comportamentali di un campione dato un hash tramite l'opzione -V.
Questa opzione usa VT API v.3; -v 13: invia file GRANDI (oltre 32 MB)
a VT utilizzando API v.3;
+ -v 14: invia un job Retrohunt usando il file di regole YARA o la directory di regole
indicata con -V (VT scansiona i campioni ricevuti negli ultimi mesi
rispetto alle regole);
+ -v 15: elenca i tuoi job Retrohunt, opzionalmente filtrati per stato passato
tramite -V (starting, running, aborting, aborted o finished);
+ -v 16: mostra lo stato e l'avanzamento del job Retrohunt il cui id è
indicato con -V;
+ -v 17: elenca i file corrispondenti al job Retrohunt il cui id è indicato con -V;
+ -v 18: crea un ruleset Livehunt dal file di regole YARA o dalla directory di regole
indicata con -V (VT quindi confronta ogni nuova sottoposizione con esso);
+ -v 19: elenca i tuoi ruleset Livehunt;
+ -v 20: elenca le tue notifiche Livehunt. Le opzioni da 14 a 20 richiedono una chiave VT con
privilegi premium (enterprise);
-V VIRUSTOTAL_ARG, --virustotal_arg VIRUSTOTAL_ARG
+ Fornisce l'argomento per l'opzione -v. Se da "-v 1" a "-v 4" allora -V deve essere
un percorso di file; Se "-v 5" allora -V deve essere un URL; Se "-v 6" allora -V deve
essere un indirizzo IP; Se "-v 7" allora -V deve essere un dominio; Se "-v 8" allora
-V deve essere un hash (MD5/SHA1/SHA256); Se "-v 9" o "-v 13" allora -V deve
essere un percorso di file da inviare; Se "-v 10" o "-v 11" allora -V deve essere un file
contenente hash (uno per riga); Se "-v 12" allora -V deve essere un hash per
l'analisi comportamentale; Se "-v 14" o "-v 18" allora -V deve essere un file di regole YARA
o una directory di regole; Se "-v 15" allora -V può essere uno stato di job;
Se "-v 16" o "-v 17" allora -V deve essere un ID di job Retrohunt.
-a HYBRID_ANALYSIS, --hybrid_option HYBRID_ANALYSIS
+ Questo parametro recupera report da HYBRID ANALYSIS, scarica campioni e invia
campioni da analizzare.
+ I possibili valori sono:
+ 1: ottiene un report per un determinato hash o campione da un ambiente Windows 7 a 32 bit;
+ 2: ottiene un report per un determinato hash o campione da un ambiente Windows 7 a 32 bit
(supporto HWP);
+ 3: ottiene un report per un determinato hash o campione da un ambiente Windows a 64 bit;
+ 4: ottiene un report per un determinato hash o campione da un ambiente Android;
+ 5: ottiene un report per un determinato hash o campione da un ambiente Linux a 64 bit;
+ 6: invia un campione a un ambiente Windows 7 a 32 bit;
+ 7. invia un campione a un ambiente Windows 7 a 32 bit con supporto HWP;
+ 8. invia un campione a un ambiente Windows 7 a 64 bit;
+ 9. invia un campione a un ambiente Android;
+ 10. invia un campione a un ambiente Linux a 64 bit;
+ 11. scarica il campione per un determinato hash (il campione archiviato è lo
stesso indipendentemente dall'ambiente sandbox, quindi una singola opzione
sostituisce le precedenti opzioni da 11 a 15);
+ 12. controllo batch di hash da un file (un hash per riga);
+ 13. scansione di directory - calcola SHA256 per ogni file e controlla
su Hybrid Analysis.
-A SUBMIT_HA, --ha_arg SUBMIT_HA
+ Fornisce l'argomento per l'opzione -a di HYBRID ANALYSIS. Se da "-a 1" a
"-a 5" allora -A deve essere un hash o un percorso di file (rilevato automaticamente); Se "-a 6"
a "-a 10" allora -A deve essere un percorso di file da inviare; Se "-a 11" allora -A
deve essere un hash da scaricare; Se "-a 12" allora -A deve essere un file
contenente hash (uno per riga); Se "-a 13" allora -A deve essere un percorso di directory
da scansionare.
-D VT_PUBLIC_PREMIUM, --vtpubpremium VT_PUBLIC_PREMIUM
+ Questa opzione deve essere usata con l'opzione -d.
+ Valori possibili:
+ <0> usa l'API VT Premium v3 (predefinita);
+ <1> usa l'API VT pubblica v3.
-l MALSHARE_HASHES, --malsharelist MALSHARE_HASHES
+ Questa opzione scarica un campione e mostra gli hash di un tipo specifico
delle ultime 24 ore dal repository MALSHARE.
+ I valori possibili sono:
+ 1: Scarica un campione;
+ 2: PE32 (predefinito) ;
+ 3: ELF ;
+ 4: Java;
+ 5: PDF ;
+ 6: Elenca i tipi di file disponibili nelle ultime 24 ore (e quanti
campioni per ciascuno);
+ 7: Elenco degli hash delle ultime 24 ore;
+ 8: Elenca gli hash del tipo di file indicato con -L (usa -l 6 per scoprire
i tipi di file validi).
-L MALSHARE_HASH_SEARCH, --malshare_hash MALSHARE_HASH_SEARCH
+ Fornisce un hash come argomento per scaricare un campione dal repository
MALSHARE (-l 1) o, quando usato con -l 8, il tipo di file di cui elencare
gli hash.
-j HAUS_OPTION, --haus_option HAUS_OPTION
+ Questa opzione recupera informazioni da URLHaus a seconda del valore passato come argomento:
+ 1: esegue il download del campione indicato;
+ 2: interroga le informazioni su un
hash fornito ;
+ 3: cerca informazioni su un dato URL;
+ 4: cerca un URL dannoso tramite un dato tag (case-sensitive);
+ 5: cerca payload tramite un tag;
+ 6: recupera un elenco di link scaricabili di payload recenti;
+ 7: recupera un elenco di URL dannosi recenti;
+ 8: controllo batch di hash da un file (un hash per riga).
-J HAUS_ARG, --haus_arg HAUS_ARG
+ Fornisce l'argomento per l'opzione -j di URLHaus. Se "-j 1" allora -J deve
essere un hash SHA256 per scaricare il campione; Se "-j 2" allora -J deve essere un
hash (MD5/SHA1/SHA256) da cercare; Se "-j 3" allora -J deve essere un URL da
controllare; Se "-j 4" allora -J deve essere un tag (case-sensitive); Se "-j 5" allora
-J deve essere un nome di firma.
-p POLY_OPTION, --poly_option POLY_OPTION
+ (Solo per Linux) Questa opzione riguarda le operazioni POLYSWARM:
+ 1. cerca informazioni relative a un determinato hash fornito tramite l'opzione -P;
+ 2. invia un campione fornito dall'opzione -P per essere analizzato dal motore Polyswarm ;
+ 3. Scarica un campione da Polyswarm fornendo l'hash tramite l'opzione -P.
Attenzione: Polyswarm impone un massimo di 20 campioni al mese;
+ 4. cerca campioni simili dato un file campione tramite l'opzione -P;
+ 5. cerca campioni correlati a un indirizzo IP fornito tramite l'opzione -P;
+ 6. cerca campioni correlati a un dominio fornito tramite l'opzione -P;
+ 7. cerca campioni correlati a un URL fornito tramite l'opzione -P;
+ 8. cerca campioni correlati a una famiglia di malware fornita tramite l'opzione -P.
-P POLYSWARM_ARG, --poly_arg POLYSWARM_ARG
+ (Solo per Linux) Fornisce un argomento per l'opzione -p di POLYSWARM.
-y ANDROID_OPTION, --android_option ANDROID_OPTION
+ Questa opzione ANDROID ha molteplici valori possibili:
+ <1>: Controlla tutti i pacchetti APK di terze parti dal dispositivo Android connesso via USB
su Hybrid Analysis usando multithread. Note: il dispositivo Android non
necessita di root e il sistema deve avere lo strumento adb nella variabile d'ambiente
PATH;
+ <2>: Controlla tutti i pacchetti APK di terze parti dal dispositivo Android connesso via USB
su VirusTotal usando l'API pubblica (più lento a causa del ritardo di 60 secondi per ogni
4 hash). Note: il dispositivo Android non necessita di root e il sistema
deve avere lo strumento adb nella variabile d'ambiente PATH;
+ <3>: Controlla tutti i pacchetti APK di terze parti dal dispositivo Android connesso via USB
su VirusTotal usando multithread (solo per API Virus privata). Note: il
dispositivo Android non necessita di root e il sistema deve avere lo strumento adb
nella variabile d'ambiente PATH;
+ <4> Invia un APK di terze parti dal tuo dispositivo Android connesso via USB a
Hybrid Analysis;
+ 5. Invia un APK di terze parti dal tuo dispositivo Android connesso via USB a Virus-Total.
-Y ANDROID_ARG, --android_arg ANDROID_ARG
+ Questa opzione fornisce l'argomento per -y di ANDROID.
-n ALIENVAULT, --alienvault ALIENVAULT
+ Controlla molteplici informazioni da ALIENVAULT. I valori possibili sono:
+ 1: Ottieni i pulse a cui sei iscritto;
+ 2: Ottieni informazioni su un indirizzo IP;
+ 3: Ottieni informazioni su un dominio;
+ 4: Ottieni informazioni su un hash;
+ 5: Ottieni informazioni su un URL.
-N ALIENVAULT_ARGS, --alienvaultargs ALIENVAULT_ARGS
+ Fornisce l'argomento per l'opzione -n di ALIENVAULT. Se "-n 1" allora -N
deve essere il numero di pulse a cui si è iscritti da recuperare; Se "-n 2" allora -N
deve essere un indirizzo IP; Se "-n 3" allora -N deve essere un dominio; Se "-n 4"
allora -N deve essere un hash (MD5/SHA256); Se "-n 5" allora -N deve essere un URL.
-m MALPEDIA, --malpedia MALPEDIA
+ Questa opzione è correlata a MALPEDIA e presenta significati diversi a seconda
del valore scelto. Quindi:
+ 1: Elenca le meta-informazioni per tutte le famiglie;
+ 2: Elenca tutti gli ID degli attori;
+ 3: Elenca tutti i payload disponibili organizzati per famiglia da Malpedia;
+ 4: Ottieni meta-informazioni da un attore specifico, quindi è necessario usare
l'opzione -M. Inoltre, prova a confermare il corretto ID dell'attore eseguendo
malwoverview con l'opzione -m 3;
+ 5: Elenca tutti gli ID delle famiglie;
+ 6: Ottieni meta-informazioni da una famiglia specifica, quindi è necessario
usare l'opzione -M. Inoltre, prova a confermare il corretto ID della famiglia
eseguendo malwoverview con l'opzione -m 5;
+ 7: Ottieni un campione di malware da Malpedia (formato zip -- password: infected).
È necessario specificare l'hash richiesto usando l'opzione -M;
+ 8: Ottieni un file zip contenente le regole Yara per una famiglia specifica
(ottieni le famiglie possibili usando -m 5), che deve essere specificata usando l'opzione -M;
+ 9: Ottieni un file zip contenente il ruleset Yara completo di Malpedia per un
livello TLP, che deve essere fornito con -M come uno tra tlp_white, tlp_green,
tlp_amber o auto (sono accettate anche le forme brevi white, green e amber).
Combinalo con --yara per scansionare con le regole scaricate.
-M MALPEDIAARG, --malpediarg MALPEDIAARG
+ Fornisce l'argomento per l'opzione -m di MALPEDIA. Se "-m 4" allora -M deve
essere un nome di attore (conferma con -m 2); Se "-m 6" allora -M deve essere un
nome di famiglia (conferma con -m 5); Se "-m 7" allora -M deve essere un hash per
scaricare il campione; Se "-m 8" allora -M deve essere un nome di famiglia per ottenere
le regole YARA.
-b BAZAAR, --bazaar BAZAAR+ Controlla più informazioni da MALWARE BAZAAR e THREATFOX. I possibili
valori sono:
+ 1: (Bazaar) Interroga le informazioni su un campione di hash di malware;
+ 2: (Bazaar) Ottiene informazioni e un elenco di campioni di malware associati
e secondo un tag specifico;
+ 3: (Bazaar) Ottiene un elenco di campioni di malware in base a un imphash dato;
+ 4: (Bazaar) Interroga gli ultimi campioni di malware;
+ 5: (Bazaar) Scarica un campione di malware da Malware Bazaar fornendo un
hash SHA256. Il campione scaricato viene compresso in zip usando la
seguente password: infected;
+ 6: (ThreatFox) Ottiene il dataset IOC corrente degli ultimi x giorni indicati
dall'opzione -B (massimo 7 giorni);
+ 7: (ThreatFox) Cerca l'IOC specificato su ThreatFox indicato dall'opzione -B;
+ 8: (ThreatFox) Cerca IOC in base al tag specificato indicato dall'opzione -B;
+ 9: (ThreatFox) Cerca IOC in base alla famiglia di malware specificata fornita
dall'opzione -B;
+ 10. (ThreatFox) Elenca tutte le famiglie di malware disponibili.
+ 11: (Bazaar) Controllo batch di hash da un file (un hash per riga)
contro Malware Bazaar;
+ 12: (Bazaar) Scansione directory — calcola lo SHA256 per ogni file in una
directory e verifica contro Malware Bazaar;
+ 13: (Bazaar) Cerca campioni corrispondenti al nome di regola YARA indicato
dall'opzione -B. I nomi delle regole sono elencati alla fine di un report di hash
(-b 1), e sono anche i nomi delle regole all'interno del set YARAify
scaricato con -b 14 ed estratto con -b 15;
+ 14: (YARAify) Scarica il set di regole YARAify (abuse.ch), che è il
set di regole dietro Malware Bazaar;
+ 15: (YARAify) Estrae il set di regole YARAify scaricato in una
directory di regole che può essere passata a --yara.
-B BAZAAR_ARG, --bazaararg BAZAAR_ARG
+ Fornisce un argomento all'opzione -b MALWARE BAZAAR e THREAT FOX:
+ "-b 1" indica che l'argomento di -B deve essere un hash e verrà recuperato un report
sul campione;
+ "-b 2" indica che l'argomento di -B deve essere un tag di malware e verranno mostrati gli ultimi campioni
corrispondenti a questo tag;
+ "-b 3" significa che l'argomento fornito da -M deve essere un imphash e verranno mostrati gli ultimi campioni
corrispondenti a questo imphash;
+ "-b 4" significa che l'argomento fornito da -M deve essere "100 o time", dove "100"
elenca gli ultimi "100 campioni" e "time" elenca gli ultimi campioni aggiunti a Malware Bazaar
negli ultimi 60 minuti;
+ "-b 5" significa che il campione verrà scaricato e l'argomento di -B deve essere
un hash SHA256 del campione che si desidera scaricare da Malware Bazaar;
+ "-b 6" indica che verrà recuperato un elenco di IOC e il valore di -B
è il numero di GIORNI per filtrare tali IOC. Il tempo massimo è 7 (giorni);
+ "-b 7" indica che l'argomento di -B è l'IOC che si desidera cercare;
+ "-b 8" indica che l'argomento di -B è il TAG dell'IOC che si desidera
cercare;
+ "-b 9" indica che l'argomento di -B è la famiglia di malware per cui si desidera
cercare IOC;
-x TRIAGE, --triage TRIAGE
+ Fornisce informazioni da TRIAGE in base al valore specificato:
+ 1: questa opzione ottiene le informazioni generali del campione fornendo un
argomento con l'opzione -X nei seguenti formati possibili:
- sha256:<valore>
- sha1:<valore>
- md5:<valore>
- family:<valore>
- score:<valore>
- tag:<valore>
- url:<valore>
- wallet:<valore>
- ip:<valore>;
+ 2: Ottiene un report riepilogativo per un dato ID Triage (ottenuto dall'opzione -x 1);
+ 3: Invia un campione per l'analisi;
+ 4: Invia un campione tramite un URL per l'analisi;
+ 5: Scarica il campione specificato dall'ID Triage;
+ 6: Scarica il file pcapng dal campione associato al dato ID Triage;
+ 7: Ottiene un report dinamico per il dato ID Triage (ottenuto dall'opzione -x 1);
+ 8: Controllo batch di hash da un file (un hash per riga) contro Triage;
+ 9: Scansione directory — calcola lo SHA256 per ogni file in una directory
e verifica contro Triage.
-X TRIAGE_ARG, --triagearg TRIAGE_ARG
+ Fornisce un argomento per l'opzione -x di TRIAGE. Se "-x 1" allora -X deve
essere una query di ricerca (es., sha256:<hash>, family:<nome>, tag:<tag>,
ip:<ip>); Se "-x 2" allora -X deve essere un ID campione Triage (ottenuto da
-x 1); Se "-x 3" allora -X deve essere un percorso di file da inviare; Se "-x 4"
allora -X deve essere un URL da inviare; Se "-x 5" o "-x 6" allora -X deve essere
un ID campione Triage da scaricare; Se "-x 7" allora -X deve essere un ID
campione Triage per il report dinamico; Se "-x 8" allora -X deve essere un file
contenente hash (uno per riga); Se "-x 9" allora -X deve essere un percorso di
directory da scansionare.
-O OUTPUTDIR, --output-dir OUTPUTDIR
+ Imposta la directory di output per tutti i download di campioni.
-ip IP, --ip IP
+ Ottiene informazioni sull'IP da varie fonti. I possibili valori sono:
+ 1: Ottiene i dettagli per un indirizzo IP fornito con -IP da IPInfo;
+ 2: Rimosso nella 8.1.0 (BGPView chiuso);
+ 3: Ottiene i dettagli per un indirizzo IP fornito con -IP da tutti
i servizi intel disponibili (VirusTotal/Alienvault);
+ 4: Ottiene i dettagli per un indirizzo IP da Shodan;
+ 5: Ottiene i dettagli per un indirizzo IP da AbuseIPDB;
+ 6: Ottiene i dettagli per un indirizzo IP da GreyNoise;
+ 7: Ottiene i dettagli per un indirizzo IP da tutti i servizi (completo);
+ 8: Controllo batch di indirizzi IP da un file (uno per riga) contro
VirusTotal e mostra una tabella riepilogativa (Indirizzo IP, Paese, Proprietario AS,
Rilevamento). Usare -D per scegliere tra API VT Pubblica (-D 1) e Premium
(-D 0, predefinita).
-IP IPARG, --iparg IPARG
+ Fornisce un argomento per l'opzione -ip. Per -ip da 1 a 7 deve
essere un indirizzo IP valido (IPv4 o IPv6); per -ip 8 deve essere un
file contenente indirizzi IP (uno per riga).
-s SHODAN, --shodan SHODAN
+ Opzioni SHODAN:
+ 1: Ricerca IP;
+ 2: Query di ricerca.
-S SHODAN_ARG, --shodanarg SHODAN_ARG
+ Fornisce un argomento per l'opzione -s di SHODAN. Se "-s 1" allora -S deve
essere un indirizzo IP; Se "-s 2" allora -S deve essere una query di ricerca (es.,
"apache", "port:22 country:BR").
-ab ABUSEIPDB, --abuseipdb ABUSEIPDB
+ Opzioni ABUSEIPDB:
+ 1: Controlla la reputazione dell'IP.
-AB ABUSEIPDB_ARG, --abuseipdbarg ABUSEIPDB_ARG
+ Fornisce un indirizzo IP per l'opzione -ab di ABUSEIPDB.
-gn GREYNOISE, --greynoise GREYNOISE
+ Opzioni GREYNOISE:
+ 1: Controllo rapido IP (API community).
-GN GREYNOISE_ARG, --greynoisearg GREYNOISE_ARG
+ Fornisce un indirizzo IP per l'opzione -gn di GREYNOISE.
-wh WHOIS, --whois WHOIS
+ Opzioni WHOIS:
+ 1: Ricerca whois del dominio;
+ 2: Ricerca whois/RDAP dell'IP.
-WH WHOIS_ARG, --whoisarg WHOIS_ARG
+ Fornisce un argomento per l'opzione -wh di WHOIS. Se "-wh 1" allora -WH deve
essere un nome di dominio; Se "-wh 2" allora -WH deve essere un indirizzo IP.
-ct CRTSH, --crtsh CRTSH
+ Interroga i log di Certificate Transparency tramite crt.sh, che non
richiede chiave API. Possibili valori:
+ 1: elenca i nomi DNS distinti visti nei certificati emessi per
il dominio indicato con -CT, che è un modo economico di enumerare
i sottodomini. I nomi appartenenti ad altri domini, che compaiono perché un
certificato può coprire più tenant, vengono conteggiati e riportati
separatamente;
+ 2: elenca i certificati stessi (identificatore, emittente, common
name e date di validità, dal più recente al meno recente).
-CT CRTSH_ARG, --crtsharg CRTSH_ARG
+ Fornisce il nome di dominio interrogato dall'opzione -ct.
-u URLSCANIO, --urlscanio URLSCANIO
+ Opzioni URLSCAN.IO:
+ 1: Invia un URL per la scansione;
+ 2: Ottiene il risultato della scansione tramite UUID;
+ 3: Cerca scansioni usando la sintassi delle query Elasticsearch
(es., "page.server:nginx", "task.tags:phishing");
+ 4: Cerca scansioni per dominio;
+ 5: Cerca scansioni per IP.
-U URLSCANIO_ARG, --urlscanioarg URLSCANIO_ARG
+ Fornisce un argomento per l'opzione -u di URLSCAN.IO. Se "-u 1" allora -U
deve essere un URL da inviare per la scansione; Se "-u 2" allora -U deve essere un UUID
(ottenuto da -u 1); Se "-u 3" allora -U deve essere una query Elasticsearch
(es., "page.server:nginx", "task.tags:phishing"); Se "-u 4" allora -U
deve essere un dominio; Se "-u 5" allora -U deve essere un indirizzo IP.
--correlate-hash HASH
+ Correlazione hash tra servizi: interroga un hash su VirusTotal,
Hybrid Analysis, Triage e AlienVault producendo un report consolidato.
--extract-iocs SOURCE
+ Estrae IOC (hash, IP, URL, domini, email, CVE) da un file
(.txt, .pdf, .eml) o URL (http/https).
L'estrazione PDF richiede: pip install malwoverview[pdf]
--yara RULES_FILE
+ File di regole YARA da usare per la scansione. Deve essere usato con --yara-target.
Richiede: pip install malwoverview[yara]
--yara-target TARGET
+ File o directory da scansionare con le regole YARA.
--peinfo TARGET
+ Triage PE locale di un file o directory (senza chiave API): tipo di file, dimensione,
overlay, dimensione dell'overlay ed entropia. Le directory vengono scansionate in modo ricorsivo.
L'entropia è l'entropia di sezione PE più alta, oppure l'entropia Shannon
dell'intero file per i file non PE.
--entropy-threshold VALUE
+ Valore di entropia al quale --peinfo evidenzia un file come packed o
cifrato. Predefinito: 7.0
--sigcheck TARGET
+ Controlla la firma Authenticode di un file o directory (senza chiave API):
stato, firmatario, emittente, date del certificato, algoritmo di digest, impronta
del certificato e numero di serie. Lo stato è uno tra VALID, TAMPERED,
UNTRUSTED, EXPIRED, MALFORMED, INVALID, NONE (nessuna firma incorporata),
PRESENT (una firma è presente ma non è stata verificata) o N/A (non è un file
PE). Vengono lette solo le firme incorporate: un file riportato come NONE può
comunque essere firmato tramite un catalogo Windows.
La verifica completa richiede: pip install malwoverview[signature]
VALID significa che il file corrisponde ancora al certificato con cui è stato firmato.
Non è un verdetto sul file: i certificati di firma vengono rubati,
abusati ed emessi per errore, e il malware ha portato firme Microsoft
valide. Una firma incorporata è memorizzata nell'overlay, quindi un file
firmato ne riporta sempre una e quell'overlay non è un payload aggiunto.
La revoca del certificato non viene controllata. Non viene effettuata alcuna richiesta di rete, quindi un
file firmato con un certificato revocato successivamente riporta comunque
VALID.
Una firma rimane VALID dopo la scadenza del suo certificato quando contiene una
controfirma, perché la controfirma prova che il file è stato
firmato mentre il certificato era ancora valido. È così che Authenticode
è pensato per funzionare, e il report lo dice quando accade: una data di
scadenza nel passato accanto a VALID non è una contraddizione.
Un file può contenere più di una firma incorporata, di solito SHA-1 per
compatibilità più SHA-256, e i firmatari spesso differiscono. La
colonna Signer mostra uno di essi e contrassegna gli altri come (+N); eseguendo
--sigcheck su un singolo file vengono elencate tutte le firme con il proprio algoritmo
di digest, certificato, impronta e numero di serie.
--no-signature
+ Salta la verifica della firma in --peinfo e --sigcheck, riportando
solo se una firma è presente. Utile su directory di grandi dimensioni.
--sig-verify-mode MODE
+ Quale firma incorporata decide lo stato di un file con più firme:
any, first, all o best. Predefinito: best
best segue la firma realizzata con l'algoritmo di digest più forte,
che è quello onorato da Windows. first segue l'ordine del file, come
sigcheck.exe. all richiede che ogni firma venga verificata, e any accetta
il file quando anche una sola lo fa. La scelta è importante: su 517
driver con più firme, 37 cambiano stato a seconda di questa impostazione, e
any riporta VALID su 21 file che first rifiuta.
--attack-map
+ Abilita la mappatura delle tecniche MITRE ATT&CK per i report di comportamento.
OPZIONI GENERALI: Opzioni per formato di output, proxy, cache e verbosità
--output-format text|json|csv
+ Formato di output: text (predefinito, terminale colorato), json o csv.
--proxy URL
+ URL proxy HTTP/HTTPS/SOCKS5 (es., socks5://127.0.0.1:9050).
--quiet
+ Sopprime il banner e l'output estetico.
--verbose
+ Mostra informazioni di debug (URL delle richieste, tempi, ecc.).
--no-cache
+ Disabilita la memorizzazione nella cache dei risultati.
--cache-ttl SECONDS
+ Tempo di vita della cache in secondi (predefinito: 3600).
--cache-stats
+ Mostra la posizione della cache locale dei risultati, quante voci contiene, quante
di esse sono scadute con il --cache-ttl corrente, e la sua dimensione su disco.
Poi esce.
--prune-cache
+ Elimina solo le voci scadute dalla cache locale dei risultati (in base a
--cache-ttl) ed esce.
--clear-cache
+ Elimina ogni voce dalla cache locale dei risultati ed esce.
--no-resolve
+ Non risolve o geolocalizza i nomi host trovati nei risultati. Elencare un
feed (ad esempio gli elenchi di payload e tag di URLHaus) normalmente fa sì che il tuo
host risolva ogni URL che mostra, il che dice all'operatore di quella
infrastruttura che sta venendo indagata. Con questa opzione la colonna
posizione mostra "Not Resolved" invece.
--defang
+ Stampa gli IOC elencati da --extract-iocs in forma defangata
(hxxp://example[.]com), così possono essere copiati in un report o in un ticket
senza diventare cliccabili. Si applica solo a quell'elenco e modifica
solo l'output: le query vengono comunque effettuate con i valori reali.
--no-ioc-filter
+ Disattiva il filtraggio del rumore che --extract-iocs applica per impostazione predefinita.
Normalmente in una pagina HTML i blocchi <script>, <style> e <svg> vengono saltati,
un dominio viene riportato solo quando la sua ultima etichetta è un dominio di primo livello reale,
e i link di ritorno al sito di origine o a elementi noti della pagina (analytics,
font, pulsanti social) vengono scartati. Con questa opzione viene riportata invece ogni corrispondenza regex
nella sorgente grezza.
--report html|pdf
+ Genera un report nel formato specificato.
L'esportazione PDF richiede: pip install malwoverview[pdf]
--report-file PATH
+ Percorso di output per il report generato.
--interactive
+ Avvia la modalità REPL interattiva.
--tui
+ Avvia la modalità dashboard TUI (Text User Interface) con selettore di servizi,
input di query e pannello risultati scorrevole. Richiede: pip install malwoverview[tui]
--enrich
+ Abilita l'arricchimento LLM dei risultati. Aggiunge una valutazione delle minacce generata dall'IA
dopo ogni risultato di query. Funziona con tutti i tipi di query, inclusi lookup di hash di malware,
controlli di reputazione IP, ricerche CVE (NIST e VulnCheck) e
correlazione tra servizi. Usa il provider configurato nella sezione [LLM] di .malwapi.conf,
oppure sovrascritto con --llm. Provider supportati:
- claude: API Anthropic Claude (qualità migliore, a pagamento)
- gemini: API Google Gemini (richiede fatturazione)
- openai: API OpenAI (a pagamento, modelli GPT)
- ollama: Istanza Ollama locale (gratuita, privata)
--llm PROVIDER
+ Sovrascrive il provider LLM per l'arricchimento (usare con --enrich).
Esempi:
malwoverview -v 8 -V <hash> --enrich --llm claude
malwoverview --nist 2 --NIST CVE-2024-3400 --enrich --llm claude
malwoverview -vc 3 -VC CVE-2024-3400 --enrich --llm ollama
OPZIONI DI VULNERABILITÀ: Opzioni di interrogazione dei database di vulnerabilità
NIST CVE Database Query:
Opzioni di interrogazione per il database NIST CVE (tipo di query e valore sono obbligatori; le altre opzioni sono facoltative)
--nist NIST_OPTION, Tipo di query: 1=Ricerca CPE/Prodotto, 2=Ricerca ID CVE,
3=Severità CVSS v3, 4=Ricerca per parola chiave, 5=Ricerca ID CWE
--NIST NIST_ARG Valore di ricerca (il formato dipende dal tipo di query)
--time YEARS Limita i risultati agli ultimi N anni
--rpp NUM Risultati per pagina (predefinito: 100, max: 2000)
--startindex NUM Indice di inizio paginazione (predefinito: 0)
--ncves NUM Limita l'output ai primi N CVE
VulnCheck Database Query:
Opzioni di interrogazione per il database di vulnerabilità VulnCheck (livello Community/Gratuito)
-vc VULNCHECK_OPTION, --vulncheck VULNCHECK_OPTION
+ Tipo di query: 1: Elenca gli indici disponibili;
2: Ottieni KEV (Known Exploited Vulnerabilities);
3: Cerca CVE nel KEV;
4: Ottieni il link di backup del KEV;
5: Elenca i CVE MITRE;
6: Elenca i CVE NIST NVD2;
7: Cerca CVE in MITRE;
8: Cerca CVE in NIST NVD2.
-VC VULNCHECK_ARG, --VULNCHECK VULNCHECK_ARG
+ Valore di ricerca (ID CVE per le opzioni 3/7/8, numero massimo di risultati per le opzioni
2/5/6, es., 50).
A partire dalla versione 8.0, Malwoverview supporta una sintassi alternativa a sottocomandi accanto alla tradizionale sintassi basata su flag. Entrambe le sintassi sono pienamente supportate e producono risultati identici.
Sottocomandi disponibili:
vt Operazioni VirusTotal (file, av, hash, url, ip, domain, submit, behavior, batch)
ha Operazioni Hybrid Analysis (report, submit, download, batch, dir)
bazaar Operazioni Malware Bazaar (hash, tag, download, batch, dir)
triage Operazioni Triage (search, summary, submit, dynamic, batch, dir)
urlhaus Operazioni URLHaus (hash, url, tag, download, batch)
ip Ricerche di indirizzi IP (info, shodan, abuse, greynoise, all, batch)
whois Ricerche Whois/RDAP (domain, ip)
shodan Operazioni Shodan (ip, search)
correlate Correlazione tra servizi (hash)
extract Estrazione IOC da file o URL
yara Scansione con regole YARA
nist Query sul database NIST CVE
vulncheck Query sul database VulnCheck
Esempi di sottocomandi (equivalenti alla sintassi basata su flag):
# Queste coppie sono equivalenti:
malwoverview vt hash <sha256> # equivalente a: malwoverview -v 8 -V <sha256>
malwoverview vt behavior <sha256> # equivalente a: malwoverview -v 12 -V <sha256>
malwoverview ha report <hash> --env 3 # equivalente a: malwoverview -a 3 -A <hash>
malwoverview ha batch <hashfile> # equivalente a: malwoverview -a 12 -A <hashfile>
malwoverview bazaar hash <sha256> # equivalente a: malwoverview -b 1 -B <sha256>
malwoverview bazaar batch <hashfile> # equivalente a: malwoverview -b 11 -B <hashfile>
malwoverview bazaar dir <directory> # equivalente a: malwoverview -b 12 -B <directory>
malwoverview triage search sha256:<value> # equivalente a: malwoverview -x 1 -X sha256:<value>
malwoverview triage batch <hashfile> # equivalente a: malwoverview -x 8 -X <hashfile>
malwoverview ip all <ipaddr> # equivalente a: malwoverview -ip 7 -IP <ipaddr>
malwoverview ip shodan <ipaddr> # equivalente a: malwoverview -ip 4 -IP <ipaddr>
malwoverview ip batch <ipfile> # equivalente a: malwoverview -ip 8 -IP <ipfile>
malwoverview whois domain <domain> # equivalente a: malwoverview -wh 1 -WH <domain>
malwoverview correlate hash <sha256> # equivalente a: malwoverview --correlate-hash <sha256>
malwoverview extract <file|url> # equivalente a: malwoverview --extract-iocs <file|url>
malwoverview yara <rules> <target> # equivalente a: malwoverview --yara <rules> --yara-target <target>
malwoverview nist 2 CVE-2021-44228 # equivalente a: malwoverview --nist 2 --NIST CVE-2021-44228
Usare --help con qualsiasi sottocomando per i dettagli:
malwoverview vt --help
malwoverview ip --help
malwoverview ha report --help
malwoverview -v 1 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
malwoverview -v 2 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
malwoverview -v 3 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
malwoverview -v 4 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe,
malwoverview -v 5 -V http://jamogames.com/templates/JLHk/
malwoverview -v 6 -V 185.220.100.243
malwoverview -v 7 -V xurl.es
malwoverview -v 8 -V ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
malwoverview -v 9 -V cc2d791b16063a302e1ebd35c0e84e6cf6519e90bb710c958ac4e4ddceca68f7.exe
malwoverview -v 10 -V /home/remnux/malware/hash_list_3.txt
malwoverview -v 11 -V /home/remnux/malware/hash_list_3.txt
malwoverview -v 12 -V 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
malwoverview -v 13 -V /largefiles/4b3b46558cffe1c0b651f09c719af2779af3e4e0e43da060468467d8df445e93
malwoverview -v 14 -V /home/remnux/rules/apt_rules.yar
malwoverview -v 14 -V /home/remnux/rules/
malwoverview -v 15
malwoverview -v 16 -V 1712345678-abcdef0123456789
malwoverview -v 17 -V 1712345678-abcdef0123456789
malwoverview -v 18 -V /home/remnux/rules/livehunt.yar
malwoverview -v 19
malwoverview -v 20
malwoverview -a 1 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
malwoverview -a 1 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8.exe
malwoverview -a 2 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
malwoverview -a 3 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
malwoverview -a 4 -A malware1.apk
malwoverview -a 4 -A 82eb6039cdda6598dc23084768e18495d5ebf3bc3137990280bc0d9351a483eb
malwoverview -a 5 -A 2b03806939d1171f063ba8d14c3b10622edb5732e4f78dc4fe3eac98b56e5d46
malwoverview -a 5 -A 2b03806939d1171f063ba8d14c3b10622edb5732e4f78dc4fe3eac98b56e5d46.elf
malwoverview -a 6 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
malwoverview -a 7 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
malwoverview -a 8 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
malwoverview -a 9 -A malware_7.apk
malwoverview -a 10 -A 925f649617743f0640bdfff4b6b664b9e12761b0e24bbb99ca72740545087ad2.elf
malwoverview -a 11 -A cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
malwoverview -a 12 -A /home/remnux/malware/hash_list.txt
malwoverview -a 13 -A /home/remnux/malware/samples/
malwoverview -l 1 -L d3dcc08c9b955cd3f68c198e11d5788869d1b159dc8014d6eaa39e6c258123b0
malwoverview -l 2
malwoverview -l 3
malwoverview -l 4
malwoverview -l 5
malwoverview -l 6
malwoverview -l 8 -L PE32
malwoverview -j 1 -J 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
malwoverview -j 2 -J 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
malwoverview -j 3 -J https://unada.us/acme-challenge/3NXwcYNCa/
malwoverview -j 4 -J Qakbot
malwoverview -j 5 -J Emotet
malwoverview -j 5 -J Icedid
malwoverview -j 6
malwoverview -j 7
malwoverview -j 8 -J /home/remnux/malware/hash_list.txt
malwoverview -p 1 -P 1999ba265cd51c94e8ae3a6038b3775bf9a49d6fe57d75dbf1726921af8a7ab2
malwoverview -p 2 -P 301524c3f959d2d6db9dffdf267ab16a706d3286c0b912f7dda5eb42b6d89996.exe
malwoverview -p 3 -P 68c11ef39769674123066bcd52e1d687502eb6c4c0788b4f682e8d31c15e5306
malwoverview -p 4 -P 68c11ef39769674123066bcd52e1d687502eb6c4c0788b4f682e8d31c15e5306.exe
malwoverview -p 5 -P 188.40.75.132
malwoverview -p 6 -P covid19tracer.ca
malwoverview -p 7 -P http://ksahosting.net/wp-includes/utf8.php
malwoverview -p 8 -P Qakbot
malwoverview -y 1
malwoverview -y 2
malwoverview -y 3
malwoverview -y 4 -Y com.spaceship.netprotect
malwoverview -y 5 -Y com.mwr.dz
malwoverview -v 1 -V 368afeda7af69f329e896dc86e9e4187a59d2007e0e4b47af30a1c117da0d792.apk
malwoverview -n 1 -N 10
malwoverview -n 2 -N 176.57.215.100
malwoverview -n 3 -N threesmallhills.com
malwoverview -n 4 -N 6d1756aa6b45244764409398305c460368d64ff9 -o 0
malwoverview -n 5 -N http://ksahosting.net/wp-includes/utf8.php
malwoverview -m 1 | more
malwoverview -m 2 | more
malwoverview -m 3 | more
malwoverview -m 4 -M apt41 | more
malwoverview -m 5 | more
malwoverview -m 6 -M win.qakbot
malwoverview -m 7 -M 3d375d0ead2b63168de86ca2649360d9dcff75b3e0ffa2cf1e50816ec92b3b7d
malwoverview -m 8 -M win.qakbot
malwoverview -m 9 -M tlp_white
malwoverview -m 9 -M tlp_green
malwoverview -b 1 -B c9d7b5d06cd8ab1a01bf0c5bf41ef2a388e41b4c66b1728494f86ed255a95d48
malwoverview -b 2 -B Revil | more
malwoverview -b 3 -B f34d5f2d4577ed6d9ceec516c1f5a744
malwoverview -b 4 -B 100
malwoverview -b 4 -B time | more
malwoverview -b 5 -B bda50ff249b947617d9551c717e78131ed32bf77db9dc5b7591d3e1af6cb2f1a
malwoverview -b 6 -B 3 | more
malwoverview -b 7 -B 193.150.103.37:21330
malwoverview -b 8 -B Magecart | more
malwoverview -b 9 -B "Cobalt Strike"
malwoverview -b 10 | more
malwoverview -x 1 -X score:10 | more
malwoverview -x 1 -X 71382e72d8fb3728dc8941798ab1c180493fa978fd7eadc1ab6d21dae0d603e2
malwoverview -x 2 -X 220315-qxzrfsadfl
malwoverview -x 3 -X cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
malwoverview -x 4 -X http://ztechinternational.com/Img/XSD.exe
malwoverview -x 5 -X 220315-xmbp7sdbel
malwoverview -x 6 -X 220315-xmbp7sdbel
malwoverview -x 7 -X 220315-xmbp7sdbel
malwoverview -ip 1 -IP 8.8.8.8
malwoverview -ip 3 -IP 8.8.8.8
malwoverview -b 5 -B <hash> -O <directory>
malwoverview -b 11 -B /home/remnux/malware/hash_list.txt
malwoverview -b 12 -B /home/remnux/malware/samples/
malwoverview -b 13 -B Windows_Trojan_Emotet
malwoverview -b 14
malwoverview -b 15
malwoverview -x 8 -X /home/remnux/malware/hash_list.txt
malwoverview -x 9 -X /home/remnux/malware/samples/
malwoverview -ip 4 -IP 8.8.8.8
malwoverview -ip 5 -IP 8.8.8.8
malwoverview -ip 6 -IP 8.8.8.8
malwoverview -ip 7 -IP 8.8.8.8
malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt
malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt -D 1
malwoverview -s 1 -S 8.8.8.8
malwoverview -s 2 -S "apache"
malwoverview -ab 1 -AB 185.220.100.243
malwoverview -gn 1 -GN 185.220.100.243
malwoverview -wh 1 -WH example.com
malwoverview -wh 2 -WH 8.8.8.8
malwoverview -ct 1 -CT iana.org
malwoverview -ct 2 -CT iana.org
malwoverview -u 1 -U https://example.com
malwoverview -u 2 -U 019ce889-ab8d-768b-894e-3e5bf5401f8d
malwoverview -u 3 -U task.tags:phishing
malwoverview -u 4 -U example.com
malwoverview -u 5 -U 8.8.8.8
malwoverview --correlate-hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
malwoverview --extract-iocs /home/remnux/malware/report.txt
malwoverview --extract-iocs /home/remnux/malware/report.pdf
malwoverview --extract-iocs https://example.com/threat-report.html
malwoverview --yara /home/remnux/rules/malware.yar --yara-target /home/remnux/malware/samples/
malwoverview --yara /home/remnux/rules/ --yara-target /home/remnux/malware/samples/
malwoverview --peinfo /home/remnux/malware/samples/
malwoverview --peinfo /home/remnux/malware/dropper.exe
malwoverview --peinfo /home/remnux/malware/samples/ --entropy-threshold 7.5
malwoverview --peinfo /home/remnux/malware/samples/ --output-format csv
malwoverview --peinfo /home/remnux/malware/samples/ --no-signature
malwoverview --sigcheck /home/remnux/malware/suspicious.exe
malwoverview --sigcheck /home/remnux/malware/samples/
malwoverview --sigcheck /home/remnux/malware/samples/ --output-format json
malwoverview --sigcheck /home/remnux/malware/samples/ --sig-verify-mode all
malwoverview --interactive
malwoverview --tui
malwoverview -v 8 -V <hash> --output-format json
malwoverview -ip 3 -IP 8.8.8.8 --proxy socks5://127.0.0.1:9050
malwoverview -v 12 -V <hash> --attack-map
malwoverview -a 1 -A <hash> --attack-map
malwoverview --correlate-hash <hash> --attack-map
# Cache locale dei risultati
malwoverview --cache-stats
malwoverview --prune-cache
malwoverview --clear-cache
# Scarica il set di regole YARAify e scansiona con esso (-b 15 estrae in
# <output directory>/yaraify-rules, quindi usa la stessa -O per entrambi i passaggi)
malwoverview -b 14 -O /home/remnux/rules
malwoverview -b 15 -O /home/remnux/rules
malwoverview --yara /home/remnux/rules/yaraify-rules --yara-target /home/remnux/malware/samples/
# Set di regole Malpedia (-m 9 salva malpedia_yara_<level>.zip; estrailo prima)
malwoverview -m 9 -M tlp_white -O /home/remnux/rules
unzip /home/remnux/rules/malpedia_yara_tlp_white.zip -d /home/remnux/rules/malpedia
malwoverview --yara /home/remnux/rules/malpedia --yara-target /home/remnux/malware/samples/
# Arricchimento LLM (aggiunge una valutazione AI della minaccia a qualsiasi query)
malwoverview -v 8 -V <hash> --enrich # usa il provider dalla configurazione
malwoverview -v 8 -V <hash> --enrich --llm claude # override: usa Claude
malwoverview -v 8 -V <hash> --enrich --llm ollama # override: usa Ollama
malwoverview -v 8 -V <hash> --enrich --llm openai # override: usa OpenAI
malwoverview -ip 1 -IP 8.8.8.8 --enrich
malwoverview --correlate-hash <hash> --enrich
malwoverview --nist 2 --NIST CVE-2024-3400 --enrich # Arricchimento CVE (NIST)
malwoverview -vc 3 -VC CVE-2024-3400 --enrich # Arricchimento CVE (VulnCheck)
malwoverview --nist 4 --NIST palo alto --enrich # ricerca per parole chiave + arricchimento
# VirusTotal
malwoverview vt hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
malwoverview vt file 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
malwoverview vt av 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
malwoverview vt url http://jamogames.com/templates/JLHk/
malwoverview vt ip 185.220.100.243
malwoverview vt domain xurl.es
malwoverview vt submit cc2d791b16063a302e1ebd35c0e84e6cf6519e90bb710c958ac4e4ddceca68f7.exe
malwoverview vt behavior 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
malwoverview vt batch /home/remnux/malware/hash_list_3.txt
malwoverview vt batch /home/remnux/malware/hash_list_3.txt --public
# Hybrid Analysis
malwoverview ha report 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
malwoverview ha report 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8 --env 3
malwoverview ha submit 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
malwoverview ha download cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
malwoverview ha batch /home/remnux/malware/hash_list.txt
malwoverview ha dir /home/remnux/malware/samples/
# Malware Bazaar
malwoverview bazaar hash c9d7b5d06cd8ab1a01bf0c5bf41ef2a388e41b4c66b1728494f86ed255a95d48
malwoverview bazaar tag Revil | more
malwoverview bazaar download bda50ff249b947617d9551c717e78131ed32bf77db9dc5b7591d3e1af6cb2f1a
malwoverview bazaar batch /home/remnux/malware/hash_list.txt
malwoverview bazaar dir /home/remnux/malware/samples/
# Triage
malwoverview triage search score:10 | more
malwoverview triage search sha256:71382e72d8fb3728dc8941798ab1c180493fa978fd7eadc1ab6d21dae0d603e2
malwoverview triage summary 220315-qxzrfsadfl
malwoverview triage submit cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
malwoverview triage dynamic 220315-xmbp7sdbel
malwoverview triage batch /home/remnux/malware/hash_list.txt
malwoverview triage dir /home/remnux/malware/samples/
# URLHaus
malwoverview urlhaus hash 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
malwoverview urlhaus url https://unada.us/acme-challenge/3NXwcYNCa/
malwoverview urlhaus tag Qakbot
malwoverview urlhaus download 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
# Ricerche IP
malwoverview ip info 8.8.8.8
malwoverview ip shodan 8.8.8.8
malwoverview ip abuse 185.220.100.243
malwoverview ip greynoise 185.220.100.243
malwoverview ip all 8.8.8.8
# Shodan (standalone)
malwoverview shodan ip 8.8.8.8
malwoverview shodan search "apache"
# Whois
malwoverview whois domain example.com
malwoverview whois ip 8.8.8.8
# Correlazione tra servizi
malwoverview correlate hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
# Estrazione IOC (testo, PDF, email o URL)
malwoverview extract /home/remnux/malware/report.txt
malwoverview extract /home/remnux/malware/report.pdf
malwoverview extract https://example.com/threat-report.html
# Scansione YARA
malwoverview yara /home/remnux/rules/malware.yar /home/remnux/malware/samples/
# Query CVE NIST
malwoverview nist 1 "windows" --ncves 50
malwoverview nist 2 CVE-2021-44228
malwoverview nist 3 CRITICAL --ncves 50
malwoverview nist 4 "remote code execution" --ncves 50
# Query VulnCheck
malwoverview vulncheck 2 30
malwoverview vulncheck 3 CVE-2021-44228
# Sottocomandi combinati con opzioni globali
malwoverview vt hash <sha256> --output-format json
malwoverview ip all 8.8.8.8 --proxy socks5://127.0.0.1:9050
malwoverview vt behavior <sha256> --attack-map
malwoverview --interactive
# All'interno del prompt (digita "help" per l'elenco completo):
vt hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
vt file /home/remnux/malware/sample.exe
vt behavior 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
vt batch /home/remnux/malware/hash_list.txt
vt retrohunt submit /home/remnux/rules/
vt retrohunt list
vt retrohunt status 1712345678-abcdef0123456789
vt livehunt notifications
bazaar yara Windows_Trojan_Emotet
bazaar yaradownload
bazaar yaraextract
bazaar dir /home/remnux/malware/samples/
urlhaus batch /home/remnux/malware/hash_list.txt
urlhaus payloads
triage submit /home/remnux/malware/sample.exe
triage pcap 220315-xmbp7sdbel
malpedia ruleset tlp_white
malpedia meta emotet
malshare types
malshare type PE32
hybrid file /home/remnux/malware/sample.exe
hybrid dir /home/remnux/malware/samples/
threatfox malwarelist
ip batch /home/remnux/malware/ip_list.txt
ip multi 8.8.8.8
ip all 8.8.8.8
crtsh subdomains iana.org
crtsh certs iana.org
android ha
android sendvt com.example.app
yara /home/remnux/rules/ /home/remnux/malware/samples/
iocs /home/remnux/malware/report.pdf
peinfo /home/remnux/malware/samples/
peinfo /home/remnux/malware/samples/ 7.5
sigcheck /home/remnux/malware/suspicious.exe
cache stats
cache prune
set attack on
set enrich claude
export json
export csv results.csv # il percorso di esportazione deve trovarsi nella directory corrente
malwoverview --tui
# Scegli un servizio nel pannello di sinistra, digita la query e premi Invio.
# F3 copia il risultato, F4 ne estrae un ID, F5 esporta i risultati
# raccolti in json, F6 li esporta in csv, Ctrl+L pulisce.
# Ctrl+V (o Shift+Insert) incolla gli appunti nella casella di query da
# qualsiasi punto della dashboard, quindi un hash può essere incollato
# senza prima fare clic nella casella.
# L'elenco dei tasti viene stampato sopra i risultati e riscritto ogni
# volta che il pannello viene pulito, inclusa l'inizio di ogni ricerca.
# Mentre la casella di query ha il focus, l'uscita è Ctrl+Q, perché Q
# deve rimanere digitabile.
# Cerca vulnerabilità Windows
malwoverview --nist 1 --NIST "windows" --ncves 50
# Cerca vulnerabilità Apache
malwoverview --nist 1 --NIST "apache" --ncves 30
# Cerca vulnerabilità Chrome
malwoverview --nist 1 --NIST "chrome" --ncves 25
# Cerca vulnerabilità Chromium
malwoverview --nist 1 --NIST "chromium" --ncves 25
# Cerca vulnerabilità Linux
malwoverview --nist 1 --NIST "linux" --ncves 25
# Cerca vulnerabilità MacOS
malwoverview --nist 1 --NIST "MacOS" --ncves 25
# Cerca la vulnerabilità Log4Shell
malwoverview --nist 2 --NIST "CVE-2021-44228"
# Cerca la vulnerabilità ProxyShell
malwoverview --nist 2 --NIST "CVE-2021-34473"
# Cerca la vulnerabilità Spring4Shell
malwoverview --nist 2 --NIST "CVE-2022-22965"
# Cerca vulnerabilità con gravità CRITICA
malwoverview --nist 3 --NIST "CRITICAL" --ncves 50
# Cerca vulnerabilità con gravità ALTA
malwoverview --nist 3 --NIST "HIGH" --ncves 40
# Cerca vulnerabilità con gravità MEDIA
malwoverview --nist 3 --NIST "MEDIUM" --ncves 30
# Cerca vulnerabilità di bypass dell'autenticazione
malwoverview --nist 4 --NIST "authentication bypass" --ncves 30
# Cerca vulnerabilità di esecuzione di codice remoto (RCE)
malwoverview --nist 4 --NIST "remote code execution" --ncves 50
# Cerca vulnerabilità di SQL injection
malwoverview --nist 4 --NIST "sql injection" --ncves 25
# Cerca vulnerabilità di path traversal (CWE-22)
malwoverview --nist 5 --NIST "CWE-22" --ncves 30
# Cerca vulnerabilità di SQL injection (CWE-89)
malwoverview --nist 5 --NIST "CWE-89" ---ncves 40
# Cerca vulnerabilità di cross-site scripting (CWE-79)
malwoverview --nist 5 --NIST "CWE-79" --ncves 35
# Elenca gli indici VulnCheck disponibili (livello Community/Gratuito)
malwoverview -vc 1
# Ottieni le Known Exploited Vulnerabilities (KEV) - 30 risultati
malwoverview -vc 2 -VC 30
# Ottieni le Known Exploited Vulnerabilities (KEV) - 100 risultati
malwoverview -vc 2 -VC 100
# Cerca un CVE specifico nel database KEV
malwoverview -vc 3 -VC CVE-2021-44228
# Cerca un CVE specifico nel database KEV
malwoverview -vc 3 -VC CVE-2022-22965
# Ottieni il link di download di backup per il dataset KEV di VulnCheck
malwoverview -vc 4
# Elenca i CVE recenti dal database MITRE
malwoverview -vc 5
# Elenca i CVE recenti dal database MITRE - 20 risultati
malwoverview -vc 5 -VC 20
# Elenca i CVE recenti dal database NIST NVD2
malwoverview -vc 6
# Elenca i CVE recenti dal database NIST NVD2 - 50 risultati
malwoverview -vc 6 -VC 50
# Cerca un CVE specifico nel database MITRE (record CVE ufficiali)
malwoverview -vc 7 -VC CVE-2024-21412
# Cerca un CVE specifico in NIST NVD2 (punteggi CVSS, CWE, stato CISA KEV)
malwoverview -vc 8 -VC CVE-2024-21412
L'unica modifica che rompe la compatibilità. Le cinque opzioni di download di Hybrid Analysis facevano la stessa cosa, quindi sono state unificate in una sola e le due opzioni successive sono state spostate più in basso:
# Scarica un campione da Hybrid Analysis (era -a 11, -a 12, -a 13, -a 14 o -a 15)
malwoverview -a 11 -A 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979
# Controllo batch di hash da un file (era -a 16)
malwoverview -a 12 -A /home/remnux/malware/hashes.txt
# Scansiona ogni file in una directory (era -a 17)
malwoverview -a 13 -A /home/remnux/malware/samples/
Tutte le altre opzioni hanno mantenuto il proprio numero. Tutti i nuovi numeri sono additivi.
# Triage di una directory: tipo, dimensione, overlay, dimensione overlay, entropia, firma
malwoverview --peinfo /home/remnux/malware/samples/
# Abbassa la soglia per ciò che è considerato packed o cifrato (predefinito 7.0)
malwoverview --peinfo /home/remnux/malware/samples/ --entropy-threshold 6.5
# Salta la verifica della firma su una scansione ampia
malwoverview --peinfo /home/remnux/malware/samples/ --no-signature
# YARA ora accetta un'intera directory di regole, scansionata in modo ricorsivo
malwoverview --yara /home/remnux/rules/ --yara-target /home/remnux/malware/samples/
# Un file: stato, firmatario, emittente, date del certificato, impronta, seriale
malwoverview --sigcheck /home/remnux/malware/suspicious.exe
# Un'intera directory, una riga per file
malwoverview --sigcheck /home/remnux/malware/samples/
Un file può contenere più firme incorporate — di solito SHA-1 per compatibilità più SHA-256 — e i firmatari sono spesso diversi. La tabella segna quelle extra come (+N); esegui il formato a file singolo per elencarle tutte. Quale firma determina lo stato è selezionabile:
# Il digest più forte decide (predefinito, e ciò che Windows onora)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode best
# La prima nell'ordine del file decide (ciò che riporta sigcheck.exe)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode first
# Ogni firma deve essere verificata (il più rigoroso)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode all
# Basta che una qualsiasi firma verifichi (il più permissivo)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode any
Anche i dati di firma di VirusTotal vengono ora mostrati, quindi una ricerca per hash riporta la catena del firmatario, la data di firma e ogni impronta del certificato:
# Blocco firma da VirusTotal, per hash
malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979
# Stesso blocco quando si controlla un file locale
malwoverview -v 1 -V /home/remnux/malware/suspicious.exe
# Nomi DNS distinti trovati nei certificati emessi per un dominio
malwoverview -ct 1 -CT example.com
# I certificati stessi: identificatore, emittente, nome comune, validità
malwoverview -ct 2 -CT example.com
# Invia un job Retrohunt da un file di regole o da una directory di regole
malwoverview -v 14 -V /home/remnux/rules/hunting.yar
# Elenca i tuoi job Retrohunt, opzionalmente filtrati per stato
malwoverview -v 15
malwoverview -v 15 -V finished
# Stato e avanzamento di un job, poi i file che ha trovato
malwoverview -v 16 -V 1234abcd-5678-90ef-1234-567890abcdef
malwoverview -v 17 -V 1234abcd-5678-90ef-1234-567890abcdef
# Crea un ruleset Livehunt, elenca i tuoi ruleset, elenca le notifiche
malwoverview -v 18 -V /home/remnux/rules/livehunt.yar
malwoverview -v 19
malwoverview -v 20
Una ricerca per hash ora elenca le regole YARA che hanno trovato corrispondenza con il campione; è da lì che viene il nome della regola per il comando successivo:
# 1. cerca un campione: il rapporto termina con le regole che hanno trovato corrispondenza
malwoverview -b 1 -B 3b89db05cd1e6283a5d23e32eb6a6c17d92953c80c93befa194a0c93a633c1b5
tags: elf Mirai upx-dec
yara rules:
ELF_Mirai
linux_generic_ipv6_catcher
unixredflags3
# 2. prendi uno di quei nomi e recupera ogni altro campione che ha trovato
malwoverview -b 13 -B ELF_Mirai
I nomi delle regole si trovano anche nei ruleset stessi, che possono essere scaricati e letti localmente:
# Scarica il ruleset YARAify da abuse.ch, poi estrailo.
# Entrambi usano -O per la directory di lavoro; -b 15 trova l'archivio lì.
malwoverview -b 14 -O /home/remnux/rules/
malwoverview -b 15 -O /home/remnux/rules/
L'archivio viene salvato come /home/remnux/rules/yaraify-rules.zip e viene estratto in /home/remnux/rules/yaraify-rules/, un file .yar per regola. Quella directory è il target di --yara, e i nomi dei suoi file sono i nomi delle regole:
malwoverview --yara /home/remnux/rules/yaraify-rules/ --yara-target /home/remnux/malware/samples/
Un ruleset raccolto da molti autori non compilerà in modo pulito con ogni versione di YARA. I file con errori di sintassi vengono elencati e saltati, e la scansione procede con il resto: un'esecuzione del set sopra ha compilato 548 file su 557.
# Il ruleset YARA completo di Malpedia per un livello TLP
malwoverview -m 9 -M white
# -m 1 restituiva l'elenco delle famiglie; ora restituisce le meta-informazioni della famiglia
malwoverview -m 1
# -l 6 elenca i tipi di file visti nelle ultime 24 ore, -l 8 ne elenca uno
malwoverview -l 6
malwoverview -l 8 -L PE32
# -ip 3 e -ip 7 erano identiche; -ip 3 è VirusTotal + OTX,
# -ip 7 interroga ogni servizio configurato (IPInfo non veniva mai raggiunto)
malwoverview -ip 3 -IP 8.8.8.8
malwoverview -ip 7 -IP 8.8.8.8
# -j 8 (controllo batch di hash URLHaus) era irraggiungibile
malwoverview -j 8 -J /home/remnux/malware/hashes.txt
json e csv ora funzionano in tutto lo strumento invece che in un terzo di esso:
malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979 --output-format json
malwoverview --sigcheck /home/remnux/malware/samples/ --output-format csv
malwoverview -b 6 -B 3 --output-format json
# L'arricchimento LLM raggiunge anche json e csv, come record tipizzato
malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979 --enrich --output-format json
# Non risolvere in indirizzi IP i nomi host controllati dall'attaccante
malwoverview -j 2 -J http://malicious.example.com/payload.bin --no-resolve
# Defang gli IOC estratti così che l'elenco possa essere incollato in un ticket
malwoverview --extract-iocs /home/remnux/malware/report.txt --defang
# La sorgente può essere anche un URL, quindi un rapporto pubblicato può essere letto e
# i suoi IOC neutralizzati in un solo passaggio
malwoverview --extract-iocs https://example.com/threat-report.html --defang
# Un blog di un vendor è per lo più navigazione, analytics e JavaScript minimizzato, quindi
# l'estrattore salta <script>, <style> e <svg>, rimuove i link di ritorno al
# sito sorgente e agli elementi noti della pagina, e riporta solo un dominio il cui
# ultimo label è un vero dominio di primo livello
malwoverview --extract-iocs https://www.fortinet.com/blog/threat-research/dprk-related-campaigns-with-lnk-and-github-c2
# Disattiva tutto questo e riporta ogni corrispondenza regex nella sorgente grezza
malwoverview --extract-iocs https://example.com/threat-report.html --no-ioc-filter
malwoverview --cache-stats
malwoverview --prune-cache
malwoverview --clear-cache
# REPL da riga di comando
malwoverview --interactive
# Dashboard a schermo intero: 111 servizi, Ctrl+V incolla, F5 esporta json,
# F6 esporta csv
malwoverview --tui
La 8.0.0 ha aggiunto molto tutto in una volta, quindi i comandi sono raggruppati qui in base al loro scopo piuttosto che al numero di opzione. Le versioni dalla 8.0.1 alla 8.0.5 erano per lo più correzioni e si trovano alla fine. Dove la 8.1.0 ha poi cambiato un numero di opzione, il comando qui sotto usa il numero attuale e indica cosa era prima.
# URLScan.io (-u): invia un URL, recupera un risultato per id, cerca,
# poi cerca un dominio o un IP
malwoverview -u 1 -U https://example.com
malwoverview -u 2 -U 019ce889-ab8d-768b-894e-3e5bf5401f8d
malwoverview -u 3 -U task.tags:phishing
malwoverview -u 4 -U example.com
malwoverview -u 5 -U 8.8.8.8
# Shodan (-s): un singolo IP, o una query di ricerca
malwoverview -s 1 -S 8.8.8.8
malwoverview -s 2 -S "apache"
# AbuseIPDB (-ab): reputazione IP
malwoverview -ab 1 -AB 185.220.100.243
# GreyNoise (-gn): rumore di fondo di internet, o mirato a te?
malwoverview -gn 1 -GN 185.220.100.243
# Whois / RDAP (-wh): un dominio, poi un IP
malwoverview -wh 1 -WH example.com
malwoverview -wh 2 -WH 8.8.8.8
I nuovi servizi IP sono raggiungibili anche da -ip, quindi un singolo indirizzo può essere esaminato servizio per servizio, oppure attraverso tutti in una volta:
malwoverview -ip 4 -IP 8.8.8.8
malwoverview -ip 5 -IP 8.8.8.8
malwoverview -ip 6 -IP 8.8.8.8
malwoverview -ip 7 -IP 8.8.8.8
malwoverview --correlate-hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
# Malware Bazaar: un file di hash, poi una directory di campioni
malwoverview -b 11 -B /home/remnux/malware/hash_list.txt
malwoverview -b 12 -B /home/remnux/malware/samples/
# Hybrid Analysis (la 8.0.0 le numerava -a 16 e -a 17)
malwoverview -a 12 -A /home/remnux/malware/hash_list.txt
malwoverview -a 13 -A /home/remnux/malware/samples/
# Triage
malwoverview -x 8 -X /home/remnux/malware/hash_list.txt
malwoverview -x 9 -X /home/remnux/malware/samples/
# Estrai hash, IP, URL, domini, email e CVE da un rapporto
malwoverview --extract-iocs /home/remnux/malware/report.txt
malwoverview --extract-iocs /home/remnux/malware/report.pdf
malwoverview --extract-iocs https://example.com/threat-report.html
# Scansiona campioni con regole YARA
malwoverview --yara /home/remnux/rules/malware.yar --yara-target /home/remnux/malware/samples/
# Provider preso dalla sezione [LLM] di .malwapi.conf
malwoverview -v 8 -V <hash> --enrich
# Sovrascrivilo per esecuzione: claude, gemini, openai o ollama
malwoverview -v 8 -V <hash> --enrich --llm claude
malwoverview --nist 2 --NIST CVE-2024-3400 --enrich --llm gemini
malwoverview -v 8 -V <hash> --output-format json
malwoverview -ip 1 -IP 8.8.8.8 --output-format csv
malwoverview -v 12 -V <hash> --attack-map
malwoverview -v 8 -V <hash> --report html --report-file /home/remnux/report.html
malwoverview -v 8 -V <hash> --report pdf --report-file /home/remnux/report.pdf
malwoverview -v 8 -V <hash> --no-cache
malwoverview -v 8 -V <hash> --cache-ttl 86400
malwoverview -ip 3 -IP 8.8.8.8 --proxy socks5://127.0.0.1:9050
malwoverview -v 8 -V <hash> --quiet
malwoverview -v 8 -V <hash> --verbose
malwoverview --interactive
malwoverview --tui
# 8.0.1: queste accettano di nuovo un percorso file, non solo un hash
malwoverview -v 1 -V /home/remnux/malware/suspicious.exe
malwoverview -a 1 -A /home/remnux/malware/suspicious.exe
malwoverview -l 1 -L ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
# 8.0.2: controllo batch IP su VirusTotal, prima API Premium poi Pubblica
malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt
malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt -D 1
# 8.0.2: le scansioni Android funzionano di nuovo sui dispositivi attuali, con hash SHA256
malwoverview -y 1
malwoverview -y 2
# 8.0.3 e 8.0.4: l'arricchimento di Claude funziona di nuovo e viene reso con il colore
malwoverview -v 8 -V <hash> --enrich --llm claude
# 8.0.5: overlay ed entropia nel controllo di directory e nel rapporto hash
malwoverview -d /home/remnux/malware/samples/
malwoverview -v 8 -V <hash>
Versione 8.1.0:
Questa versione aggiunge la caccia con YARA e il triage PE locale, ripara opzioni
che non facevano ciò che dichiaravano e include una serie di correzioni di
sicurezza.
ATTENZIONE: due opzioni hanno cambiato numero. Le cinque opzioni di download
di Hybrid Analysis (-a 11 fino a -a 15) sono ora una singola opzione, -a 11. Il controllo batch
di hash è passato a -a 12 (era -a 16) e la scansione di directory a -a 13 (era
-a 17). Nessun'altra opzione ha cambiato numero.
NUOVE OPZIONI
* --sigcheck: verifica della firma Authenticode di un file o di una
directory, senza chiave API e senza richiesta di rete. Riporta VALID,
TAMPERED, UNTRUSTED, EXPIRED, MALFORMED, INVALID, NONE o N/A con
firmatario, emittente e date del certificato. Ogni firma incorporata
è elencata, ciascuna con il proprio algoritmo di digest, impronta e
numero di serie. La verifica richiede
pip install malwoverview[signature]; senza, lo stato è
PRESENT or NONE.
* --sig-verify-mode any|first|all|best: quale firma determina lo stato
di un file con più firme. Predefinito: best.
* --no-signature: salta la verifica della firma su directory grandi.
* --peinfo e --entropy-threshold: triage PE locale di un file o di una
directory, che elenca tipo di file, dimensione, overlay, dimensione
overlay, entropia e stato della firma, evidenziando i file uguali o
sopra la soglia (predefinita 7.0). Ricorsivo, nessuna chiave API.
* -ct 1|2 e -CT: Certificate Transparency tramite crt.sh, nessuna chiave
API. -ct 1 elenca i nomi DNS trovati nei certificati emessi per un
dominio, -ct 2 elenca i certificati.
* -v 14 fino a -v 20: VirusTotal Retrohunt e Livehunt. Invia un job,
elenca i job, segui un job, elenca i file corrispondenti, crea un
ruleset, elenca i ruleset e elenca le notifiche. Richiede una chiave
premium.
* -b 13, -b 14 e -b 15: ricerca su Malware Bazaar per nome di regola
YARA, e download ed estrazione del ruleset YARAify.
* -m 9: download del ruleset YARA di Malpedia per un livello TLP.
* -l 8: elenca gli hash di un tipo di file MalShare fornito con -L.
* -j 8: controllo batch di hash URLHaus, che nessuna opzione raggiungeva
prima.
* --cache-stats, --prune-cache e --clear-cache.
* --no-resolve: non risolve né geolocalizza i nomi host mostrati da
-j 2 e -j 3.
* --defang: stampa gli IOC elencati da --extract-iocs come
hxxp://example[.]com. Solo output.
* --no-ioc-filter: disattiva il filtraggio del rumore di --extract-iocs
e riporta ogni corrispondenza regex nella sorgente grezza.
* --yara ora accetta una directory di regole, ogni file compilato nel
proprio namespace. Un file che non compila viene segnalato e saltato.
OPZIONI RIPARATE
* -m 1 chiamava lo stesso endpoint di -m 5. Ora recupera le meta-
informazioni della famiglia e accetta un filtro opzionale con -M.
* -l 6 era etichettata "Composite(OLE)" e elencava campioni PDF. Ora
elenca i tipi di file visti nelle ultime 24 ore con un conteggio.
* -ip 3 e -ip 7 producevano un output identico. -ip 3 ora interroga solo
VirusTotal e AlienVault; -ip 7 interroga ogni servizio rimanente,
incluso IPInfo.
* -l 1 scriveva un file di zero byte per ogni campione e riportava un
successo. Ora i redirect vengono seguiti e un corpo vuoto viene
rifiutato.
* -a 6 fino a -a 10 e -y 4 fallivano sempre con "Requested URI - Not
Found". Le richieste a Hybrid Analysis non passano più dall'host www,
il cui redirect eliminava l'upload.
* -b 14 rispondeva HTTP 301. Il ruleset viene scaricato dall'indirizzo
funzionante con l'Auth-Key di abuse.ch.
* -v 20 legge le notifiche Livehunt dall'endpoint
hunting_notification_files, che contiene lo sha256.
* -b 6, -m 4 e le altre opzioni che consumano un argomento ora lo
richiedono. Otto di esse si fermavano con un TypeError grezzo quando
veniva omesso.
* -A ora accetta un percorso Windows nativo (-a 1 fino a -a 5), che
prima veniva rifiutato con "Input contains invalid characters".
* --report html, --report pdf e --enrich ora funzionano con
--correlate-hash, --extract-iocs e --yara, che prima non producevano
alcun rapporto.
* I download di campioni e regole Malpedia non terminano più il programma
prima del rapporto e dell'esportazione json/csv.
* La forma validata di ogni argomento è ora quella usata. Un URL scritto
come hxxp://example[.]com veniva inviato al servizio ancora defanged,
e percorsi come ~/samples non venivano espansi.
* -ip 2 (BGPView) è stata rimossa: il suo dominio non risolve più. Il
numero è mantenuto e riporta la rimozione, indicando -ip 1 e -ip 7.
Nessun altro numero -ip è cambiato.
* --defang è documentato come applicabile solo a --extract-iocs, che è
l'unica opzione che lo legge.
NUOVO COMPORTAMENTO
* -y 1, -y 2 e -y 3 calcolano l'hash di ogni APK di un pacchetto invece
della sola APK base. Sul dispositivo di test una scansione è passata
da 35 a 79 APK. -y 4 e -y 5 segnalano quando il pacchetto selezionato
è una split APK.
* -b 1 elenca le regole YARA che hanno trovato corrispondenza con il
campione, così un nome può essere passato a -b 13.
* -v 1 e -v 8 mostrano il blocco firma che VirusTotal già restituiva:
se la verifica è riuscita, le catene del firmatario e del
controfirmatario, la data di firma e ogni certificato con stato,
algoritmo, date, numero di serie e impronta.
* --sigcheck e --peinfo riportano impronta del certificato, numero di
serie e algoritmo di digest, nel rapporto e in json e csv.
* --extract-iocs non riporta più il codice della pagina web stessa. Su
un blog di un vendor restituiva 855 IOC, 743 dei quali "domini"
prodotti da JavaScript minimizzato. I blocchi script, style, svg e
noscript vengono saltati, un dominio viene riportato solo quando la
sua ultima etichetta è un vero dominio di primo livello, e i link di
ritorno al sito sorgente e agli elementi di pagina vengono rimossi:
855 IOC sono diventati 16, mantenendo ogni hash di campione e gli URL
di comando e controllo. La soppressione viene contata e riportata.
I servizi di hosting di codice, paste e messaggistica non vengono mai
soppressi.* --extract-iocs indica l'host e il tipo di guasto quando un recupero
fallisce, invece di stampare l'eccezione urllib3 grezza.
* Un 404 di GreyNoise Community viene riportato per quello che è, cioè che
l'indirizzo non è uno scanner Internet, invece di un errore.
* Un errore di rete non arriva più all'utente come traceback Python.
43 blocchi try catturavano solo ValueError, quindi un errore di connessione
sfuggiva senza essere catturato. L'host riportato viene preso dall'URL analizzato, mai
dal testo dell'eccezione.
* Un errore TLS viene spiegato: un handshake che si completa e poi
si chiude, un certificato che non supera la verifica, una porta che risponde
senza TLS e un handshake rifiutato hanno ciascuno la propria riga. Il
testo dell'eccezione viene letto ma mai stampato.
* crt.sh usa una politica di retry paziente (5 tentativi, backoff di 2 secondi)
perché risponde alla stessa URL con 200, 404 o 502 a distanza di secondi.
Ogni altro servizio mantiene la politica precedente.
* L'HTTP 429 viene ora ritentato, al massimo tre volte, rispettando entrambe le forme
di Retry-After e senza mai attendere più di 300 secondi. Il caricamento
dei campioni non viene ritentato.
* Il calcolo dell'entropia legge il file a blocchi invece di caricarlo
interamente. Il valore riportato non cambia.
* Lo scanner YARA non cambia più la directory di lavoro del
processo durante la compilazione delle regole.
* La corrispondenza di --attack-map è esatta invece di una ricerca per sottostringa, che
aveva attribuito tecniche non correlate (un tag vuoto corrispondeva a tutte le 691).
È estesa ai report di Hybrid Analysis e a --correlate-hash.
* A --enrich vengono inviati i record raccolti invece del testo estratto
dal terminale, e ora funziona con --output-format json e csv,
dove prima veniva ignorato silenziosamente.
* Ogni opzione ora produce record per --output-format json e csv.
Solo un terzo di esse lo faceva.
* I risultati di MalShare sono inclusi in json e csv.
* Le sezioni [INQUEST] e [VIRUSEXCHANGE] sono state rimosse da
.malwapi.conf e dal codice che le gestiva.
* La versione minima di Python è la 3.10 e i classificatori dichiarano
dalla 3.10 alla 3.13.
MODALITÀ INTERATTIVE E GRAFICHE
* --interactive acquisisce tutti i comandi che prima avevano solo la riga di comando:
i report VirusTotal, gli upload, il report del comportamento, il controllo batch,
Retrohunt e Livehunt; l'imphash di Malware Bazaar, il download,
batch, directory, ricerca regole YARA e set di regole YARAify; il
download dei payload URLHaus, ricerca firme, lista payload, controllo
batch e feed; le submission Triage, download, report dinamico,
controlli batch e directory; la meta famiglia Malpedia, lista payload
e set di regole; gli elenchi dei tipi di file MalShare; la
submission Hybrid Analysis, controlli batch e directory; la lista famiglie ThreatFox;
le query IP batch e multi-servizio; e crtsh, android, yara,
iocs e cache. ATT&CK si attiva con "set attack on|off".
* --tui è stato ricostruito sul codice del modulo usato dalla riga di comando
invece della propria copia di ogni chiamata di servizio: 3013 righe sono diventate
818 e l'elenco dei servizi è passato da 37 a 111 voci. I risultati
si esportano con F5 (json) e F6 (csv), che non supportava
affatto.
* L'incolla di --tui è stato corretto. Un hash incollato prima di fare clic nella
casella di query veniva scartato senza un messaggio, perché solo il widget
focalizzato riceve un incolla e la dashboard inizia sulla lista dei
servizi. L'incolla ora viene catturato per l'intera finestra.
* --tui acquisisce Ctrl+V e Shift+Insert, che leggono gli appunti
direttamente per i terminali che non inviano mai un incolla. Non è necessario
alcun pacchetto di terze parti.
* L'elenco dei tasti di --tui viene riscritto ogni volta che il pannello dei risultati viene
cancellato ed è costruito dalle associazioni dei tasti stesse. La barra dei tasti
mantiene Quit (come Ctrl+Q) e Incolla mentre la casella di query ha il focus,
e le sue etichette non ripetono più il tasto.
REPORT
* --peinfo e --sigcheck dimensionano le loro colonne in base ai file
scansionati e non abbreviano mai il nome del file, che di solito è lo
SHA256. Type e Signer restano limitati; un valore abbreviato viene abbreviato
solo sullo schermo.
* Ogni colonna di tabella viene misurata in celle del terminale piuttosto che in
caratteri, quindi un soggetto di certificato o un nome di file CJK non
spingono più le colonne fuori allineamento. Il troncamento si ferma su un confine
di carattere.
* Le linee di una tabella ora equivalgono alla somma delle sue colonne, le intestazioni
di colonna e le linee sono neutre, una cella vuota riporta n/a e la
chiusura dei conteggi inizia con "[+] ". Applicato a -j 8, -a 12, -a 13,
-b 11, -b 12, -b 13, -x 8, -x 9, -l 6, -s 2, -u 3, --yara,
--peinfo e --sigcheck, le cui linee non coincidevano con le colonne
fino a 51 caratteri.
* Lo stesso trattamento è stato completato su tutti i report rimanenti.
Nessuna linea è più scritta come numero fisso: ciascuna è ricavata da
una larghezza nominata o dall'intestazione sotto cui si trova, quindi il titolo, la
linea e le colonne non possono più essere in disaccordo. 88 linee in 19 file,
che raggiungono ogni servizio interrogato dallo strumento.
* 38 titoli di report erano riempiti con 28 spazi finali, portando la
riga del titolo oltre la linea sottostante. Invisibile a schermo e visibile
appena l'output viene passato via pipe, reindirizzato o copiato.
* Da -b 6 a -b 10: i valori lunghi vengono mandati a capo in base alla larghezza del report. Un
URL di riferimento o una lista di alias unita da virgole arrivava a 137 colonne
sotto una linea di 100 colonne; in una singola esecuzione di -b 6, 52 delle 5936 righe lo facevano.
* Da -j 2 a -j 7: ogni report viene disegnato con un'unica larghezza ricavata dalle
colonne che stampa effettivamente, sostituendo i sei diversi numeri
(100, 104, 126, 130, 136 e 146) usati prima. -j 2 dimensiona anche la sua
colonna URL in base alla risposta e non stampa più due volte la sua intestazione.
* -l 1 e -l 8 sono tabelle. L'intestazione annunciava tre colonne
centrate a 75, 38 e 8 sotto una linea di 126, mentre le righe sottostanti
stampavano "sha256: ... md5: ... type: ...", quindi le intestazioni non si allineavano
con nulla. Un errore di MalShare non viene più stampato sotto
un'intestazione che promette risultati che non arrivano mai.
* -ct 1 e -ct 2: l'intestazione del report viene disegnata con la larghezza della
tabella che introduce, e le righe di stato, errore e conteggio vengono
mandate a capo come avvisi puntati invece di superarla.
* -a 12 e -a 13: un hash che Hybrid Analysis non ha mai visto produceva una
riga vuota e ora riporta not found, che è distinto dal
verdetto "unknown". Un errore HTTP viene riportato come tale. -a 13 non
taglia più ogni nome di file a 40 caratteri.
* -j 8: la colonna Status mostrava la risposta grezza, quindi un risultato leggeva "ok".
Ora legge found, not found, invalid hash o bad request. La
colonna hash segue gli hash presenti nel file.
* -x 8 e -x 9: il nome del file e i tag venivano tagliati con uno slice
semplice e ora vengono troncati con i puntini di sospensione, e il punteggio è colorato in base al valore.
* -b 11 e -b 12: la colonna Signature è di 17 colonne e un campione sconosciuto
riporta n/a invece di lasciare uno spazio vuoto.
* -s 2 è una tabella invece di quattro righe etichettate per host, un centinaio di
blocchi per una singola query. Le colonne sono IP, Port, Country, Product,
Vulns e Organization. Il banner grezzo è sostituito da Product,
che è ciò che Shodan ha estratto dal banner o dall'header Server;
l'intero banner arriva ancora a json e csv. Vulns è il numero di
CVE che Shodan elenca per l'host.
* -u 3: la colonna Score era sempre zero, perché l'endpoint di ricerca
non restituisce alcun verdetto e il codice impostava il valore predefinito; i
record json e csv contenevano "malicious": "False" per ogni risultato
di una query di phishing. Entrambi i campi sono stati rimossi, sostituiti da Age(d), l'età
del dominio in giorni, colorato in base al valore. Le celle vengono troncate con i puntini
invece di essere tagliate, e la colonna IP non taglia più un indirizzo IPv6
a metà.
* -u 2: il verdetto, il punteggio, le categorie, i tag e i brand vengono
evidenziati invece di essere disegnati come il tipo MIME, i valori vanno a capo
invece di uscire dallo schermo, e le date del certificato vengono
mostrate come UTC invece dei secondi epoch grezzi. Il titolo della pagina non viene
più tagliato a 80 caratteri.
* -u 1: la nota di chiusura è preceduta da "[+] ", disegnata come avviso
piuttosto che come un campo aggiuntivo, e riporta l'UUID della scansione
appena inviata così il comando di recupero può essere copiato.
* --correlate-hash, -wh 1 e -wh 2 mandano a capo i loro valori, con
le righe di continuazione allineate sotto la prima riga. Uno stato WHOIS raggiungeva
187 colonne sotto una linea di 100, e gli ID ATT&CK di un set pulse
raggiungevano 200. Lo SHA512 viene spezzato su più righe; i record mantengono
ogni valore su una sola riga.
* --yara non stampa più gli errori di compilazione per file, che sono una
proprietà del set di regole piuttosto che dei campioni e spingevano il
report fuori dallo schermo. Il conteggio rimane nel riepilogo e il
dettaglio è disponibile con --verbose. Le colonne File e Rule sono
dimensionate in base al loro contenuto, perché tagliarle spezza il collegamento
al campione o alla regola.
* Il blocco del certificato di -v 1 e -v 8 va a capo a 120 colonne. Una
frase di stato per problema, unita da virgole, raggiungeva
233 caratteri su una sola riga.
* L'output di --enrich va a capo in base alla larghezza della linea sopra di esso, con
le righe di continuazione indentate sotto un indicatore di elenco. I record json e csv
mantengono la risposta senza interruzioni.
* -y 1 riporta il suo inventario APK alla fine della tabella piuttosto che
sopra di essa, preceduto da "[+] " nel colore neutro. Le righe vengono
stampate da un thread per pacchetto e quei thread non venivano mai
uniti (join) al di fuori di Windows, quindi la riga ora viene stampata dopo che lo sono.
-y 2 e -y 3 vengono trattati allo stesso modo.
* -ip 3 e -ip 7: le due note di cross-reference sono precedute da
"[+] ", dove prima apparivano come parte dei dati sovrastanti.
* Un file di regole YARA che viene saltato ora riporta il motivo. Il percorso occupava l'intera
riga e il motivo veniva tagliato.
* L'output json e csv di --correlate-hash, --extract-iocs e
--yara non inizia più con una riga vuota.
* I report non vengono più stampati sull'output standard insieme
al json o al csv, che rendeva il risultato impossibile da
analizzare, e ventinove funzioni non terminano più il programma prima
dell'esportazione. Il testo va sull'errore standard quando un comando
non produce alcun record, così un errore può essere distinto da un risultato
vuoto.
* Il csv scritto sull'output standard su Windows non segue più
ogni riga con una riga vuota, e sia il json che il csv vengono
scritti in UTF-8 piuttosto che nella codifica della console.
* Il csv scritto da "export csv" nella modalità interattiva non termina più
ogni riga con due ritorni a capo su Windows.
* Un certificato contenente caratteri che la console non può rappresentare non
termina più l'esecuzione con UnicodeEncodeError.
* Una sequenza di escape non valida nella ricerca famiglia PolySwarm non
emette più un SyntaxWarning.
* Una cache ATT&CK troncata o corrotta non crasha più con "Error
while connecting to Virus Total!". Viene rilevata, scaricata di nuovo
e scritta atomicamente.
* Una submission Hybrid Analysis rifiutata non si ferma più con un
KeyError; viene stampato il motivo fornito dal servizio.
* 43 handler intorno a una richiesta catturavano solo ValueError, quindi un errore
di rete poteva ancora arrivare all'utente come traceback Python. Ora
catturano anche gli errori di richiesta e indicano il servizio e l'host.
Il messaggio non contiene mai il testo dell'eccezione, perché MalShare
e Shodan portano la chiave API nell'URL.
* Sette di quegli handler in URLHaus erano irraggiungibili: un handler
più ampio sopra di loro catturava l'errore per primo, non stampava nulla e
usciva. -j 7 contro un servizio irraggiungibile stampava un'intestazione, una
linea e nient'altro, che si legge esattamente come una ricerca che
non ha trovato nulla.
* --defang ora defanga anche la riga Source del report di estrazione IOC,
così l'intero report può essere incollato in un luogo sicuro. Un
percorso di file locale viene lasciato invariato e il record esportato mantiene il
valore reale in entrambi i casi.
* L'elenco SUBCOMMANDS in questo file pubblicizzava "ip bgp", rimosso in
questa release, ometteva "ip batch" e "urlhaus batch", e elencava un
sottocomando urlscanio che non è mai esistito. URLScan.io è
raggiungibile tramite -u.
COLORI
* Su uno sfondo chiaro non si usano più né ciano né azzurro,
solo blu. Su uno sfondo scuro entrambi restano in uso. Questo ha cambiato
298 punti in 16 file, incluso il colore condiviso di info().
* Un audit dell'intero pacchetto ha trovato altri 26 punti che violavano
la regola, alcuni dentro un test di sfondo e alcuni colorati una volta sola per
entrambi gli sfondi. Il verde su sfondo scuro ora è verde chiaro.
* Il colore neutro non veniva mai applicato su Windows con uno sfondo
scuro: veniva scritto come una sequenza di escape a 256 colori estesa, della quale
il convertitore usato da colorama comprende solo i codici base, quindi
veniva scartato e il colore precedente restava in vigore. Ogni linea
di tabella, intestazione di colonna e avviso puntato era interessato.
* -x 8 e -x 9: la colonna Tags è azzurra su sfondo scuro e blu su sfondo
chiaro. Prima usava lo stesso tono della colonna Hash accanto.
* -b 1: le etichette dei campi sono ciano chiaro su sfondo scuro e blu su sfondo chiaro,
come in ogni altro report; lo sfondo chiaro usava il verde.
* -j 8: la colonna hash è viola chiaro su sfondo scuro e blu su sfondo chiaro.
La colonna status è grigia finché non c'è qualcosa da riportare.
* -ab 1: le etichette dei campi sono azzurro chiaro su sfondo scuro e blu su sfondo chiaro.
* -y 1: la colonna Package è azzurra su sfondo scuro.
* -y 2 e -y 3: la colonna Hash è rosa su sfondo scuro e viola su sfondo chiaro.
* -s 2: la colonna Product è azzurra su sfondo scuro e ciano su sfondo chiaro.
Le modifiche seguenti sono correzioni di sicurezza. Nessuna di esse modifica alcuna
sintassi dei comandi.
* Corregge l'iniezione di sequenze di escape nel terminale proveniente dalle risposte
dei servizi (HIGH). I campi controllati dall'attaccante stampati sul
terminale (i dati di comportamento e i nomi dei campioni VirusTotal, i
nomi di file, le firme e i tag di Malware Bazaar e URLHaus, i
nomi e le descrizioni dei pulse AlienVault OTX, i campi ThreatFox e
Hybrid Analysis) potevano spostare il cursore e sovrascrivere
un verdetto già stampato, impostare il titolo della finestra, scrivere negli
appunti o cancellare lo schermo. Ogni risposta JSON ora viene sanificata
appena viene analizzata.
* Corregge la stessa iniezione di sequenze di escape nella modalità grafica
(HIGH). --tui analizzava le risposte dei servizi da solo in sedici
punti, nessuno dei quali sanificato. Ora non analizza più alcuna risposta.
* Corregge l'iniezione di sequenze di escape nel terminale proveniente dalla riga
di comando e dai file di input (MEDIUM). -B, -X, -TR, -S, -M, -L, -NIST
e gli altri argomenti di testo libero accettavano ESC, il CSI a 8 bit e
il backspace, e i validatori rimandavano al terminale un valore rifiutato
senza ripulirlo prima. Questo riguardava solo Linux e macOS.
* Corregge l'iniezione di sequenze di escape nel terminale da altre tre fonti
(MEDIUM): i valori estratti da --extract-iocs, il cui pattern URL
escludeva gli spazi bianchi ma non gli altri caratteri di controllo; i campi
WHOIS, che arrivano come testo semplice scritto dal registrar e dal
registrant; e lo sha256 letto da un dispositivo Android collegato via USB,
che ora viene verificato contro un allowlist di 64 caratteri esadecimali.
* Corregge un denial of service in --extract-iocs (MEDIUM). La gestione
dell'HTML rimuoveva i blocchi script, style, svg e comment con un'espressione
regolare lazy, che è quadratica quando il tag di apertura non viene
mai chiuso: 50.000 tag script non terminati in 400 KB impiegavano 158
secondi, e l'opzione legge fino a 10 MB da un URL. I blocchi
ora vengono rimossi con una singola scansione in avanti.
* Corregge un possibile denial of service nell'estrazione IOC
(LOW/MEDIUM): le espressioni regolari di dominio e e-mail potevano richiedere
moltissimo tempo su un documento appositamente creato. Il testo ora viene diviso in
token limitati prima della corrispondenza, e gli IOC estratti sono
invariati.
* Corregge l'iniezione di formule CSV nei report esportati (MEDIUM).
I valori che iniziano con "=", "+", "-", "@" o una tab venivano eseguiti come
formule da Excel e LibreOffice. Ora vengono preceduti da un
apice singolo e i ritorni a capo incorporati vengono rimossi.
* Corregge l'iniezione di formule CSV nella riga di intestazione dei report
esportati (LOW). I nomi delle colonne sono presi dalla risposta del
servizio e venivano scritti senza la protezione di cui sopra.
* Corregge le sequenze di escape che raggiungono il terminale attraverso un messaggio
di errore nelle modalità interattiva e grafica (LOW). Entrambe stampavano
il testo di un'eccezione non gestita senza ripulirlo.
* Corregge il DNS rebinding in --extract-iocs (MEDIUM). L'indirizzo che
veniva validato ora è l'indirizzo a cui ci si connette, mentre il nome host
viene mantenuto nell'header Host e nel SNI TLS. I nomi host che
non possono essere risolti vengono rifiutati. Le richieste effettuate tramite un proxy non vengono
vincolate (pinned).
* Corregge un bypass della protezione degli indirizzi privati tramite indirizzi
IPv6 mappati IPv4 come ::ffff:127.0.0.1 (MEDIUM). Anche gli indirizzi multicast e
non specificati ora vengono rifiutati.* Corregge l'esposizione delle chiavi API nei messaggi di errore (MEDIUM). Le
chiavi Malshare e Shodan vengono sostituite con [REDACTED], e gli
errori di connessione di Malshare vengono gestiti invece di sollevare
un'eccezione.
* Aggiunge un timeout predefinito di 15 secondi per la connessione e 180
secondi per la lettura su ogni richiesta HTTP che non imposta il
proprio (MEDIUM).
* Interrompe l'invio del percorso locale completo del campione a
VirusTotal (LOW/MEDIUM). Solo il nome del file viene inviato con -v 9.
* Rifiuta i percorsi APK contenenti ".." durante le scansioni Android
(LOW).
* Igienizza il nome del file usato nell'invio a Triage (LOW).
* Rimuove ogni sequenza di escape dall'output di arricchimento LLM, e non
più solo quelle di colore (LOW).
* Avvisa quando .malwapi.conf è leggibile da altri utenti e suggerisce
"chmod 600" (Linux e macOS).
Versione 8.0.5:
Questa versione:
* Aggiunge il reporting di overlay ed entropia alle opzioni di
VirusTotal: il controllo della directory (-d) acquisisce una colonna
"Overlay" (YES/NO, o N/A per i file non-PE) e una colonna "Ent"
(da 0.00 a 8.00), il report del file (-v 1/2/3) acquisisce l'overlay,
la sua dimensione in KB/MB e l'entropia, e il report dell'hash (-v 8)
acquisisce l'overlay e la dimensione presi dai dati pe_info di
VirusTotal senza scaricare il campione. L'entropia è la massima
entropia per sezione del PE, il miglior segnale per sezioni impaccate
o cifrate, con fallback sull'entropia di Shannon dell'intero file per
i file non-PE. "AV Detection" viene rinominato in "AV" e la tabella
-d viene riallineata.
Versione 8.0.4:
Questa versione:
* Rende il report di arricchimento LLM a colori invece che in Markdown
grezzo: le intestazioni e i termini chiave in **grassetto** vengono
evidenziati e i simboli di markup vengono rimossi. Su uno sfondo
scuro il testo del corpo usa un tono quasi bianco mentre le
intestazioni mantengono i loro accenti blu/viola/ciano. La CLI, la
REPL e la TUI condividono il renderer e i prompt chiedono al modello
quella struttura per mantenerla coerente.
Versione 8.0.3:
Questa versione:
* Corregge l'arricchimento LLM di Claude (Anthropic), che falliva a ogni
chiamata perché il nome del modello era hardcoded su un modello
ritirato. Ora è impostato da CLAUDE_MODEL nella sezione [LLM] di
.malwapi.conf, insieme a GEMINI_MODEL / OPENAI_MODEL / OLLAMA_MODEL,
e il valore predefinito è claude-opus-4-8. Claude è anche il provider
predefinito ora, e la correzione copre la CLI, la REPL e la TUI.
Versione 8.0.2:
Questa versione:
* Introduce un controllo IP batch verso VirusTotal (-ip 8 / "ip
batch"), che legge un indirizzo IP per riga da un file e stampa
l'indirizzo IP, il Paese, l'AS Owner e il rapporto di rilevamento.
Usa -D 1 per la Public API, che attende 61 secondi ogni 4 IP per
rispettare il rate limit, oppure -D 0 per Premium (predefinito).
* Corregge le opzioni di scansione del dispositivo Android (-y 1, -y 2
e -y 3), che avevano smesso di funzionare sulle versioni attuali di
Android. L'elenco dei pacchetti ora comprende il layout moderno
/data/app (il prefisso '~~' e i segmenti '==' introdotti in Android
10+) e l'output CRLF di adb, quindi le opzioni funzionano anche su
Windows. L'hashing sul dispositivo usa sha256sum invece di md5sum e
vengono stampati messaggi chiari quando adb non è nel PATH o non
vengono trovati pacchetti di terze parti.
* Corregge due bypass SSRF in --extract-iocs <url>. Il primo (issue
#96) validava con urlparse() mentre requests normalizzava l'URL in
modo diverso, quindi http://127.0.0.1:6666\@1.1.1.1 superava il
controllo dell'hostname pubblico e raggiungeva comunque un indirizzo
interno; il validatore ora rifiuta backslash, spazi bianchi e
caratteri di controllo e valida l'URL effettivo ottenuto da
requests.PreparedRequest. Il secondo seguiva automaticamente i
redirect dopo che il controllo era già stato superato, permettendo a
un URL pubblico di raggiungere un indirizzo interno o di
cloud-metadata come 169.254.169.254; ora ogni hop viene nuovamente
validato rispetto alla allowlist degli indirizzi privati/riservati,
con un limite di redirect.
* Rafforza le opzioni di invio Android (-y 4 e -y 5) contro un path
traversal da un dispositivo dannoso o compromesso: il nome del
pacchetto riportato da adb è limitato ai caratteri validi dei
pacchetti Android e il nome del file di output è ridotto al suo nome
base, quindi un elenco di pacchetti appositamente creato non può
scrivere al di fuori della directory di output.
Versione 8.0.1:
Questa versione:
* Corregge una regressione per cui -v 1, -v 2, -v 3, -v 4 (opzioni di








