Evidence-fokussierte Malware-Analyse mit tiefer PE/.NET-Inspektion, Ghidra-Rekonstruktion, KI-Querprüfungen, YARA und ELF-Debugging
AIDebug ist eine evidenzorientierte CLI und Terminal-Oberfläche für Malware-Reverse-Engineering. Es kombiniert deterministisches Offline-Triage, Ganzdatei-Hex-Inspektion, tiefgehende PE- Strukturanalyse, Capstone-Disassemblierung, Ghidra-Rekonstruktion, optionale LLM- Querprüfungen, lokales ELF-Debugging, kompilierte Lernübungen und Analysten-Review-Berichte.
Aktuelle Quellversion: AIDebug 3.1.0. Siehe die 3.1.0-Versionshinweise.
Die neueste unveränderliche veröffentlichte Version bleibt AIDebug v3.0.0, verfügbar als
1200km-aidebug, bis der versionsabgestimmte 3.1.0-Tag und das GitHub-Release den verifizierten Veröffentlichungsworkflow abschließen.
Installieren Sie das stabile Paket von PyPI:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install 1200km-aidebug==3.0.0
aidebug --version
Installieren Sie optionale Fähigkeiten nach Bedarf:
# Remote-/Lokale-LLM-Anbieter und validierte YARA-Generierung
python -m pip install "1200km-aidebug[ai]==3.0.0"
# Frida dynamische Instrumentierung
python -m pip install "1200km-aidebug[dynamic]==3.0.0"
# Alle optionalen Python-Integrationen
python -m pip install "1200km-aidebug[all]==3.0.0"
Für die Entwicklung:
git clone https://github.com/anpa1200/AIDebug.git
cd AIDebug
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev,dynamic]"
Ghidra, GDB, Bubblewrap, ein C-Compiler und Frida-Zielkomponenten sind externe Werkzeuge, die nur von den Workflows verwendet werden, die sie benötigen.
Öffnen Sie eine PE- oder ELF-Probe in der Haupt-Terminal-Oberfläche:
aidebug --binary /pfad/zu/probe.exe --offline
Führen Sie eine deterministische Analyse ohne Vollbild-Oberfläche aus und exportieren Sie Beweise:
aidebug --binary /pfad/zu/probe.exe \
--offline --no-tui --report --json-export --yara \
--out-dir reports/
Ghidra-Rekonstruktion verwenden:
aidebug --binary /pfad/zu/probe.exe --offline --no-tui --decompile
aidebug --binary /pfad/zu/probe.exe --offline --no-tui \
--decompile-all reports/probe-rekonstruktion.c
Analysieren Sie eine C-Übersetzungseinheit über ein temporäres, nicht ausgeführtes ELF-Artefakt:
aidebug --source /pfad/zu/beispiel.c --offline --no-tui
Identifizieren Sie eine beliebige Datei unabhängig von ihrer Dateinamenserweiterung:
aidebug --identify /pfad/zu/umbenannter-oder-unbekannter-datei --offline
--identify meldet strukturiertes JSON mit dem deklarierten Typ, MIME-Typ, gängigen
Erweiterungen, Konfidenz, Methode, Beweis, SHA-256 und Größe. Deterministische
Abdeckung umfasst gängige ausführbare und Bytecode-Formate, Archive und Datenträgerabbilder,
Office/OpenDocument/EPUB-Container, Dokumente, Bilder, Audio/Video,
Paketerfassungen, Datenbanken, Registrierungs-/Ereignisprotokoll-Artefakte, Skripte und Text.
ZIP-basierte Formate werden durch begrenzte Mitgliedsnamen und kleine Metadaten-
Lesezugriffe untersucht; Dateien werden niemals ausgeführt oder extrahiert.
Installieren Sie python-magic plus die libmagic-Datenbank des Betriebssystems für
zusätzliche Signaturen, die der lokalen Plattform bekannt sind:
python -m pip install python-magic
Wenn keine deterministische Signatur, Struktur oder Textregel übereinstimmt, kann ein
konfigurierter KI-Anbieter einen Kandidaten aus begrenzten Metadaten ableiten: der Erweiterung, Größe,
SHA-256, bis zu 96 Header-Bytes, 32 Tail-Bytes, Stichprobenentropie und NUL-Verhältnis.
Der Dateikörper, extrahierte Strings und der Dateisystempfad werden nicht gesendet. KI-only
Ergebnisse sind als ai-inference gekennzeichnet, auf 60 % Konfidenz begrenzt und erfordern
Analystenvalidierung. Verwenden Sie --offline, um den Fallback vollständig zu deaktivieren; ein
ungelöster Typ wird als Unknown mit Exit-Status 2 gemeldet.
Drücken Sie S in der Haupt-Terminal-Oberfläche oder starten Sie direkt im Arbeitsbereich:
aidebug --binary /pfad/zu/probe.exe --offline --strings
Der Arbeitsbereich bewahrt Datei-Offsets, zugeordnete Adressen, sofern verfügbar, Kodierung, Byte- und Zeichenlängen, Duplikat-Vorkommensinformationen, Abschnittskontext, Konfidenz, Triage-Score und die deterministischen Gründe für jede Klassifizierung. Filter decken Mindestlänge, Kodierung, Kategorie und Freitextsuche ab; Spaltensortierung und Paginierung halten große Inventare nutzbar. Jede ausgewählte Kodierung scannt das vollständige größenbegrenzte Artefakt. Das beibehaltene Inventar ist auf 25.000 Datensätze und 4.096 angezeigte Zeichen pro Wert begrenzt; exakte Kandidaten-/Auslassungszahlen und vollständige Byte-Abdeckung machen beide Grenzen sichtbar. Jeder Datensatz behält höchstens 32 DLL/API-Anmerkungen und 4.096 Beschreibungs- zeichen; adversariale Überläufe werden in den Datensatzgründen gemeldet.
Die Erkennung ist mehrfach beschriftet. Ein einzelner Wert kann gleichzeitig eine DLL, ein Windows-
Pfad, eine URL, eine IP-Adresse, ein Registrierungsschlüssel, ein Befehl, ein PowerShell-Fragment, eine benannte Pipe,
ein Hash, ein Anmeldedaten-Kandidat, ein User-Agent oder ein anderer unterstützter Beweistyp sein.
Domänenkandidaten werden IDNA-normalisiert und gegen einen gepackten Offline-
IANA-Root-Zonen-Snapshot geprüft; IP-Adressen müssen ein vollständiges gültiges Token belegen, und
Konfigurationszuweisungen müssen einer konservativen Vollzeilen-Grammatik entsprechen. Dies
verhindert, dass kurze Binärfragmente nur deshalb hochgestuft werden, weil sie einen Punkt,
Doppelpunkt oder ein Gleichheitszeichen enthalten. Verwandte Beschriftungen teilen eine Konfidenzfamilie, sodass
ip_address plus ipv6 nicht als zwei unabhängige Beobachtungen behandelt wird.
Bekannte DLLs und APIs erhalten kurze neutrale Fähigkeitsbeschreibungen; unbekannte
Namen erhalten einen expliziten unverifizierten Fallback statt eines erratenen Zwecks.
Ein extrahierter Name ist ein Beweis für das Vorhandensein, kein Beweis dafür, dass Code ihn aufgerufen hat oder
dass die Probe bösartig ist.
Drucken Sie das deterministische Inventar lokal, filtern Sie die angezeigte CLI-Ansicht oder schreiben Sie das kanonische vollständige Inventar als besitzerbeschränktes JSON:
aidebug --binary /pfad/zu/probe.exe --strings --no-tui
aidebug --binary /pfad/zu/probe.exe --strings --no-tui \
--string-encoding ascii --min-string-length 6 --string-category url
aidebug --binary /pfad/zu/probe.exe --strings --no-tui \
--strings-output reports/probe-strings.json
Die KI-String-Prüfung ist eine separate Opt-in-Aktion. Drücken Sie A im Arbeitsbereich
und bestätigen Sie die Datenschutz-/Kostenwarnung, oder fordern Sie sie explizit im CLI-Modus an:
aidebug --binary /pfad/zu/probe.exe --strings --no-tui \
--analyze-strings --accept-ai-cost \
--strings-output reports/probe-strings-ai.json
Jeder beibehaltene String erhält eine stabile Beweis-ID. Nach expliziter
Bestätigung plant der KI-Pfad jeden beibehaltenen Datensatz über deterministische,
begrenzte Blöcke; Anbieter- oder Validierungsfehler stoppen sicher und bleiben sichtbar.
Antworten müssen jeden gelieferten ID abdecken und
eine strenge lokale Schema-, Enum-, Referenz- und IOC-Grundlagenvalidierung bestehen, bevor
sie akzeptiert werden. Ein finaler Reducer sieht validierte Befunde statt des
rohen Inventars. Extraktionsgrenzen, fehlgeschlagene Stapel
und geprüfte/gesendete Zählungen werden immer gemeldet; unvollständige Abdeckung erzwingt eine
unknown-Gesamtbewertung. Strings können Passwörter, API-Tokens,
Kundendaten und von Angreifern verfasste Prompt-Injection enthalten. Überprüfen Sie daher die Remote-KI-
Grenze, bevor Sie diese Funktion aktivieren.
Untersuchen Sie frühere Analysen nach Datei oder SHA-256:
aidebug --history /pfad/zu/probe.exe
aidebug --history 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
Laden Sie eine PE-Datei und drücken Sie X (oder P) in der Haupt-GUI. AIDebug präsentiert die
exakten Bytes, die es gehasht hat, und organisiert strukturelle Beweise in begrenzten,
navigierbaren Ansichten.
| Bereich | Beweis |
|---|---|
| Header | DOS, NT, COFF, Optional Header, Merkmale, Datenverzeichnisse und Mitigations-Flags |
| Abschnitte | Vollständige IMAGE_SECTION_HEADER-Felder, zugeordnete Bereiche, Entropie und Berechtigungen |
| Importe und Exporte | Import-Deskriptoren, INT/IAT-Einträge, Verzögerungsimporte, Ordnungszahlen, Namen, RVAs und Weiterleitungen |
| Ressourcen | Typ-/Name-/Sprachhierarchie, Metadaten, Hashes, Vorschauen und sicherer No-Overwrite-Export |
| Relokationen und ASLR | Relokationsblöcke/-einträge und strukturelle ASLR-Kompatibilitätsbewertung |
| TLS | TLS-Verzeichnis, Vorlagendaten, Index, Callback-Tabelle, Zuordnungen und Beendigungsbeweis |
| Ausnahmen und Unwind | x64-Laufzeitfunktionen, UNWIND_INFO, Operationen, Handler und verkettete Datensätze |
| Ladekonfiguration | Versionierte Felder, Guard-Flags, Stack-Cookie- und Exploit-Mitigations-Beweis |
| CFG | Check-/Dispatch-Zeiger, Guard-Funktions-ID-Ziele, Reihenfolge, Unterdrückung und Konsistenzprüfungen |
| Authenticode | Zertifikatsdatensätze, PKCS#7/X.509-Beweis, PE-Image-Digest-Vergleich und Signaturprüfung |
| Debug und Herkunft | Rich-Header, Debug-Verzeichnis, CodeView RSDS/NB10, PDB-GUID, Alter und Pfad |
| Overlays | Exakter Offset, Größe, Hash, Entropie, Vorschau und sicherer Export |
| .NET / CLR | COR20-Header, Metadaten-Root und -Streams, ECMA-335-Tabellen, Assemblys, Referenzen und Ressourcen |
AIDebug führt beim Erstellen dieser Ansichten kein PE aus. Statische Zertifikats- verifizierung ist keine Windows-Root-Trust- oder Widerrufsvalidierung, Rich-Metadaten sind keine Zuordnung, Strong-Name-Metadaten sind kein Publisher-Vertrauen und statische Mitigations-Flags sind kein Beweis für eine effektive Laufzeitrichtlinie.
Diese Artikel bieten die ausführlichen Workflows und Screenshots, die die Repository-Dokumentation ergänzen:
Öffnen Sie den vollständigen Katalog oder starten Sie mit einem bestimmten Fall:
aidebug --learn
aidebug --learn mov-load
aidebug --learn lea-arithmetic
aidebug --learn switch-dispatch
Jeder gebündelte Fall ist eine eigenständige Datei unter learning/cases/.
AIDebug kompiliert den ausgewählten Fall in ein temporäres x86-64-ELF, zeigt den exakten
C-Quellcode und die vom Compiler generierten Anweisungen, fragt Ghidra nach einer unabhängigen
Rekonstruktion, zeichnet Build-Herkunft auf und entfernt das temporäre Artefakt.
Das generierte Unterrichtsbinär wird niemals ausgeführt.
Verwenden Sie --no-tui für Textausgabe oder laden Sie eine geprüfte externe Sammlung:
aidebug --learn movsxd --no-tui
aidebug --learn --learning-collection /pfad/zu/geprueften-faellen
Die KI-Analyse ist optional. Der deterministische Offline-Modus bleibt ohne Anmeldedaten verfügbar.
python -m pip install "1200km-aidebug[ai]==3.0.0"
cp .env.example .env
chmod 600 .env
Konfigurieren Sie genau einen Anbieter oder setzen Sie AIDEBUG_LLM_PROVIDER explizit, wenn
mehrere Anmeldedaten vorhanden sind:
AIDEBUG_LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=ersetzen_sie_mit_ihrem_schluessel
# Alternativen:
# OPENAI_API_KEY=ersetzen_sie_mit_ihrem_schluessel
# GEMINI_API_KEY=ersetzen_sie_mit_ihrem_schluessel
# OLLAMA_BASE_URL=http://127.0.0.1:11434/v1
Verwenden Sie AIDEBUG_ENV_FILE=/absoluter/pfad/zu/privat.env, um die Konfiguration von
nicht vertrauenswürdigen Analyseverzeichnissen fernzuhalten. Remote-Massenanalyse erfordert die explizite
--accept-ai-cost-Bestätigung. Überprüfen Sie die Remote-KI-Datengrenze,
bevor Sie Probenevidenz an einen Anbieter senden.
Der GDB-gestützte aktive Modus führt das ausgewählte lokale ELF aus. Verwenden Sie ihn nur in einem isolierten, autorisierten Labor:
aidebug --binary ./probe.elf --mode debug --breakpoint main
Verfügbare Befehle umfassen break, continue, step, next, finish,
registers, changes, io, disassemble und quit. Der Frida-Dynamikmodus ist
separat für unterstützte lokale oder Remote-Instrumentierungsworkflows verfügbar.
| Ausgabe | Verwendungszweck |
|---|---|
| HTML-Bericht | Menschliche Prüfung und Fallnotizen |
| Versioniertes JSON | Eingabe für benutzerdefinierte Integration; kein herstellernatives oder STIX-Schema |
| String-Intelligenz-JSON | Kanonisches beibehaltenes String-Inventar plus optionale validierte KI-Anmerkungen und Abdeckung |
| YARA-Kandidaten | Lokal kompilierte Detektions-Engineering-Samen, die Prüfung und Tests erfordern |
| ATT&CK-Kandidaten | Technik-Ebenen-Hypothesen, die Analystenvalidierung erfordern |
| CFG-Visualisierung | Kontrollflussprüfung auf Funktionsebene |
| SQLite-Historie | Lokale Sitzungsevidenz und SHA-256-basierte Befundwiederherstellung |
flowchart LR
Input[PE, ELF, oder C-Quelle] --> Parse[Begrenztes Parsing und Hashing]
Parse --> Structure[Hex- und PE-Strukturbeweis]
Parse --> Strings[Deterministische String-Intelligenz]
Parse --> Disasm[Capstone-Disassemblierung]
Disasm --> Patterns[Deterministische Muster]
Disasm --> Ghidra[Ghidra-Rekonstruktion]
Patterns --> Offline[Offline-Befunde]
Patterns --> AI[Optionale LLM-Querprüfung]
Strings --> StringAI[Opt-in blockweise String-KI-Prüfung]
Ghidra --> AI
Offline --> Reports[HTML, JSON, YARA, CFG]
AI --> Reports
StringAI --> StringJSON[Strukturiertes String-JSON]
Reports --> History[SHA-256-indizierte Historie]Verwenden Sie AIDebug nur für Software und Systeme, die Sie untersuchen dürfen, in einer isolierten Malware-Analyse-VM oder einem Labor.
Lesen Sie das vollständige Sicherheitsmodell, die Sicherheitsrichtlinie und den Einschränkungs- und Validierungsplan, bevor Sie nicht vertrauenswürdige Proben analysieren.
| Dokument | Zweck |
|---|---|
| Analysten-Workflow | Wiederholbarer Analyseprozess |
| Sicherheitsmodell | Vertrauensgrenzen und sicherer Betrieb |
| Validierungsplan | Testbare Fähigkeitsansprüche |
| Probenevidenz | Illustrative Screenshots und Mock-Artefakte |
| Vergleich | Umfang und Positionierung |
| Release-Bereitschaft | Reproduzierbare Release-Gates |
| AIDebug 3.1-Versionshinweise | Änderungen der aktuellen Quellversion |
| AIDebug 3.0-Versionshinweise | Änderungen der vorherigen veröffentlichten Version |
| Changelog | Versionshistorie |
Führen Sie die schnellen lokalen Prüfungen aus:
python -m ruff check .
python -m pytest -q
Führen Sie das vollständige isolierte Release-Gate aus:
./scripts/release-readiness.sh
Siehe CONTRIBUTING.md für Beitragsrichtlinien. Hängen Sie keine Live-Malware, Anmeldedaten, private Falldaten oder unredigierte Beweise an Issues oder Pull Requests an.
AIDebug wird unter der MIT-Lizenz veröffentlicht.