Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
azazel — Observador silencioso basado en eBPF para entornos de ejecución contenedorizados, diseñado para sandboxes de análisis de malware y monitoreo de Agentic AI. | Kitploit
Herramientas/GitHubGitHub/beelzebub-labs/azazel
Seguridad de ContenedoresAnálisis Dinámico (Sandboxing)Análisis ForenseAnálisis de MalwareInteligencia de AmenazasRespuesta a Incidentes
GitHubbeelzebub-labs/azazel

azazel

Observador silencioso basado en eBPF para entornos de ejecución contenedorizados, diseñado para sandboxes de análisis de malware y monitoreo de Agentic AI.

Ver Repositorio
10210hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

eBPF powered Go 1.24+ Linux 5.8+ License GPL-2.0

Imagen

Azazel


Un trazador de seguridad ligero basado en eBPF diseñado específicamente para entornos aislados de análisis de malware. Coloca una muestra en un contenedor aislado y Azazel captura cada llamada al sistema, acceso a archivos, conexión de red y comportamiento sospechoso, y te entrega un flujo JSON limpio de todo lo que sucedió.

Ya sea que estés construyendo un Entorno Aislado de Análisis de Malware automatizado o necesites Monitoreo en Tiempo Real 24/7 para Agentes de IA autónomos, Azazel proporciona telemetría JSON quirúrgica, invisible y lista para IA.


Referencia de la CLI

root@kitploit:~
Usage:
  azazel [flags]
  azazel [command]

Commands:
  run-sandbox       Ejecuta una muestra de malware en un contenedor Docker aislado y la traza
  list-containers   Lista los contenedores en ejecución
  version           Muestra la versión

Global Flags:
  -c, --container strings   ID(s) de contenedor para filtrar (se pueden especificar varios)
  -o, --output string       Ruta del archivo de salida (por defecto: stdout)
      --pretty              Muestra JSON con formato bonito
      --stdout              También imprime en stdout cuando se especifica --output
  -v, --verbose             Registro detallado
      --no-summary          Deshabilita el resumen al salir
  -h, --help                Ayuda

Arquitectura

Imagen

Qué captura

19 puntos de enganche en total — tracepoints en la entrada de syscalls + un kprobe para detección de DNS.


¿Por qué Azazel?

  • Prioriza los entornos aislados — construido para trazar contenedores aislados, con filtrado basado en cgroups para capturar solo el malware que estás analizando
  • Sin dependencias en tiempo de ejecución — único binario estático de Go, sin agentes ni demonios
  • CO-RE — Compila Una Vez, Ejecuta en Todas Partes mediante BTF y vmlinux.h, funciona en distintas versiones del kernel sin necesidad de recompilar
  • Nativo en JSON — salida NDJSON (un evento por línea) lista para jq, Elasticsearch, Splunk o tu propio pipeline
  • Heurísticas integradas — alertas automáticas para ejecución desde /tmp, acceso a archivos sensibles (/etc/shadow, /proc/self/mem), ptrace, mmap W+X y carga de módulos del kernel

Inicio rápido

Prerrequisitos

  • Kernel Linux 5.8+ con CONFIG_DEBUG_INFO_BTF=y
  • Docker (para el contenedor de desarrollo y el entorno aislado)
  • Eso es todo

Verifica tu kernel:

root@kitploit:~
# Soporte BTF (requerido)
ls /sys/kernel/btf/vmlinux

# Versión del kernel
uname -r

Compilar con Docker (recomendado)

root@kitploit:~
# Clonar
git clone https://github.com/beelzebub-labs/azazel.git
cd azazel

# Construir el contenedor de desarrollo
make docker-dev

# Entrar en él (privilegiado, con PID y espacio de nombres cgroup del host)
make docker-dev-run

# Dentro del contenedor:
make vmlinux    # Generar definiciones de tipos del kernel
make generate   # Compilar BPF C → enlaces Go
make build      # Construir el binario

Ejecutar

root@kitploit:~
# Trazar todo, salida a stdout
sudo ./bin/azazel

# Trazar todo, guardar en archivo con JSON bonito
sudo ./bin/azazel --output events.json --pretty

# Trazar solo un contenedor específico
sudo ./bin/azazel --container <container_id> --output events.json

