Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
azazel — Osservatore silenzioso basato su eBPF per runtime containerizzati, progettato per sandbox di analisi malware e monitoraggio di AI agentica. | Kitploit
Strumenti/GitHubGitHub/beelzebub-labs/azazel
Sicurezza dei ContenitoriAnalisi Dinamica (Sandboxing)Informatica ForenseAnalisi MalwareThreat IntelligenceRisposta agli Incidenti
GitHubbeelzebub-labs/azazel

azazel

Osservatore silenzioso basato su eBPF per runtime containerizzati, progettato per sandbox di analisi malware e monitoraggio di AI agentica.

Vedi Repository
102101 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

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

Image

Azazel


Un tracer di sicurezza runtime leggero basato su eBPF, progettato specificamente per sandbox di analisi malware. Inserisci un campione in un contenitore isolato e Azazel cattura ogni syscall, accesso a file, connessione di rete e comportamento sospetto, fornendoti un flusso JSON pulito di tutto ciò che è accaduto.

Che tu stia costruendo una Sandbox per l'Analisi Malware automatizzata o necessiti di Monitoraggio Runtime 24/7 per Agenti AI autonomi, Azazel fornisce una telemetria JSON chirurgica, invisibile e pronta per l'AI.


Riferimento CLI

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

Commands:
  run-sandbox       Esegui un campione malware in una sandbox Docker isolata e traccialo
  list-containers   Elenca i contenitori in esecuzione
  version           Stampa la versione

Global Flags:
  -c, --container strings   ID del contenitore da filtrare (è possibile specificarne più di uno)
  -o, --output string       Percorso del file di output (default: stdout)
      --pretty              Stampa JSON indentato
      --stdout              Stampa anche su stdout quando --output è impostato
  -v, --verbose             Logging verboso
      --no-summary          Disabilita il riepilogo all'uscita
  -h, --help                Aiuto

Architettura

Image

Cosa cattura

19 punti di hook in totale — tracepoint all'ingresso delle syscall + un kprobe per il rilevamento DNS.


Perché Azazel?

  • Priorità alla sandbox — costruito per tracciare contenitori isolati, con filtraggio basato su cgroup per catturare solo il malware che stai analizzando
  • Zero dipendenze a runtime — singolo binario Go statico, niente agenti o demone
  • CO-RE — Compila Una Volta, Esegui Ovunque grazie a BTF e vmlinux.h, funziona su diverse versioni del kernel senza ricompilazione
  • Nativo JSON — output NDJSON (un evento per riga) pronto per jq, Elasticsearch, Splunk o la tua pipeline
  • Euristiche integrate — avvisi automatici per esecuzioni da /tmp, accesso a file sensibili (/etc/shadow, /proc/self/mem), ptrace, mmap W+X e caricamento di moduli del kernel

Avvio rapido

Prerequisiti

  • Kernel Linux 5.8+ con CONFIG_DEBUG_INFO_BTF=y
  • Docker (per il contenitore di sviluppo e la sandbox)
  • Tutto qui

Verifica il tuo kernel:

root@kitploit:~
# Supporto BTF (richiesto)
ls /sys/kernel/btf/vmlinux

# Versione del kernel
uname -r

Compilazione con Docker (consigliata)

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

# Compila il contenitore di sviluppo
make docker-dev

# Entra (privilegiato, con namespace PID/cgroup dell'host)
make docker-dev-run

# All'interno del contenitore:
make vmlinux    # Genera le definizioni dei tipi del kernel
make generate   # Compila BPF C → bindings Go
make build      # Compila il binario

Esecuzione

root@kitploit:~
# Traccia tutto, output su stdout
sudo ./bin/azazel

# Traccia tutto, salva su file con JSON indentato
sudo ./bin/azazel --output events.json --pretty

# Traccia solo un contenitore specifico
sudo ./bin/azazel --container <container_id> --output events.json

# Elenca i contenitori in esecuzione
sudo ./bin/azazel list-containers

Esegui la suite di test

root@kitploit:~
# All'interno del contenitore di sviluppo
make test

Questo compila il binario, avvia il tracer, esegue un simulatore di comportamento malware, quindi verifica che tutti i tipi di evento attesi siano stati catturati.


Formato dell'output

Ogni evento è una singola riga JSON (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
}

Quando il tracer viene arrestato (Ctrl+C o SIGTERM), stampa un riepilogo su stderr:

root@kitploit:~
========================================
 Riepilogo Azazel
========================================
 Eventi totali: 1847

 Conteggi eventi:
   file_open             892
   file_write            312
   process_exec           47
   net_connect            23
   ...

 Avvisi di Sicurezza (3):
   [MEDIO] esecuzione da percorso sospetto: /tmp/suspicious_binary (pid=12345 comm=bash)
   [MEDIO] accesso a file sensibile: /etc/shadow (pid=12346 comm=cat)
   [CRITICO] memoria mappata come SCRITTURA+ESECUZIONE (possibile iniezione di codice/unpacking) (pid=12347 comm=malware)
========================================

Configurazione della sandbox con Docker Compose

Il file docker-compose.yml incluso configura un ambiente di analisi completo:

Image

root@kitploit:~
# Avvia la sandbox
docker compose up -d

# Copia un campione nella sandbox
docker cp ./samples/malware.elf sandbox:/tmp/sample

# Eseguilo
docker exec sandbox /tmp/sample

# Gli eventi vengono scritti in ./output/events.json
cat output/events.json | jq .

Analisi automatizzata

root@kitploit:~
# Analizza un campione end-to-end: hash → traccia → report
sudo ./analyze.sh ./samples/malware.elf 30

