Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
iocx — An extensible, deterministic static‑analysis engine that extracts high‑signal IOCs from PE binaries and text, built for SOC automation and modern threat‑analysis pipelines. | Kitploit
Tools/GitHubGitHub/iocx-dev/iocx
Indicator of Compromise (IOC) ManagementStatic AnalysisVulnerability AnalysisForensicsMalware AnalysisDevSecOpsBinary AnalysisThreat IntelligenceIncident Response
GitHubiocx-dev/iocx

iocx

An extensible, deterministic static‑analysis engine that extracts high‑signal IOCs from PE binaries and text, built for SOC automation and modern threat‑analysis pipelines.

286471 month agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
View RepositoryWebsite
# IOCX
### **Deterministic, Zero‑Risk IOC Extraction for Modern Security Pipelines**

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/7470/35e58092394d24631c5bf5a2ef49c2c64bb1726cc5798d35bdaa36800597e402.gif" width="720" alt="IOCX Demo">
</p>

<p align="center"><sub>Static IOC extraction from a PE file using the IOCX CLI</sub></p>

<p align="center">
  <a href="https://pypi.org/project/iocx/"><img src="https://img.shields.io/pypi/v/iocx?logo=pypi&amp;logoColor=white"></a>
  <img src="https://img.shields.io/badge/tests-2802_passed-brightgreen">
  <img src="https://img.shields.io/badge/coverage-100%25-brightgreen">
  <img src="https://img.shields.io/badge/python-3.12-blue">
  <a href="https://github.com/iocx-dev/iocx/actions"><img src="https://img.shields.io/github/actions/workflow/status/iocx-dev/iocx/ci.yml?label=build"></a>
  <a href="https://github.com/iocx-dev/iocx/blob/main/LICENSE"><img src="https://img.shields.io/github/license/iocx-dev/iocx"></a>
</p>

# Official IOCX Project

This is the original IOCX engine for deterministic static IOC extraction and PE analysis.
Any other repositories using the name "iocx" are **not affiliated** with this project.

**Official links:**

