
phi-संरचित C2 बीकन का पता लगाता है जो RITA और मानक नियमितता-आधारित डिटेक्टरों से बच जाते हैं।
एडिटिव पुनरावृत्ति के माध्यम से गैर-आवधिक संरचित C2 का पता लगाना
Beacon Hunter उस कमांड-एंड-कंट्रोल बीकनिंग का पता लगाता है जो phi-संगत एडिटिव पुनरावृत्ति अनुसूचन का उपयोग करती है — एक बढ़ता हुआ, गैर-आवधिक टाइमिंग पैटर्न जिसमें प्रत्येक अंतर-कनेक्शन अंतराल लगभग पिछले दो अंतरालों के योग के बराबर होता है। यह परिवार डिज़ाइन द्वारा नियमितता-आधारित डिटेक्टरों (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 इसे 50 अन्य Critical/High अलर्ट्स के बीच 0.617 निम्न गंभीरता पर स्कोर करता है। Beacon Hunter इसे JITTERED_BEACON के रूप में वर्गीकृत करता है। एक शुद्ध एडिटिव पुनरावृत्ति अनुसूचन RITA में 0.35 से नीचे स्कोर करता है — परिशिष्ट A में विश्लेषणात्मक रूप से सिद्ध, अनुभवजन्य रूप से पुष्टि की गई।
UWF-ZeekData22 (1 मिलियन वास्तविक एंटरप्राइज़ कनेक्शन):
बेनाइन सप्ताह पर 0/12,083 विश्लेषित फ़्लो ADDITIVE_RECURRENCE_BEACON के रूप में फ़्लैग किए गए। Recon/Discovery हमले वाले सप्ताह पर 0/1,995 (सही — पोर्ट स्कैन बीकनिंग नहीं हैं)। सभी 4 इंजेक्टेड Fibonacci बीकन 0–25% जिटर पर पहचाने गए।
24-घंटे एंटरप्राइज़ Zeek बैकग्राउंड:
1/243 विश्लेषित फ़्लो फ़्लैग किए गए — 34% विश्लेषक ट्राइएज ह्यूरिस्टिक पर IPv6 NDP, सीमांत और प्रोटोकॉल-जनित।
अपेक्षित सटीक संख्यात्मक आउटपुट के लिए 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 | ग्राउंड ट्रुथ | लैब में निर्मित Fibonacci बीकन PCAP; प्रयोग B में उपयोग किया गया |
data/pcaps/jit_var_d30_j0_1h.pcap | ग्राउंड ट्रुथ | 30 सेकंड स्थिर बीकन, 0% जिटर, 1 घंटा |
data/pcaps/jit_var_d30_j10_1h.pcap | ग्राउंड ट्रुथ | 30 सेकंड बीकन, 10% जिटर, 1 घंटा |
data/pcaps/jit_var_d30_j99_1h.pcap | ग्राउंड ट्रुथ | 30 सेकंड बीकन, 99% जिटर (शुद्ध शोर), 1 घंटा |
data/zeek/delay_var_d30_j25_combined.log | वास्तविक + इंजेक्टेड | इंजेक्टेड 30s+25% जिटर बीकन के साथ 2-घंटे का एंटरप्राइज़ Zeek conn.log |
data/zeek/delay_var_d30_j25_24h_combined.log | वास्तविक + इंजेक्टेड | उपरोक्त का 24-घंटे का संस्करण |
reports/rita_output_v5.1.2_24h.txt | वास्तविक RITA आउटपुट | 24h डेटासेट पर वास्तविक RITA v5.1.2 बाइनरी आउटपुट (100 फ़्लो स्कोर किए गए) |
| प्रयोग | परिणाम |
|---|
| सिंथेटिक पहचान (प्रयोग A) | 3/3 बीकन श्रेणियाँ सही, 0 FP |
| लैब PCAP (प्रयोग B) | ADDITIVE_RECURRENCE_BEACON, rec_err=0.000, p<0.002 |
| जिटर स्वीप (प्रयोग F) | 20% जिटर तक 100% पहचान; 30% पर क्लिफ |
| पावर लॉ बनाम एक्सप बैकऑफ (प्रयोग E) | अवशिष्ट 0.40 और 0.56 > थ्रेशोल्ड 0.20; सही ढंग से अस्वीकृत |
| ROC AUC (प्रयोग G.5) | 0.900; FPR=0.071 पर TPR=1.000 |
| जिटर किए गए बीकन पर वास्तविक RITA v5.1.2 | 0.617 निम्न गंभीरता (दोनों उपकरण पता लगाते हैं; अलग वर्गीकरण) |
| UWF-ZeekData22 (1M फ़्लो, बेनाइन) | 0/12,083 विश्लेषित फ़्लो ARB फ़्लैग किए गए — 0.00% FPR |
| लॉजिस्टिक मैप बैटरी (प्रयोग J) | शुद्ध लॉजिस्टिक: 0% पहचान; phi-पक्षपाती ≤20% शोर: 100% |
| Phi सीमा स्वीप (प्रयोग I) | स्वीकृति विंडो [1.45, 1.80] की पुष्टि हुई |