
Un motor de análisis estático, extensible y determinista, que extrae IOCs de alta señal de binarios PE y texto, construido para la automatización de SOC y pipelines modernos de análisis de amenazas.
Extracción estática de IOC de un archivo PE usando la CLI de IOCX
Este es el motor original de IOCX para la extracción estática determinista de IOC y el análisis de PE. Cualquier otro repositorio que use el nombre "iocx" no está afiliado con este proyecto.
Enlaces oficiales:
El malware moderno es adversarial por defecto — malformado, evasivo y diseñado para romper extractores ingenuos.
IOCX está construido para entornos donde la corrección y el determinismo realmente importan.
IOCX es el motor oficial de extracción estática de IOC — un sistema determinista y consciente de binarios construido para DFIR, automatización de SOC, seguridad en CI/CD y pipelines de inteligencia de amenazas a gran escala.
A diferencia de los extractores basados solo en regex o las herramientas dependientes de sandbox, IOCX realiza:
Es un componente central del ecosistema MalX Labs para el análisis moderno y escalable de amenazas.
echo "http://malicious.example" | iocx -
O escanea un archivo PE de forma segura:
iocx suspicious.exe -a deep
Los equipos de seguridad enfrentan tres problemas persistentes:
IOCX resuelve esto con un motor determinista y solo estático diseñado para automatización, seguridad y escala.
IOCX intencionalmente no es:
Nunca ejecuta código no confiable. Nunca realiza análisis dinámico. Es solo estático por diseño — para seguridad, determinismo y compatibilidad con CI/CD.
IOCX está diseñado para las realidades del malware moderno, no para las suposiciones de las herramientas heredadas.
Salida estable y reproducible — sin aleatoriedad, sin volatilidad.
La ejecución es insegura. El análisis estático es predecible, escalable y compatible con CI.
PE malformados, RVA corruptos, cadenas hostiles — IOCX los trata como entrada normal.
Los sistemas posteriores nunca deberían romperse al actualizar.
150–300 MB/s en texto sin procesar. 6–15 MB/s en PE típicos. Predecible incluso bajo carga adversarial en el peor de los casos.
Estos compromisos derivan de una metodología de investigación publicada para el análisis estructural de PE — construcción determinista de fixtures, disciplina de anomalía única y el comportamiento del cargador de Windows como oráculo de corrección. Consulta docs/methodology.md para la metodología completa, y paax.dev para la taxonomía más amplia de PE adversariales y el conjunto comercial de fixtures.
En resumen: IOCX está construido para la realidad adversarial real, no para entradas idealizadas.
150–300 MB/s de rendimiento sostenido Ruta rápida — sin análisis de PE.
.pdata) del PE; 14 nuevos códigos de razón; 15 validadores en total.pip 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 produce JSON estructurado y determinista que incluye IOC, metadatos de PE, análisis de secciones, heurísticas e indicadores de ofuscación.
El ejemplo siguiente es una salida abreviada de una muestra adversarial de PE real. Demuestra la forma y profundidad del esquema manteniendo un tamaño manejable para fines de documentación.
{
"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á diseñado para extenderse de forma segura y predecible. Los plugins son ciudadanos de primera clase, validados por las mismas pruebas deterministas de snapshots que el motor central.
Puedes construir:
Consulta:
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.mdIOCX es más que un solo binario — es un ecosistema modular:
IOCX se usa en:
En cualquier lugar donde los indicadores necesiten extraerse de forma segura, determinista y a escala, IOCX encaja.
Todas las muestras de prueba son:
IOCX aplica umbrales estrictos de rendimiento en CI para garantizar:
Consulta:
docs/performance.mdEl nombre IOCX se refiere exclusivamente al motor oficial publicado en:
iocxiocx-<plugin>iocx-extension-<name>iocx-detector-<feature>El desarrollo de IOCX se centra en estabilidad, extensibilidad y una cobertura más profunda del análisis estático. Los elementos siguientes representan áreas de trabajo y exploración en curso.
Damos la bienvenida a:
Consulta CONTRIBUTING.md para las directrices.
Si descubres un problema de seguridad, no abras un issue en GitHub.
Sigue las instrucciones en SECURITY.md.
Licencia MPL‑2.0 — consulta LICENSE.
| Capacidad | IOCX | Extractores de IOC Típicos | Herramientas de Sandbox / Dinámicas |
|---|
| Seguridad | Solo estático, cero ejecución | Solo regex, sin seguridad binaria | Ejecuta código no confiable (alto riesgo) |
| Determinismo | Salida totalmente determinista | No determinista bajo ruido | No determinista por diseño |
| Conciencia Binaria | Análisis completo de PE, heurísticas | Sin soporte binario | Sí, pero inseguro + lento |
| Resiliencia Adversarial | Probado contra PE malformados, cadenas hostiles | Fácilmente evadible | A menudo falla o clasifica mal |
| Rendimiento | 150–300 MB/s (texto), 6–15 MB/s (PE) | Altamente variable | Extremadamente lento |
| Compatibilidad con CI/CD | Sí — seguro, determinista, rápido | Parcial | No — inseguro para pipelines |
| Estabilidad del Esquema | Garantizada | Rara | Ninguna |
| Detector |
|---|
| Tiempo 1 MB |
|---|
| Rendimiento |
|---|
| Crypto | 0.0037 s | ~270 MB/s |
| Rutas de archivo | 0.0041 s | ~250 MB/s |
| IP | 0.0065 s | ~156 MB/s |
| Dominios | 0.0035 s | ~300 MB/s |
dumpbin en binarios realespython-magic, que causaba fallos de importación en sistemas Windows--min-length está planificada para v0.7.5idna