
Strumento di analisi statica e dinamica per il rilevamento di codice malevolo, binari sospetti e violazioni della privacy
Installazione - Utilizzo - Analisi Dinamica - Regole YARA - CI/CD
Documenti: English | Tiếng Việt
Strumento di analisi statica e dinamica per rilevare codice malevolo, binari sospetti e violazioni della privacy. Analizza codice sorgente, eseguibili compilati (.exe, .dll, .elf), bundle macOS (.app, .dmg, .pkg), app mobili (.apk, .ipa) e pacchetti applicativi con regole YARA, sandbox comportamentale Docker, analisi mobile MobSF, deoffuscazione dei payload e report multi-formato (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]"
Questo installa la CLI principale. L'analisi binaria tramite pefile/lief, il rilevamento file basato su AI tramite magika, e la scansione YARA tramite yara-python sono extra opzionali.
# Core + analisi binaria + rilevamento file AI + YARA
pip install malware-check[full]
# Oppure installa solo ciò che ti serve
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# Oppure installa gli extra manualmente
pip install pefile lief magika yara-python
pip install malware-check[detect]
Quando installato, malware-check utilizza Magika per migliorare l'identificazione dei file multipiattaforma, arricchire i metadati file_type e indirizzare i file senza estensione o camuffati all'analizzatore corretto in base al contenuto anziché al nome del file.
# Richiede Docker - https://docs.docker.com/get-docker/
# Costruisci l'immagine sandbox (configurazione una tantum)
malware-check build-sandbox
malware-check info
Il comando info mostrerà se il rilevamento file basato su Magika è disponibile.
Installa come skill di Claude Code in modo che Claude possa analizzare i file per te:
# Installa la skill da GitHub
npx skills install momenbasel/malware-check --skill malware-check
# Oppure manualmente: copia skill/SKILL.md nella directory delle tue skill
cp -r skill/ ~/.claude/skills/malware-check/
Poi in Claude Code, dì: "scansiona questo file per malware" o "questo binario è sicuro?" e Claude userà automaticamente malware-check.
Hai anche bisogno dello strumento CLI installato:
pip install malware-check pefile lief yara-python
Installa lo strumento e aggiungilo alle istruzioni del tuo agente Codex:
# 1. Installa la CLI
pip install malware-check pefile lief yara-python
# 2. Aggiungi alle tue istruzioni Codex (codex.md o prompt di sistema)
echo 'Usa `malware-check scan <percorso> --verbose` per analizzare file per malware.' >> AGENTS.md
# 3. Oppure installa come skill Codex
cp -r skill/ .codex/skills/malware-check/
Per qualsiasi agente di codifica AI che supporta l'uso di strumenti o istruzioni personalizzate:
# 1. Installa
pip install malware-check
# 2. Aggiungi alle istruzioni dell'agente:
# "Quando ti viene chiesto di controllare codice/binari per malware, usa: malware-check scan <target> --verbose"
# "Per report: malware-check scan <target> --format html -o report.html"
# "Per CI/CD: malware-check scan <target> --format sarif -o report.sarif --exit-code"
malware-check scan file_sospetto.py
# Migliori risultati quando malware-check[detect] è installato
malware-check scan payload_sospetto --verbose
malware-check scan /percorso/progetto --verbose
# Costruisci sandbox prima (una tantum)
malware-check build-sandbox
# Scansiona con analisi comportamentale
malware-check scan malware.exe --dynamic
malware-check scan /Applicazioni/AppSospetta.app --dynamic --verbose
# Report JSON
malware-check scan target/ --format json -o report.json
# Dashboard HTML
malware-check scan target/ --format html -o report.html
# SARIF per CI/CD
malware-check scan target/ --format sarif -o risultati.sarif
# Esce con codice non zero in caso di risultati (per gate CI)
malware-check scan . --format sarif -o risultati.sarif --exit-code
malware-check info
name: Scansione di Sicurezza
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configura Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Installa malware-check
run: pip install malware-check
- name: Esegui scansione
run: malware-check scan . --format sarif -o risultati.sarif --exit-code
- name: Carica SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: risultati.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Punto di ingresso CLI Click
│ ├── scanner.py # Orchestratore + rilevamento file opzionale basato su Magika
│ ├── models.py # Modelli dati Finding, FileAnalysis, ScanResult
│ ├── analyzers/
│ │ ├── code.py # Pattern matching codice sorgente (40+ regole)
│ │ ├── binary.py # Analisi PE/Mach-O/ELF
│ │ ├── privacy.py # PII, tracciamento, permessi
│ │ ├── yara_engine.py # Compilazione e scansione regole YARA
│ │ └── dynamic.py # Analisi comportamentale sandbox Docker
│ └── reporters/
│ ├── console_reporter.py # Output terminale Rich
│ ├── json_reporter.py # Esportazione JSON
│ ├── html_reporter.py # Dashboard HTML (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 per CI/CD
├── rules/yara/ # Regole YARA incluse
├── tests/ # Suite di test pytest
└── pyproject.toml # Metadati del progetto
Aggiungi regole personalizzate a qualsiasi directory e passa tramite --yara-rules:
malware-check scan target/ --yara-rules /percorso/alle/mie/regole/
Le regole supportano campi di metadati per gravità, categoria, confidenza, CWE e mapping MITRE ATT&CK:
rule Mia_Regola_Personalizzata {
meta:
description = "Rileva pattern malware personalizzato"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Rimuovere il codice malevolo"
strings:
$pattern = "stringa_sospetta"
condition:
$pattern
}
La sandbox Docker fornisce analisi comportamentale con isolamento completo:
Comportamenti monitorati:
# Clona e installa le dipendenze di sviluppo
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# Opzionale: includi Magika, YARA e extra binari durante lo sviluppo
pip install -e ".[dev,full]"
# Esegui i test
pytest
# Lint
ruff check src/ tests/
Licenza MIT - consulta LICENSE per i dettagli.
| Categoria | Esempi di Rilevamento |
|---|
| Reverse Shell | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| Backdoor | Web shell (PHP/JSP/ASP.NET), injection di comandi (Python/JS/Java/Ruby/Go/C), bind shell, route nascoste, caricamento remoto di codice, creazione di utenti, SSTI, deserializzazione non sicura |
| Offuscamento | Catene Base64+eval, costruzione di codici char, payload hex, import dinamici |
| Miner di Criptovalute | Connessioni a pool Stratum, API di mining, indirizzi wallet (BTC/ETH/XMR) |
| Ransomware | Scansione per cifratura file, messaggi di riscatto, pattern cifra+rinomina |
| Furto di Credenziali | Segreti hardcodati, furto dagli appunti, raccolta di variabili d'ambiente, file di credenziali del browser |
| Supply Chain | Hook npm/pip sospetti, dependency confusion, registry personalizzati |
| Persistenza | Creazione di cron/schtasks, chiavi Registry Run, LaunchAgent/Daemon, manipolazione SUID |
| Escalation dei Privilegi | Manipolazione del bit SUID, setuid(0), chown root |
| Anti-Analisi | Rilevamento debugger, rilevamento VM, callback TLS, uso di ptrace |
| Keylogger | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| Privacy | SDK di tracciamento (40+), campi PII (SSN, carte di credito, dati biometrici, salute), permessi invasivi, fingerprinting del dispositivo |
| Indicatori Binari | Binari impacchettati (UPX, alta entropia), sezioni RWX, import sospetti, codice non firmato/manomesso |
| Protezione | Implementazione |
|---|
| Isolamento Rete | --network none (predefinito) |
| Limite Memoria | 512MB |
| Limite CPU | 1 core |
| Limite Processi | 100 PID |
| Filesystem Sola Lettura | --read-only con tmpfs per /tmp e /evidence |
| Capacità | Tutte rimosse (--cap-drop=ALL) |
| Escalation Privilegi | Bloccato (--security-opt=no-new-privileges) |
| Timeout | Configurabile (predefinito 30s) |
| Tecnica | ID | Rilevamento |
|---|
| Comando e Interprete di Script | T1059 | Reverse shell, pattern eval/exec |
| Componente Software del Server: Web Shell | T1505.003 | Web shell PHP/JSP/ASP |
| File o Informazioni Offuscate | T1027 | Base64, codici char, codifica hex |
| Dirottamento Risorse | T1496 | Pool di mining crypto e strumenti |
| Dati Cifrati per Impatto | T1486 | Cifratura file ransomware |
| Acquisizione Input: Keylogging | T1056.001 | Hook di tastiera e keylogger |
| Attività Pianificata/Job | T1053 | Cron, schtasks, LaunchAgent |
| Avvio Automatico di Accesso o Login | T1547 | Chiavi Registry Run |
| Iniezione di Processo | T1055 | VirtualAllocEx + WriteProcessMemory |
| Credenziali da Archivi di Password | T1555 | Accesso a file di credenziali del browser |
| Controllo di Elevazione di Abuso | T1548 | Manipolazione del bit SUID |
| Evasione del Debugger | T1622 | Chiamate API anti-debug |
| Compromissione della Supply Chain | T1195 | Hook di installazione malevoli |