
Ferramenta de análise estática e dinâmica para detecção de código malicioso, binários suspeitos e violações de privacidade
Instalação - Uso - Análise Dinâmica - Regras YARA - CI/CD
Documentação: Inglês | Tiếng Việt
Ferramenta de análise estática e dinâmica para detectar código malicioso, binários suspeitos e violações de privacidade. Analisa código-fonte, executáveis compilados (.exe, .dll, .elf), pacotes macOS (.app, .dmg, .pkg), aplicativos móveis (.apk, .ipa) e pacotes de aplicativos com regras YARA, sandbox comportamental Docker, análise móvel MobSF, desofuscação de payloads e geração de relatórios em múltiplos formatos (JSON, HTML, SARIF).
pip install malware-check
pipx install malware-check
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
Isso instala a CLI principal. Análise de binários via pefile/lief, detecção de arquivos baseada em IA via magika e varredura YARA via yara-python são extras opcionais.
# Núcleo + análise de binários + detecção de arquivos por IA + YARA
pip install malware-check[full]
# Ou instale apenas o que precisar
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# Ou instale os extras manualmente
pip install pefile lief magika yara-python
pip install malware-check[detect]
Quando instalado, o malware-check usa Magika para melhorar a identificação de arquivos entre plataformas, enriquecer os metadados file_type e direcionar arquivos sem extensão ou disfarçados para o analisador correto com base no conteúdo, em vez do nome do arquivo.
# Requer Docker - https://docs.docker.com/get-docker/
# Construir a imagem da sandbox (configuração única)
malware-check build-sandbox
malware-check info
O comando info mostrará se a detecção de arquivos via Magika está disponível.
Instale como uma skill do Claude Code para que o Claude possa analisar arquivos por você:
# Instalar a skill do GitHub
npx skills install momenbasel/malware-check --skill malware-check
# Ou manualmente: copie skill/SKILL.md para seu diretório de skills
cp -r skill/ ~/.claude/skills/malware-check/
Em seguida, no Claude Code, diga: "scan this file for malware" ou "is this binary safe?" e o Claude usará o malware-check automaticamente.
Você também precisa ter a ferramenta CLI instalada:
pip install malware-check pefile lief yara-python
Instale a ferramenta e adicione às instruções do seu agente Codex:
# 1. Instalar a CLI
pip install malware-check pefile lief yara-python
# 2. Adicionar às suas instruções Codex (codex.md ou prompt do sistema)
echo 'Use `malware-check scan <caminho> --verbose` para analisar arquivos em busca de malware.' >> AGENTS.md
# 3. Ou instalar como uma skill do Codex
cp -r skill/ .codex/skills/malware-check/
Para qualquer agente de codificação de IA que suporte uso de ferramentas ou instruções personalizadas:
# 1. Instalar
pip install malware-check
# 2. Adicionar às instruções do agente:
# "Quando solicitado a verificar código/binários em busca de malware, use: malware-check scan <alvo> --verbose"
# "Para relatórios: malware-check scan <alvo> --format html -o report.html"
# "Para CI/CD: malware-check scan <alvo> --format sarif -o report.sarif --exit-code"
malware-check scan arquivo_suspeito.py
# Melhores resultados quando malware-check[detect] está instalado
malware-check scan payload_suspeito --verbose
malware-check scan /caminho/para/projeto --verbose
# Construir sandbox primeiro (única vez)
malware-check build-sandbox
# Escanear com análise comportamental
malware-check scan malware.exe --dynamic
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
# Relatório JSON
malware-check scan target/ --format json -o report.json
# Dashboard HTML
malware-check scan target/ --format html -o report.html
# SARIF para CI/CD
malware-check scan target/ --format sarif -o results.sarif
# Sair com código diferente de zero em caso de achados (para gates de CI)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: Varredura de Segurança
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configurar Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Instalar malware-check
run: pip install malware-check
- name: Executar varredura
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Enviar SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Ponto de entrada da CLI (Click)
│ ├── scanner.py # Orquestrador + detecção opcional de arquivos via Magika
│ ├── models.py # Modelos de dados: Finding, FileAnalysis, ScanResult
│ ├── analyzers/
│ │ ├── code.py # Correspondência de padrões em código-fonte (40+ regras)
│ │ ├── binary.py # Análise PE/Mach-O/ELF
│ │ ├── privacy.py # PII, rastreamento, permissões
│ │ ├── yara_engine.py # Compilação e varredura de regras YARA
│ │ └── dynamic.py # Análise comportamental com sandbox Docker
│ └── reporters/
│ ├── console_reporter.py # Saída rica no terminal
│ ├── json_reporter.py # Exportação JSON
│ ├── html_reporter.py # Dashboard HTML (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 para CI/CD
├── rules/yara/ # Regras YARA incluídas
├── tests/ # Suíte de testes pytest
└── pyproject.toml # Metadados do projeto
Adicione regras personalizadas em qualquer diretório e passe via --yara-rules:
malware-check scan alvo/ --yara-rules /caminho/para/minhas/regras/
As regras suportam campos de metadados para severidade, categoria, confiança, CWE e mapeamento MITRE ATT&CK:
rule Minha_Regra_Personalizada {
meta:
description = "Detecta padrão de malware personalizado"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Remover código malicioso"
strings:
$pattern = "string_suspeita"
condition:
$pattern
}
A sandbox Docker fornece análise comportamental com isolamento completo:
Comportamentos monitorados:
# Clonar e instalar dependências de desenvolvimento
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# Opcional: incluir extras Magika, YARA e binários durante o desenvolvimento
pip install -e ".[dev,full]"
# Executar testes
pytest
# Lint
ruff check src/ tests/
Licença MIT - consulte LICENSE para detalhes.
| Categoria | Exemplos de Detecção |
|---|
| Shells Reversos | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| Backdoors | Web shells (PHP/JSP/ASP.NET), injeção de comandos (Python/JS/Java/Ruby/Go/C), bind shells, rotas ocultas, carregamento remoto de código, criação de usuários, SSTI, desserialização insegura |
| Ofuscação | Cadeias Base64+eval, construção de código de caracteres, payloads hex, imports dinâmicos |
| Mineradores de Criptomoedas | Conexões a pools Stratum, APIs de mineração, endereços de carteira (BTC/ETH/XMR) |
| Ransomware | Percursos de criptografia de arquivos, mensagens de resgate, padrões de criptografia+renomeação |
| Roubo de Credenciais | Segredos codificados, roubo de área de transferência, coleta de variáveis de ambiente, arquivos de credenciais de navegador |
| Ataques à Cadeia de Suprimentos | Hooks suspeitos de npm/pip install, confusão de dependências, registros personalizados |
| Persistência | Criação de cron/schtasks, chaves Registry Run, LaunchAgent/Daemon, manipulação de SUID |
| Escalação de Privilégios | Manipulação de bit SUID, setuid(0), chown root |
| Anti-Análise | Detecção de debugger, detecção de VM, callbacks TLS, uso de ptrace |
| Keyloggers | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| Privacidade | SDKs de rastreamento (40+), campos de PII (SSN, cartões de crédito, dados biométricos, saúde), permissões invasivas, fingerprinting de dispositivo |
| Indicadores de Binários | Binários empacotados (UPX, alta entropia), seções RWX, imports suspeitos, código não assinado/adulterado |
| Proteção | Implementação |
|---|
| Isolamento de Rede | --network none (padrão) |
| Limite de Memória | 512MB |
| Limite de CPU | 1 núcleo |
| Limite de Processos | 100 PIDs |
| FS Somente Leitura | --read-only com tmpfs para /tmp e /evidence |
| Capacidades | Todas removidas (--cap-drop=ALL) |
| Escalação de Privilégios | Bloqueada (--security-opt=no-new-privileges) |
| Timeout | Configurável (padrão 30s) |
| Técnica | ID | Detecção |
|---|
| Command and Scripting Interpreter | T1059 | Shells reversos, padrões eval/exec |
| Server Software Component: Web Shell | T1505.003 | Web shells PHP/JSP/ASP |
| Obfuscated Files or Information | T1027 | Base64, códigos de caracteres, codificação hex |
| Resource Hijacking | T1496 | Pools e ferramentas de mineração de criptomoedas |
| Data Encrypted for Impact | T1486 | Criptografia de arquivos por ransomware |
| Input Capture: Keylogging | T1056.001 | Hooks e keyloggers de teclado |
| Scheduled Task/Job | T1053 | Cron, schtasks, LaunchAgent |
| Boot or Logon Autostart | T1547 | Chaves Registry Run |
| Process Injection | T1055 | VirtualAllocEx + WriteProcessMemory |
| Credentials from Password Stores | T1555 | Acesso a arquivos de credenciais de navegador |
| Abuse Elevation Control | T1548 | Manipulação de bit SUID |
| Debugger Evasion | T1622 | Chamadas de API anti-debug |
| Supply Chain Compromise | T1195 | Hooks de instalação maliciosos |