
Malwoverview é uma ferramenta de primeira resposta para caça a ameaças em VirusTotal, Hybrid Analysis, URLHaus, Polyswarm, Malshare, Alien Vault, Malpedia, Malware Bazaar, ThreatFox, Triage, IPInfo, Shodan, AbuseIPDB, GreyNoise, URLScan.io, Whois/RDAP, NIST e VulnCheck. Suporta enriquecimento com LLM, extração de IOCs, varredura YARA e análise de Android.
Copyright (C) 2018-2026 Alexandre Borges (https://exploitreversing.com)
Este programa é um software livre: você pode redistribuí-lo e/ou modificá-lo
sob os termos da Licença Pública Geral GNU, conforme publicada pela
Free Software Foundation, seja a versão 3 da Licença, ou
(a seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil,
mas SEM NENHUMA GARANTIA; sem sequer a garantia implícita de
COMERCIABILIDADE ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a
Licença Pública Geral GNU para mais detalhes.
Veja a Licença Pública GNU em <http://www.gnu.org/licenses/>.
Nota importante: O Malwoverview NÃO envia amostras para nenhum endpoint por padrão,
portanto respeita possíveis Acordos de Não Divulgação (NDAs). Existem opções específicas
que enviam amostras explicitamente, mas essas opções são explicadas na ajuda.
Malwoverview.py é uma ferramenta de primeira resposta para caça a ameaças, que realiza uma triagem inicial e rápida de amostras de malware, URLs, endereços IP, domínios, famílias de malware, IOCs e hashes. Além disso, o Malwoverview é capaz de obter relatórios de comportamento dinâmico e estático, enviar e baixar amostras de vários endpoints. Em poucas palavras, funciona como um cliente para as principais sandboxes existentes.
Esta ferramenta tem como objetivo :
Alexandre Borges (https://github.com/alexandreborges) | proprietário do projeto e desenvolvedor principal
Artur Marzano (https://github.com/Macmod) | co-desenvolvedor principal
Corey Forman (https://github.com/digitalsleuth) | responsável pela integração com REMnux
Christian Clauss (https://github.com/cclauss)
Desde a versão 6.0.0, existe um novo branch chamado "dev". Todas as contribuições e propostas devem ser feitas neste branch "dev".
Profissionais que desejam contribuir devem abrir uma issue explicando sua melhoria proposta e como ela tornaria o projeto melhor. Uma vez aceita, ele/ela está autorizado(a) a enviar o PR, que será testado.
Depois que todas as alterações forem testadas, essa nova versão do Malwoverview é replicada para o branch master e um novo pacote Python é gerado.
Esta ferramenta foi testada em REMnux, Ubuntu, Kali Linux, macOS e Windows. O Malwoverview pode ser instalado executando o seguinte comando:
* pip3.11 install git+https://github.com/alexandreborges/malwoverview
ou...
* python -m pip install -U malwoverview
Se quiser instalar o Malwoverview no macOS, execute os seguintes comandos:
* /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
* Adicione o diretório dos binários Python à variável PATH editando o arquivo .bash_profile no seu diretório
inicial. Exemplo:
export PATH=$PATH:/Users/alexandreborges/Library/Python/3.9/bin
* Execute: . ./.bash_profile
Se você estiver instalando o Malwoverview no Windows, verifique se as seguintes condições são verdadeiras
APÓS ter instalado o Malwoverview:
* python-magic NÃO está instalado. (pip show python-magic)
* python-magic-bin ESTÁ instalado. (pip show python-magic-bin)
Alguns recursos exigem dependências opcionais. Instale-as conforme necessário:
* YARA scanning: pip install malwoverview[yara]
* Signature checking: pip install malwoverview[signature]
* PDF report export: pip install malwoverview[pdf]
* TUI dashboard: pip install malwoverview[tui]
* All optional: pip install malwoverview[all]
É possível começar a usar o Malwoverview sem inserir todas as APIs. No entanto, para usar todas as opções do Malwoverview, você deve inserir a respectiva API dos seguintes serviços: VirusTotal, Hybrid Analysis, URLHaus, Malshare, Polyswarm, Alien Vault, Malpedia, Triage, IPInfo, Malware Bazaar, ThreatFox, VulnCheck, Shodan, AbuseIPDB, GreyNoise e URLScan.io no arquivo de configuração .malwapi.conf, que deve estar presente (ou ser criado) no diretório inicial (/home/[usuário] ou /root no Linux, e C:\Users[usuário] no Windows. Alternativamente, os usuários podem criar um arquivo de configuração personalizado e indicá-lo usando a opção -c.
Um destaque: se o arquivo .malwapi.conf não existir no seu diretório inicial, você deve criá-lo!
Uma nota especial sobre o Alien Vault: é necessário assinar os pulses no site do Alien Vault antes de usar a opção -n 1.
Uma nota especial sobre Malshare e Shodan: ambos os serviços exigem que sua chave de API seja enviada na própria URL, e nenhum deles documenta uma alternativa de cabeçalho ou corpo de requisição (o endpoint hashlookup do Malshare é um POST, mas a chave ainda viaja na string de consulta). O Malwoverview substitui essas duas chaves por [REDACTED] em todas as mensagens de erro que imprime, para que elas não apareçam na saída que você cola em um relatório de bug, mas a chave ainda fica registrada nos logs de acesso desses serviços e em qualquer proxy que encerre o TLS entre você e eles. Trate ambas as chaves como expostas ao operador do serviço e faça a rotação delas como faria com qualquer outra credencial.
O arquivo de configuração .malwapi.conf tem o seguinte 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
As APIs podem ser solicitadas nos respectivos sites dos serviços:
O Malwoverview suporta enriquecimento de ameaças com LLM por meio da flag --enrich. Após qualquer consulta, uma avaliação de ameaça gerada por IA é adicionada com nível de risco, identificação de família de malware, mapeamento MITRE ATT&CK e recomendações de analista.
Três provedores são suportados. Configure um na seção [LLM] do .malwapi.conf:
18. Anthropic Claude (pago, melhor qualidade)
Melhores resultados para análise de inteligência de ameaças. Identifica com precisão
famílias de malware, mapeia técnicas MITRE ATT&CK precisas e fornece recomendações
acionáveis com base em conhecimento real de ameaças.
Configuração:
a) Crie uma conta de API em https://console.anthropic.com/ (separada da
assinatura do claude.ai)
b) Vá para Configurações → Faturamento → Adicionar crédito (mínimo de US$ 5, pagamento por uso)
c) Vá para Configurações → Chaves de API → Criar chave
d) Copie a chave (começa com sk-ant-api03-...)
e) Configure o .malwapi.conf:
[LLM]
PROVIDER = claude
CLAUDE_API_KEY = sk-ant-api03-your-key-here
CLAUDE_MODEL = claude-opus-4-8
CLAUDE_MODEL é opcional e o padrão é claude-opus-4-8. Escolhas comuns:
- claude-opus-4-8 — Melhor qualidade (padrão)
- claude-sonnet-4-6 — Ótimo equilíbrio entre qualidade e custo
- claude-haiku-4-5 — Mais rápido e mais barato
Custo: ~US$ 0,02 a 0,04 por chamada de enriquecimento usando o modelo Opus padrão (menos com
Sonnet ou Haiku). O crédito de US$ 5 fornece aproximadamente 125 a 250 chamadas de enriquecimento Opus.
19. Google Gemini (requer faturamento)
Resultados de boa qualidade. Requer uma conta de faturamento do Google Cloud.
Configuração:
a) Acesse https://aistudio.google.com/apikeys
b) Entre com a conta do Google
c) Clique em Criar chave de API → copie a chave
d) Ative o faturamento: clique no link do projeto ao lado da sua chave → Console do Google
Cloud → Faturamento → Vincular uma conta de faturamento
e) Configure o .malwapi.conf:
[LLM]
PROVIDER = gemini
GEMINI_API_KEY = your-gemini-key-here
GEMINI_MODEL = gemini-2.0-flash
Nota: O nível gratuito tem um limite de taxa baixo (2 a 5 requisições por minuto). Para
limites maiores, ative o faturamento por uso.
20. OpenAI (pago)
Resultados de boa qualidade usando modelos GPT. Requer uma conta OpenAI com
créditos de API.
Configuração:
a) Crie uma conta em https://platform.openai.com/signup
b) Vá para https://platform.openai.com/api-keys → Criar nova chave secreta
c) Adicione faturamento em https://platform.openai.com/settings/organization/billing
d) Configure o .malwapi.conf:
[LLM]
PROVIDER = openai
OPENAI_API_KEY = sk-your-key-here
OPENAI_MODEL = gpt-4o-mini
Modelos disponíveis:
- gpt-4o-mini — Mais barato (~US$ 0,002 por enriquecimento), boa qualidade (padrão)
- gpt-4o — Melhor qualidade (~US$ 0,01 por enriquecimento)
21. Ollama (gratuito, local, privado)
Funciona inteiramente na sua máquina. Não é necessária chave de API, nenhum dado sai do seu
sistema. Bom para ambientes em que o envio de dados de ameaças para APIs na nuvem
não é permitido. A qualidade depende do modelo escolhido.
Configuração:
a) Baixe e instale o Ollama de https://ollama.com/download
(disponível para Windows, Linux e macOS)
b) Abra um terminal e baixe um modelo:
ollama pull qwen2.5:14bModelos recomendados:
- qwen2.5:14b — Melhor qualidade em tamanho razoável (9 GB, precisa de 16 GB de RAM)
- llama3.1:8b — Boa qualidade, menor (5 GB, precisa de 8 GB de RAM)
- llama3.1:70b — Excelente qualidade, grande (40 GB, precisa de 48 GB de RAM)
c) O Ollama inicia automaticamente e fica disponível em http://localhost:11434
d) Configure o .malwapi.conf:
[LLM]
PROVIDER = ollama
OLLAMA_URL = http://localhost:11434
OLLAMA_MODEL = qwen2.5:14b
Desempenho: GPU com 12+ GB de VRAM fornece respostas rápidas (5-10s).
Somente CPU é mais lento (30-60s), mas funcional. Modelos maiores (14b, 70b)
exigem mais VRAM e podem expirar na CPU se não houver memória suficiente
disponível. O modelo llama3.1:8b é recomendado para máquinas com
memória GPU limitada (6 GB ou menos).
Tempos de resposta esperados:
- Claude API: 3-8 segundos
- Gemini API: 3-8 segundos
- Ollama (GPU com VRAM suficiente): 5-15 segundos
- Ollama (somente CPU, modelo 8b): 30-60 segundos
- Ollama (somente CPU, modelo 14b+): 60-300 segundos
Exemplos de uso:
# 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
O serviço e a aceitação são baseados na verificação da comunidade. Portanto, é recomendado que você envie uma solicitação de API do seu endereço de e-mail comercial e NÃO de um público/gratuito (Gmail, Outlook e assim por diante). Além disso, seria ótimo se você fornecesse mais informações sobre você (conta do LinkedIn, X/Twitter, Mastodon, BlueSky, etc.), pois isso facilitaria a verificação de sua identidade, perfil profissional e legitimidade, agilizando a aprovação da sua solicitação.
Toda operação do Triage é baseada no ID de Triage de cada artefato, então você precisa usar o "-x 1 -X <attribute>:<value>" para pesquisar o ID correto do artefato e depois usar essas informações de ID com as opções restantes do Triage (-x [2-7]) para obter mais informações de caça a ameaças no endpoint do Triage.
A partir do segundo semestre de 2025, uma chave de autenticação (API) será necessária para usar os serviços URLHaus, Malware Bazaar e Threat Fox.
O Malwoverview foi escrito para produzir saída para um fundo de terminal escuro. No entanto, existe a opção -o 0 que altera e adapta as cores de saída para um fundo claro.
Para verificar a instalação, execute:
malwoverview --help
Mais informações estão disponíveis em:
(repositório PYPI.org) https://pypi.org/project/malwoverview/
(Github) https://github.com/alexandreborges/malwoverview
Se você quiser realizar a instalação manual (geralmente não é necessária), apenas alguns passos devem ser executados, como mostrado na próxima subseção.
Versão Python 3.11 ou posterior (Somente Python 3.x !!! NÃO funciona usando Python 2.7)
$ apt-get install python3.11 (for example)
Python-magic.
Para instalar o pacote python-magic, você pode executar o seguinte comando:
$ pip3.11 install python-magic
Ou você pode compilá-lo a partir do repositório do github:
$ git clone https://github.com/ahupp/python-magic
$ cd python-magic/
$ python3.11 setup.py build
$ python3.11 setup.py install
Como existem sérios problemas relacionados à existência de duas versões do pacote python-magic, a recomendação é instalá-lo a partir do Github (segundo procedimento acima) e copiar o arquivo magic.py para o MESMO diretório da ferramenta malwoverview.
Instale todos os pacotes Python necessários:
$ 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
Para verificar um celular Android, você precisa instalar a ferramenta "adb":
$ sudo apt get install adb
OBS.: antes de tentar as opções do Android, verifique:
* Se a ferramenta adb está listada na variável de ambiente PATH.
* Se o sistema tem acesso autorizado ao dispositivo usando "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 é uma ferramenta de primeira resposta para caça a ameaças escrita por Alexandre Borges.
OPÇÕES DE MALWARE: Opções de consulta e inteligência para análise de malware
-h, --help
+ mostra esta mensagem de ajuda e sai
-c CONFIG FILE, --config CONFIG FILE
+ Use um arquivo de configuração personalizado para especificar as APIs.
-d DIRECTORY, --directory DIRECTORY
+ Especifica o diretório que contém amostras de malware a serem verificadas no VIRUS TOTAL.
+ Use a opção -D para decidir se você está usando uma API VT pública ou uma API VT
Premium.
-o BACKGROUND, --background BACKGROUND
+ Adapta as cores de saída para um terminal com fundo claro.
+ O padrão é terminal com fundo escuro.
-v VIRUSTOTAL, --virustotal_option VIRUSTOTAL
+ -v 1: dado um arquivo usando a opção -V, consulta o banco de dados do VIRUS TOTAL (API v.3)
para obter o relatório do arquivo fornecido através da opção -V.
+ v 2: mostra um relatório antivírus para um arquivo fornecido usando a opção -V (API v.3);
+ v 3: igual ao -v2, mas o IAT e o EAT do binário também são mostrados (API v.3);
+ v 4: extrai o overlay;
+ v 5: envia uma URL para varredura no VT;
+ v 6: envia um endereço IP para o Virus Total;
+ v 7: esta opção obtém um relatório sobre o domínio fornecido do Virus Total;
+ v 8: verifica um hash fornecido contra o Virus Total;
+ v 9: envia uma amostra ao VT (até 32 MB). Use barra para especificar o
arquivo de destino em sistemas Windows. Exige passar o arquivo de amostra com a opção -V;
+ -v 10: verifica hashes de um arquivo fornecido através da opção -V. Esta opção usa
a API pública do VT v.3;
+ -v 11: verifica hashes de um arquivo fornecido através da opção -V. Esta opção usa
a API Premium v.3;
+ -v 12: mostra informações de comportamento de uma amostra dado um hash através da opção -V.
Esta opção usa a API do VT v.3; -v 13: envia arquivos GRANDES (acima de 32 MB)
ao VT usando a API v.3;
+ -v 14: envia um job Retrohunt usando o arquivo de regras YARA ou diretório de regras
fornecido com -V (o VT examina as amostras recebidas nos últimos meses
contra as regras);
+ -v 15: lista seus jobs Retrohunt, opcionalmente filtrados por um status passado
através de -V (starting, running, aborting, aborted ou finished);
+ -v 16: mostra o status e o progresso do job Retrohunt cujo id é
fornecido com -V;
+ -v 17: lista os arquivos correspondidos pelo job Retrohunt cujo id é fornecido com -V;
+ -v 18: cria um conjunto de regras Livehunt a partir do arquivo de regras YARA ou diretório de regras
fornecido com -V (o VT então compara cada nova submissão contra ele);
+ -v 19: lista seus conjuntos de regras Livehunt;
+ -v 20: lista suas notificações Livehunt. As opções 14 a 20 precisam de uma chave VT com
privilégios premium (empresariais);
-V VIRUSTOTAL_ARG, --virustotal_arg VIRUSTOTAL_ARG
+ Fornece o argumento para a opção -v. Se "-v 1" a "-v 4", então -V deve ser
um caminho de arquivo; Se "-v 5", então -V deve ser uma URL; Se "-v 6", então -V deve
ser um endereço IP; Se "-v 7", então -V deve ser um domínio; Se "-v 8", então
-V deve ser um hash (MD5/SHA1/SHA256); Se "-v 9" ou "-v 13", então -V deve
ser um caminho de arquivo para enviar; Se "-v 10" ou "-v 11", então -V deve ser um arquivo
contendo hashes (um por linha); Se "-v 12", então -V deve ser um hash para
análise de comportamento; Se "-v 14" ou "-v 18", então -V deve ser um arquivo de regras YARA
ou um diretório de regras; Se "-v 15", então -V pode ser um status de job;
Se "-v 16" ou "-v 17", então -V deve ser um id de job Retrohunt.
-a HYBRID_ANALYSIS, --hybrid_option HYBRID_ANALYSIS
+ Este parâmetro obtém relatórios da HYBRID ANALYSIS, baixa amostras e envia
amostras para análise.
+ Os valores possíveis são:
+ 1: obtém um relatório para um hash ou amostra fornecidos de um ambiente Windows 7 32 bits;
+ 2: obtém um relatório para um hash ou amostra fornecidos de um ambiente Windows 7 32 bits
(suporte HWP);
+ 3: obtém um relatório para hash ou amostra fornecidos de um ambiente Windows 64 bits;
+ 4: obtém um relatório para um hash ou amostra fornecidos de um ambiente Android;
+ 5: obtém um relatório para um hash ou amostra fornecidos de um ambiente Linux 64 bits;
+ 6: envia uma amostra para um ambiente Windows 7 32 bits;
+ 7. envia uma amostra para um ambiente Windows 7 32 bits com suporte a ambiente HWP;
+ 8. envia uma amostra para um ambiente Windows 7 64 bits;
+ 9. envia uma amostra para um ambiente Android;
+ 10. envia uma amostra para um ambiente Linux 64 bits;
+ 11. baixa a amostra para um hash fornecido (a amostra armazenada é a
mesma independentemente do ambiente de sandbox, então uma única opção
substitui as antigas opções 11 a 15);
+ 12. verificação em lote de hashes a partir de um arquivo (um hash por linha);
+ 13. varredura de diretório - calcula o SHA256 de cada arquivo e verifica
contra o Hybrid Analysis.
-A SUBMIT_HA, --ha_arg SUBMIT_HA
+ Fornece o argumento para a opção -a da HYBRID ANALYSIS. Se "-a 1" a
"-a 5", então -A deve ser um hash ou um caminho de arquivo (detecção automática); Se "-a 6"
a "-a 10", então -A deve ser um caminho de arquivo para enviar; Se "-a 11", então -A
deve ser um hash para baixar; Se "-a 12", então -A deve ser um arquivo
contendo hashes (um por linha); Se "-a 13", então -A deve ser um caminho de diretório
para verificar.
-D VT_PUBLIC_PREMIUM, --vtpubpremium VT_PUBLIC_PREMIUM
+ Esta opção deve ser usada com a opção -d.
+ Valores possíveis:
+ <0> usa a API Premium do VT v3 (padrão);
+ <1> usa a API Pública do VT v3.
-l MALSHARE_HASHES, --malsharelist MALSHARE_HASHES
+ Esta opção baixa uma amostra e mostra hashes de um tipo específico
das últimas 24 horas do repositório MALSHARE.
+ Os valores possíveis são:
+ 1: Baixar uma amostra;
+ 2: PE32 (padrão) ;
+ 3: ELF ;
+ 4: Java;
+ 5: PDF ;
+ 6: Listar os tipos de arquivo disponíveis nas últimas 24 horas (e quantas
amostras de cada);
+ 7: Lista de hashes das últimas 24 horas;
+ 8: Listar hashes do tipo de arquivo fornecido com -L (use -l 6 para descobrir
os tipos de arquivo válidos).
-L MALSHARE_HASH_SEARCH, --malshare_hash MALSHARE_HASH_SEARCH
+ Fornece um hash como argumento para baixar uma amostra do repositório MALSHARE
(-l 1) ou, quando usado com -l 8, o tipo de arquivo cujos hashes
devem ser listados.
-j HAUS_OPTION, --haus_option HAUS_OPTION
+ Esta opção obtém informações do URLHaus dependendo do valor passado como argumento:
+ 1: realiza o download da amostra fornecida;
+ 2: consulta informações sobre um
hash fornecido ;
+ 3: pesquisa informações sobre uma URL fornecida;
+ 4: pesquisa uma URL maliciosa por uma tag fornecida (sensível a maiúsculas/minúsculas);
+ 5: pesquisa payloads dado uma tag;
+ 6: recupera uma lista de links para download de payloads recentes;
+ 7: recupera uma lista de URLs maliciosas recentes;
+ 8: verificação em lote de hashes a partir de um arquivo (um hash por linha).
-J HAUS_ARG, --haus_arg HAUS_ARG
+ Fornece o argumento para a opção -j do URLHaus. Se "-j 1", então -J deve
ser um hash SHA256 para baixar a amostra; Se "-j 2", então -J deve ser um
hash (MD5/SHA1/SHA256) para pesquisar; Se "-j 3", então -J deve ser uma URL para
verificar; Se "-j 4", então -J deve ser uma tag (sensível a maiúsculas/minúsculas); Se "-j 5", então
-J deve ser um nome de assinatura.
-p POLY_OPTION, --poly_option POLY_OPTION
+ (Somente para Linux) Esta opção está relacionada às operações do POLYSWARM:
+ 1. pesquisa informações relacionadas a um hash fornecido usando a opção -P;
+ 2. envia uma amostra fornecida pela opção -P para ser analisada pelo mecanismo Polyswarm ;
+ 3. Baixa uma amostra do Polyswarm fornecendo o hash através da opção -P.
Atenção: o Polyswarm impõe um máximo de 20 amostras por mês;
+ 4. pesquisa amostras semelhantes dado um arquivo de amostra através da opção -P;
+ 5. pesquisa amostras relacionadas a um endereço IP fornecido através da opção -P;
+ 6. pesquisa amostras relacionadas a um domínio fornecido pela opção -P;
+ 7. pesquisa amostras relacionadas a uma URL fornecida através da opção -P;
+ 8. pesquisa amostras relacionadas a uma família de malware fornecida pela opção -P.
-P POLYSWARM_ARG, --poly_arg POLYSWARM_ARG
+ (Somente para Linux) Fornece um argumento para a opção -p do POLYSWARM.
-y ANDROID_OPTION, --android_option ANDROID_OPTION
+ Esta opção ANDROID tem múltiplos valores possíveis:
+ <1>: Verifica todos os pacotes APK de terceiros do dispositivo Android conectado via USB
contra o Hybrid Analysis usando multithreads. Notas: o dispositivo Android não
precisa estar com root e o sistema precisa ter a ferramenta adb na variável de ambiente
PATH;
+ <2>: Verifica todos os pacotes APK de terceiros do dispositivo Android conectado via USB
contra o VirusTotal usando a API Pública (mais lento por causa do atraso de 60 segundos para cada
4 hashes). Notas: o dispositivo Android não precisa estar com root e o sistema
precisa ter a ferramenta adb na variável de ambiente PATH;
+ <3>: Verifica todos os pacotes APK de terceiros do dispositivo Android conectado via USB
contra o VirusTotal usando multithreads (somente para API de Vírus Privada). Notas: o
dispositivo Android não precisa estar com root e o sistema precisa ter a ferramenta adb
na variável de ambiente PATH;
+ <4> Envia um APK de terceiros do seu dispositivo Android conectado via USB para
o Hybrid Analysis;
+ 5. Envia um APK de terceiros do seu dispositivo Android conectado via USB para o Virus-Total.
-Y ANDROID_ARG, --android_arg ANDROID_ARG
+ Esta opção fornece o argumento para -y do ANDROID.
-n ALIENVAULT, --alienvault ALIENVAULT
+ Verifica múltiplas informações do ALIENVAULT. Os valores possíveis são:
+ 1: Obter os pulses subscritos;
+ 2: Obter informações sobre um endereço IP;
+ 3: Obter informações sobre um domínio;
+ 4: Obter informações sobre um hash;
+ 5: Obter informações sobre uma URL.
-N ALIENVAULT_ARGS, --alienvaultargs ALIENVAULT_ARGS
+ Fornece o argumento para a opção -n do ALIENVAULT. Se "-n 1", então -N
deve ser o número de pulses subscritos a recuperar; Se "-n 2", então -N
deve ser um endereço IP; Se "-n 3", então -N deve ser um domínio; Se "-n 4",
então -N deve ser um hash (MD5/SHA256); Se "-n 5", então -N deve ser uma URL.
-m MALPEDIA, --malpedia MALPEDIA
+ Esta opção está relacionada ao MALPEDIA e apresenta diferentes significados dependendo
do valor escolhido. Assim:
+ 1: Listar meta-informações para todas as famílias;
+ 2: Listar todos os IDs de atores;
+ 3: Listar todos os payloads disponíveis organizados por família do Malpedia;
+ 4: Obter meta-informações de um ator específico, então é necessário usar
a opção -M. Além disso, tente confirmar o ID correto do ator executando
malwoverview com a opção -m 3;
+ 5: Listar todos os IDs de famílias;
+ 6: Obter meta-informações de uma família específica, então é necessário
usar a opção -M. Além disso, tente confirmar o ID correto da família
executando malwoverview com a opção -m 5;
+ 7: Obter uma amostra de malware do malpedia (formato zip -- senha: infected).
É necessário especificar o hash solicitado usando a opção -M;
+ 8: Obter um arquivo zip contendo regras Yara para uma família específica
(obtenha as famílias possíveis usando -m 5), que deve ser especificada usando a opção -M;
+ 9: Obter um arquivo zip contendo o conjunto completo de regras Yara do Malpedia para
um nível TLP, que deve ser fornecido com -M como um de tlp_white, tlp_green,
tlp_amber ou auto (as formas curtas white, green e amber também são
aceitas). Combine-o com --yara para verificar com as regras baixadas.
-M MALPEDIAARG, --malpediarg MALPEDIAARG
+ Fornece o argumento para a opção -m do MALPEDIA. Se "-m 4", então -M deve
ser um nome de ator (confirme com -m 2); Se "-m 6", então -M deve ser um
nome de família (confirme com -m 5); Se "-m 7", então -M deve ser um hash para
baixar a amostra; Se "-m 8", então -M deve ser um nome de família para obter
regras YARA.
-b BAZAAR, --bazaar BAZAAR+ Verifica múltiplas informações do MALWARE BAZAAR e THREATFOX. Os valores
possíveis são:
+ 1: (Bazaar) Consulta informações sobre uma amostra de hash de malware;
+ 2: (Bazaar) Obtém informações e uma lista de amostras de malware associadas
e de acordo com uma tag específica;
+ 3: (Bazaar) Obtém uma lista de amostras de malware de acordo com um imphash
fornecido;
+ 4: (Bazaar) Consulta as amostras de malware mais recentes;
+ 5: (Bazaar) Baixa uma amostra de malware do Malware Bazaar fornecendo um
hash SHA256. A amostra baixada é compactada usando a seguinte senha: infected;
+ 6: (ThreatFox) Obtém o conjunto de dados de IOC atual dos últimos x dias
informados pela opção -B (máximo de 7 dias);
+ 7: (ThreatFox) Procura o IOC especificado no ThreatFox informado pela opção -B;
+ 8: (ThreatFox) Procura IOCs de acordo com a tag especificada informada pela
opção -B;
+ 9: (ThreatFox) Procura IOCs de acordo com a família de malware especificada
fornecida pela opção -B;
+ 10. (ThreatFox) Lista todas as famílias de malware disponíveis.
+ 11: (Bazaar) Verificação em lote de hashes a partir de um arquivo (um hash
por linha) contra o Malware Bazaar;
+ 12: (Bazaar) Verificação de diretório — calcula o SHA256 de cada arquivo em
um diretório e verifica no Malware Bazaar;
+ 13: (Bazaar) Procura amostras que correspondem ao nome da regra YARA
informado pela opção -B. Os nomes das regras são listados no final de um
relatório de hash (-b 1) e também são os nomes das regras no conjunto YARAify
baixado com -b 14 e extraído com -b 15;
+ 14: (YARAify) Baixa o conjunto de regras YARAify (abuse.ch), que é o
conjunto de regras por trás do Malware Bazaar;
+ 15: (YARAify) Extrai o conjunto de regras YARAify baixado para um diretório
de regras que pode ser informado para --yara.
-B BAZAAR_ARG, --bazaararg BAZAAR_ARG
+ Fornece argumento para a opção -b MALWARE BAZAAR e THREAT FOX:
+ "-b 1" indica que o argumento de -B deve ser um hash e um relatório sobre
a amostra será obtido;
+ "-b 2" indica que o argumento de -B deve ser uma tag de malware e as últimas
amostras correspondentes a essa tag serão exibidas;
+ "-b 3" significa que o argumento fornecido por -M deve ser um imphash e as
últimas amostras correspondentes a esse imphash serão exibidas;
+ "-b 4" significa que o argumento fornecido por -M deve ser "100 ou time",
onde "100" lista as últimas "100 amostras" e "time" lista as últimas amostras
adicionadas ao Malware Bazaar nos últimos 60 minutos;
+ "-b 5" significa que a amostra será baixada e o argumento de -B deve ser
um hash SHA256 da amostra que você deseja baixar do Malware Bazaar;
+ "-b 6" indica que uma lista de IOCs será obtida e o valor de -B é o número
de DIAS para filtrar esses IOCs. O tempo máximo é 7 (dias);
+ "-b 7" indica que o argumento de -B é o IOC que você deseja procurar;
+ "-b 8" indica que o argumento de -B é a TAG do IOC que você deseja
procurar;
+ "-b 9" indica que o argumento -B é a família de malware para a qual você
deseja procurar IOCs;
-x TRIAGE, --triage TRIAGE
+ Fornece informações do TRIAGE de acordo com o valor especificado:
+ 1: esta opção obtém as informações gerais da amostra fornecendo um
argumento com a opção -X nos seguintes formatos possíveis:
- sha256:<value>
- sha1:<value>
- md5:<value>
- family:<value>
- score:<value>
- tag:<value>
- url:<value>
- wallet:<value>
- ip:<value>;
+ 2: Obtém um relatório resumido para um determinado ID do Triage (obtido
pela opção -x 1);
+ 3: Envia uma amostra para análise;
+ 4: Envia uma amostra por meio de uma URL para análise;
+ 5: Baixa a amostra especificada pelo ID do Triage;
+ 6: Baixa o arquivo pcapng da amostra associada ao ID do Triage fornecido;
+ 7: Obtém um relatório dinâmico para o ID do Triage fornecido (obtido pela
opção -x 1);
+ 8: Verificação em lote de hashes a partir de um arquivo (um hash por linha)
contra o Triage;
+ 9: Verificação de diretório — calcula o SHA256 de cada arquivo em um
diretório e verifica no Triage.
-X TRIAGE_ARG, --triagearg TRIAGE_ARG
+ Fornece argumento para a opção -x do TRIAGE. Se "-x 1" então -X deve
ser uma consulta de pesquisa (ex.: sha256:<hash>, family:<name>, tag:<tag>,
ip:<ip>); Se "-x 2" então -X deve ser um ID de amostra do Triage (obtido
de -x 1); Se "-x 3" então -X deve ser o caminho de um arquivo para enviar;
Se "-x 4" então -X deve ser uma URL para enviar; Se "-x 5" ou "-x 6"
então -X deve ser um ID de amostra do Triage para baixar; Se "-x 7" então
-X deve ser um ID de amostra do Triage para relatório dinâmico; Se "-x 8"
então -X deve ser um arquivo contendo hashes (um por linha); Se "-x 9"
então -X deve ser o caminho de um diretório para verificar.
-O OUTPUTDIR, --output-dir OUTPUTDIR
+ Define o diretório de saída para todos os downloads de amostras.
-ip IP, --ip IP
+ Obtém informações de IP de várias fontes. Os valores possíveis são:
+ 1: Obtém detalhes de um endereço IP fornecido com -IP do IPInfo;
+ 2: Removido na versão 8.1.0 (BGPView encerrado);
+ 3: Obtém detalhes de um endereço IP fornecido com -IP de todos
os serviços de inteligência disponíveis (VirusTotal/Alienvault);
+ 4: Obtém detalhes de um endereço IP do Shodan;
+ 5: Obtém detalhes de um endereço IP do AbuseIPDB;
+ 6: Obtém detalhes de um endereço IP do GreyNoise;
+ 7: Obtém detalhes de um endereço IP de todos os serviços (abrangente);
+ 8: Verificação em lote de endereços IP a partir de um arquivo (um por
linha) contra o VirusTotal e exibe uma tabela resumida (Endereço IP, País,
Proprietário AS, Detecção). Use -D para escolher entre a API VT Pública
(-D 1) e Premium (-D 0, padrão).
-IP IPARG, --iparg IPARG
+ Fornece um argumento para a opção -ip. Para -ip 1 a 7 deve
ser um endereço IP válido (IPv4 ou IPv6); para -ip 8 deve ser um
arquivo contendo endereços IP (um por linha).
-s SHODAN, --shodan SHODAN
+ Opções do SHODAN:
+ 1: Consulta de IP;
+ 2: Consulta de pesquisa.
-S SHODAN_ARG, --shodanarg SHODAN_ARG
+ Fornece argumento para a opção -s do SHODAN. Se "-s 1" então -S deve
ser um endereço IP; Se "-s 2" então -S deve ser uma consulta de pesquisa
(ex.: "apache", "port:22 country:BR").
-ab ABUSEIPDB, --abuseipdb ABUSEIPDB
+ Opções do ABUSEIPDB:
+ 1: Verifica a reputação do IP.
-AB ABUSEIPDB_ARG, --abuseipdbarg ABUSEIPDB_ARG
+ Fornece um endereço IP para a opção -ab do ABUSEIPDB.
-gn GREYNOISE, --greynoise GREYNOISE
+ Opções do GREYNOISE:
+ 1: Verificação rápida de IP (API da comunidade).
-GN GREYNOISE_ARG, --greynoisearg GREYNOISE_ARG
+ Fornece um endereço IP para a opção -gn do GREYNOISE.
-wh WHOIS, --whois WHOIS
+ Opções do WHOIS:
+ 1: Consulta whois de domínio;
+ 2: Consulta whois/RDAP de IP.
-WH WHOIS_ARG, --whoisarg WHOIS_ARG
+ Fornece argumento para a opção -wh do WHOIS. Se "-wh 1" então -WH deve
ser um nome de domínio; Se "-wh 2" então -WH deve ser um endereço IP.
-ct CRTSH, --crtsh CRTSH
+ Consulta os logs de Transparência de Certificados por meio do crt.sh,
que não precisa de chave de API. Valores possíveis:
+ 1: lista os nomes DNS distintos vistos nos certificados emitidos para
o domínio informado com -CT, o que é uma forma barata de enumerar
subdomínios. Nomes pertencentes a outros domínios, que aparecem porque
um certificado pode cobrir vários locatários, são contados e relatados
separadamente;
+ 2: lista os próprios certificados (identificador, emissor, nome
comum e datas de validade, do mais recente para o mais antigo).
-CT CRTSH_ARG, --crtsharg CRTSH_ARG
+ Fornece o nome de domínio consultado pela opção -ct.
-u URLSCANIO, --urlscanio URLSCANIO
+ Opções do URLSCAN.IO:
+ 1: Envia uma URL para verificação;
+ 2: Obtém o resultado da verificação por UUID;
+ 3: Pesquisa verificações usando a sintaxe de consulta do Elasticsearch
(ex.: "page.server:nginx", "task.tags:phishing");
+ 4: Pesquisa verificações por domínio;
+ 5: Pesquisa verificações por IP.
-U URLSCANIO_ARG, --urlscanioarg URLSCANIO_ARG
+ Fornece argumento para a opção -u do URLSCAN.IO. Se "-u 1" então -U
deve ser uma URL para enviar para verificação; Se "-u 2" então -U deve
ser um UUID (obtido de -u 1); Se "-u 3" então -U deve ser uma consulta
do Elasticsearch (ex.: "page.server:nginx", "task.tags:phishing");
Se "-u 4" então -U deve ser um domínio; Se "-u 5" então -U deve ser um
endereço IP.
--correlate-hash HASH
+ Correlação de hash entre serviços: consulta um hash no VirusTotal,
Hybrid Analysis, Triage e AlienVault gerando um relatório consolidado.
--extract-iocs SOURCE
+ Extrai IOCs (hashes, IPs, URLs, domínios, e-mails, CVEs) de um arquivo
(.txt, .pdf, .eml) ou URL (http/https).
A extração de PDF requer: pip install malwoverview[pdf]
--yara RULES_FILE
+ Arquivo de regras YARA a ser usado para verificação. Deve ser usado com
--yara-target.
Requer: pip install malwoverview[yara]
--yara-target TARGET
+ Arquivo ou diretório para verificar com regras YARA.
--peinfo TARGET
+ Triagem local de PE de um arquivo ou diretório (sem chave de API): tipo
de arquivo, tamanho, overlay, tamanho do overlay e entropia. Diretórios
são verificados recursivamente. A entropia é a maior entropia de seção do
PE, ou a entropia de Shannon do arquivo inteiro para arquivos não-PE.
--entropy-threshold VALUE
+ Valor de entropia no qual --peinfo destaca um arquivo como empacotado ou
criptografado. Padrão: 7.0
--sigcheck TARGET
+ Verifica a assinatura Authenticode de um arquivo ou diretório (sem chave
de API): status, signatário, emissor, datas do certificado, algoritmo de
resumo, impressão digital do certificado e número de série. O status é um
dos seguintes: VALID, TAMPERED, UNTRUSTED, EXPIRED, MALFORMED, INVALID,
NONE (sem assinatura incorporada), PRESENT (há uma assinatura, mas ela
não foi verificada) ou N/A (não é um arquivo PE). Apenas assinaturas
incorporadas são lidas: um arquivo relatado como NONE ainda pode estar
assinado por meio de um catálogo do Windows.
Verificação completa requer: pip install malwoverview[signature]
VALID significa que o arquivo ainda corresponde ao certificado com o qual
foi assinado. Não é um veredito sobre o arquivo: certificados de assinatura
são roubados, abusados e emitidos por engano, e malware já carregou
assinaturas válidas da Microsoft. Uma assinatura incorporada é armazenada
no overlay, portanto um arquivo assinado sempre apresenta uma, e esse
overlay não é uma carga anexada.
A revogação do certificado não é verificada. Nenhuma requisição de rede é
feita, portanto um arquivo assinado com um certificado revogado
posteriormente ainda é relatado como VALID.
Uma assinatura permanece VALID após a expiração do certificado quando
contém uma contra-assinatura, porque a contra-assinatura prova que o
arquivo foi assinado enquanto o certificado ainda era válido. É assim que
o Authenticode deve funcionar, e o relatório informa isso quando ocorre:
uma data de expiração no passado ao lado de VALID não é uma contradição.
Um arquivo pode conter mais de uma assinatura incorporada, geralmente
SHA-1 para compatibilidade além de SHA-256, e os signatários
frequentemente diferem. A coluna Signer mostra uma delas e marca as
demais como (+N); executar --sigcheck em um único arquivo lista todas
as assinaturas com seu próprio algoritmo de resumo, certificado,
impressão digital e número de série.
--no-signature
+ Ignora a verificação de assinatura em --peinfo e --sigcheck, relatando
apenas se há uma assinatura presente. Útil em diretórios grandes.
--sig-verify-mode MODE
+ Qual assinatura incorporada decide o status de um arquivo com múltiplas
assinaturas: any, first, all ou best. Padrão: best
best segue a assinatura feita com o algoritmo de resumo mais forte,
que é o que o Windows honra. first segue a ordem do arquivo, correspondendo
ao sigcheck.exe. all exige que todas as assinaturas sejam verificadas, e
any aceita o arquivo quando apenas uma delas é verificada. A escolha
importa: em 517 drivers com múltiplas assinaturas, 37 mudam de status
dependendo dessa configuração, e any relata VALID em 21 arquivos que
first rejeita.
--attack-map
+ Ativa o mapeamento de técnicas MITRE ATT&CK para relatórios de comportamento.
OPÇÕES GERAIS: Opções de formato de saída, proxy, cache e verbosidade
--output-format text|json|csv
+ Formato de saída: text (padrão, terminal colorido), json ou csv.
--proxy URL
+ URL de proxy HTTP/HTTPS/SOCKS5 (ex.: socks5://127.0.0.1:9050).
--quiet
+ Suprime o banner e a saída cosmética.
--verbose
+ Exibe informações de depuração (URLs de requisição, tempos, etc.).
--no-cache
+ Desativa o cache de resultados.
--cache-ttl SECONDS
+ Tempo de vida do cache em segundos (padrão: 3600).
--cache-stats
+ Exibe o local do cache de resultados local, quantas entradas contém,
quantas delas estão expiradas de acordo com o --cache-ttl atual e seu
tamanho em disco. Em seguida, sai.
--prune-cache
+ Exclui apenas as entradas expiradas do cache de resultados local (de
acordo com --cache-ttl) e sai.
--clear-cache
+ Exclui todas as entradas do cache de resultados local e sai.
--no-resolve
+ Não resolve nem geolocaliza os nomes de host encontrados nos resultados.
Listar um feed (por exemplo, as listagens de payloads e tags do URLHaus)
normalmente faz o seu host consultar cada URL exibida, o que informa ao
operador dessa infraestrutura que ela está sendo investigada. Com esta
opção, a coluna de localização mostra "Not Resolved" em vez disso.
--defang
+ Imprime os IOCs listados por --extract-iocs na forma desarmada
(hxxp://example[.]com), para que possam ser copiados para um relatório ou
ticket sem se tornarem clicáveis. Isso se aplica apenas a essa listagem e
altera somente a saída: as consultas ainda são feitas com os valores reais.
--no-ioc-filter
+ Desativa a filtragem de ruído que --extract-iocs aplica por padrão.
Normalmente, uma página HTML tem seus blocos <script>, <style> e <svg>
ignorados, um domínio só é relatado quando seu último rótulo é um domínio
de topo real, e links de volta ao site de origem ou a elementos conhecidos
de página (analytics, fontes, botões sociais) são descartados. Com esta
opção, cada correspondência de regex no código-fonte bruto é relatada em
vez disso.
--report html|pdf
+ Gera um relatório no formato especificado.
A exportação em PDF requer: pip install malwoverview[pdf]
--report-file PATH
+ Caminho de saída para o relatório gerado.
--interactive
+ Inicia o modo REPL interativo.
--tui
+ Inicia o modo painel TUI (Interface de Texto com o Usuário) com seletor
de serviço, entrada de consulta e painel de resultados rolável. Requer:
pip install malwoverview[tui]
--enrich
+ Ativa o enriquecimento de resultados por LLM. Acrescenta uma avaliação
de ameaça gerada por IA após cada resultado de consulta. Funciona com todos
os tipos de consulta, incluindo consultas de hash de malware, verificações
de reputação de IP, buscas de CVE (NIST e VulnCheck) e correlação entre
serviços. Usa o provedor configurado na seção [LLM] do .malwapi.conf ou
substituído por --llm. Provedores suportados:
- claude: API Anthropic Claude (melhor qualidade, paga)
- gemini: API Google Gemini (requer faturamento)
- openai: API OpenAI (paga, modelos GPT)
- ollama: instância local do Ollama (gratuita, privada)
--llm PROVIDER
+ Substitui o provedor de LLM para enriquecimento (use com --enrich).
Exemplos:
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
OPÇÕES DE VULNERABILIDADE: Opções de consulta ao banco de dados de vulnerabilidades
Consulta ao Banco de Dados NIST CVE:
Opções de consulta para o banco de dados NIST CVE (o tipo de consulta e o valor são obrigatórios; as demais opções são opcionais)
--nist NIST_OPTION, Tipo de consulta: 1=Busca CPE/Produto, 2=Busca por ID CVE,
3=Severidade CVSS v3, 4=Busca por palavra-chave, 5=Busca por ID CWE
--NIST NIST_ARG Valor da busca (o formato depende do tipo de consulta)
--time YEARS Limita os resultados aos últimos N anos
--rpp NUM Resultados por página (padrão: 100, máximo: 2000)
--startindex NUM Índice inicial de paginação (padrão: 0)
--ncves NUM Limita a saída aos primeiros N CVEs
Consulta ao Banco de Dados VulnCheck:
Opções de consulta para o banco de dados de vulnerabilidades VulnCheck (camada Comunitária/Gratuita)
-vc VULNCHECK_OPTION, --vulncheck VULNCHECK_OPTION
+ Tipo de consulta: 1: Lista os índices disponíveis;
2: Obtém KEV (Known Exploited Vulnerabilities);
3: Pesquisa CVE no KEV;
4: Obtém o link de backup do KEV;
5: Lista CVEs do MITRE;
6: Lista CVEs do NIST NVD2;
7: Pesquisa CVE no MITRE;
8: Pesquisa CVE no NIST NVD2.
-VC VULNCHECK_ARG, --VULNCHECK VULNCHECK_ARG
+ Valor da busca (ID CVE para as opções 3/7/8, máximo de resultados para
as opções 2/5/6, ex.: 50).
A partir da versão 8.0, o Malwoverview suporta uma sintaxe alternativa de subcomandos, além da sintaxe tradicional baseada em flags. Ambas as sintaxes são totalmente suportadas e produzem resultados idênticos.
Subcomandos disponíveis:
vt Operações do VirusTotal (file, av, hash, url, ip, domain, submit, behavior, batch)
ha Operações do Hybrid Analysis (report, submit, download, batch, dir)
bazaar Operações do Malware Bazaar (hash, tag, download, batch, dir)
triage Operações do Triage (search, summary, submit, dynamic, batch, dir)
urlhaus Operações do URLHaus (hash, url, tag, download, batch)
ip Consultas de endereço IP (info, shodan, abuse, greynoise, all, batch)
whois Consultas Whois/RDAP (domain, ip)
shodan Operações do Shodan (ip, search)
correlate Correlação entre serviços (hash)
extract Extração de IOCs de arquivos ou URLs
yara Verificação de regras YARA
nist Consultas ao banco de dados NIST CVE
vulncheck Consultas ao banco de dados VulnCheck
Exemplos de subcomandos (equivalentes à sintaxe baseada em flags):
# These pairs are equivalent:
malwoverview vt hash <sha256> # same as: malwoverview -v 8 -V <sha256>
malwoverview vt behavior <sha256> # same as: malwoverview -v 12 -V <sha256>
malwoverview ha report <hash> --env 3 # same as: malwoverview -a 3 -A <hash>
malwoverview ha batch <hashfile> # same as: malwoverview -a 12 -A <hashfile>
malwoverview bazaar hash <sha256> # same as: malwoverview -b 1 -B <sha256>
malwoverview bazaar batch <hashfile> # same as: malwoverview -b 11 -B <hashfile>
malwoverview bazaar dir <directory> # same as: malwoverview -b 12 -B <directory>
malwoverview triage search sha256:<value> # same as: malwoverview -x 1 -X sha256:<value>
malwoverview triage batch <hashfile> # same as: malwoverview -x 8 -X <hashfile>
malwoverview ip all <ipaddr> # same as: malwoverview -ip 7 -IP <ipaddr>
malwoverview ip shodan <ipaddr> # same as: malwoverview -ip 4 -IP <ipaddr>
malwoverview ip batch <ipfile> # same as: malwoverview -ip 8 -IP <ipfile>
malwoverview whois domain <domain> # same as: malwoverview -wh 1 -WH <domain>
malwoverview correlate hash <sha256> # same as: malwoverview --correlate-hash <sha256>
malwoverview extract <file|url> # same as: malwoverview --extract-iocs <file|url>
malwoverview yara <rules> <target> # same as: malwoverview --yara <rules> --yara-target <target>
malwoverview nist 2 CVE-2021-44228 # same as: malwoverview --nist 2 --NIST CVE-2021-44228
Use --help com qualquer subcomando para obter detalhes:
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 local de resultados
malwoverview --cache-stats
malwoverview --prune-cache
malwoverview --clear-cache
# Baixe o conjunto de regras do YARAify e faça a varredura com ele (-b 15 extrai para
# <output directory>/yaraify-rules, então use o mesmo -O para ambas as etapas)
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/
# Conjunto de regras do Malpedia (-m 9 salva malpedia_yara_<level>.zip; extraia-o primeiro)
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/
# Enriquecimento com LLM (anexa uma avaliação de ameaça por IA a qualquer consulta)
malwoverview -v 8 -V <hash> --enrich # usa o provedor do config
malwoverview -v 8 -V <hash> --enrich --llm claude # substituir: usar Claude
malwoverview -v 8 -V <hash> --enrich --llm ollama # substituir: usar Ollama
malwoverview -v 8 -V <hash> --enrich --llm openai # substituir: usar OpenAI
malwoverview -ip 1 -IP 8.8.8.8 --enrich
malwoverview --correlate-hash <hash> --enrich
malwoverview --nist 2 --NIST CVE-2024-3400 --enrich # enriquecimento de CVE (NIST)
malwoverview -vc 3 -VC CVE-2024-3400 --enrich # enriquecimento de CVE (VulnCheck)
malwoverview --nist 4 --NIST palo alto --enrich # busca por palavra-chave + enriquecimento
# 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
# Consultas de 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 (independente)
malwoverview shodan ip 8.8.8.8
malwoverview shodan search "apache"
# Whois
malwoverview whois domain example.com
malwoverview whois ip 8.8.8.8
# Correlação entre serviços
malwoverview correlate hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
# Extração de IOCs (texto, PDF, e-mail ou URL)
malwoverview extract /home/remnux/malware/report.txt
malwoverview extract /home/remnux/malware/report.pdf
malwoverview extract https://example.com/threat-report.html
# Varredura YARA
malwoverview yara /home/remnux/rules/malware.yar /home/remnux/malware/samples/
# Consultas NIST CVE
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
# Consultas VulnCheck
malwoverview vulncheck 2 30
malwoverview vulncheck 3 CVE-2021-44228
# Subcomandos combinados com opções globais
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
# Dentro do prompt (digite "help" para ver a lista completa):
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 # o caminho de exportação deve estar dentro do diretório atual
malwoverview --tui
# Escolha um serviço no painel esquerdo, digite a consulta e pressione Enter.
# F3 copia o resultado, F4 extrai um ID dele, F5 exporta os
# resultados coletados para json, F6 os exporta para csv, Ctrl+L limpa.
# Ctrl+V (ou Shift+Insert) cola o conteúdo da área de transferência na caixa de consulta de
# qualquer lugar do painel, para que um hash possa ser colado sem clicar
# primeiro na caixa.
# A lista de teclas é exibida acima dos resultados e é reescrita sempre que
# o painel é limpo, o que inclui o início de cada busca.
# Enquanto a caixa de consulta está com foco, sair é Ctrl+Q, porque o próprio Q
# precisa continuar digitável.
# Buscar vulnerabilidades do Windows
malwoverview --nist 1 --NIST "windows" --ncves 50
# Buscar vulnerabilidades do Apache
malwoverview --nist 1 --NIST "apache" --ncves 30
# Buscar vulnerabilidades do Chrome
malwoverview --nist 1 --NIST "chrome" --ncves 25
# Buscar vulnerabilidades do Chromium
malwoverview --nist 1 --NIST "chromium" --ncves 25
# Buscar vulnerabilidades do Linux
malwoverview --nist 1 --NIST "linux" --ncves 25
# Buscar vulnerabilidades do MacOS
malwoverview --nist 1 --NIST "MacOS" --ncves 25
# Buscar vulnerabilidade Log4Shell
malwoverview --nist 2 --NIST "CVE-2021-44228"
# Buscar vulnerabilidade ProxyShell
malwoverview --nist 2 --NIST "CVE-2021-34473"
# Buscar vulnerabilidade Spring4Shell
malwoverview --nist 2 --NIST "CVE-2022-22965"
# Buscar vulnerabilidades de severidade CRÍTICA
malwoverview --nist 3 --NIST "CRITICAL" --ncves 50
# Buscar vulnerabilidades de severidade ALTA
malwoverview --nist 3 --NIST "HIGH" --ncves 40
# Buscar vulnerabilidades de severidade MÉDIA
malwoverview --nist 3 --NIST "MEDIUM" --ncves 30
# Buscar vulnerabilidades de bypass de autenticação
malwoverview --nist 4 --NIST "authentication bypass" --ncves 30
# Buscar vulnerabilidades de execução remota de código (RCE)
malwoverview --nist 4 --NIST "remote code execution" --ncves 50
# Buscar vulnerabilidades de injeção SQL
malwoverview --nist 4 --NIST "sql injection" --ncves 25
# Buscar vulnerabilidades de path traversal (CWE-22)
malwoverview --nist 5 --NIST "CWE-22" --ncves 30
# Buscar vulnerabilidades de injeção SQL (CWE-89)
malwoverview --nist 5 --NIST "CWE-89" ---ncves 40
# Buscar vulnerabilidades de cross-site scripting (CWE-79)
malwoverview --nist 5 --NIST "CWE-79" --ncves 35
# Listar índices disponíveis do VulnCheck (camada Comunitária/Gratuita)
malwoverview -vc 1
# Obter Known Exploited Vulnerabilities (KEV) - 30 resultados
malwoverview -vc 2 -VC 30
# Obter Known Exploited Vulnerabilities (KEV) - 100 resultados
malwoverview -vc 2 -VC 100
# Buscar um CVE específico no banco de dados KEV
malwoverview -vc 3 -VC CVE-2021-44228
# Buscar um CVE específico no banco de dados KEV
malwoverview -vc 3 -VC CVE-2022-22965
# Obter link de download de backup do conjunto de dados KEV do VulnCheck
malwoverview -vc 4
# Listar CVEs recentes do banco de dados MITRE
malwoverview -vc 5
# Listar CVEs recentes do banco de dados MITRE - 20 resultados
malwoverview -vc 5 -VC 20
# Listar CVEs recentes do banco de dados NIST NVD2
malwoverview -vc 6
# Listar CVEs recentes do banco de dados NIST NVD2 - 50 resultados
malwoverview -vc 6 -VC 50
# Buscar CVE específico no banco de dados MITRE (registros oficiais de CVE)
malwoverview -vc 7 -VC CVE-2024-21412
# Buscar CVE específico no NIST NVD2 (pontuações CVSS, CWE, status CISA KEV)
malwoverview -vc 8 -VC CVE-2024-21412
A única mudança que quebra compatibilidade. As cinco opções de download do Hybrid Analysis faziam a mesma coisa, então foram condensadas em uma só e as duas opções seguintes foram movidas para baixo:
# Download a sample from Hybrid Analysis (was -a 11, -a 12, -a 13, -a 14 or -a 15)
malwoverview -a 11 -A 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979
# Batch hash check from a file (was -a 16)
malwoverview -a 12 -A /home/remnux/malware/hashes.txt
# Scan every file in a directory (was -a 17)
malwoverview -a 13 -A /home/remnux/malware/samples/
Todas as outras opções mantiveram seus números. Todos os novos números são aditivos.
# Triage a directory: type, size, overlay, overlay size, entropy, signature
malwoverview --peinfo /home/remnux/malware/samples/
# Lower the bar for what counts as packed or encrypted (default 7.0)
malwoverview --peinfo /home/remnux/malware/samples/ --entropy-threshold 6.5
# Skip signature verification on a large sweep
malwoverview --peinfo /home/remnux/malware/samples/ --no-signature
# YARA now accepts a whole rules directory, scanned recursively
malwoverview --yara /home/remnux/rules/ --yara-target /home/remnux/malware/samples/
# One file: status, signer, issuer, certificate dates, thumbprint, serial
malwoverview --sigcheck /home/remnux/malware/suspicious.exe
# A whole directory, one row per file
malwoverview --sigcheck /home/remnux/malware/samples/
Um arquivo pode conter várias assinaturas embutidas — normalmente SHA-1 para compatibilidade além de SHA-256 — e os signatários costumam ser diferentes. A tabela marca as extras como (+N); execute a forma de arquivo único para listar todas. Qual assinatura decide o status é selecionável:
# Strongest digest decides (default, and what Windows honours)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode best
# First in file order decides (what sigcheck.exe reports)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode first
# Every signature must verify (strictest)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode all
# Any one signature verifying is enough (most permissive)
malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode any
Os dados de assinatura do próprio VirusTotal agora também são exibidos, então uma consulta por hash informa a cadeia de signatários, a data de assinatura e o thumbprint de cada certificado:
# Signature block from VirusTotal, by hash
malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979
# Same block when checking a local file
malwoverview -v 1 -V /home/remnux/malware/suspicious.exe
# Distinct DNS names seen in certificates issued for a domain
malwoverview -ct 1 -CT example.com
# The certificates themselves: identifier, issuer, common name, validity
malwoverview -ct 2 -CT example.com
# Submit a Retrohunt job from a rules file or a rules directory
malwoverview -v 14 -V /home/remnux/rules/hunting.yar
# List your Retrohunt jobs, optionally filtered by status
malwoverview -v 15
malwoverview -v 15 -V finished
# Status and progress of one job, then the files it matched
malwoverview -v 16 -V 1234abcd-5678-90ef-1234-567890abcdef
malwoverview -v 17 -V 1234abcd-5678-90ef-1234-567890abcdef
# Create a Livehunt ruleset, list your rulesets, list notifications
malwoverview -v 18 -V /home/remnux/rules/livehunt.yar
malwoverview -v 19
malwoverview -v 20
Uma consulta por hash agora lista as regras YARA que coincidiram com a amostra, e é daí que vem o nome da regra para o próximo comando:
# 1. look a sample up: the report ends with the rules that matched it
malwoverview -b 1 -B 3b89db05cd1e6283a5d23e32eb6a6c17d92953c80c93befa194a0c93a633c1b5
tags: elf Mirai upx-dec
yara rules:
ELF_Mirai
linux_generic_ipv6_catcher
unixredflags3
# 2. take one of those names and pull every other sample it matched
malwoverview -b 13 -B ELF_Mirai
Os nomes das regras também estão nos próprios conjuntos de regras, que podem ser baixados e lidos localmente:
# Download the YARAify rule set from abuse.ch, then extract it.
# Both use -O for the working directory; -b 15 finds the archive there.
malwoverview -b 14 -O /home/remnux/rules/
malwoverview -b 15 -O /home/remnux/rules/
O arquivo chega como /home/remnux/rules/yaraify-rules.zip e é extraído em /home/remnux/rules/yaraify-rules/, um arquivo .yar por regra. Esse diretório é o alvo do --yara, e os nomes dos arquivos são os nomes das regras:
malwoverview --yara /home/remnux/rules/yaraify-rules/ --yara-target /home/remnux/malware/samples/
Um conjunto de regras reunido de muitos autores não compila perfeitamente contra todas as versões do YARA. Arquivos com erros de sintaxe são listados e ignorados, e a varredura segue com o restante: uma execução do conjunto acima compilou 548 de 557 arquivos.
# The complete Malpedia YARA ruleset for a TLP level
malwoverview -m 9 -M white
# -m 1 returned the family list; it now returns family meta information
malwoverview -m 1
# -l 6 lists the file types seen in the last 24 hours, -l 8 lists one of them
malwoverview -l 6
malwoverview -l 8 -L PE32
# -ip 3 and -ip 7 used to be identical; -ip 3 is VirusTotal + OTX,
# -ip 7 queries every configured service (IPInfo was never reached)
malwoverview -ip 3 -IP 8.8.8.8
malwoverview -ip 7 -IP 8.8.8.8
# -j 8 (URLhaus batch hash check) was unreachable
malwoverview -j 8 -J /home/remnux/malware/hashes.txt
json e csv agora funcionam em toda a ferramenta, em vez de apenas em um terço dela:
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
# LLM enrichment reaches json and csv too, as a typed record
malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979 --enrich --output-format json
# Do not resolve attacker-controlled hostnames to IP addresses
malwoverview -j 2 -J http://malicious.example.com/payload.bin --no-resolve
# Defang the extracted IOCs so the list can be pasted into a ticket
malwoverview --extract-iocs /home/remnux/malware/report.txt --defang
# The source can equally be a URL, so a published report can be read and
# its IOCs defanged in one step
malwoverview --extract-iocs https://example.com/threat-report.html --defang
# A vendor blog is mostly navigation, analytics and minified JavaScript, so
# the extractor skips <script>, <style> and <svg>, drops links back to the
# source site and to known page furniture, and only reports a domain whose
# last label is a real top-level domain
malwoverview --extract-iocs https://www.fortinet.com/blog/threat-research/dprk-related-campaigns-with-lnk-and-github-c2
# Turn all of that off and report every regex match in the raw source
malwoverview --extract-iocs https://example.com/threat-report.html --no-ioc-filter
malwoverview --cache-stats
malwoverview --prune-cache
malwoverview --clear-cache
# Command-line REPL
malwoverview --interactive
# Full-screen dashboard: 111 services, Ctrl+V pastes, F5 exports json,
# F6 exports csv
malwoverview --tui
O 8.0.0 adicionou muita coisa de uma vez, então os comandos estão agrupados aqui pelo que servem, em vez de pelo número da opção. O 8.0.1 ao 8.0.5 foram em sua maioria correções e ficam no final. Quando o 8.1.0 mudou posteriormente o número de uma opção, o comando abaixo usa o número atual e informa qual era o antigo.
# URLScan.io (-u): submit a URL, fetch a result by id, search,
# then look up a domain or an 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): a single IP, or a search query
malwoverview -s 1 -S 8.8.8.8
malwoverview -s 2 -S "apache"
# AbuseIPDB (-ab): IP reputation
malwoverview -ab 1 -AB 185.220.100.243
# GreyNoise (-gn): background internet noise, or aimed at you?
malwoverview -gn 1 -GN 185.220.100.243
# Whois / RDAP (-wh): a domain, then an IP
malwoverview -wh 1 -WH example.com
malwoverview -wh 2 -WH 8.8.8.8
Os novos serviços de IP também podem ser acessados pelo -ip, então um único endereço pode ser consultado serviço por serviço, ou por todos de uma vez:
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: a file of hashes, then a directory of samples
malwoverview -b 11 -B /home/remnux/malware/hash_list.txt
malwoverview -b 12 -B /home/remnux/malware/samples/
# Hybrid Analysis (8.0.0 numbered these -a 16 and -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/
# Pull hashes, IPs, URLs, domains, emails and CVEs out of a report
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
# Scan samples with YARA rules
malwoverview --yara /home/remnux/rules/malware.yar --yara-target /home/remnux/malware/samples/
# Provider taken from the [LLM] section of .malwapi.conf
malwoverview -v 8 -V <hash> --enrich
# Override it per run: claude, gemini, openai or 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: these take a file path again, not only a 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: batch IP check against VirusTotal, Premium then Public API
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: Android scans work on current devices again, hashing with SHA256
malwoverview -y 1
malwoverview -y 2
# 8.0.3 and 8.0.4: Claude enrichment works again and is rendered with colour
malwoverview -v 8 -V <hash> --enrich --llm claude
# 8.0.5: overlay and entropy in the directory check and the hash report
malwoverview -d /home/remnux/malware/samples/
malwoverview -v 8 -V <hash>
Versão 8.1.0:
This version adds YARA hunting and local PE triage, repairs options
that did not do what they announced, and includes a set of security
fixes.
ATTENTION: two options changed number. The five Hybrid Analysis download
options (-a 11 to -a 15) are now a single option, -a 11. The batch hash
check moved to -a 12 (it was -a 16) and the directory scan to -a 13 (it
was -a 17). Nothing else changed number.
NEW OPTIONS
* --sigcheck: Authenticode signature checking of a file or a
directory, with no API key and no network request. Reports VALID,
TAMPERED, UNTRUSTED, EXPIRED, MALFORMED, INVALID, NONE or N/A with
the signer, issuer and certificate dates. Every embedded signature
is listed, each with its own digest algorithm, thumbprint and
serial number. Verification needs
pip install malwoverview[signature]; without it the status is
PRESENT or NONE.
* --sig-verify-mode any|first|all|best: which signature decides the
status of a multi-signed file. Default best.
* --no-signature: skips signature verification on large directories.
* --peinfo and --entropy-threshold: local PE triage of a file or
directory, listing file type, size, overlay, overlay size, entropy
and signature status, highlighting files at or above the threshold
(default 7.0). Recursive, no API key.
* -ct 1|2 and -CT: Certificate Transparency through crt.sh, no API
key. -ct 1 lists the DNS names seen in certificates issued for a
domain, -ct 2 lists the certificates.
* -v 14 to -v 20: VirusTotal Retrohunt and Livehunt. Submit a job,
list jobs, follow a job, list matched files, create a ruleset, list
rulesets and list notifications. Requires a premium key.
* -b 13, -b 14 and -b 15: Malware Bazaar search by YARA rule name,
and download and extraction of the YARAify rule set.
* -m 9: download of the Malpedia YARA ruleset for a TLP level.
* -l 8: lists the hashes of a MalShare file type given with -L.
* -j 8: URLHaus batch hash check, which no option reached before.
* --cache-stats, --prune-cache and --clear-cache.
* --no-resolve: does not resolve or geolocate the host names shown by
-j 2 and -j 3.
* --defang: prints the IOCs listed by --extract-iocs as
hxxp://example[.]com. Output only.
* --no-ioc-filter: turns off the --extract-iocs noise filtering and
reports every regex match in the raw source.
* --yara now accepts a directory of rules, each file compiled in its
own namespace. A file that fails to compile is reported and
skipped.
REPAIRED OPTIONS
* -m 1 called the same endpoint as -m 5. It now retrieves the family
meta information and accepts an optional filter with -M.
* -l 6 was labelled "Composite(OLE)" and listed PDF samples. It now
lists the file types seen in the last 24 hours with a count.
* -ip 3 and -ip 7 produced identical output. -ip 3 now queries
VirusTotal and AlienVault only; -ip 7 queries every remaining
service, including IPInfo.
* -l 1 wrote a zero byte file for every sample and reported success.
Redirects are followed and an empty body is refused.
* -a 6 to -a 10 and -y 4 always failed with "Requested URI - Not
Found". Hybrid Analysis requests no longer go through the www host,
whose redirect dropped the upload.
* -b 14 answered HTTP 301. The rule set is fetched from the working
address with the abuse.ch Auth-Key.
* -v 20 reads the Livehunt notifications from the
hunting_notification_files endpoint, which carries the sha256.
* -b 6, -m 4 and the other options that consume an argument now
require it. Eight of them stopped with a raw TypeError when it was
omitted.
* -A now accepts a native Windows path (-a 1 to -a 5), which was
rejected as "Input contains invalid characters".
* --report html, --report pdf and --enrich now work for
--correlate-hash, --extract-iocs and --yara, which produced no
report.
* The Malpedia sample and rule downloads no longer end the program
before the report and the json/csv export.
* The validated form of every argument is now the one used. A URL
written as hxxp://example[.]com was sent to the service still
defanged, and paths such as ~/samples were not expanded.
* -ip 2 (BGPView) is removed: its domain no longer resolves. The
number is kept and reports the removal, pointing at -ip 1 and
-ip 7. No other -ip number changed.
* --defang is documented as applying to --extract-iocs only, which is
the only option that reads it.
NEW BEHAVIOUR
* -y 1, -y 2 and -y 3 hash every APK of a package instead of the base
APK alone. On the test device a scan went from 35 to 79 APKs.
-y 4 and -y 5 report when the selected package is a split APK.
* -b 1 lists the YARA rules that matched the sample, so a name can be
passed to -b 13.
* -v 1 and -v 8 show the signature block VirusTotal already returned:
whether it verified, the signer and counter signer chains, the
signing date and every certificate with its status, algorithm,
dates, serial number and thumbprint.
* --sigcheck and --peinfo report the certificate thumbprint, serial
number and digest algorithm, in the report and in json and csv.
* --extract-iocs no longer reports a web page's own code. On a vendor
blog it returned 855 IOCs, 743 of them "domains" produced by
minified JavaScript. Script, style, svg and noscript blocks are
skipped, a domain is reported only when its last label is a real
top-level domain, and links back to the source site and to page
furniture are dropped: 855 IOCs became 16, keeping every sample
hash and the command-and-control URLs. Suppression is counted and
reported. Code-hosting, paste and messaging services are never
suppressed.* O --extract-iocs indica o host e o tipo de falha quando uma busca falha,
em vez de imprimir a exceção bruta do urllib3.
* Um 404 da GreyNoise Community é reportado como o resultado que é,
que o endereço não é um scanner da internet, em vez de um erro.
* Uma falha de rede não chega mais ao utilizador como um traceback
do Python. 43 blocos try capturavam apenas ValueError, então um
erro de conexão escapava sem captura. O host reportado é obtido da
URL analisada, nunca do texto da exceção.
* Uma falha de TLS é explicada: um handshake que completa e depois
fecha, um certificado que falha na verificação, uma porta que
responde sem TLS e um handshake recusado cada um tem a sua própria
linha. O texto da exceção é lido, mas nunca impresso.
* O crt.sh usa uma política de novas tentativas paciente (5
tentativas, backoff de 2 segundos) porque responde à mesma URL com
200, 404 ou 502 com segundos de diferença. Todos os outros
serviços mantêm a política anterior.
* HTTP 429 agora é repetido, no máximo três vezes, respeitando as
duas formas de Retry-After e nunca esperando mais de 300 segundos.
Uploads de amostras não são repetidos.
* O cálculo de entropia lê o ficheiro em blocos em vez de o carregar
inteiro. O valor reportado não muda.
* O scanner YARA não muda mais o diretório de trabalho do processo
ao compilar regras.
* A correspondência de --attack-map é exata em vez de uma pesquisa de
substring, que atribuía técnicas não relacionadas (uma tag vazia
correspondia a todas as 691). Foi estendida aos relatórios do
Hybrid Analysis e ao --correlate-hash.
* O --enrich recebe os registos recolhidos em vez do texto extraído
do terminal, e agora funciona com --output-format json e csv, onde
era ignorado silenciosamente.
* Todas as opções agora produzem registos para --output-format json
e csv. Apenas um terço delas produzia.
* Os resultados do MalShare são incluídos em json e csv.
* As secções [INQUEST] e [VIRUSEXCHANGE] foram removidas do
.malwapi.conf e do código por trás delas.
* A versão mínima do Python é 3.10, e os classifiers anunciam 3.10 a
3.13.
MODOS INTERATIVO E GRÁFICO
* O --interactive ganha todos os comandos que só a linha de comandos
tinha: os relatórios do VirusTotal, uploads, relatório de
comportamento, verificação em lote, Retrohunt e Livehunt; o
imphash do Malware Bazaar, download, lote, diretório, pesquisa de
regras YARA e conjunto de regras do YARAify; o download de
payloads do URLHaus, pesquisa de assinaturas, lista de payloads,
verificação em lote e feed; as submissões do Triage, downloads,
relatório dinâmico, verificações em lote e de diretório; a meta de
famílias do Malpedia, lista de payloads e conjunto de regras; as
listagens de tipos de ficheiro do MalShare; a submissão do Hybrid
Analysis, verificações em lote e de diretório; a lista de famílias
do ThreatFox; as consultas em lote de IP e multi-serviço; e crtsh,
android, yara, iocs e cache. O ATT&CK é alternado com
"set attack on|off".
* O --tui foi reconstruído sobre o código de módulo usado pela linha
de comandos em vez de uma cópia própria de cada chamada de
serviço: 3013 linhas tornaram-se 818, e a lista de serviços passou
de 37 para 111 entradas. Os resultados exportam com F5 (json) e F6
(csv), algo que não suportava de todo.
* A colagem no --tui foi corrigida. Um hash colado antes de clicar na
caixa de consulta era descartado sem mensagem, porque apenas o
widget focado recebe uma colagem e o painel começa na lista de
serviços. A colagem agora é capturada para a janela inteira.
* O --tui ganha Ctrl+V e Shift+Insert, que leem a área de
transferência diretamente para terminais que nunca enviam uma
colagem. Nenhum pacote de terceiros é necessário.
* A lista de teclas do --tui é reescrita sempre que o painel de
resultados é limpo, e é construída a partir dos próprios atalhos de
teclado. A barra de teclas mantém Quit (como Ctrl+Q) e Paste
enquanto a caixa de consulta tem o foco, e os seus rótulos não
repetem mais a tecla.
RELATÓRIOS
* O --peinfo e o --sigcheck dimensionam as colunas a partir dos
ficheiros que estão a ser analisados e nunca encurtam o nome do
ficheiro, que normalmente é o SHA256. Type e Signer permanecem
limitados; um valor encurtado só é encurtado no ecrã.
* Cada coluna de tabela é medida em células do terminal em vez de
caracteres, para que um assunto de certificado ou nome de ficheiro
CJK não desalinhe mais as colunas. O truncamento para num limite de
caracteres.
* As linhas de uma tabela agora são iguais à soma das suas colunas,
os cabeçalhos das colunas e as linhas são neutros, uma célula vazia
lê n/a e os totais de fecho abrem com "[+] ". Aplicado 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, cujas linhas discordavam das suas
colunas em até 51 caracteres.
* O mesmo tratamento foi concluído em todos os relatórios restantes.
Nenhuma linha é mais escrita como um número fixo: cada uma é
derivada de uma largura nomeada ou do cabeçalho sob o qual se
encontra, para que o título, a linha e as colunas não possam mais
discordar. 88 linhas em 19 ficheiros, alcançando todos os serviços
que a ferramenta consulta.
* 38 títulos de relatórios foram preenchidos com 28 espaços finais,
colocando a linha do título além da linha abaixo. Invisível no
ecrã e visível assim que a saída é canalizada, redirecionada ou
copiada.
* -b 6 a -b 10: valores longos são quebrados à largura do relatório.
Uma URL de referência ou uma lista de aliases unida por vírgulas
chegava a 137 colunas sob uma linha de 100 colunas; numa execução
de -b 6, 52 de 5936 linhas faziam isso.
* -j 2 a -j 7: cada relatório é desenhado com uma largura obtida das
colunas que realmente imprime, substituindo os seis números
diferentes (100, 104, 126, 130, 136 e 146) usados antes. O -j 2
também dimensiona a coluna URL a partir da resposta e não imprime
mais o cabeçalho duas vezes.
* -l 1 e -l 8 são tabelas. O cabeçalho anunciava três colunas
centradas em 75, 38 e 8 sob uma linha de 126, enquanto as linhas
abaixo imprimiam "sha256: ... md5: ... type: ...", então os
cabeçalhos alinhavam-se com nada. Um erro do MalShare não é mais
impresso sob um cabeçalho que promete resultados que nunca chegam.
* -ct 1 e -ct 2: o cabeçalho do relatório é desenhado à largura da
tabela que introduz, e as linhas de estado, erro e contagem são
quebradas para caber como avisos com marcadores em vez de passarem
para além dele.
* -a 12 e -a 13: um hash que o Hybrid Analysis nunca viu produzia
uma linha em branco e agora lê not found, que é distinto do
veredicto "unknown". Uma falha HTTP é reportada como tal. O -a 13
não corta mais todos os nomes de ficheiro para 40 caracteres.
* -j 8: a coluna Status mostrava a resposta bruta, então um sucesso
lia "ok". Agora lê found, not found, invalid hash ou bad request.
A coluna de hash segue os hashes no ficheiro.
* -x 8 e -x 9: o nome do ficheiro e as tags eram cortados com um
corte simples e agora são truncados com reticências, e a pontuação
é colorida pelo valor.
* -b 11 e -b 12: a coluna Signature tem 17 colunas e uma amostra
desconhecida lê n/a em vez de deixar um espaço vazio.
* -s 2 é uma tabela em vez de quatro linhas rotuladas por host, cem
blocos para uma consulta. As colunas são IP, Port, Country,
Product, Vulns e Organization. O banner bruto é substituído por
Product, que é o que o Shodan analisou do banner ou do cabeçalho
Server; o banner completo ainda chega ao json e ao csv. Vulns é o
número de CVEs que o Shodan lista para o host.
* -u 3: a coluna Score era sempre zero, porque o endpoint de pesquisa
não retorna nenhum veredicto e o código usava o valor por omissão;
os registos json e csv carregavam "malicious": "False" para cada
resultado de uma consulta de phishing. Ambos os campos
desapareceram, substituídos por Age(d), a idade do domínio em dias,
colorido pelo valor. As células são truncadas com reticências em
vez de cortadas, e a coluna IP não corta mais um endereço IPv6 ao
meio.
* -u 2: o veredicto, a pontuação, as categorias, as tags e as marcas
são realçados em vez de serem desenhados como o tipo MIME, os
valores quebram em vez de saírem do ecrã, e as datas do certificado
são mostradas em UTC em vez de segundos epoch brutos. O título da
página não é mais cortado aos 80 caracteres.
* -u 1: a nota final é prefixada com "[+] ", desenhada como um aviso
em vez de mais um campo, e carrega o UUID da análise acabada de
submeter para que o comando de recuperação possa ser copiado.
* --correlate-hash, -wh 1 e -wh 2 quebram os seus valores, com
continuações alinhadas sob a primeira linha. Um estado WHOIS
alcançou 187 colunas, acima de uma linha de 100, e os IDs ATT&CK de
um conjunto de pulses alcançaram 200. O SHA512 é quebrado em várias
linhas; os registos mantêm cada valor numa linha.
* O --yara não imprime mais os erros do compilador por ficheiro, que
são uma propriedade do conjunto de regras em vez das amostras e
empurravam o relatório para fora do ecrã. A contagem permanece no
resumo e o detalhe está disponível com --verbose. As colunas File e
Rule são dimensionadas a partir do seu conteúdo, porque cortar
qualquer uma quebra a ligação de volta à amostra ou à regra.
* O bloco de certificados de -v 1 e -v 8 quebra às 120 colunas. Um
estado é uma frase por problema unida por vírgulas e alcançou 233
caracteres numa linha.
* A saída do --enrich quebra à largura da linha acima, com
continuações indentadas sob um marcador de lista. Os registos json
e csv mantêm a resposta sem quebras.
* O -y 1 reporta o seu inventário de APKs no fim da tabela em vez de
acima dela, prefixado com "[+] " na cor neutra. As linhas são
impressas por uma thread por pacote e essas threads nunca eram
esperadas fora do Windows, então a linha agora é impressa depois de
o serem. -y 2 e -y 3 são tratados da mesma forma.
* -ip 3 e -ip 7: as duas notas de referência cruzada são prefixadas
com "[+] ", onde eram lidas como parte dos dados acima delas.
* Um ficheiro de regras YARA que é ignorado agora reporta o motivo.
O caminho ocupava a linha toda e o motivo era cortado.
* A saída json e csv de --correlate-hash, --extract-iocs e --yara
não começa mais com uma linha em branco.
* Os relatórios não são mais impressos na saída padrão juntamente
com o json ou o csv, o que tornava o resultado impossível de
analisar, e vinte e nove funções não terminam mais o programa antes
da exportação. O texto vai para o erro padrão quando um comando não
produz nenhum registo, para que uma falha possa ser distinguida de
um resultado vazio.
* O csv escrito na saída padrão no Windows não segue mais cada linha
com uma em branco, e tanto o json como o csv são escritos em UTF-8
em vez da codificação da consola.
* O csv escrito por "export csv" no modo interativo não termina mais
cada linha com dois retornos de carro no Windows.
* Um certificado que contém caracteres que a consola não consegue
representar não termina mais a execução com UnicodeEncodeError.
* Uma sequência de escape inválida na pesquisa de famílias do
PolySwarm não emite mais um SyntaxWarning.
* Uma cache ATT&CK truncada ou corrompida não falha mais com
"Error while connecting to Virus Total!". É detetada, transferida
novamente e escrita atomicamente.
* Uma submissão recusada do Hybrid Analysis não para mais com um
KeyError; o motivo dado pelo serviço é impresso.
* 43 handlers em volta de um pedido capturavam apenas ValueError,
então uma falha de rede ainda podia chegar ao utilizador como um
traceback do Python. Agora capturam também os erros de pedido e
identificam o serviço e o host. A mensagem nunca contém o texto da
exceção, porque o MalShare e o Shodan carregam a chave API na URL.
* Sete desses handlers no URLHaus eram inalcançáveis: um handler
mais amplo acima deles capturava a falha primeiro, não imprimia
nada e saía. O -j 7 contra um serviço inalcançável imprimia um
cabeçalho, uma linha e nada mais, o que parece exatamente uma
pesquisa que não encontrou nada.
* O --defang agora também desarma a linha Source do relatório de
extração de IOCs, para que o relatório inteiro possa ser colado em
segurança noutro local. Um caminho de ficheiro local é deixado
intacto, e o registo exportado mantém o valor real em ambos os
casos.
* A lista SUBCOMMANDS neste ficheiro anunciava "ip bgp", removido
nesta versão, omitia "ip batch" e "urlhaus batch", e listava um
subcomando urlscanio que nunca existiu. O URLScan.io é alcançável
através de -u.
CORES
* Num fundo claro, nem ciano nem azul claro são mais usados, apenas
azul. Num fundo escuro, ambos permanecem em uso. Isto mudou 298
locais em 16 ficheiros, incluindo a cor partilhada info().
* Uma auditoria ao pacote inteiro encontrou mais 26 locais que
violavam a regra, alguns dentro de um teste de fundo e alguns
coloridos uma vez para ambos os fundos. Verde no escuro agora é
verde claro.
* A cor neutra nunca era aplicada no Windows com um fundo escuro:
era escrita como um escape de cor estendida de 256, que o
conversor usado pelo colorama entende apenas os códigos básicos,
então era descartada e a cor anterior permanecia em vigor. Cada
linha de tabela, cabeçalho de coluna e aviso com marcador foi
afetado.
* -x 8 e -x 9: a coluna Tags é azul claro no escuro e azul no claro.
Usava o mesmo tom da coluna Hash ao lado.
* -b 1: os rótulos dos campos são ciano claro no escuro e azul no
claro, coincidindo com todos os outros relatórios; o fundo claro
usava verde.
* -j 8: a coluna hash é roxo claro no escuro e azul no claro. A
coluna de estado é cinzenta até haver algo a reportar.
* -ab 1: os rótulos dos campos são azul claro no escuro e azul no
claro.
* -y 1: a coluna Package é azul claro no escuro.
* -y 2 e -y 3: a coluna Hash é rosa no escuro e roxo no claro.
* -s 2: a coluna Product é azul claro no escuro e ciano no claro.
As alterações abaixo são correções de segurança. Nenhuma delas altera
qualquer sintaxe de comando.
* Corrige a injeção de sequências de escape no terminal proveniente
de respostas de serviços (ALTA). Campos controlados por atacantes
impressos no terminal (os dados de comportamento e nomes de
amostras do VirusTotal, os nomes de ficheiros, assinaturas e tags
do Malware Bazaar e do URLHaus, os nomes e descrições de pulses do
AlienVault OTX, os campos do ThreatFox e do Hybrid Analysis)
conseguiam mover o cursor e sobrescrever um veredicto já impresso,
definir o título da janela, escrever na área de transferência ou
limpar o ecrã. Cada resposta JSON agora é sanitizada assim que é
analisada.
* Corrige a mesma injeção de sequências de escape no modo gráfico
(ALTA). O --tui analisava as respostas dos serviços em dezasseis
locais, nenhum deles sanitizado. Agora não analisa mais nenhuma
resposta.
* Corrige a injeção de sequências de escape no terminal vinda da
linha de comandos e de ficheiros de entrada (MÉDIA). -B, -X, -TR,
-S, -M, -L, -NIST e os outros argumentos de texto livre aceitavam
ESC, o CSI de 8 bits e backspace, e os validadores ecoavam um valor
rejeitado de volta ao terminal sem o limpar primeiro. Isto afetou
apenas Linux e macOS.
* Corrige a injeção de sequências de escape no terminal a partir de
mais três fontes (MÉDIA): os valores extraídos por --extract-iocs,
cujo padrão de URL excluía espaços em branco, mas não os outros
caracteres de controlo; os campos WHOIS, que chegam como texto
simples escrito pelo registrar e pelo registrant; e o sha256 lido
de um dispositivo Android ligado por USB, que agora é verificado
contra uma lista de permitidos de 64 caracteres hexadecimais.
* Corrige uma negação de serviço no --extract-iocs (MÉDIA). O
processamento de HTML removia blocos de script, style, svg e
comentários com uma expressão regular lazy, que é quadrática quando
a etiqueta de abertura nunca é fechada: 50 000 etiquetas script sem
terminação em 400 KB demoravam 158 segundos, e a opção lê até 10 MB
de uma URL. Os blocos agora são removidos por uma única varredura
direta.
* Corrige uma possível negação de serviço na extração de IOCs
(BAIXA/MÉDIA): as expressões regulares de domínio e e-mail podiam
demorar muito tempo num documento maliciosamente criado. O texto
agora é dividido em tokens limitados antes da correspondência, e os
IOCs extraídos permanecem inalterados.
* Corrige a injeção de fórmulas em CSV nos relatórios exportados
(MÉDIA). Valores que começam com "=", "+", "-", "@" ou um tab eram
executados como fórmulas pelo Excel e LibreOffice. Agora são
prefixados com uma aspa simples, e as quebras de linha embutidas
são removidas.
* Corrige a injeção de fórmulas em CSV na linha de cabeçalho dos
relatórios exportados (BAIXA). Os nomes das colunas são obtidos da
resposta do serviço e eram escritos sem a proteção acima.
* Corrige sequências de escape a chegar ao terminal através de uma
mensagem de erro nos modos interativo e gráfico (BAIXA). Ambos
imprimiam o texto de uma exceção não tratada sem o limpar.
* Corrige DNS rebinding no --extract-iocs (MÉDIA). O endereço que era
validado agora é o endereço ao qual se liga, enquanto o nome do
host é mantido no cabeçalho Host e no SNI de TLS. Nomes de host que
não podem ser resolvidos são recusados. Pedidos feitos através de um
proxy não são fixados.
* Corrige um bypass da proteção de endereços privados usando
endereços IPv6 mapeados para IPv4, como ::ffff:127.0.0.1 (MÉDIA).
Os endereços multicast e não especificados também são recusados
agora.* Corrige a exposição de chaves de API em mensagens de erro (MEDIUM). As
chaves do Malshare e do Shodan são substituídas por [REDACTED], e os
erros de conexão do Malshare são tratados em vez de gerar uma
exceção.
* Adiciona um tempo limite padrão de 15 segundos para conectar e 180
segundos para ler em cada requisição HTTP que não define o próprio
(MEDIUM).
* Para de enviar o caminho local completo da amostra para o VirusTotal
(LOW/MEDIUM). Apenas o nome do arquivo é enviado em -v 9.
* Recusa caminhos de APK contendo ".." durante as varreduras Android (LOW).
* Sanitiza o nome do arquivo usado no envio ao Triage (LOW).
* Remove todas as sequências de escape da saída do enriquecimento LLM, e
não apenas as de cor (LOW).
* Avisa quando .malwapi.conf é legível por outros usuários e sugere
"chmod 600" (Linux e macOS).
Versão 8.0.5:
Esta versão:
* Adiciona relatórios de overlay e entropia às opções do VirusTotal: a
verificação de diretório (-d) ganha uma coluna "Overlay" (SIM/NÃO, ou
N/A para arquivos não-PE) e uma coluna "Ent" (0,00 a 8,00), o
relatório de arquivo (-v 1/2/3) ganha o overlay, seu tamanho em KB/MB
e a entropia, e o relatório de hash (-v 8) ganha o overlay e o
tamanho obtidos dos dados pe_info do VirusTotal sem baixar a amostra.
A entropia é a maior entropia por seção do PE, o melhor sinal para
seções empacotadas ou criptografadas, recorrendo à entropia de Shannon
do arquivo inteiro para arquivos não-PE. "AV Detection" é renomeado
para "AV" e a tabela -d é realinhada.
Versão 8.0.4:
Esta versão:
* Renderiza o relatório de enriquecimento LLM com cores em vez de
Markdown bruto: títulos e termos-chave em **negrito** são destacados
e os símbolos de marcação removidos. Em um fundo escuro, o texto do
corpo usa um tom quase branco enquanto os títulos mantêm seus acentos
azul/roxo/ciano. A CLI, o REPL e o TUI compartilham o renderizador, e
os prompts pedem ao modelo essa estrutura para que ela permaneça
consistente.
Versão 8.0.3:
Esta versão:
* Corrige o enriquecimento LLM do Claude (Anthropic), que falhava em
todas as chamadas porque o nome do modelo estava codificado para um
modelo aposentado. Agora ele é definido por CLAUDE_MODEL na seção
[LLM] do .malwapi.conf, juntamente com GEMINI_MODEL / OPENAI_MODEL /
OLLAMA_MODEL, e o padrão é claude-opus-4-8. O Claude também é agora o
provedor padrão, e a correção abrange a CLI, o REPL e o TUI.
Versão 8.0.2:
Esta versão:
* Introduz uma verificação de IP em lote contra o VirusTotal (-ip 8 /
"ip batch"), que lê um endereço IP por linha de um arquivo e imprime
o Endereço IP, País, Proprietário do AS e a taxa de detecção. Use
-D 1 para a API Pública, que aguarda 61s a cada 4 IPs para respeitar
o limite de taxa, ou -D 0 para Premium (padrão).
* Corrige as opções de verificação de dispositivo Android (-y 1, -y 2
e -y 3), que pararam de funcionar nas versões atuais do Android. A
listagem de pacotes agora entende o layout moderno de /data/app (o
prefixo '~~' e os segmentos '==' introduzidos no Android 10+) e a
saída CRLF do adb, para que as opções também funcionem no Windows. O
hash no dispositivo usa sha256sum em vez de md5sum, e mensagens
claras são impressas quando o adb não está no PATH ou nenhum pacote
de terceiros é encontrado.
* Corrige dois bypasses de SSRF em --extract-iocs <url>. O primeiro
(issue #96) validava com urlparse() enquanto o requests normalizava
a URL de forma diferente, então http://127.0.0.1:6666\@1.1.1.1
passava na verificação de hostname público e ainda assim alcançava um
endereço interno; o validador agora rejeita barras invertidas,
espaços em branco e caracteres de controle e valida a URL efetiva
obtida de requests.PreparedRequest. O segundo seguia redirecionamentos
automaticamente depois que a verificação já havia passado, permitindo
que uma URL pública alcançasse um endereço interno ou de metadata de
nuvem, como 169.254.169.254; cada salto agora é revalidado contra a
allowlist de endereços privados/reservados, com um limite de
redirecionamentos.
* Endurece as opções de envio do Android (-y 4 e -y 5) contra path
traversal a partir de um dispositivo malicioso ou comprometido: o
nome do pacote relatado pelo adb é restrito a caracteres válidos de








