
Marco de trabajo de ejecución simbólica dinámica y análisis binario con análisis de flujo de datos (taint analysis), resolución de restricciones, emulación multiarquitectura a través de Sleigh de Ghidra, y enlaces de Python para el descubrimiento automatizado de vulnerabilidades.
Maat es un framework de código abierto para Ejecución Simbólica Dinámica y Análisis Binario. Proporciona diversas funcionalidades como ejecución simbólica, análisis de taint, resolución de restricciones, carga de binarios, simulación de entorno, y aprovecha la librería sleigh de Ghidra para el levantamiento de ensamblador: https://maat.re
Características clave:
Para instalar el módulo de Python de Maat:
python3 -m pip install pymaat
Para instalar el SDK nativo de Maat y usar la API de C++, consulta BUILDING.md
from maat import *
# Crear un motor simbólico para Linux X86-32bits
engine = MaatEngine(ARCH.X86, OS.LINUX)
# Cargar un binario con un argumento de línea de comandos
engine.load("./some_binary", BIN.ELF32, args=[engine.vars.new_symbolic_buffer("some_arg", 20)])
# Obtener el valor actual de eax
engine.cpu.eax
# Leer 4 bytes en la parte superior de la pila
engine.mem.read(engine.cpu.esp, 4)
# Establecer un callback que muestre cada lectura de memoria
def show_mem_access(engine):
mem_access = engine.info.mem_access
print(f"Instrucción en {engine.info.addr} lee {mem_access.size} bytes en {mem_access.addr}")
engine.hooks.add(EVENT.MEM_R, WHEN.BEFORE, callbacks=[show_mem_access])
# Tomar y restaurar instantáneas
snap = engine.take_snapshot()
engine.restore_snapshot(snap)
# Ejecutar el binario
engine.run()
Para discusiones generales, preguntas y sugerencias, usamos Discusiones de GitHub
Para reportar problemas y errores, por favor usa Issues de GitHub
Para cualquier otra cosa, envía un correo electrónico a [email protected]