
Un moteur d’analyse statique extensible et déterministe qui extrait des IOC à haute signalétique depuis des binaires PE et du texte, conçu pour l’automatisation des SOC et les pipelines modernes d’analyse des menaces.
Extraction statique d'IOC à partir d'un fichier PE à l'aide de la CLI IOCX
Ceci est le moteur IOCX original pour l'extraction statique déterministe d'IOC et l'analyse PE. Tout autre dépôt utilisant le nom « iocx » n'est pas affilié à ce projet.
Liens officiels :
Les malwares modernes sont adverses par défaut — malformés, furtifs et conçus pour briser les extracteurs naïfs.
IOCX est conçu pour les environnements où l'exactitude et le déterminisme comptent vraiment.
IOCX est le moteur officiel d'extraction statique d'IOC — un système déterministe et conscient du binaire, conçu pour la DFIR, l'automatisation SOC, la sécurité CI/CD et les pipelines de renseignement sur les menaces à grande échelle.
Contrairement aux extracteurs basés uniquement sur des regex ou aux outils dépendant d'une sandbox, IOCX effectue :
Il s'agit d'un composant central de l'écosystème MalX Labs pour une analyse moderne et évolutive des menaces.
echo "http://malicious.example" | iocx -
Ou analysez un fichier PE en toute sécurité :
iocx suspicious.exe -a deep
Les équipes de sécurité sont confrontées à trois problèmes persistants :
IOCX résout ce problème avec un moteur déterministe, exclusivement statique, conçu pour l'automatisation, la sécurité et le passage à l'échelle.
IOCX n'est volontairement pas :
Il n'exécute jamais de code non fiable. Il n'effectue jamais d'analyse dynamique. Il est exclusivement statique par conception — pour la sécurité, le déterminisme et la compatibilité CI/CD.
IOCX est conçu pour les réalités des malwares modernes, et non pour les présupposés des outils hérités.
Sortie stable et reproductible — ni aléatoire, ni volatile.
L'exécution est dangereuse. L'analyse statique est prévisible, évolutive et compatible CI.
PE malformés, RVA corrompues, chaînes hostiles — IOCX les traite comme des entrées normales.
Les systèmes en aval ne doivent jamais casser lors d'une mise à niveau.
150–300 Mo/s sur du texte brut. 6–15 Mo/s sur des PE typiques. Prévisibles même sous une charge adverse dans le pire des cas.
Ces engagements découlent d'une méthodologie de recherche publiée pour l'analyse structurelle des PE — construction déterministe de fixtures, discipline de l'anomalie unique et comportement du chargeur Windows comme oracle d'exactitude. Consultez docs/methodology.md pour la méthodologie complète, et paax.dev pour la taxonomie plus large des PE adverses et la suite commerciale de fixtures.
En bref : IOCX est conçu pour la réalité adverse réelle, et non pour des entrées idéalisées.
150–300 Mo/s de débit soutenu Chemin rapide — aucune analyse PE.
dumpbin sur de vrais binairespip 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 produit un JSON structuré et déterministe qui inclut les IOC, les métadonnées PE, l'analyse des sections, les heuristiques et les indicateurs d'obfuscation.
L'exemple ci-dessous est une sortie abrégée d'un échantillon PE adverse réel. Il illustre la forme et la profondeur du schéma tout en gardant une taille raisonnable pour la documentation.
{
"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 est conçu pour être étendu en toute sécurité et de manière prévisible. Les plugins sont des citoyens de première classe, validés par les mêmes tests d'instantanés déterministes que le moteur principal.
Vous pouvez construire :
Voir :
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.mdIOCX est plus qu'un simple binaire — c'est un écosystème modulaire :
IOCX est utilisé dans :
Partout où des indicateurs doivent être extraits en toute sécurité, de manière déterministe et à grande échelle, IOCX s'impose.
Tous les échantillons de test sont :
IOCX applique des seuils de performance stricts en CI pour garantir :
Voir :
docs/performance.mdLe nom IOCX désigne exclusivement le moteur officiel publié sur :
iocxiocx-<plugin>iocx-extension-<name>iocx-detector-<feature>Le développement d'IOCX se concentre sur la stabilité, l'extensibilité et une couverture plus approfondie de l'analyse statique. Les éléments ci-dessous représentent les domaines de travail et d'exploration en cours.
Nous accueillons avec plaisir :
Consultez CONTRIBUTING.md pour les directives.
Si vous découvrez un problème de sécurité, n'ouvrez pas d'issue GitHub.
Suivez les instructions dans SECURITY.md.
Licence MPL-2.0 — voir LICENSE.
| Capacité | IOCX | Extracteurs d'IOC typiques | Sandbox / Outils dynamiques |
|---|
| Sécurité | Zéro exécution, statique uniquement | Regex uniquement, aucune sécurité binaire | Exécute du code non fiable (risque élevé) |
| Déterminisme | Sortie entièrement déterministe | Non déterministe en présence de bruit | Non déterministe par conception |
| Conscience du binaire | Analyse PE complète, heuristiques | Aucun support binaire | Oui, mais dangereux + lent |
| Résilience adverse | Testé contre des PE malformés, des chaînes hostiles | Facilement contourné | Plante souvent ou se trompe |
| Performances | 150–300 Mo/s (texte), 6–15 Mo/s (PE) | Très variable | Extrêmement lent |
| Compatibilité CI/CD | Oui — sûr, déterministe, rapide | Partielle | Non — dangereux pour les pipelines |
| Stabilité du schéma | Garantie | Rare | Aucune |
| Détecteur |
|---|
| Temps pour 1 Mo |
|---|
| Débit |
|---|
| Crypto | 0.0037 s | ~270 Mo/s |
| Chemins de fichiers | 0.0041 s | ~250 Mo/s |
| IP | 0.0065 s | ~156 Mo/s |
| Domaines | 0.0035 s | ~300 Mo/s |
python-magic--min-length est prévu pour v0.7.5idna manquante