
مراقب صامت يعمل بتقنية eBPF لبيئات التشغيل المحتواة، مصمم لصناديق تحليل البرامج الضارة ومراقبة الذكاء الاصطناعي الوكيل.

متعقِّب أمني خفيف الوزن مبني على eBPF ومصمَّم خصيصًا لـ مختبرات تحليل البرامج الضارة. قم بإسقاط عينة في حاوية معزولة، ويلتقط Azazel كل استدعاء نظام، وملف يتم لمسه، واتصال شبكة، وسلوك مشبوه، ثم يمنحك تدفق JSON نظيفًا لكل ما حدث.
سواء كنت تبني مختبر تحليل برامج ضارة آليًا أو تحتاج إلى مراقبة زمنية فورية 24/7 للوكلاء الذكيين المستقلين (AI Agents)، يوفر Azazel قياسًا عن بعد دقيقًا وغير مرئي وجاهزًا للذكاء الاصطناعي بتنسيق JSON.
Usage:
azazel [flags]
azazel [command]
Commands:
run-sandbox تشغيل عينة برنامج ضار في حاوية Docker معزولة وتتبعها
list-containers عرض الحاويات قيد التشغيل
version طباعة الإصدار
Global Flags:
-c, --container strings معرفات الحاوية للتصفية (يمكن تحديد عدة)
-o, --output string مسار ملف الإخراج (الافتراضي: stdout)
--pretty تنسيق JSON للإخراج بشكل جميل
--stdout الطباعة أيضًا على stdout عند تعيين --output
-v, --verbose تسجيل مفصَّل
--no-summary تعطيل الملخص عند الخروج
-h, --help المساعدة

| الفئة | الأحداث | التفاصيل |
|---|---|---|
| عملية | process_exec, process_exit, process_clone | شجرة العمليات الكاملة: اسم الملف، وسيطات argv، رموز الخروج، أعلام clone، معرف العملية الأم |
| ملف | file_open, file_write, file_read, file_unlink, file_rename | أسماء المسارات، الأعلام، عدد البايتات |
| شبكة | net_connect, net_bind, net_listen, net_accept, net_sendto, net_dns | عناوين IPv4/IPv6، المنافذ، كشف DNS عبر kprobe على udp_sendmsg |
| أمن | mmap_exec, ptrace, module_load | تعيينات الذاكرة W+X، محاولات حقن العمليات، تحميل وحدات النواة |
19 نقطة ربط إجمالاً — نقاط التتبع عند دخول استدعاء النظام + kprobe لكشف DNS.
vmlinux.h، يعمل عبر إصدارات النواة دون إعادة ترجمةjq، Elasticsearch، Splunk، أو خط أنابيبك الخاص/tmp، الوصول إلى ملفات حساسة (/etc/shadow، /proc/self/mem)، ptrace، mmap مع W+X، وتحميل وحدات النواةCONFIG_DEBUG_INFO_BTF=yتحقق من نواتك:
# دعم BTF (مطلوب)
ls /sys/kernel/btf/vmlinux
# إصدار kernel
uname -r
# استنساخ
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 # بناء الثنائي
# تتبع كل شيء، الإخراج إلى stdout
sudo ./bin/azazel
# تتبع كل شيء، حفظ إلى ملف مع JSON جميل
sudo ./bin/azazel --output events.json --pretty
# تتبع حاوية معينة فقط
sudo ./bin/azazel --container <container_id> --output events.json
# عرض الحاويات قيد التشغيل
sudo ./bin/azazel list-containers
# داخل حاوية التطوير
make test
يقوم هذا ببناء الثنائي، بدء المتعقب، تشغيل محاكي سلوك البرامج الضارة، ثم التحقق من التقاط جميع أنواع الأحداث المتوقعة.
كل حدث هو سطر JSON واحد (NDJSON):
{
"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"
}
{
"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:
========================================
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.yml المرفق يُنشئ بيئة تحليل كاملة:

# تشغيل المختبر
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 .
# تحليل عينة من البداية إلى النهاية: hash → trace → report
sudo ./analyze.sh ./samples/malware.elf 30
ينتج هذا:
output/events_<timestamp>.json — تدفق الأحداث الخامoutput/report_<timestamp>.md — تقرير بصيغة Markdown مع التجزئة (hashes)، ملخص الأحداث، اتصالات الشبكة، والتنبيهات الأمنيةUsage:
azazel [flags]
azazel [command]
Commands:
list-containers عرض الحاويات قيد التشغيل
version طباعة الإصدار
Flags:
-c, --container strings معرفات الحاوية للتصفية (يمكن تحديد عدة)
-o, --output string مسار ملف الإخراج (الافتراضي: stdout)
--pretty تنسيق JSON للإخراج بشكل جميل
--stdout الطباعة أيضًا على stdout عند تعيين --output
-v, --verbose تسجيل مفصَّل
--no-summary تعطيل الملخص عند الخروج
-h, --help المساعدة