Questo produce:

  • output/events_<timestamp>.json — flusso grezzo di eventi
  • output/report_<timestamp>.md — report Markdown con hash, riepilogo eventi, connessioni di rete e avvisi di sicurezza

Riferimento CLI

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

Commands:
  list-containers   Elenca i contenitori in esecuzione
  version           Stampa la versione

Flags:
  -c, --container strings   ID del contenitore da filtrare (è possibile specificarne più di uno)
  -o, --output string       Percorso del file di output (default: stdout)
      --pretty              Stampa JSON indentato
      --stdout              Stampa anche su stdout quando --output è impostato
  -v, --verbose             Logging verboso
      --no-summary          Disabilita il riepilogo all'uscita
  -h, --help                Aiuto

Struttura del progetto

root@kitploit:~
azazel/
├── main.go                          # Punto di ingresso
├── cmd/root.go                      # CLI (cobra)
├── bpf/tracer.bpf.c                 # Tutti i programmi eBPF (singolo file)
├── internal/
│   ├── tracer/
│   │   ├── tracer.go                # Core: carica, attacca, legge il ring buffer
│   │   └── events.go                # Tipi di evento, struct, parsing
│   ├── container/
│   │   └── resolver.go              # Risoluzione cgroup → ID contenitore
│   └── output/
│       └── writer.go                # Output JSON + avvisi euristici
├── test/
│   ├── simulate_malware.sh          # Simulatore di comportamento malware
│   └── run_tests.sh                 # Suite di test automatizzata
├── Dockerfile                       # Compilazione multi-stage di produzione
├── Dockerfile.dev                   # Contenitore di sviluppo con dipendenze di build
├── docker-compose.yml               # Ambiente sandbox completo
├── analyze.sh                       # Script di analisi automatizzata
└── Makefile                         # Sistema di build

Avvisi euristici

Azazel segnala automaticamente i comportamenti sospetti:


Sviluppo

Contenitore di sviluppo

Tutto viene compilato ed eseguito all'interno di un singolo contenitore Docker con Go, clang, libbpf e bpftool:

root@kitploit:~
make docker-dev          # Compila l'immagine di sviluppo
make docker-dev-run      # Entra (privilegiato + namespace host)

Flusso di lavoro di compilazione

root@kitploit:~
# All'interno del contenitore di sviluppo:
make vmlinux             # Genera vmlinux.h dal BTF del kernel host
make generate            # bpf2go: compila BPF C → bindings Go
make build               # Compila il binario Go
make test                # Ciclo di test completo

Verifica compatibilità kernel

root@kitploit:~
make check-kernel

Risoluzione dei problemi


Stack tecnologico


Contribuire

I contributi sono benvenuti. Apri prima una issue per discutere cosa vorresti cambiare.

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

Licenza

GPL-2.0 — vedi LICENSE per i dettagli.

I programmi BPF sono concessi in licenza GPL-2.0 (richiesto per l'accesso agli helper eBPF). Anche il codice Go nello spazio utente è GPL-2.0.

Scarica lo strumento
CategoriaEventiDettagli
Processoprocess_exec, process_exit, process_cloneAlbero completo dei processi: nome file, argv, codici di uscita, flag di clone, PID padre
Filefile_open, file_write, file_read, file_unlink, file_renamePercorsi, flag, conteggi di byte
Retenet_connect, net_bind, net_listen, net_accept, net_sendto, net_dnsIndirizzi IPv4/IPv6, porte, rilevamento DNS tramite kprobe su udp_sendmsg
Sicurezzammap_exec, ptrace, module_loadMappature di memoria W+X, tentativi di iniezione di processo, caricamento di moduli del kernel
AvvisoGravitàTrigger
Percorso esecuzione sospettoMedioEsecuzione da /tmp/, /dev/shm/, /var/tmp/
Strumento sospettoMediowget, curl, nc, python, base64, memfd:
Accesso a file sensibileMedio/etc/passwd, /etc/shadow, /etc/sudoers, /etc/ssh/, /proc/self/maps, /proc/self/mem, /etc/ld.so.preload
PtraceAltoQualsiasi syscall ptrace (iniezione di processo / debugging)
Caricamento modulo kernelAltoQualsiasi syscall finit_module
mmap W+XCriticoMemoria mappata contemporaneamente come SCRITTURA+ESECUZIONE (iniezione di codice, unpacking)
ProblemaSoluzione
operation not permitted durante il caricamento di BPFIl contenitore deve essere eseguito con --privileged --pid=host --cgroupns=host
vmlinux.h: No such fileEsegui make vmlinux (richiede /sys/kernel/btf/vmlinux)
kernel doesn't support BTFIl kernel host necessita di CONFIG_DEBUG_INFO_BTF=y — verifica con ls /sys/kernel/btf/vmlinux
La creazione della mappa del ring buffer fallisceIl kernel deve essere 5.8+, verifica con uname -r
failed to attach tracepointAlcuni tracepoint non esistono su tutti i kernel — il tracer registra un avviso e continua
Nessun evento catturatoVerifica che il tracer sia in esecuzione (`ps aux
ComponenteTecnologia
LinguaggioGo 1.24+
Libreria eBPFcilium/ebpf v0.17+
Generazione codice BPFbpf2go (CO-RE, basato su BTF)
Programmi BPFC, compilati con clang, usando vmlinux.h
CLIcobra
OutputNDJSON (un oggetto JSON per riga)
ContenitoreDocker, con docker-compose per l'orchestrazione della sandbox