
यह प्रोजेक्ट यह पता लगाता है कि क्या आधुनिक OpenSSH सूक्ष्म प्रतिक्रिया या समय अंतर के माध्यम से मान्य उपयोगकर्ता नामों को उजागर करता है। CVE-2016-6210 उपयोगकर्ता गणना जांच ( Welch's t-test, Cohen's d, और डिटेक्शन इंजीनियरिंग ) Ubuntu 22.04.5 LTS पर एक नियंत्रित प्रयोगशाला में, यह उन निशानों की भी जांच करता है जो ऐसे प्रयास पीछे छोड़ते हैं और उन्हें कैसे पहचाना जा सकता है।
OpenSSH उपयोगकर्ता नाम गणना का सांख्यिकीय विश्लेषण का उपयोग करके पुनरुत्पादक पुनर्जांच।
यह परियोजना CVE-2016-6210 का पुनर्जांच करती है, जो एक दस्तावेज़ीकृत OpenSSH टाइमिंग साइड-चैनल है, ताकि यह निर्धारित किया जा सके कि यह डिफ़ॉल्ट PAM कॉन्फ़िगरेशन वाले आधुनिक Ubuntu सर्वर पर अभी भी देखने योग्य है या नहीं।
प्रकाशित व्यवहार अभी भी लागू है यह मान लेने के बजाय, परियोजना मैन्युअल प्रोबिंग, Hydra, और Metasploit के माध्यम से एकत्रित प्रमाणीकरण टाइमिंग मापों का मूल्यांकन Welch's t-test और Cohen's d का उपयोग करके करती है ताकि वास्तविक टाइमिंग सिग्नल को माप शोर से अलग किया जा सके।
अध्ययन में परीक्षण किए गए डिफ़ॉल्ट कॉन्फ़िगरेशन पर कोई सांख्यिकीय रूप से महत्वपूर्ण टाइमिंग अंतर नहीं पाया गया, जो प्रकाशित सुरक्षा दावों के पुनरुत्पादक प्रयोग और साक्ष्य-आधारित सत्यापन के मूल्य को प्रदर्शित करता है।
⚠️ कानूनी नोटिस
यह परियोजना पूरी तरह से स्वयं के स्वामित्व वाले, पृथक प्रयोगशाला वातावरण में आयोजित की गई थी। सभी निष्कर्ष केवल परीक्षण किए गए कॉन्फ़िगरेशन पर लागू होते हैं। उन प्रणालियों का कभी परीक्षण न करें जिनके आप स्वामी नहीं हैं या जिनके लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है।
उपयोगकर्ता गणना - वैध क्रेडेंशियल्स के बिना किसी दूरस्थ प्रणाली पर किसी विशिष्ट उपयोगकर्ता नाम के अस्तित्व का निर्धारण करने की क्षमता। यह खाता समझौते की ओर ले जाने वाली आक्रमण श्रृंखला में पहला महत्वपूर्ण कदम है:``` Reconnaissance → [User Enumeration] → Password Attack → Access ↑ This project investigates here
यदि कोई हमलावर सर्वर प्रतिक्रियाओं का विश्लेषण करके "यह उपयोगकर्ता मौजूद है" और "यह उपयोगकर्ता मौजूद नहीं है" में अंतर कर सकता है, तो वे बाद के ब्रूट फोर्स या क्रेडेंशियल स्टफिंग हमलों के लिए कीस्पेस को नाटकीय रूप से कम कर सकते हैं।
SSH एक लगातार लक्ष्य है क्योंकि यह लगभग सार्वभौमिक रूप से उजागर होता है, पासवर्ड प्रमाणीकरण को संभालता है, और पुराने कार्यान्वयनों में मान्य और अमान्य उपयोगकर्ता नामों के बीच मापने योग्य समय अंतर था (CVE-2016-6210)।
**यह जांच दो प्रश्न पूछती है:**
1. क्या Ubuntu 22.04.5 LTS पर डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ आधुनिक OpenSSH उपयोगकर्ता नाम अस्तित्व लीक करता है
प्रतिक्रिया संदेशों, समय, या उपकरण-रिपोर्टेड सिग्नल के माध्यम से?
2. यदि कोई हमलावर फिर भी प्रयास करता है, तो यह क्या कलाकृतियाँ छोड़ता है? और कैसे
विश्वसनीय रूप से उनका पता लगाया जा सकता है?
---
## 🖥️ प्रयोगशाला सेटअप
सभी परीक्षण एक पूरी तरह से पृथक होस्ट-ओनली वर्चुअल नेटवर्क में किए गए
जिसमें कोई इंटरनेट एक्सपोज़र नहीं था।
| मशीन | OS | भूमिका | आईपी | SSH संस्करण |
|----------|---------------------------|-----------------------------------------|------------------|------------------|
| हमलावर | Kali Linux 2024.1 | आक्रामक उपकरण, विश्लेषण स्क्रिप्ट | 192.168.56.5 | — |
| लक्ष्य | Ubuntu Server 22.04.5 LTS | डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ OpenSSH चला रहा है | 192.168.56.10 | OpenSSH 8.9p1 |
**लक्ष्य SSH कॉन्फ़िगरेशन (`/etc/ssh/sshd_config` डिफ़ॉल्ट):**```
PasswordAuthentication yes
UsePAM yes # Key setting — normalises timing via dummy hash
PermitRootLogin prohibit-password
MaxAuthTries 6
LogLevel INFO
UsePAM yes महत्वपूर्ण सुरक्षा सेटिंग है। यह OpenSSH को अस्तित्वहीन उपयोगकर्ताओं के लिए एक नकली bcrypt गणना चलाने के लिए मजबूर करता है, जो वास्तविक पासवर्ड जांच के समय से मेल खाता है। इसे विशेष रूप से CVE-2016-6210 के प्रतिकार के रूप में पेश किया गया था।
प्रत्येक आक्रमण विधि को एक स्वच्छ लॉग स्थिति के साथ एक स्वतंत्र परीक्षण के रूप में चलाया गया था:```bash
sudo truncate -s 0 /var/log/auth.log
sudo cp /var/log/auth.log ~/evidence/trial-N-auth.log
प्रति परीक्षण एकत्रित साक्ष्य:
- टूल stdout/stderr (शब्दशः सहेजा गया)
- लक्ष्य से `/var/log/auth.log`
- `manual_ssh.py` में `time.perf_counter()` के माध्यम से प्रतिक्रिया समय नमूने
- किसी भी प्रमाणीकरण प्रयास से पहले SSH बैनर प्राप्त किया गया
### हमला विधियाँ
| विधि | टूल | शब्दसूची | उद्देश्य |
|-------------------------|--------------------------------------|-------------------------|-------------------------------------------------|
| मैन्युअल SSH | `ssh` CLI + Paramiko | 50 सामान्य उपयोगकर्तानाम | आधार रेखा; कच्चे प्रतिक्रियाओं का निरीक्षण करें |
| हाइड्रा ब्रूट फोर्स | `hydra` | वही 50 | स्वचालित; हाइड्रा के अंतर्निहित एन्यूम मोड का लाभ उठाता है |
| मेटास्प्लॉइट मॉड्यूल | `auxiliary/scanner/ssh/ssh_enumuser` | वही 50 | फ्रेमवर्क का समर्पित गणना मॉड्यूल |
| बैनर फिंगरप्रिंटिंग | कस्टम `BannerFingerprinter` | N/A | बिना-प्रमाणीकरण संस्करण लीक, CVE जांच |
| टाइमिंग विश्लेषण | कस्टम `ResponseAnalyzer` | वैध बनाम अमान्य उपसमुच्चय | सांख्यिकीय साइड-चैनल जांच |
---
## क्या बनाया गया
यह प्रोजेक्ट केवल टूल चलाने से आगे जाता है — यह प्रत्येक हमले और सभी डिटेक्शन लॉजिक को एक संरचित Python कोडबेस में लपेटता है और एक ऑर्केस्ट्रेटर प्रदान करता है जो पूरे पाइपलाइन को एंड-टू-एंड चलाता है।
### हमला उपकरण (`src/attack_tools/`)
**`ManualSSHEnumerator`** — प्रत्येक उपयोगकर्तानाम का `paramiko` के साथ N बार परीक्षण करता है, सटीक समय, परिणाम प्रकार और SSH बैनर रिकॉर्ड करता है। प्रति उपयोगकर्तानाम माध्य/मानक विचलन की गणना करता है। महत्वपूर्ण रूप से, यह प्रयासों के बीच कनेक्शन का **पुन: उपयोग नहीं** करता है, यह सुनिश्चित करते हुए कि प्रत्येक नमूना पूर्ण सर्वर-साइड प्रसंस्करण समय को कैप्चर करता है।
**`BannerFingerprinter`** — रॉ TCP सॉकेट पर SSH बैनर प्राप्त करता है (कोई क्रेडेंशियल्स आवश्यक नहीं)। कार्यान्वयन नाम, संस्करण स्ट्रिंग और OS संकेत को पार्स करता है। एक स्थानीय CVE रजिस्ट्री के विरुद्ध क्रॉस-रेफरेंस देता है। `OpenSSH_8.9p1 Ubuntu-3ubuntu0.6` जैसा संस्करण सटीक सर्वर सॉफ्टवेयर प्रकट करता है — संभावित रूप से किसी भी प्रमाणीकरण का प्रयास करने से पहले ज्ञात कमजोरियों की पहचान करने के लिए पर्याप्त।
**`HydraAutomation`** — हाइड्रा के चारों ओर सबप्रोसेस रैपर। सफल लॉगिन, त्रुटि संदेश और हाइड्रा के स्वयं के गणना निर्णय को निकालने के लिए stdout को पार्स करता है (`does not support user enumeration`)।
**`MetasploitScanner`** — एक अस्थायी संसाधन स्क्रिप्ट लिखता है और सबप्रोसेस के माध्यम से `msfconsole` चलाता है। कठोरीकरण डिटेक्शन और किसी भी पाए गए उपयोगकर्तानाम के लिए आउटपुट पार्स करता है।
### डिटेक्शन उपकरण (`src/detection_tools/`)
**`LogParser`** — रेगेक्स-आधारित auth.log पार्सर जो पाँच SSH घटना प्रकारों का समर्थन करता है: `failed_invalid_user`, `failed_valid_user`, `pre_auth_reject`, `accepted`, `disconnected`। टाइमस्टैम्प, घटना प्रकार, उपयोगकर्तानाम, स्रोत IP और पोर्ट के साथ संरचित घटना dicts लौटाता है।
**`ResponseAnalyzer`** — वैध बनाम अमान्य उपयोगकर्तानाम से समय वितरण पर वेल्च का t-परीक्षण करता है। समय डेल्टा (ms), p-मान, कोहेन का d प्रभाव आकार और सरल भाषा में निष्कर्ष की गणना करता है। सीमा: डेल्टा ≥ 5ms और p < 0.05 साइड-चैनल चेतावनी को ट्रिगर करता है।
**`EnumerationDetector`** — चार डिटेक्शन पैटर्न:
- **त्वरित उपयोगकर्ता जांच**: स्लाइडिंग विंडो - समान IP, 60 सेकंड के भीतर ≥10 विशिष्ट उपयोगकर्तानाम
- **शब्दसूची सहसंबंध**: प्रयासित उपयोगकर्तानाम और ज्ञात हमला सूचियों के बीच मिलान दर
- **अनुक्रमिक समय**: अंतर-प्रयास अंतराल पर भिन्नता का गुणांक (कम CoV → टूल)
- **वितरित जांच**: एकाधिक IP से समान उपयोगकर्तानाम (क्रेडेंशियल स्टफिंग रीकॉन)