# Listar contenedores en ejecución
sudo ./bin/azazel list-containers

Ejecutar el conjunto de pruebas

root@kitploit:~
# Dentro del contenedor de desarrollo
make test

Esto compila el binario, inicia el trazador, ejecuta un simulador de comportamiento de malware y luego valida que se hayan capturado todos los tipos de eventos esperados.


Formato de salida

Cada evento es una línea JSON individual (NDJSON):

root@kitploit:~
{
  "timestamp": "2025-01-15T14:30:22.123456789Z",
  "event_type": "process_exec",
  "pid": 12345,
  "tgid": 12345,
  "ppid": 12300,
  "uid": 0,
  "gid": 0,
  "comm": "bash",
  "cgroup_id": 6789,
  "container_id": "a1b2c3d4e5f6",
  "filename": "/tmp/suspicious_binary",
  "args": "/tmp/suspicious_binary"
}
root@kitploit:~
{
  "timestamp": "2025-01-15T14:30:22.234567890Z",
  "event_type": "net_connect",
  "pid": 12345,
  "tgid": 12345,
  "ppid": 12300,
  "uid": 0,
  "gid": 0,
  "comm": "curl",
  "cgroup_id": 6789,
  "container_id": "a1b2c3d4e5f6",
  "sa_family": "AF_INET",
  "dst_addr": "93.184.216.34",
  "dst_port": 443
}

Cuando el trazador se apaga (Ctrl+C o SIGTERM), imprime un resumen en stderr:

root@kitploit:~
========================================
 Resumen de Azazel
========================================
 Total de eventos: 1847

 Conteos de eventos:
   file_open             892
   file_write            312
   process_exec           47
   net_connect            23
   ...

 Alertas de seguridad (3):
   [MEDIA] ejecución desde ruta sospechosa: /tmp/suspicious_binary (pid=12345 comm=bash)
   [MEDIA] acceso a archivo sensible: /etc/shadow (pid=12346 comm=cat)
   [CRÍTICA] memoria mapeada como ESCRITURA+EJECUCIÓN (posible inyección de código/desempaquetado) (pid=12347 comm=malware)
========================================

Configuración del entorno aislado con Docker Compose

El archivo docker-compose.yml incluido configura un entorno de análisis completo:

Imagen

root@kitploit:~
# Iniciar el entorno aislado
docker compose up -d

# Copiar una muestra al entorno aislado
docker cp ./samples/malware.elf sandbox:/tmp/sample

# Ejecutarla
docker exec sandbox /tmp/sample

# Los eventos se escriben en ./output/events.json
cat output/events.json | jq .

Análisis automatizado

root@kitploit:~
# Analizar una muestra de principio a fin: hash → traza → informe
sudo ./analyze.sh ./samples/malware.elf 30

Esto produce:

  • output/events_<timestamp>.json — flujo de eventos sin procesar
  • output/report_<timestamp>.md — informe en Markdown con hashes, resumen de eventos, conexiones de red y alertas de seguridad

Referencia de la CLI

root@kitploit:~
Usage:
  azazel [flags]
  azazel [command]

Commands:
  list-containers   Lista los contenedores en ejecución
  version           Muestra la versión

Flags:
  -c, --container strings   ID(s) de contenedor para filtrar (se pueden especificar varios)
  -o, --output string       Ruta del archivo de salida (por defecto: stdout)
      --pretty              Muestra JSON con formato bonito
      --stdout              También imprime en stdout cuando se especifica --output
  -v, --verbose             Registro detallado
      --no-summary          Deshabilita el resumen al salir
  -h, --help                Ayuda

Estructura del proyecto

root@kitploit:~
azazel/
├── main.go                          # Punto de entrada
├── cmd/root.go                      # CLI (cobra)
├── bpf/tracer.bpf.c                 # Todos los programas eBPF (archivo único)
├── internal/
│   ├── tracer/
│   │   ├── tracer.go                # Núcleo: cargar, adjuntar, leer búfer anular
│   │   └── events.go                # Tipos de eventos, structs, análisis
│   ├── container/
│   │   └── resolver.go              # Resolución de cgroup → ID de contenedor
│   └── output/
│       └── writer.go                # Salida JSON + alertas heurísticas
├── test/
│   ├── simulate_malware.sh          # Simulador de comportamiento de malware
│   └── run_tests.sh                 # Conjunto de pruebas automatizado
├── Dockerfile                       # Compilación multi-etapa de producción
├── Dockerfile.dev                   # Contenedor de desarrollo con dependencias de compilación
├── docker-compose.yml               # Entorno completo de entorno aislado
├── analyze.sh                       # Script de análisis automatizado
└── Makefile                         # Sistema de compilación

