
Eine erweiterbare, deterministische Static-Analysis-Engine, die hochwertige IOCs aus PE-Binärdateien und Text extrahiert – entwickelt für die SOC-Automatisierung und moderne Threat-Analysis-Pipelines.
Statische IOC-Extraktion aus einer PE-Datei mit der IOCX-CLI
Dies ist die ursprüngliche IOCX-Engine für deterministische statische IOC-Extraktion und PE-Analyse. Alle anderen Repositories, die den Namen „iocx" verwenden, sind nicht mit diesem Projekt verbunden.
Offizielle Links:
Moderne Malware ist standardmäßig adversarial — fehlerhaft, ausweichend und darauf ausgelegt, naive Extraktoren zu brechen.
IOCX ist für Umgebungen gebaut, in denen Korrektheit und Determinismus wirklich zählen.
IOCX ist die offizielle statische IOC-Extraktions-Engine — ein deterministisches, binärbewusstes System, entwickelt für DFIR, SOC-Automatisierung, CI/CD-Sicherheit und groß angelegte Threat-Intel-Pipelines.
Im Gegensatz zu reinen Regex-Extraktoren oder sandboxabhängigen Tools bietet IOCX:
Es ist eine Kernkomponente des MalX-Labs-Ökosystems für skalierbare, moderne Bedrohungsanalyse.
echo "http://malicious.example" | iocx -
Oder eine PE-Datei sicher scannen:
iocx suspicious.exe -a deep
Sicherheitsteams stehen vor drei hartnäckigen Problemen:
IOCX löst dies mit einer deterministischen, rein statischen Engine, die für Automatisierung, Sicherheit und Skalierung entwickelt wurde.
IOCX ist bewusst nicht:
Es führt niemals nicht vertrauenswürdigen Code aus. Es führt niemals dynamische Analysen durch. Es ist konzeptionell rein statisch — für Sicherheit, Determinismus und CI/CD-Kompatibilität.
IOCX ist auf die Realitäten moderner Malware ausgelegt, nicht auf die Annahmen von Legacy-Tools.
Stabile, reproduzierbare Ausgabe — keine Zufälligkeit, keine Volatilität.
Ausführung ist unsicher. Statische Analyse ist vorhersehbar, skalierbar und CI-freundlich.
Fehlerhafte PEs, korrupte RVAs, feindselige Strings — IOCX behandelt sie als normale Eingaben.
Nachgelagerte Systeme sollten bei einem Upgrade nie brechen.
150–300 MB/s bei Rohtext. 6–15 MB/s bei typischen PEs. Vorhersehbar selbst unter Worst-Case-Adversarial-Last.
Diese Verpflichtungen leiten sich aus einer veröffentlichten Forschungsmethodik für die strukturelle PE-Analyse ab — deterministische Fixture-Konstruktion, Einzel-Anomalie-Disziplin und das Windows-Loader-Verhalten als Korrektheits-Orakel. Siehe docs/methodology.md für die vollständige Methodik und paax.dev für die breitere Adversarial-PE-Taxonomie und die kommerzielle Fixture-Suite.
Kurz gesagt: IOCX ist für die reale Adversarial-Realität gebaut, nicht für idealisierte Eingaben.
150–300 MB/s anhaltender Durchsatz Schneller Pfad — kein PE-Parsing.
| Detektor |
|---|
dumpbin an realen Binärdateien verifiziertpython-magic-Abhängigkeit entfernt, die auf Windows-Systemen Importfehler verursachtepip install iocx
iocx suspicious.exe
echo "Visit http://bad.example.com" | iocx -
iocx suspicious.exe -a
from iocx.engine import Engine
engine = Engine()
results = engine.extract("suspicious.exe")
print(results)
IOCX erzeugt strukturiertes, deterministisches JSON, das IOCs, PE-Metadaten, Sektionsanalyse, Heuristiken und Obfuscation-Indikatoren enthält.
Das folgende Beispiel ist eine gekürzte Ausgabe eines echten Adversarial-PE-Samples. Es zeigt die Form und Tiefe des Schemas und hält die Größe für Dokumentationszwecke überschaubar.
{
"file": "heuristic_rich.full.exe",
"type": "PE",
"iocs": {
"urls": ["http://not-a-real-domain.test/payload"],
"domains": ["example-malware.com"],
"ips": ["192.0.2.123"],
"hashes": [
"abcd1234ef567890abcd1234ef567890",
"1234567890",
"3333333333333333"
],
"filepaths": [
"/usr/src/mingw-w64-11.0.1-3build1/mingw-w64-crt/crt/crtexe.c",
"/usr/x86_64-w64-mingw32/include",
"/usr/src/mingw-w64-11.0.1-3build1/mingw-w64-crt/crt/pseudo-reloc.c"
]
},
"metadata": {
"file_type": "PE",
"imports": ["KERNEL32.dll", "msvcrt.dll", "USER32.dll"],
"sections": [
".text", ".data", ".rwx", ".rdata",
"UPX0", ".pdata", ".xdata", ".tls"
],
"resources": [],
"resource_strings": [],
"delayed_imports": [],
"bound_imports": [],
"exports": [],
"signatures": [],
"has_signature": false,
"tls": {
"start_address": 5368758272,
"end_address": 5368758280,
"callbacks": 5368754232
},
"header": {
"entry_point": 5088,
"image_base": 5368709120,
"machine": "AMD64",
"subsystem": "Windows GUI"
},
"optional_header": {
"section_alignment": 4096,
"file_alignment": 512,
"size_of_image": 155648
}
},
"analysis": {
"sections": [
{ "name": ".text", "entropy": 5.92 },
{ "name": ".rwx", "entropy": 0 },
{ "name": "UPX0", "entropy": 0.34 },
{ "name": ".rdata", "entropy": 4.03 }
],
"obfuscation": [
{
"value": "abnormal_section_layout_virtual_only",
"category": "obfuscation_hint",
"metadata": {
"section": ".bss",
"raw_size": 0,
"virtual_size": 384
}
}
],
"extended": [
{
"value": "summary",
"category": "pe_metadata",
"metadata": {
"dll_count": 3,
"import_count": 45,
"resource_count": 0,
"has_tls": true,
"has_signature": false
}
}
],
"heuristics": [
{
"value": "packer_suspected",
"metadata": {
"reason": "packer_section_name",
"section": "UPX0"
}
},
{
"value": "anti_debug_heuristic",
"metadata": {
"reason": "anti_debug_api_import",
"dll": "kernel32.dll",
"function": "CheckRemoteDebuggerPresent"
}
},
{
"value": "anti_debug_heuristic",
"metadata": {
"reason": "timing_api_import",
"dll": "kernel32.dll",
"function": "GetTickCount"
}
},
{
"value": "pe_structure_anomaly",
"metadata": {
"reason": "section_overlaps_headers",
"section": ".bss",
"raw_address": 0,
"size_of_headers": 1536
}
},
{
"value": "pe_structure_anomaly",
"metadata": {
"reason": "data_directory_overlap",
"directory_a": "IMAGE_DIRECTORY_ENTRY_IMPORT",
"directory_b": "IMAGE_DIRECTORY_ENTRY_IAT"
}
}
]
}
}
iocx/
├── examples/
├── docs/
├── tests/
└── iocx
├── detectors/
├── parsers/
├── plugins/
├── cli/
└── analysis/
IOCX ist darauf ausgelegt, sicher und vorhersehbar erweitert zu werden. Plugins sind Bürger erster Klasse, validiert durch dieselben deterministischen Snapshot-Tests wie die Kern-Engine.
Du kannst Folgendes bauen:
Siehe:
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.mdIOCX ist mehr als ein einzelnes Binary — es ist ein modulares Ökosystem:
IOCX wird eingesetzt in:
Überall dort, wo Indikatoren sicher, deterministisch und in großem Maßstab extrahiert werden müssen, passt IOCX.
Alle Test-Samples sind:
IOCX erzwingt in CI strenge Leistungsschwellen, um Folgendes sicherzustellen:
Siehe:
docs/performance.mdDer Name IOCX bezieht sich ausschließlich auf die offizielle Engine, veröffentlicht auf:
iocxiocx-<plugin>iocx-extension-<name>iocx-detector-<feature>Die Entwicklung von IOCX konzentriert sich auf Stabilität, Erweiterbarkeit und eine tiefere Abdeckung der statischen Analyse. Die folgenden Punkte stellen laufende Arbeits- und Erkundungsbereiche dar.
Wir freuen uns über:
Siehe CONTRIBUTING.md für Richtlinien.
Wenn du ein Sicherheitsproblem entdeckst, eröffne kein GitHub-Issue.
Befolge die Anweisungen in SECURITY.md.
MPL‑2.0-Lizenz — siehe LICENSE.
| Fähigkeit | IOCX | Typische IOC-Extraktoren | Sandbox / Dynamische Tools |
|---|
| Sicherheit | Keine Ausführung, nur statisch | Nur Regex, keine Binärsicherheit | Führt nicht vertrauenswürdigen Code aus (hohes Risiko) |
| Determinismus | Vollständig deterministische Ausgabe | Nicht deterministisch bei Rauschen | Von Natur aus nicht deterministisch |
| Binärbewusstsein | Vollständiges PE-Parsing, Heuristiken | Keine Binärunterstützung | Ja, aber unsicher + langsam |
| Adversarial-Resilienz | Getestet gegen fehlerhafte PEs, feindselige Strings | Leicht zu umgehen | Stürzt oft ab oder klassifiziert falsch |
| Leistung | 150–300 MB/s (Text), 6–15 MB/s (PE) | Stark variierend | Extrem langsam |
| CI/CD-freundlich | Ja — sicher, deterministisch, schnell | Teilweise | Nein — unsicher für Pipelines |
| Schema-Stabilität | Garantiert | Selten | Keine |
| 1-MB-Zeit |
|---|
| Durchsatz |
|---|
| Crypto | 0.0037 s | ~270 MB/s |
| Filepaths | 0.0041 s | ~250 MB/s |
| IP | 0.0065 s | ~156 MB/s |
| Domains | 0.0035 s | ~300 MB/s |
--min-length ist für v0.7.5 geplantidna-Abhängigkeit hinzugefügt