
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 mediante la CLI de IOCX
Este es el motor IOCX original para la extracción estática determinista de IOC y el análisis de PE. Cualquier otro repositorio que utilice el nombre «iocx» no está afiliado a este proyecto.
Enlaces oficiales:
El malware moderno es adversarial por defecto: malformado, evasivo y diseñado para romper extractores ingenuos.
IOCX está diseñado para entornos donde la corrección y el determinismo importan de verdad.
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 únicamente en regex o de las herramientas que dependen de sandboxes, 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 analiza un archivo PE de forma segura:
iocx suspicious.exe -a deep
Los equipos de seguridad se enfrentan a tres problemas persistentes:
IOCX resuelve esto con un motor determinista y solo estático diseñado para automatización, seguridad y escala.
IOCX, a propósito, 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 no es segura. El análisis estático es predecible, escalable y compatible con CI.
PE malformados, RVAs 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 una carga adversarial en el peor de los casos.
Estos compromisos se 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 adversarial-PE más amplia y la suite comercial de fixtures.
En resumen: IOCX está diseñado para la realidad adversarial real, no para entradas idealizadas.
150–300 MB/s de rendimiento sostenido Ruta rápida: sin análisis de PE.
dumpbin en binarios realespip 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 resumida de una muestra de PE adversarial real. Muestra la forma y la profundidad del esquema manteniendo un tamaño manejable con 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 instantáneas que el motor principal.
Puedes crear:
Consulta:
docs/specs/overlap-suppression.mddocs/specs/plugin-authoring-guidelines.mdIOCX es más que un único binario: es un ecosistema modular:
IOCX se utiliza en:
En cualquier lugar donde los indicadores deban 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 la estabilidad, la extensibilidad y una mayor cobertura del análisis estático. Los elementos siguientes representan áreas de trabajo y exploración en curso.
Agradecemos:
Consulta CONTRIBUTING.md para las directrices.
Si descubres un problema de seguridad, no abras un issue de GitHub.
Sigue las instrucciones de SECURITY.md.
Licencia MPL‑2.0: consulta LICENSE.
| Capacidad | IOCX | Extractores de IOC típicos | Herramientas de sandbox / dinámicas |
|---|
| Seguridad | Sin ejecución, solo estático | 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 y lento |
| Resiliencia adversarial | Probado con PE malformados y cadenas hostiles | Fácilmente evadible | A menudo falla o clasifica mal |
| Rendimiento | 150–300 MB/s (texto), 6–15 MB/s (PE) | Muy variable | Extremadamente lento |
| Apto para CI/CD | Sí: seguro, determinista y rápido | Parcial | No: inseguro para pipelines |
| Estabilidad del esquema | Garantizada | Rara | Ninguna |
| Detector |
|---|
| Tiempo para 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 |
python-magic, que causaba fallos de importación en sistemas Windows--min-length está planificada para v0.7.5idna