
मशीन लर्निंग के साथ रिवर्स शेल डिटेक्शन
दिमित्रियस ट्रिज़ना · लूका डेमेट्रियो · बैटिस्टा बिगियो · फैबियो रोली
लिनक्स लिविंग-ऑफ-द-लैंड (LOTL) रिवर्स शेल वैध बाइनरीज़ (bash, python, nc, …) का दुरुपयोग करके गुप्त आउटबाउंड कनेक्शन स्थापित करते हैं, जिससे हस्ताक्षर-आधारित पहचान नए वेरिएंट और बचाव के प्रयासों के विरुद्ध अविश्वसनीय हो जाती है। QuasarNix क्षेत्र में दो खुले अंतरालों को संबोधित करता है:
यह ढाँचा 34 रिवर्स-शेल टेम्पलेट्स से 1M-कमांड प्रशिक्षण कोष का संश्लेषण करता है और FPR = 10⁻⁶ के संचालन बिंदु पर 14 मॉडल आर्किटेक्चर का मूल्यांकन करता है — वास्तविक SIEM अलर्ट थकान बाधाओं को दर्शाता है।
धारित-बाह्य परीक्षण सेट पर प्रदर्शन, आधारभूत अनुमानों और QuasarNix आर्किटेक्चर पर। TPR को FPR = 10⁻⁶ पर दस स्वतंत्र प्रशिक्षण रनों में माध्य ± मानक विचलन के रूप में रिपोर्ट किया गया है। बोल्ड सर्वोत्तम परिणाम दर्शाता है; तारांकन (*) पेपर में चर्चित मॉडलों को उजागर करता है।
मुख्य निष्कर्ष: GBDT FPR = 10⁻⁶ पर 60% TPR प्राप्त करता है — हस्ताक्षरों (3.37%) से 18 गुना अधिक — जबकि सामान्य हार्डवेयर पर 14 सेकंड में प्रशिक्षण लेता है।
नीचे दी गई तालिका हमलावर के टूलकिट से लिनक्स शेल एस्केप तकनीकों को सूचीबद्ध करती है। तीसरा कॉलम इंगित करता है कि क्या तकनीक auditd कर्नेल टेलीमेट्री सामान्यीकरण से बच जाती है — केवल चार बोल्ड प्रविष्टियाँ एक अलग EXECVE रिकॉर्ड उत्पन्न करती हैं और वास्तविक हमले की सतह का गठन करती हैं।
केवल 15 में से 4 तकनीकें कर्नेल-स्तरीय सामान्यीकरण से बचती हैं और विरोधी हमले के स्थान के रूप में उपयोग की जाती हैं।
तीन हमला परिवारों का मूल्यांकन किया जाता है — सौम्य सामग्री इंजेक्शन, शेल एस्केप विचलन, और दोनों का हाइब्रिड:
अनुमान-समय बचाव से परे, हम प्रशिक्षण-समय हमलों का मूल्यांकन करते हैं:
लेबल-फ़्लिपिंग प्रदूषण (0–20% प्रशिक्षण लेबल फ़्लिप): मॉडल धीरे-धीरे ख़राब होते हैं; GBDT एन्सेम्बल वोटिंग के माध्यम से अंतर्निहित प्रतिरोध दिखाता है, उच्च प्रदूषण अनुपात पर कार्यात्मक रहता है।
बैकडोर हमला (0.01–1% विष अनुपात, 2–10 टोकन ट्रिगर): छोटे ट्रिगर (2–4 टोकन) सौम्य ट्रैफ़िक में उनकी प्रचुरता के कारण विश्वसनीय बैकडोर स्थापित करने में विफल होते हैं। इष्टतम बैकडोर स्थापना के लिए ≥0.03% विष अनुपात पर 6–10 टोकन ट्रिगर की आवश्यकता होती है।
मुख्य निष्कर्ष: विषाक्तता हमलों को सफल होने के लिए पर्याप्त, सांख्यिकीय रूप से पता लगाने योग्य डेटा इंजेक्शन की आवश्यकता होती है। GBDT का एन्सेम्बल तंत्र बिना किसी विरोधी-प्रशिक्षण लागत के अंतर्निहित मजबूती प्रदान करता है।
इस कार्य के जारी होने के बाद, Google ने CAMLIS 2025 (arXiv:2512.08802) में एक अवधारणात्मक रूप से संरेखित उत्पादन प्रणाली प्रकाशित की: एक दो-चरणीय YARA + ML पाइपलाइन जो हजारों सिस्टमों में तैनात है, प्रति दिन 250 बिलियन घटनाओं तक प्रसंस्करण करती है। वह प्रणाली स्वतंत्र रूप से यहाँ प्रस्तावित हाइब्रिड ML-for-SIEM-डिटेक्शन प्रतिमान और सक्रिय शिक्षण फीडबैक लूप को मान्य करती है, औद्योगिक पैमाने पर इसकी व्यवहार्यता प्रदर्शित करती है।
| संसाधन | लिंक | विवरण |
|---|---|---|
| डेटासेट | dtrizna/QuasarNix | 1,003,122 कमांड · प्रशिक्षण 533k / परीक्षण 470k · Apache-2.0 |
| पूर्व-प्रशिक्षित मॉडल | dtrizna/QuasarNix | GBDT, Random Forest, MLP, 1D-CNN, … |
from datasets import load_dataset
ds = load_dataset("dtrizna/QuasarNix")
src/
augmentation.py नियम-आधारित और जनरेटिव डेटा संश्लेषण
evasion.py श्वेत-बक्स / काला-बक्स विरोधी हमले
models.py मॉडल परिभाषाएँ (CNN, LSTM, Transformer, XGBoost, …)
preprocessors.py टोकनाइज़र और फीचर निर्माता
scoring.py निश्चित FPR पर मूल्यांकन मीट्रिक
experiments/
ablation_*.py उच्छेदन अध्ययन (टोकनाइज़र, शब्दावली आकार, एम्बेडिंग)
adversarial_*.py हमला और विरोधी-प्रशिक्षण पाइपलाइन
train_release_models.py एंड-टू-एंड प्रशिक्षण स्क्रिप्ट
logs_*/ TensorBoard रन, CSV मीट्रिक, मॉडल चेकपॉइंट
data/
signatures/ विकासवादी खोज द्वारा उत्पन्न सिग्मा नियम
nix_shell/ कच्चा वैध कमांड कोष
powershell/ क्रॉस-प्लेटफ़ॉर्म कमांड नमूने
img/ प्रकाशन-तैयार प्लॉट
uv venv # .venv बनाता है (विशिष्ट दुभाषिया के लिए --python 3.11 जोड़ें)
source .venv/bin/activate
uv sync # pyproject.toml से निर्भरताएँ स्थापित करता है
@article{trizna2025quasarnix,
author = {Trizna, Dmitrijs and Demetrio, Luca and Biggio, Battista and Roli, Fabio},
title = {Robust Large-Scale Detection of Living-Off-the-Land Reverse Shells via Data Synthesis},
journal = {ACM Transactions on Privacy and Security},
year = {2025},
doi = {10.1145/3807450},
url = {https://dl.acm.org/doi/10.1145/3807450}
}
| Architecture | Params | TPR @ FPR=10⁻⁶ | F1 | Accuracy | AUC | Training |
|---|
| Signatures (Sigma) | 184 | 3.37% | 6.52% | 51.68% | 51.68% | N/A |
| One-Class SVM (on legit) | 1K | 0.00% | 82.87% | 79.33% | 79.33% | 10s |
| One-Class SVM (on malicious) | 1K | 0.00% | 40.14% | 25.20% | 25.20% | 10s |
| 1D-CNN (non-aug., imbalanced) | 1K | 0.00% | 80.29% | 77.91% | 87.44%* | 15m |
| 1D-CNN (non-aug., balanced) | 1K | 0.06% | 82.38% | 79.33% | 88.12%* | 29m |
| SLP (non-aug.) | 1K | 0.00% | 0.00% | 50.00% | 91.58% | 1h 12m |
| Architecture | Params | TPR @ FPR=10⁻⁶ | F1 | Accuracy | AUC | Training |
|---|
| Random Forest | 1K | 42.23 ± 6.27% | 96.07% | 96.21% | 99.84% | 18s |
| GBDT (XGBoost) | 1K | 60.20 ± 8.22% | 89.92% | 90.84% | 99.89% | 14s |
| MLP (No Embedding) | 264K | 54.16 ± 2.14%* | 94.00% | 94.34% | 99.80% | 18m |
| Architecture | Params | TPR @ FPR=10⁻⁶ | F1 | Accuracy | AUC | Training |
|---|
| MLP (Embedding) | 297K | 10.76 ± 17.32% | 67.70% | 75.60% | 89.15% | 18m |
| LSTM | 318K | 21.52 ± 23.66% | 64.16% | 74.05% | 99.75% | 24m |
| 1D-CNN | 301K | 46.42 ± 32.67%* | 85.97% | 88.20% | 99.99% | 29m |
| 1D-CNN + LSTM | 316K | 20.48 ± 22.08% | 58.92% | 71.06% | 98.21% | 29m |
| 1D-CNN + LSTM + Attention | 402K | 17.19 ± 22.59% | 62.53% | 73.08% | 98.46% | 26m |
| Transformer (Mean Pooling) | 335K | 0.00 ± 0.00% | 83.39% | 86.07% | 98.78% | 1h 18m |
| Transformer (CLS Token) | 335K | 0.00 ± 0.00% | 78.55%* | 82.67% | 99.38% | 1h 30m |
| Transformer (Attn. Pooling) | 335K | 0.00 ± 0.00% | 87.82% | 89.41% | 98.85% | 1h 24m |
| हेरफेर | कार्यात्मक उदाहरण | auditd द्वारा संरक्षित |
|---|
' | ba's'h -i | नहीं |
" | ba"s"h -i | नहीं |
\ | ba\s\h -i | नहीं |
$@ | ba$@sh -i | नहीं |
[char] | ba[s]h -i | नहीं |
{form} | {bash,-i} | नहीं |
| IFS variable | bash${IFS}-i | नहीं |
| Empty variable | bas${u}h -i | नहीं |
| Fake command | bas$(u)h -i | नहीं |
| Base64 | echo c2ggLWk= | base64 -d | sh | नहीं |
| Hex | echo \x73\x68 \x20\x2d\x69 | sh | नहीं |
| फ़्लैग छेड़छाड़ | bash -x -li | हाँ |
| दशमलव IP | ping 2130706433 | हाँ |
| बाइनरी नाम बदलना | cp bash a; a -i | हाँ |
| व्यर्थ कोड | mkfifo a; id; cat a | हाँ |