Alertas heurísticas

Azazel marca automáticamente comportamientos sospechosos:


Desarrollo

Contenedor de desarrollo

Todo se compila y ejecuta dentro de un único contenedor Docker con Go, clang, libbpf y bpftool:

root@kitploit:~
make docker-dev          # Construir la imagen de desarrollo
make docker-dev-run      # Entrar en ella (privilegiado + espacios de nombres del host)

Flujo de trabajo de compilación

root@kitploit:~
# Dentro del contenedor de desarrollo:
make vmlinux             # Generar vmlinux.h a partir del BTF del kernel anfitrión
make generate            # bpf2go: compilar BPF C → enlaces Go
make build               # Compilar el binario Go
make test                # Ciclo completo de pruebas

Verificar compatibilidad del kernel

root@kitploit:~
make check-kernel

Solución de problemas


Stack tecnológico


Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir lo que te gustaría cambiar.

root@kitploit:~
# Fork, clona, luego:
make docker-dev
make docker-dev-run
# hack hack hack
make test

Licencia

GPL-2.0 — consulta LICENSE para más detalles.

Los programas BPF tienen licencia GPL-2.0 (requerida para el acceso a helpers de eBPF). El código Go del espacio de usuario también tiene licencia GPL-2.0.

Descargar herramienta
CategoríaEventosDetalles
Procesosprocess_exec, process_exit, process_cloneÁrbol completo de procesos: nombre de archivo, argv, códigos de salida, flags de clonación, PID padre
Archivosfile_open, file_write, file_read, file_unlink, file_renameRutas, flags, conteo de bytes
Rednet_connect, net_bind, net_listen, net_accept, net_sendto, net_dnsDirecciones IPv4/IPv6, puertos, detección de DNS mediante kprobe en udp_sendmsg
Seguridadmmap_exec, ptrace, module_loadMapeos de memoria W+X, intentos de inyección de procesos, carga de módulos del kernel
AlertaSeveridadDisparador
Ruta de ejecución sospechosaMediaEjecución desde /tmp/, /dev/shm/, /var/tmp/
Herramienta sospechosaMediawget, curl, nc, python, base64, memfd:
Acceso a archivo sensibleMedia/etc/passwd, /etc/shadow, /etc/sudoers, /etc/ssh/, /proc/self/maps, /proc/self/mem, /etc/ld.so.preload
PtraceAltaCualquier syscall ptrace (inyección de proceso / depuración)
Carga de módulo del kernelAltaCualquier syscall finit_module
mmap W+XCríticaMemoria mapeada como ESCRITURA+EJECUCIÓN simultáneamente (inyección de código, desempaquetado)
ProblemaSolución
operation not permitted al cargar BPFEl contenedor debe ejecutarse con --privileged --pid=host --cgroupns=host
vmlinux.h: No such fileEjecutar make vmlinux (requiere /sys/kernel/btf/vmlinux)
kernel doesn't support BTFEl kernel del anfitrión necesita CONFIG_DEBUG_INFO_BTF=y — verificar con ls /sys/kernel/btf/vmlinux
La creación del mapa del búfer anular fallaEl kernel debe ser 5.8+, verificar con uname -r
failed to attach tracepointAlgunos tracepoints no existen en todos los kernels — el trazador registra una advertencia y continúa
No se capturan eventosVerificar que el trazador se esté ejecutando (ps aux | grep azazel), comprobar que la actividad de prueba ocurre después de que el trazador inicia
ComponenteTecnología
LenguajeGo 1.24+
Biblioteca eBPFcilium/ebpf v0.17+
Generación de código BPFbpf2go (CO-RE, basado en BTF)
Programas BPFC, compilados con clang, usando vmlinux.h
CLIcobra
SalidaNDJSON (un objeto JSON por línea)
ContenedorDocker, con docker-compose para orquestación del entorno aislado