Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
azazel — eBPF-powered silent observer for containerized runtimes, built for malware analysis sandboxes and Agentic AI monitoring. | Kitploit
Инструменты/GitHubGitHub/beelzebub-labs/azazel
Безопасность контейнеровДинамический анализ (песочница)ФорензикаАнализ вредоносных программРазведка угрозРеагирование на Инциденты
GitHubbeelzebub-labs/azazel

azazel

eBPF-powered silent observer for containerized runtimes, built for malware analysis sandboxes and Agentic AI monitoring.

Репозиторий
1021039 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

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

Изображение

Azazel


Лёгкий трассировщик безопасности на основе eBPF, специально созданный для песочниц анализа вредоносного ПО. Поместите образец в изолированный контейнер, и Azazel захватывает каждый системный вызов, каждое обращение к файлу, сетевое соединение и подозрительное поведение, предоставляя чистый поток JSON всего, что произошло.

Независимо от того, строите ли вы автоматизированную Песочницу для анализа вредоносного ПО или нуждаетесь в круглосуточном мониторинге для автономных AI-агентов, Azazel предоставляет точную, незаметную и готовую для AI телеметрию в формате JSON.


Справочник CLI

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

Commands:
  run-sandbox       Run a malware sample in an isolated Docker sandbox and trace it
  list-containers   List running containers
  version           Print version

Global Flags:
  -c, --container strings   Container ID(s) to filter (can specify multiple)
  -o, --output string       Output file path (default: stdout)
      --pretty              Pretty-print JSON output
      --stdout              Also print to stdout when --output is set
  -v, --verbose             Verbose logging
      --no-summary          Disable summary on exit
  -h, --help                Help

Архитектура

Архитектура

Что он захватывает

19 точек перехвата всего — tracepoints на входе системных вызовов + kprobe для обнаружения DNS.


Почему Azazel?

  • Ориентация на песочницы — создан для трассировки изолированных контейнеров с фильтрацией по cgroup, захватывая только анализируемое вредоносное ПО
  • Нулевые зависимости во время выполнения — единый статический Go-бинарный файл, никаких агентов или демонов
  • CO-RE — Compile Once, Run Everywhere через BTF и vmlinux.h, работает на разных версиях ядра без перекомпиляции
  • Родной JSON — вывод NDJSON (одно событие на строку), готовый для jq, Elasticsearch, Splunk или вашего собственного конвейера
  • Встроенные эвристики — автоматические оповещения о запуске из /tmp, доступе к конфиденциальным файлам (/etc/shadow, /proc/self/mem), ptrace, W+X mmap и загрузке модулей ядра

Быстрый старт

Предварительные требования

  • Ядро Linux 5.8+ с CONFIG_DEBUG_INFO_BTF=y
  • Docker (для контейнера разработки и песочницы)
  • Вот и всё

Проверьте ваше ядро:

root@kitploit:~
# BTF support (required)
ls /sys/kernel/btf/vmlinux

# Kernel version
uname -r

Сборка с Docker (рекомендуется)

root@kitploit:~
# Клонирование
git clone https://github.com/beelzebub-labs/azazel.git
cd azazel

# Сборка контейнера разработки
make docker-dev

# Вход в него (привилегированный, с PID/cgroup пространством имен хоста)
make docker-dev-run

# Внутри контейнера:
make vmlinux    # Генерация определений типов ядра
make generate   # Компиляция привязок BPF C → Go
make build      # Сборка бинарного файла

Запуск

root@kitploit:~
# Трассировка всего, вывод в stdout
sudo ./bin/azazel

# Трассировка всего, сохранение в файл с pretty JSON
sudo ./bin/azazel --output events.json --pretty

# Трассировка только конкретного контейнера
sudo ./bin/azazel --container <container_id> --output events.json

# Список запущенных контейнеров
sudo ./bin/azazel list-containers

Запуск набора тестов

root@kitploit:~
# Внутри контейнера разработки
make test

Это собирает бинарный файл, запускает трассировщик, запускает симулятор поведения вредоносного ПО, а затем проверяет, что все ожидаемые типы событий были захвачены.


Формат вывода

Каждое событие — это одна строка 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
}

Когда трассировщик завершает работу (Ctrl+C или SIGTERM), он выводит сводку в stderr:

root@kitploit:~
========================================
 Azazel Summary
========================================
 Total events: 1847

 Event counts:
   file_open             892
   file_write            312
   process_exec           47
   net_connect            23
   ...

 Security Alerts (3):
   [MEDIUM] execution from suspicious path: /tmp/suspicious_binary (pid=12345 comm=bash)
   [MEDIUM] sensitive file access: /etc/shadow (pid=12346 comm=cat)
   [CRITICAL] memory mapped as WRITE+EXEC (possible code injection/unpacking) (pid=12347 comm=malware)
========================================

Настройка песочницы с Docker Compose

Включённый файл docker-compose.yml настраивает полную среду анализа:

Изображение

root@kitploit:~
# Запуск песочницы
docker compose up -d

# Копирование образца в песочницу
docker cp ./samples/malware.elf sandbox:/tmp/sample

# Запуск
docker exec sandbox /tmp/sample

# События записываются в ./output/events.json
cat output/events.json | jq .

Автоматический анализ

root@kitploit:~
# Анализ образца от начала до конца: хэш → трассировка → отчёт
sudo ./analyze.sh ./samples/malware.elf 30

