Tool-CyberSec-Forensic-Noctua
Framework de Reverse Engineering y análisis forense en Python
Instalar • Usar • Arquitectura • Extender
Noctua es un framework de reverse engineering en Python que detecta, analiza y extrae información de binarios. Arquitectura modular con 15 módulos de análisis y clean architecture.
| Formato | Uso | Estado |
|---|---|---|
| ELF | Linux, IoT | ✅ |
| PE | Windows | ✅ |
| Mach-O | macOS/iOS | ✅ |
| DEX | Android | ✅ |
| WASM | WebAssembly | ✅ |
| WebP | Forense de imágenes | ✅ + EXIF |
| Generic | Fallback | ✅ |
| Módulo | Descripción |
|---|---|
BranchTiming |
Side-channel por temporización |
Dataflow |
Detección de secrets (passwords, tokens, keys) |
Spectral |
Análisis espectral del binario |
MaxEnt |
Máxima entropía para ofuscación |
CrossDomain |
Correlación cross-domain |
MI2D |
Información mutua 2D |
Entropy |
Entropía por secciones |
Profiler |
Perfilado de secciones |
Crypto |
Constantes AES, base64, etc. |
ImportExport |
Import/export tables |
Fingerprint |
Huella digital del binario |
Embedded |
Detección de archivos embebidos |
StringXformer |
Strings codificados |
ByteFrequency |
Frecuencia de bytes |
CallGraph |
Grafo de llamadas |
┌──────────────────────────────────────┐
│ Interface CLI · analyzer.py │
├──────────────────────────────────────┤
│ Application Pipeline · Módulos │
├──────────────────────────────────────┤
│ Domain Config · Result │
├──────────────────────────────────────┤
│ Infra Loaders · Core Engine │
└──────────────────────────────────────┘
Patrones: Strategy · Pipeline · Config Object · Result/Monad
git clone https://github.com/MethodWhite/Noctua.git
cd Noctua
pip install capstoneRequiere Python 3.8+.
from engine import MWREEngine
eng = MWREEngine("malware.exe")
summary = eng.run()
print(summary)from core.engine import MWREEngine
from analyzer.universal import NOCTUAAnalyzer
eng = MWREEngine("binario")
eng.run()
analyzer = NOCTUAAnalyzer(eng)
results = analyzer.run()from pipeline import Pipeline, stage_load, stage_analyze
pipe = Pipeline()
pipe.register("Load", stage_load)
pipe.register("Analyze", stage_analyze)
pipe.run("binario.elf")from modules.base import AnalyzerModule
class MiModulo(AnalyzerModule):
name = "mi_modulo"
description = "Análisis personalizado"
applies_to = ['elf', 'pe']
def analyze(self):
data = getattr(self.engine, 'data', b'')
return {'resultado': 42}Hecho con ❤️ por MethodWhite