Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
azazel — eBPFを活用した、コンテナ化されたランタイム向けのサイレントオブザーバー。マルウェア解析サンドボックスおよびエージェント型AI監視のために構築されました。 | Kitploit
ツール/GitHubGitHub/beelzebub-labs/azazel
コンテナセキュリティ動的分析 (サンドボックス)フォレンジックマルウェア分析脅威インテリジェンスインシデントレスポンス
GitHubbeelzebub-labs/azazel

azazel

eBPFを活用した、コンテナ化されたランタイム向けのサイレントオブザーバー。マルウェア解析サンドボックスおよびエージェント型AI監視のために構築されました。

リポジトリを見る
102101ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

eBPF対応 Go 1.24+ Linux 5.8+ ライセンス GPL-2.0

Image

Azazel


軽量な eBPF ベースのランタイムセキュリティトレーサーで、マルウェア解析サンドボックスに特化して設計されています。隔離されたコンテナにサンプルを投入すると、Azazel はすべてのシステムコール、ファイル操作、ネットワーク接続、不審な動作をキャプチャし、発生したすべてのイベントをクリーンな JSON ストリームで提供します。

自動マルウェア解析サンドボックスを構築する場合でも、自律型 AI エージェントのための 24/7 ランタイムモニタリングが必要な場合でも、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

アーキテクチャ

Image

キャプチャする内容

合計19のフックポイント — システムコールエントリのトレースポイント + DNS 検出のための kprobe。


なぜ Azazel なのか?

  • サンドボックス優先 — 隔離されたコンテナのトレース専用に構築。cgroup ベースのフィルタリングにより、解析中のマルウェアのみをキャプチャ
  • ランタイムの依存関係ゼロ — 単一の静的 Go バイナリ。エージェントやデーモン不要
  • CO-RE — BTF と vmlinux.h により一度コンパイルすればどこでも実行可能。カーネルバージョンが変わっても再コンパイル不要
  • JSON ネイティブ — NDJSON 出力(1行1イベント)。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 サポート(必須)
ls /sys/kernel/btf/vmlinux

# カーネルバージョン
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:~
# すべてをトレースし、標準出力に出力
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

これによりバイナリがビルドされ、トレーサーが起動し、マルウェア動作シミュレーターが実行され、予期されるすべてのイベントタイプがキャプチャされたかどうかが検証されます。


出力形式

各イベントは1行の 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)、標準エラー出力にサマリーが表示されます:

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 は完全な解析環境をセットアップします:

Image

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                          # Entry point
├── cmd/root.go                      # CLI (cobra)
├── bpf/tracer.bpf.c                 # All eBPF programs (single file)
├── internal/
│   ├── tracer/
│   │   ├── tracer.go                # Core: load, attach, read ring buffer
│   │   └── events.go                # Event types, structs, parsing
│   ├── container/
│   │   └── resolver.go              # cgroup → container ID resolution
│   └── output/
│       └── writer.go                # JSON output + heuristic alerts
├── test/
│   ├── simulate_malware.sh          # Malware behavior simulator
│   └── run_tests.sh                 # Automated test suite
├── Dockerfile                       # Production multi-stage build
├── Dockerfile.dev                   # Dev container with build deps
├── docker-compose.yml               # Full sandbox environment
├── analyze.sh                       # Automated analysis script
└── Makefile                         # Build system

ヒューリスティックアラート

Azazel は不審な動作を自動でフラグ付けします:


開発

開発コンテナ

すべてのビルドと実行は、Go、clang、libbpf、bpftool を含む単一の Docker コンテナ内で行われます:

root@kitploit:~
make docker-dev          # 開発イメージをビルド
make docker-dev-run      # コンテナに入る(特権 + ホストネームスペース)

ビルドワークフロー

root@kitploit:~
# 開発コンテナ内で:
make vmlinux             # ホストカーネルの BTF から vmlinux.h を生成
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完全なプロセスツリー: filename, argv, 終了コード, clone フラグ, 親 PID
ファイルfile_open, file_write, file_read, file_unlink, file_renameパス名, フラグ, バイト数
ネットワークnet_connect, net_bind, net_listen, net_accept, net_sendto, net_dnsIPv4/IPv6 アドレス, ポート, udp_sendmsg への kprobe による DNS 検出
セキュリティ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 として同時にマッピングされた(コードインジェクション、アンパック)
問題解決策
BPF ロード時に operation not permittedコンテナは --privileged --pid=host --cgroupns=host で実行する必要があります
vmlinux.h: No such filemake 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一部のトレースポイントはすべてのカーネルに存在するわけではありません — トレーサーは警告をログに記録し継続します
イベントがキャプチャされないトレーサーが実行中か確認 (`ps aux
コンポーネント技術
言語Go 1.24+
eBPF ライブラリcilium/ebpf v0.17+
BPF コード生成bpf2go (CO-RE, BTF ベース)
BPF プログラムC、clang でコンパイル、vmlinux.h を使用
CLIcobra
出力NDJSON(1行に1つの JSON オブジェクト)
コンテナDocker、docker-compose でサンドボックスを構成