
يكتشف منارات C2 المنظمة بنمط phi التي تتفلت من RITA وأجهزة الكشف القياسية القائمة على الانتظام
اكتشاف C2 منظم غير دوري عبر التكرار الجمعي
يكتشف Beacon Hunter نبضات القيادة والتحكم (C2) التي تستخدم جدولة تكرارية جمعية متوافقة مع فاي (φ) — وهو نمط توقيت متنامٍ وغير دوري حيث يساوي كل فاصل زمني بين الاتصالات تقريبًا مجموع الفاصلين السابقين. تتجنب هذه العائلة أجهزة الكشف القائمة على الانتظام (RITA, AC-Hunter) بشكل مقصود، بينما تبقى قابلة للتحديد بنيويًا عبر اختبار تكرارية ثنائي البوابات.
"لا يحتاج النبض إلى أن يكون دوريًا ليكون منظمًا."

خط أنابيب Beacon Hunter ثنائي البوابات: البوابة 1 تقوم بالتصفية عبر تكتل نسب phi، والبوابة 2 تختبر بنية التكرار الجمعي.
pip install -r requirements.txt
# Run on a Zeek conn.log
python beacon_hunter.py /path/to/conn.log
# Reproduce all paper results
python run_full_evaluation.py --quick # ~2 min, skips full evidence suite
python run_full_evaluation.py # ~5 min, full pipeline
# Run unit tests
pytest tests/
# End-to-end validation (verifies paper claims)
python validate.py
Beacon Hunter هو خط أنابيب ثنائي البوابات يعمل على سجلات اتصالات Zeek.
البوابة 1 — اختبار النسبة
يجمع الاتصالات من نفس زوج المصدر/الوجهة ويحسب النسب المتتالية لفترات ما بين الاتصالات (ICI). ينجح إذا كان متوسط النسبة قريبًا من phi (φ = 1.618) ضمن ±0.20 وكان تباين النسبة (CV) أقل من 0.50. الحد الأدنى: 5 فترات.
البوابة 2 — اختبار التكرار الجمعي
تختبر ما إذا كانت ICI[n+2] ≈ ICI[n+1] + ICI[n] تتحقق عبر كل الثلاثيات المتتالية، باستخدام متوسط الخطأ النسبي مقابل فرضية العدم القائمة على التقليب عبر 500 تكرار. ينجح إذا كان متوسط الخطأ < 0.20 و p < 0.05. ترفض هذه البوابة النمو وفق قانون القوة (المتبقي 0.40) والتراجع الأسي (0.56) اللذين يجتازان البوابة 1 بالمصادفة.
تصنيف التسميات
غلاف القبول: النسب الهندسية في [1.45, 1.80]، تم تأكيدها تجريبيًا عبر مسح حدودي.
beacon_hunter_github/
├── beacon_hunter.py # CLI detector — entry point
├── detectors.py # Pure stateless gate functions (556 lines)
├── validate.py # 32-check end-to-end validation
├── run_full_evaluation.py # One-command reproduction pipeline
├── requirements.txt # Pinned dependencies
├── evidence/
│ ├── evidence_suite.py # All 6 evaluation batteries (Experiments A-J)
│ ├── rita_comparison.py # RITA-style periodicity baseline + real RITA comparison
│ ├── roc_and_ci.py # ROC curve (AUC=0.900) + Wilson CI
│ ├── generate_figures.py # Figures 1-7 (PNG + PDF)
│ └── *.json # Pre-computed results
├── data/
│ ├── pcaps/ # Ground-truth PCAPs (see Dataset Notes below)
│ └── zeek/ # Zeek conn.log files
├── figures/ # fig1-fig8 PNG + PDF (sequential)
├── paper/ # Full paper with appendices A-G
├── reports/ # Beacon Hunter output reports + real RITA v5.1.2 output
├── tests/
│ └── test_detectors.py # 34 unit tests (34/34 pass)
├── tools/
│ ├── fib_beacon_client.py # Fibonacci beacon traffic generator
│ ├── fib_beacon_server.py
│ └── uwf_to_connlog.py # UWF-ZeekData22 parquet → Zeek conn.log converter
└── archive/ # Deprecated scripts (legacy_detectors.py, old scanners)
لتقييم UWF-ZeekData22: نزّله من https://datasets.uwf.edu/data/ وحوّله باستخدام tools/uwf_to_connlog.py.
هذه النتائج مأخوذة من تشغيل Beacon Hunter على حركة مرور مؤسسية حقيقية:
مقارنة RITA v5.1.2 الحقيقية (reports/rita_output_v5.1.2_24h.txt):
تكتشف كلتا الأداتين النبض الدوري المهتز لفترة 30 ثانية. تقيّمه RITA بدرجة 0.617 بخطورة منخفضة ضمن 50 تنبيهًا آخر بخطورة حرجة/عالية. يصنفه Beacon Hunter كـ JITTERED_BEACON. يحصل جدول التكرار الجمعي الخالص على درجة أقل من 0.35 في RITA — مثبت تحليليًا في الملحق A، ومؤكد تجريبيًا.
UWF-ZeekData22 (مليون اتصال مؤسسي حقيقي):
0/12,083 تدفقًا محللًا تم الإبلاغ عنه كـ ADDITIVE_RECURRENCE_BEACON في الأسبوع غير الضار. و0/1,995 في أسبوع هجوم الاستطلاع/الاكتشاف (صحيح — فحوصات المنافذ ليست نبضًا). تم اكتشاف جميع نبضات فيبوناتشي الأربعة المحقونة عند اهتزاز 0–25%.
خلفية Zeek المؤسسية لمدة 24 ساعة:
1/243 تدفقًا محللًا تم الإبلاغ عنه — IPv6 NDP بنسبة 34% وفق قاعدة فرز المحللين، وهو هامشي ويُعزى إلى البروتوكول.
انظر EXPECTED_RESULTS.md للحصول على المخرجات الرقمية الدقيقة المتوقعة.
# Quick verification of all paper claims:
python validate.py
# Full pipeline (generates all outputs from scratch):
python run_full_evaluation.py
# Expected: 32/32 validation checks pass, ROC AUC=0.900, jitter 20%=100% detection
إذا استخدمت هذا العمل، فيرجى الاستشهاد بالورقة المرافقة:
Cordero, A. (2026). Detecting Non-Periodic Structured C2 Beaconing via Additive Recurrence. RepoSignal.io LLC. https://doi.org/10.5281/zenodo.20431555
AGPL-3.0. انظر LICENSE.
الترخيص التجاري متاح عبر RepoSignal.io LLC.
| التسمية | المعنى |
|---|
ADDITIVE_RECURRENCE_BEACON | يجتاز البوابتين — جدولة فترات متنامية متوافقة مع phi |
JITTERED_BEACON | دوري مع اهتزاز — يجتاز بوابة النسبة ويفشل في التكرار |
REGULAR_BEACON | نبض بفاصل ثابت |
BACKGROUND | لم يُكتشف أي بنية نبض |
INSUFFICIENT_DATA | أقل من 5 فترات |
| السكربت | التجارب | المخرجات |
|---|
evidence/evidence_suite.py | A (اصطناعية)، B (PCAP مخبرية)، C (اهتزاز AC)، E (بطارية عدائية)، F (مسح الاهتزاز)، G (حساسية الطول)، H (توزيع العدم)، I (حدود phi)، J (خريطة لوجستية) | evidence_results.json |
evidence/roc_and_ci.py | G.5 (ROC، AUC=0.900)، G (Wilson CI [0.992, 1.000]) | roc_results.json |
evidence/rita_comparison.py | D (مقارنة خط الأساس بأسلوب RITA) | rita_comparison_results.json |
evidence/generate_figures.py | الأشكال 1-7 | figures/fig*.png/pdf |
| الملف | النوع | الوصف |
|---|
data/pcaps/fib_beacon_validation.pcapng | حقيقة أساسية | PCAP نبض فيبوناتشي مولّدة مخبريًا؛ مستخدمة في التجربة B |
data/pcaps/jit_var_d30_j0_1h.pcap | حقيقة أساسية | نبض ثابت لمدة 30 ثانية، 0% اهتزاز، لمدة ساعة واحدة |
data/pcaps/jit_var_d30_j10_1h.pcap | حقيقة أساسية | نبض 30 ثانية، 10% اهتزاز، لمدة ساعة واحدة |
data/pcaps/jit_var_d30_j99_1h.pcap | حقيقة أساسية | نبض 30 ثانية، 99% اهتزاز (ضجيج خالص)، لمدة ساعة واحدة |
data/zeek/delay_var_d30_j25_combined.log | حقيقي + محقون | سجل اتصالات Zeek لمؤسسة لمدة ساعتين مع نبض محقون بفاصل 30 ثانية و25% اهتزاز |
data/zeek/delay_var_d30_j25_24h_combined.log | حقيقي + محقون | نسخة 24 ساعة مما سبق |
reports/rita_output_v5.1.2_24h.txt | مخرجات RITA حقيقية | مخرجات RITA v5.1.2 الثنائية الفعلية على مجموعة بيانات 24 ساعة (تم تسجيل 100 تدفق) |
| التجربة | النتيجة |
|---|
| اكتشاف اصطناعي (تجربة A) | 3/3 فئات نبض صحيحة، 0 إيجابية كاذبة |
| PCAP مخبرية (تجربة B) | ADDITIVE_RECURRENCE_BEACON، rec_err=0.000، p<0.002 |
| مسح الاهتزاز (تجربة F) | اكتشاف 100% حتى 20% اهتزاز؛ انخفاض حاد عند 30% |
| قانون القوة مقابل التراجع الأسي (تجربة E) | المتبقيات 0.40 و0.56 > العتبة 0.20؛ رُفضت بشكل صحيح |
| ROC AUC (تجربة G.5) | 0.900؛ TPR=1.000 عند FPR=0.071 |
| RITA v5.1.2 حقيقية على نبض مهتز | 0.617 خطورة منخفضة (تكتشف كلتا الأداتين؛ تصنيف مختلف) |
| UWF-ZeekData22 (1 مليون تدفق، غير ضار) | 0/12,083 تدفقًا محللًا تم الإبلاغ عنه ARB — 0.00% FPR |
| بطارية الخريطة اللوجستية (تجربة J) | لوجستي خالص: 0% اكتشاف؛ منحاز إلى phi مع ≤20% ضجيج: 100% |
| مسح حدود phi (تجربة I) | تم تأكيد نافذة القبول [1.45, 1.80] |