- PyPI: [https://pypi.org/project/iocx/](https://pypi.org/project/iocx/)
- Github: [https://github.com/iocx-dev/iocx](https://github.com/iocx-dev/iocx)
- Website: [https://iocx.dev/](https://iocx.dev/)

---

# Why IOCX Matters

Modern malware is **adversarial by default** — malformed, evasive, and engineered to break naive extractors.

- **Binary‑unaware tools** collapse under malformed PEs
- **Sandboxes** are unsafe and unusable in CI/CD
- **Reproducibility** is essential for automated pipelines

**IOCX is built for environments where correctness and determinism actually matter.**

---

# The IOCX Engine

**IOCX is the official static IOC extraction engine** — a deterministic, binary‑aware system built for DFIR, SOC automation, CI/CD security, and large‑scale threat‑intel pipelines.

Unlike regex‑only extractors or sandbox‑dependent tools, IOCX performs:

- **pure static analysis**
- **zero execution risk**
- **stable, deterministic output**
- **adversarial‑tested heuristics**

It is a core component of the MalX Labs ecosystem for scalable, modern threat analysis.

---

# Try IOCX in 10 Seconds

```bash
echo "http://malicious.example" | iocx -
```

Or scan a PE file safely:

```bash
iocx suspicious.exe -a deep
```

---

# Why IOCX Exists

Security teams face three persistent problems:

1. **Regex extractors** break under adversarial input
2. **Sandboxing** is unsafe, slow, and unsuitable for automation
3. **Most IOC tools** are inconsistent, slow, or produce subtly different output between runs

IOCX solves this with a **deterministic, static‑only engine** designed for automation, safety, and scale.

---

# What IOCX *Is Not*

IOCX is intentionally **not**:

- a sandbox
- a behavioural analysis tool
- an emulator
- an enrichment engine

It never executes untrusted code.
It never performs dynamic analysis.
It is **static‑only by design** — for safety, determinism, and CI/CD compatibility.

---

# Design Philosophy

IOCX is engineered for the realities of modern malware, not the assumptions of legacy tools.

### **1. Determinism over ambiguity**
Stable, reproducible output — no randomness, no volatility.

### **2. Static over dynamic**
Execution is unsafe. Static analysis is predictable, scalable, and CI‑friendly.

### **3. Adversarial‑first engineering**
Malformed PEs, corrupted RVAs, hostile strings — IOCX treats them as normal input.

### **4. Schema stability as a contract**
Downstream systems should never break on upgrade.

### **5. Performance without compromise**
150–300 MB/s on raw text.
6–15 MB/s on typical PEs.
Predictable even under worst‑case adversarial load.

---

These commitments are derived from a published research methodology for PE structural analysis — deterministic fixture construction, single-anomaly discipline, and Windows loader behaviour as the correctness oracle. See docs/methodology.md for the full methodology, and [paax.dev](https://paax.dev) for the broader adversarial-PE taxonomy and commercial fixture suite.

# What Makes IOCX Different

| Capability | **IOCX** | Typical IOC Extractors | Sandbox / Dynamic Tools |
|-----------|-----------|------------------------|--------------------------|
| **Safety** | Zero‑execution, static‑only | Regex‑only, no binary safety | Executes untrusted code (high‑risk) |
| **Determinism** | Fully deterministic output | Non‑deterministic under noise | Non‑deterministic by design |
| **Binary Awareness** | Full PE parsing, heuristics | No binary support | Yes, but unsafe + slow |
| **Adversarial Resilience** | Tested against malformed PEs, hostile strings | Easily bypassed | Often crashes or misclassifies |
| **Performance** | 150–300 MB/s (text), 6–15 MB/s (PE) | Highly variable | Extremely slow |
| **CI/CD Friendly** | Yes — safe, deterministic, fast | Partial | No — unsafe for pipelines |
| **Schema Stability** | Guaranteed | Rare | None |

**In short:** IOCX is built for *real adversarial reality*, not idealized input.

---

# Use Cases

### CI/CD & DevSecOps
- Scan binaries before release
- Detect accidental URLs, IPs, or secrets in builds
- Enforce security gates with zero execution risk

### SOC & Incident Response
- Extract indicators from alerts or analyst clipboard text
- Safely inspect malware samples without execution
- Normalize IOCs into structured JSON

### Threat Intelligence
- Process feeds at scale
- Parse unstructured reports
- Build enrichment pipelines on deterministic output

### Automation & Scripting
- Pipe logs or artifacts through IOCX
- Use the Python API for ETL or batch workflows
- Extend with custom detectors

---

# Performance Profiles

### **1. Raw IOC Extraction (Text, Logs, Buffers)**
**150–300 MB/s** sustained throughput
Fast path — no PE parsing.

| Detector  | 1 MB Time | Throughput |
|-----------|-----------|------------|
| 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  |

---

### **2. Typical PE Files (~39 KB)**
- **0.0122 s** (typical)
- **0.0145 s** (with heuristics)
- **6–15 MB/s** throughput

---

### **3. Adversarial Dense PE (1.5 MB)**
- **0.192 s**
- **~7.6 MB/s** throughput
- Triggers TLS anomalies, structural anomalies, anti‑debug patterns

---

### **4. Full Engine (Non‑PE)**
- **1 MB:** 0.038 s

---

# Version Highlights

<details>
<summary><strong>Show Version History</strong></summary>
<br>

### v0.7.6.2 — Import Table Validator

- New deterministic **import table structural validator** (`IMPORT_*` reason codes).
- `version_info` now parsed and surfaced at **every** analysis level (not just `-a full`), via a new bounded public projection.
- Rebuilt CLI: branded `--version` output, clearer `--help` text, reorganised argument groups.
- Fixed a relocation-parser crash reachable from any entry, a PE32+ data-directory offset bug, and several silent export/resource error drops.
- New static CI check that prevents parser error tags from silently going unconsumed by validators.
- Test suite: 2,136 → 2,802 tests.

---

### v0.7.6.1 — Exception Directory Validator

- Adds deep semantic validation of the PE exception (`.pdata`) directory; 14 new reason codes; 15 validators total.
- Fixes a defect that had been suppressing structural findings across the engine.
- Four further checks found to be dead in production: two directory placement, a section-mapping, and a resource-directory bounds check.
- **Output-visible:** findings previously suppressed or mislabelled will now appear.
- Tests: 1620 → 2136. Coverage: 100%.

---

### **v0.7.6 — Structural Validator Expansion: Debug and relocations directories**
- Two new PE structural validators - relocations and debug
- WIN_CERTIFICATE and tls validators now source structural truth from dedicated struct parsers, independent of pefile
- 12 new reason codes with priority-resolved sub-reason taxonomies
- Deterministic byte-level parsing - no reliance on pefile's lazy interpretation
- 1620 tests at 100% coverage

---

### **v0.7.5 — Structural Validator Expansion**
- Four new PE structural validators — exports, delay-load imports, VS_VERSIONINFO, and resource hierarchy
- 24 new reason codes with priority-resolved sub-reason taxonomies
- Deterministic byte-level parsing — no reliance on pefile's lazy interpretation
- Security-relevant metadata — DLL characteristics, subsystem/machine name decoding, per-resource entropy
- 1370 tests at 100% coverage — end-to-end verified against `dumpbin` on real binaries

---

### **v0.7.4.1 — Windows Compatibility Hotfix**
- Removed the `python-magic` dependency, which caused import failures on Windows systems
- Added a pure‑Python file‑type detector for full cross‑platform portability
- Improve PE detection logic by enforcing strict Windows-compatible PE validation.
- No behavioural changes to IOC extraction
- The `--min-length` consistency fix is planned for **v0.7.5**

---

### **v0.7.4 — Advanced Directory Parsing**
- Full **Load Config Directory** parsing and validation
- Extended Optional Header metadata for downstream heuristics
- New GuardCF, cookie, anomaly heuristics
- Faster PE Analysis
- 99 PE fixtures in test suite; 45 fully spec-validated

---

### **v0.7.3 — Structural Correctness & Deterministic Heuristics**
- Major hardening of all PE structural validators
- Deterministic, snapshot‑stable behaviour
- Clear, consistent ReasonCodes
- Stronger heuristics built on structural truth

---

### **v0.7.2 — Dependency Fix**
- Added missing `idna` dependency
- No behavioural or schema changes

---

### **v0.7.1 — Adversarial Heuristics Expansion & Parser Hardening**
- Six new PE heuristics
- Expanded adversarial PE corpus
- Hardened domain/URL/crypto/hash extractors
- Deterministic snapshot‑validated output

---

### **v0.7.0 — Deterministic Heuristics & Adversarial Testing Foundation**
- Deterministic heuristics
- Layer‑3 adversarial samples
- Snapshot‑contract tests
- Rich Header crash fix

---

### **v0.6.0 — Stable Output Schema & Deterministic Metadata**
- Fully stable JSON schema
- Normalised PE metadata
- Formalised analysis levels

---

### **v0.5.0 — Analysis Levels, PE Section Analysis, Obfuscation Hints**
- New analysis‑level system
- PE structural analysis
- Obfuscation heuristics

---

### **v0.4.0 — Plugin Architecture**
- Plugin‑ready rule engine
- Unified detection flow

---

### **v0.3.0 — Crypto IOC Detection**
- Ethereum & Bitcoin wallet detection

---

### **v0.2.0 — High‑Reliability IP Detection**
- Major IPv4/IPv6 improvements

</details>

---

# Quickstart

### Install
```bash
pip install iocx
```

### Extract IOCs from a file
```bash
iocx suspicious.exe
```

### Extract from text
```bash
echo "Visit http://bad.example.com" | iocx -
```

### Enable PE analysis
```bash
iocx suspicious.exe -a
```

### Python API
```python
from iocx.engine import Engine

engine = Engine()
results = engine.extract("suspicious.exe")
print(results)
```

---

# Example Output

> IOCX produces structured, deterministic JSON that includes IOCs, PE metadata, section analysis, heuristics, and obfuscation indicators.
>
> The example below is an abridged output from a real adversarial PE sample. It demonstrates the shape and depth of the schema while keeping the size manageable for documentation purposes.

<details>
<summary><strong>Show Example JSON Output</strong></summary>

```json
{
    "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"
                }
            }
        ]
    }
}
```

</details>

---

# Architecture

```
iocx/
├── examples/
├── docs/
├── tests/
└── iocx
    ├── detectors/
    ├── parsers/
    ├── plugins/
    ├── cli/
    └── analysis/
```

---

# Plugin Ecosystem & Extensibility

IOCX is designed to be extended safely and predictably.
Plugins are **first‑class citizens**, validated by the same deterministic snapshot tests as the core engine.

You can build:

- custom IOC detectors
- custom regex rules
- binary‑aware plugins
- internal heuristics
- pipeline‑specific extractors

See:

- `docs/specs/overlap-suppression.md`
- `docs/specs/plugin-authoring-guidelines.md`

---

# Ecosystem Overview

IOCX is more than a single binary — it’s a modular ecosystem:

- **Core Engine** — deterministic IOC extraction + PE analysis
- **Plugin System** — custom detectors and analysis modules
- **Adversarial Corpus** — malformed PEs, hostile strings, fuzz samples
- **Snapshot Testing Framework** — ensures deterministic output
- **Performance Benchmarks** — enforced in CI
- **Documentation Suite** — specs, contracts, and plugin guides

---

# Who Uses IOCX?

IOCX is used across:

- DFIR teams
- SOC automation pipelines
- CI/CD security gates
- Threat‑intel platforms
- Malware research labs
- Security engineering teams

Anywhere indicators need to be extracted **safely**, **deterministically**, and **at scale**, IOCX fits.

---

# Safe Testing (No Malware Required)

All test samples are:

- Synthetic
- Benign
- Publicly safe (EICAR, GTUBE)
- Designed to avoid accidental malware handling

---

# Performance Guarantees

IOCX enforces strict performance thresholds in CI to ensure:

- No regex backtracking stalls
- No pathological slowdowns
- Stable performance across releases

See:

- `docs/performance.md`

---

# Project Identity & Naming

The name **IOCX** refers exclusively to the official engine published on:

- PyPI: [https://pypi.org/project/iocx/](https://pypi.org/project/iocx/)
- GitHub: [https://github.com/iocx-dev/iocx](https://github.com/iocx-dev/iocx)

### Not allowed
- Repositories named `iocx`
- Tools named “iocx” not part of this project
- Implying affiliation without permission

### Allowed
- `iocx-<plugin>`
- `iocx-extension-<name>`
- `iocx-detector-<feature>`

---

# Official IOCX Repositories

- Core Engine: [https://github.com/iocx-dev/iocx](https://github.com/iocx-dev/iocx)
- Plugins Meta‑Repo: [https://github.com/iocx-dev/iocx-plugins](https://github.com/iocx-dev/iocx-plugins)
- Documentation: [https://github.com/iocx-dev/iocx/tree/main/docs/specs](https://github.com/iocx-dev/iocx/tree/main/docs/specs)
- PyPI Package: [https://pypi.org/project/iocx/](https://pypi.org/project/iocx/)

---

# Roadmap

IOCX development focuses on stability, extensibility, and deeper static‑analysis coverage.
The items below represent ongoing areas of work and exploration.

- **Extended PE heuristics** (delay‑load behaviour, structural anomalies, relocation patterns)
- **Selective suppression rules** for OSINT, DFIR, and threat‑intel workflows
- **ELF and Mach‑O metadata extraction**
- **Batch analysis mode** for multi‑artifact workflows
- **YARA‑style output modes** and enrichment hooks
- **Binary‑agnostic static analysis**
- **Cross‑platform plugin ecosystem**
- **Language bindings** for Rust, Go, and Node.js

---

# Contributing

We welcome:

- New detectors
- Parser improvements
- Documentation updates
- Synthetic adversarial samples

See `CONTRIBUTING.md` for guidelines.

---

# Security

If you discover a security issue, **do not open a GitHub issue**.
Follow the instructions in `SECURITY.md`.

---

# License

MPL‑2.0 License — see `LICENSE`.
Download Tool