Это создаёт:

  • output/events_<timestamp>.json — необработанный поток событий
  • output/report_<timestamp>.md — отчёт в Markdown с хэшами, сводкой событий, сетевыми соединениями и оповещениями безопасности

Справочник CLI

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

Commands:
  list-containers   List running containers
  version           Print version

Flags:
  -c, --container strings   Container ID(s) to filter (can specify multiple)
  -o, --output string       Output file path (default: stdout)
      --pretty              Pretty-print JSON output
      --stdout              Also print to stdout when --output is set
  -v, --verbose             Verbose logging
      --no-summary          Disable summary on exit
  -h, --help                Help

Структура проекта

root@kitploit:~
azazel/
├── main.go                          # Точка входа
├── cmd/root.go                      # CLI (cobra)
├── bpf/tracer.bpf.c                 # Все eBPF-программы (один файл)
├── internal/
│   ├── tracer/
│   │   ├── tracer.go                # Ядро: загрузка, прикрепление, чтение кольцевого буфера
│   │   └── events.go                # Типы событий, структуры, разбор
│   ├── container/
│   │   └── resolver.go              # cgroup → разрешение ID контейнера
│   └── output/
│       └── writer.go                # JSON-вывод + эвристические оповещения
├── test/
│   ├── simulate_malware.sh          # Симулятор поведения вредоносного ПО
│   └── run_tests.sh                 # Автоматический набор тестов
├── Dockerfile                       # Многоэтапная сборка для продакшена
├── Dockerfile.dev                   # Контейнер разработки с зависимостями сборки
├── docker-compose.yml               # Полная среда песочницы
├── analyze.sh                       # Скрипт автоматического анализа
└── Makefile                         # Система сборки

Эвристические оповещения

Azazel автоматически отмечает подозрительное поведение:


Разработка

Контейнер для разработки

Всё собирается и запускается внутри одного Docker-контейнера с Go, clang, libbpf и bpftool:

root@kitploit:~
make docker-dev          # Сборка образа для разработки
make docker-dev-run      # Вход в него (привилегированный + пространства имён хоста)

Порядок сборки

root@kitploit:~
# Внутри контейнера разработки:
make vmlinux             # Генерация vmlinux.h из BTF ядра хоста
make generate            # bpf2go: компиляция привязок BPF C → Go
make build               # Сборка Go-бинарного файла
make test                # Полный цикл тестирования

Проверка совместимости ядра

root@kitploit:~
make check-kernel

Устранение неполадок


Технический стек


Участие в разработке

Вклад приветствуется. Пожалуйста, сначала откройте issue, чтобы обсудить, что вы хотите изменить.

root@kitploit:~
# Форкните, клонируйте, затем:
make docker-dev
make docker-dev-run
# пишите код
make test

Лицензия

GPL-2.0 — подробности см. в LICENSE.

BPF-программы лицензированы под GPL-2.0 (требуется для доступа к eBPF-помощникам). Пользовательский Go-код также под GPL-2.0.

Скачать инструмент
КатегорияСобытияПодробности
Процессыprocess_exec, process_exit, process_cloneПолное дерево процессов: имя файла, argv, коды завершения, флаги клонирования, PPID
Файлыfile_open, file_write, file_read, file_unlink, file_renameПути, флаги, количество байт
Сетьnet_connect, net_bind, net_listen, net_accept, net_sendto, net_dnsIPv4/IPv6 адреса, порты, обнаружение DNS через kprobe на udp_sendmsg
Безопасностьmmap_exec, ptrace, module_loadW+X отображения памяти, попытки внедрения в процессы, загрузка модулей ядра
ОповещениеСерьёзностьТриггер
Подозрительный путь запускаСредняяЗапуск из /tmp/, /dev/shm/, /var/tmp/
Подозрительный инструментСредняяwget, curl, nc, python, base64, memfd:
Доступ к конфиденциальным файламСредняя/etc/passwd, /etc/shadow, /etc/sudoers, /etc/ssh/, /proc/self/maps, /proc/self/mem, /etc/ld.so.preload
PtraceВысокаяЛюбой системный вызов ptrace (внедрение в процесс / отладка)
Загрузка модуля ядраВысокаяЛюбой системный вызов finit_module
W+X mmapКритическаяПамять, отображённая одновременно как WRITE+EXEC (внедрение кода, распаковка)
ПроблемаРешение
operation not permitted при загрузке BPFКонтейнер должен запускаться с --privileged --pid=host --cgroupns=host
vmlinux.h: No such fileВыполните make vmlinux (требуется /sys/kernel/btf/vmlinux)
kernel doesn't support BTFЯдро хоста должно иметь CONFIG_DEBUG_INFO_BTF=y — проверьте ls /sys/kernel/btf/vmlinux
Создание карты кольцевого буфера не удаётсяЯдро должно быть 5.8+, проверьте с помощью uname -r
failed to attach tracepointНекоторые tracepoints не существуют во всех ядрах — трассировщик записывает предупреждение и продолжает работу
События не захватываютсяУбедитесь, что трассировщик запущен (`ps aux
КомпонентТехнология
ЯзыкGo 1.24+
Библиотека eBPFcilium/ebpf v0.17+
Генерация BPF-кодаbpf2go (CO-RE, на основе BTF)
BPF-программыC, скомпилировано с clang, с использованием vmlinux.h
CLIcobra
ВыводNDJSON (один JSON-объект на строку)
КонтейнерDocker, с docker-compose для оркестрации песочницы