
Statisches und dynamisches Analysetool zur Erkennung von schädlichem Code, verdächtigen Binärdateien und Datenschutzverletzungen
Installation - Verwendung - Dynamische Analyse - YARA-Regeln - CI/CD
Dokumentation: Englisch | Tiếng Việt
Werkzeug zur statischen und dynamischen Analyse zur Erkennung von schädlichem Code, verdächtigen Binärdateien und Datenschutzverletzungen. Analysiert Quellcode, kompilierte ausführbare Dateien (.exe, .dll, .elf), macOS-Bundles (.app, .dmg, .pkg), Mobil-Apps (.apk, .ipa) und Anwendungspakete mit YARA-Regeln, Docker-Verhaltenssandbox, MobSF-Mobilanalyse, Payload-Entschleierung und Mehrformat-Berichterstattung (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]"
Dadurch wird die Kern-CLI installiert. Die Binäranalyse mittels pefile/lief, KI-gestützte Dateierkennung mittels magika und YARA-Scanning mittels yara-python sind optionale Zusätze.
# Kern + Binäranalyse + KI-Dateierkennung + YARA
pip install malware-check[full]
# Oder nur das Nötigste installieren
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# Oder Zusätze manuell installieren
pip install pefile lief magika yara-python
pip install malware-check[detect]
Bei Installation verwendet malware-check Magika zur verbesserten plattformübergreifenden Dateiidentifikation, reichert die Metadaten file_type an und leitet erweiterungslose oder getarnte Dateien basierend auf dem Inhalt und nicht nur auf dem Dateinamen an den richtigen Analysator weiter.
# Erfordert Docker - https://docs.docker.com/get-docker/
# Sandbox-Image erstellen (einmaliger Vorgang)
malware-check build-sandbox
malware-check info
Der Befehl info zeigt an, ob die Magika-gestützte Dateierkennung verfügbar ist.
Als Claude Code Skill installieren, damit Claude Dateien für Sie analysieren kann:
# Skill von GitHub installieren
npx skills install momenbasel/malware-check --skill malware-check
# Oder manuell: skill/SKILL.md in Ihr Skills-Verzeichnis kopieren
cp -r skill/ ~/.claude/skills/malware-check/
Dann in Claude Code sagen: "scanne diese Datei auf Malware" oder "ist diese Binärdatei sicher?" und Claude verwendet automatisch malware-check.
Sie benötigen auch das installierte CLI-Werkzeug:
pip install malware-check pefile lief yara-python
Das Werkzeug installieren und zu Ihren Codex-Agentenanweisungen hinzufügen:
# 1. CLI installieren
pip install malware-check pefile lief yara-python
# 2. Zu Ihren Codex-Anweisungen hinzufügen (codex.md oder System-Prompt)
echo 'Verwende `malware-check scan <pfad> --verbose`, um Dateien auf Malware zu analysieren.' >> AGENTS.md
# 3. Oder als Codex-Skill installieren
cp -r skill/ .codex/skills/malware-check/
Für jeden KI-Codierungsagenten, der Werkzeugnutzung oder benutzerdefinierte Anweisungen unterstützt:
# 1. Installieren
pip install malware-check
# 2. Zu den Agentenanweisungen hinzufügen:
# "Wenn du gebeten wirst, Code/Binärdateien auf Malware zu prüfen, verwende: malware-check scan <ziel> --verbose"
# "Für Berichte: malware-check scan <ziel> --format html -o report.html"
# "Für CI/CD: malware-check scan <ziel> --format sarif -o report.sarif --exit-code"
malware-check scan suspicious_file.py
# Beste Ergebnisse, wenn malware-check[detect] installiert ist
malware-check scan suspicious_payload --verbose
malware-check scan /path/to/project --verbose
# Sandbox zuerst erstellen (einmalig)
malware-check build-sandbox
# Mit Verhaltensanalyse scannen
malware-check scan malware.exe --dynamic
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
# JSON-Bericht
malware-check scan target/ --format json -o report.json
# HTML-Dashboard
malware-check scan target/ --format html -o report.html
# SARIF für CI/CD
malware-check scan target/ --format sarif -o results.sarif
# Mit Exit-Code ungleich Null bei Befunden (für CI-Gates)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: Security Scan
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install malware-check
run: pip install malware-check
- name: Run scan
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Click CLI-Einstiegspunkt
│ ├── scanner.py # Orchestrator + optionale Magika-basierte Dateierkennung
│ ├── models.py # Datenmodelle für Finding, FileAnalysis, ScanResult
│ ├── analyzers/
│ │ ├── code.py # Quellcode-Musterabgleich (40+ Regeln)
│ │ ├── binary.py # PE/Mach-O/ELF-Analyse
│ │ ├── privacy.py # PII, Tracking, Berechtigungen
│ │ ├── yara_engine.py # YARA-Regelkompilierung und -Scanning
│ │ └── dynamic.py # Docker-Sandbox-Verhaltensanalyse
│ └── reporters/
│ ├── console_reporter.py # Umfangreiche Terminal-Ausgabe
│ ├── json_reporter.py # JSON-Export
│ ├── html_reporter.py # HTML-Dashboard (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 für CI/CD
├── rules/yara/ # Gebündelte YARA-Regeln
├── tests/ # pytest-Testsuite
└── pyproject.toml # Projekt-Metadaten
Fügen Sie benutzerdefinierte Regeln in ein beliebiges Verzeichnis hinzu und übergeben Sie es mit --yara-rules:
malware-check scan target/ --yara-rules /path/to/my/rules/
Regeln unterstützen Metadatenfelder für Schweregrad, Kategorie, Konfidenz, CWE und MITRE-ATT&CK-Zuordnung:
rule My_Custom_Rule {
meta:
description = "Eigenes Malware-Muster erkennen"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Schädlichen Code entfernen"
strings:
$pattern = "suspicious_string"
condition:
$pattern
}
Die Docker-Sandbox bietet Verhaltensanalyse mit vollständiger Isolierung:
Überwachte Verhaltensweisen:
# Klonen und Entwicklungsabhängigkeiten installieren
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# Optional: Magika, YARA und binäre Zusätze während der Entwicklung einschließen
pip install -e ".[dev,full]"
# Tests ausführen
pytest
# Lint
ruff check src/ tests/
MIT-Lizenz – siehe LICENSE für Details.
| Kategorie | Erkennungsbeispiele |
|---|
| Reverse Shells | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| Hintertüren | Web Shells (PHP/JSP/ASP.NET), Command Injection (Python/JS/Java/Ruby/Go/C), Bind Shells, versteckte Routen, Remote-Code-Laden, Benutzererstellung, SSTI, unsichere Deserialisierung |
| Verschleierung | Base64+eval-Ketten, Char-Code-Konstruktion, Hex-Payloads, dynamische Importe |
| Krypto-Miner | Stratum-Pool-Verbindungen, Mining-APIs, Wallet-Adressen (BTC/ETH/XMR) |
| Ransomware | Dateiverschlüsselungsdurchläufe, Lösegeldforderungen, Verschlüsseln+Umbenennen-Muster |
| Diebstahl von Anmeldeinformationen | Hartcodierte Geheimnisse, Zwischenablage-Diebstahl, Harvesting von Umgebungsvariablen, Browser-Anmeldedateien |
| Supply-Chain | Verdächtige npm/pip install-Hooks, Dependency Confusion, benutzerdefinierte Registries |
| Persistenz | Cron/schtasks-Erstellung, Registry-Run-Keys, LaunchAgent/Daemon, SUID-Manipulation |
| Privilegienausweitung | SUID-Bit-Manipulation, setuid(0), chown root |
| Anti-Analyse | Debugger-Erkennung, VM-Erkennung, TLS-Callbacks, ptrace-Nutzung |
| Keylogger | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| Datenschutz | Tracking-SDKs (40+), PII-Felder (SSN, Kreditkarten, Biometrie, Gesundheit), invasive Berechtigungen, Geräte-Fingerprinting |
| Binärindikatoren | Gepackte Binärdateien (UPX, hohe Entropie), RWX-Abschnitte, verdächtige Importe, unsignierter/manipulierter Code |
| Schutzmaßnahme | Implementierung |
|---|
| Netzwerkisolation | --network none (Standard) |
| Speicherbegrenzung | 512 MB |
| CPU-Begrenzung | 1 Kern |
| Prozessbegrenzung | 100 PIDs |
| Read-only FS | --read-only mit tmpfs für /tmp und /evidence |
| Capabilities | Alle verworfen (--cap-drop=ALL) |
| Privilegienausweitung | Blockiert (--security-opt=no-new-privileges) |
| Timeout | Konfigurierbar (Standard 30 s) |
| Technik | ID | Erkennung |
|---|
| Command and Scripting Interpreter | T1059 | Reverse Shells, eval/exec-Muster |
| Server Software Component: Web Shell | T1505.003 | PHP/JSP/ASP-Web-Shells |
| Obfuscated Files or Information | T1027 | Base64, Zeichencodes, Hex-Kodierung |
| Resource Hijacking | T1496 | Krypto-Mining-Pools und -Werkzeuge |
| Data Encrypted for Impact | T1486 | Ransomware-Dateiverschlüsselung |
| Input Capture: Keylogging | T1056.001 | Tastatur-Hooks und Logger |
| Scheduled Task/Job | T1053 | Cron, schtasks, LaunchAgent |
| Boot or Logon Autostart | T1547 | Registry-Run-Keys |
| Process Injection | T1055 | VirtualAllocEx + WriteProcessMemory |
| Credentials from Password Stores | T1555 | Zugriff auf Browser-Anmeldedateien |
| Abuse Elevation Control | T1548 | SUID-Bit-Manipulation |
| Debugger Evasion | T1622 | Anti-Debug-API-Aufrufe |
| Supply Chain Compromise | T1195 | Schädliche Installations-Hooks |