22 - Pentesting SSH/SFTP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
SSH (सिक्योर शेल या सिक्योर सॉकेट शेल) एक नेटवर्क प्रोटोकॉल है जो एक असुरक्षित नेटवर्क के माध्यम से कंप्यूटर से सुरक्षित कनेक्शन सक्षम करता है। यह दूरस्थ सिस्टम तक पहुँचने पर डेटा की गोपनीयता और अखंडता बनाए रखने के लिए आवश्यक है।
डिफ़ॉल्ट पोर्ट: 22
SSH servers:
openSSH – OpenBSD SSH, BSD, Linux वितरणों और Windows 10 से Windows में शामिल
Dropbear – कम मेमोरी और प्रोसेसर संसाधनों वाले वातावरण के लिए SSH कार्यान्वयन, OpenWrt में शामिल
PuTTY – Windows के लिए SSH कार्यान्वयन, क्लाइंट सामान्यतः उपयोग किया जाता है लेकिन सर्वर का उपयोग कम होता है
CopSSH – Windows के लिए OpenSSH का कार्यान्वयन
SSH libraries (implementing server-side):
wolfSSH – ANSI C में लिखा गया SSHv2 सर्वर पुस्तकालय जो एम्बेडेड, RTOS, और संसाधन-सीमित वातावरण के लिए लक्षित है
Apache MINA SSHD – Apache SSHD जावा पुस्तकालय Apache MINA पर आधारित है
paramiko – Python SSHv2 प्रोटोकॉल पुस्तकालय
ssh-audit एक उपकरण है जो ssh सर्वर और क्लाइंट कॉन्फ़िगरेशन ऑडिटिंग के लिए है।
https://github.com/jtesta/ssh-audit एक अपडेटेड फोर्क है https://github.com/arthepsy/ssh-audit/
विशेषताएँ:
SSH1 और SSH2 प्रोटोकॉल सर्वर समर्थन;
SSH क्लाइंट कॉन्फ़िगरेशन का विश्लेषण करें;
बैनर प्राप्त करें, डिवाइस या सॉफ़्टवेयर और ऑपरेटिंग सिस्टम को पहचानें, संकुचन का पता लगाएं;
कुंजी-परिवर्तन, होस्ट-कुंजी, एन्क्रिप्शन और संदेश प्रमाणीकरण कोड एल्गोरिदम एकत्र करें;
एल्गोरिदम जानकारी आउटपुट करें (उपलब्धता से, हटा/अक्षम, असुरक्षित/कमजोर/पुराना, आदि);
एल्गोरिदम सिफारिशें आउटपुट करें (पहचाने गए सॉफ़्टवेयर संस्करण के आधार पर जोड़ें या हटाएं);
सुरक्षा जानकारी आउटपुट करें (संबंधित मुद्दे, असाइन किए गए CVE सूची, आदि);
एल्गोरिदम जानकारी के आधार पर SSH संस्करण संगतता का विश्लेषण करें;
OpenSSH, Dropbear SSH और libssh से ऐतिहासिक जानकारी;
Linux और Windows पर चलता है;
कोई निर्भरताएँ नहीं
यह nmap द्वारा डिफ़ॉल्ट रूप से खोजा जाता है। लेकिन आप sslcan या sslyze का भी उपयोग कर सकते हैं।
ssh
OpenSSH के कुछ संस्करणों में आप उपयोगकर्ताओं की गणना करने के लिए एक टाइमिंग अटैक कर सकते हैं। आप इसे शोषण करने के लिए एक मेटास्प्लॉइट मॉड्यूल का उपयोग कर सकते हैं:
कुछ सामान्य ssh क्रेडेंशियल यहाँ और यहाँ और नीचे।
यदि आप कुछ ssh प्राइवेट की जानते हैं जो उपयोग की जा सकती हैं... चलो इसे आजमाते हैं। आप nmap स्क्रिप्ट का उपयोग कर सकते हैं:
या MSF सहायक मॉड्यूल:
Or use ssh-keybrute.py
(native python3, lightweight and has legacy algorithms enabled): snowdroppe/ssh-keybrute.
कुछ सिस्टम में क्रिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले रैंडम सीड में ज्ञात दोष होते हैं। इससे कुंजी स्थान में नाटकीय रूप से कमी आ सकती है जिसे ब्रूटफोर्स किया जा सकता है। कमजोर PRNG से प्रभावित डेबियन सिस्टम पर उत्पन्न पूर्व-निर्मित कुंजी सेट यहाँ उपलब्ध हैं: g0tmi1k/debian-ssh.
आपको पीड़ित मशीन के लिए वैध कुंजी खोजने के लिए यहाँ देखना चाहिए।
crackmapexec ssh
प्रोटोकॉल का उपयोग करते हुए kerberos के माध्यम से प्रमाणित करने के लिए --kerberos
विकल्प का उपयोग कर सकता है।
अधिक जानकारी के लिए crackmapexec ssh --help
चलाएँ।
Vendor
Usernames
Passwords
APC
apc, device
apc
Brocade
admin
admin123, password, brocade, fibranne
Cisco
admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin
admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme
Citrix
root, nsroot, nsmaint, vdiadmin, kvm, cli, admin
C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler
D-Link
admin, user
private, admin, user
Dell
root, user1, admin, vkernel, cli
calvin, 123456, password, vkernel, Stor@ge!, admin
EMC
admin, root, sysadmin
EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc
HP/3Com
admin, root, vcx, app, spvar, manage, hpsupport, opc_op
admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin
Huawei
admin, root
123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123
IBM
USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer
PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer
Juniper
netscreen
netscreen
NetApp
admin
netapp123
Oracle
root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user
changeme, ilom-admin, ilom-operator, welcome1, oracle
VMware
vi-admin, root, hqadmin, vmware, admin
vmware, vmw@re, hqadmin, default
यदि आप स्थानीय नेटवर्क में हैं जैसे कि पीड़ित जो उपयोगकर्ता नाम और पासवर्ड का उपयोग करके SSH सर्वर से कनेक्ट होने जा रहा है, तो आप उन क्रेडेंशियल्स को चुराने के लिए एक MitM हमला करने की कोशिश कर सकते हैं:
Attack path:
Traffic Redirection: हमलावर पीड़ित के ट्रैफ़िक को अपनी मशीन पर हस्तांतरित करता है, प्रभावी रूप से SSH सर्वर से कनेक्शन प्रयास को अवरोधित करता है।
Interception and Logging: हमलावर की मशीन एक प्रॉक्सी के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरणों को वैध SSH सर्वर होने का नाटक करके कैप्चर करती है।
Command Execution and Relay: अंततः, हमलावर का सर्वर उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है, कमांड को असली SSH सर्वर पर फॉरवर्ड करता है, उन्हें निष्पादित करता है, और परिणामों को वापस उपयोगकर्ता को भेजता है, जिससे प्रक्रिया सहज और वैध प्रतीत होती है।
SSH MITM ठीक वही करता है जो ऊपर वर्णित है।
MitM को वास्तविक रूप से कैप्चर करने के लिए आप ARP स्पूफिंग, DNS स्पूफिंग या Network Spoofing attacks में वर्णित अन्य तकनीकों का उपयोग कर सकते हैं।
यदि आप सिस्टम पर खोजे गए SSH निजी कुंजियों का उपयोग करके नेटवर्क को पार करना चाहते हैं, प्रत्येक सिस्टम पर प्रत्येक निजी कुंजी का उपयोग करके नए होस्ट के लिए, तो SSH-Snake वही है जिसकी आपको आवश्यकता है।
SSH-Snake निम्नलिखित कार्यों को स्वचालित और पुनरावृत्त रूप से करता है:
वर्तमान सिस्टम पर, किसी भी SSH निजी कुंजी को खोजें,
वर्तमान सिस्टम पर, किसी भी होस्ट या गंतव्यों (user@host) को खोजें जिन्हें निजी कुंजी स्वीकार की जा सकती हैं,
खोजी गई सभी निजी कुंजियों का उपयोग करके सभी गंतव्यों में SSH करने का प्रयास करें,
यदि किसी गंतव्य से सफलतापूर्वक कनेक्ट किया गया है, तो जुड़े हुए सिस्टम पर चरण #1 - #4 को दोहराएं।
यह पूरी तरह से आत्म-प्रतिकृति और आत्म-प्रसार करने वाला है -- और पूरी तरह से फ़ाइल रहित है।
यह सामान्य है कि SSH सर्वर डिफ़ॉल्ट रूप से रूट उपयोगकर्ता लॉगिन की अनुमति देते हैं, जो एक महत्वपूर्ण सुरक्षा जोखिम प्रस्तुत करता है। रूट लॉगिन को अक्षम करना सर्वर को सुरक्षित करने में एक महत्वपूर्ण कदम है। प्रशासनिक विशेषाधिकारों के साथ अनधिकृत पहुंच और ब्रूट फोर्स हमलों को इस परिवर्तन के द्वारा कम किया जा सकता है।
OpenSSH में रूट लॉगिन को अक्षम करने के लिए:
SSH कॉन्फ़िग फ़ाइल को संपादित करें: sudoedit /etc/ssh/sshd_config
सेटिंग को बदलें: #PermitRootLogin yes
से PermitRootLogin no
।
कॉन्फ़िगरेशन को फिर से लोड करें: sudo systemctl daemon-reload
परिवर्तनों को लागू करने के लिए SSH सर्वर को पुनः प्रारंभ करें: sudo systemctl restart sshd
SFTP सेटअप के साथ एक सामान्य चूक होती है, जहां व्यवस्थापक उपयोगकर्ताओं को बिना दूरस्थ शेल पहुंच के फ़ाइलों का आदान-प्रदान करने का इरादा रखते हैं। उपयोगकर्ताओं को गैर-इंटरैक्टिव शेल (जैसे, /usr/bin/nologin
) के साथ सेट करने और उन्हें एक विशिष्ट निर्देशिका में सीमित करने के बावजूद, एक सुरक्षा छिद्र बना रहता है। उपयोगकर्ता इन प्रतिबंधों को दरकिनार कर सकते हैं लॉगिन के तुरंत बाद एक कमांड (जैसे /bin/bash
) निष्पादित करने का अनुरोध करके, इससे पहले कि उनका निर्दिष्ट गैर-इंटरैक्टिव शेल नियंत्रण ले ले। यह अनधिकृत कमांड निष्पादन की अनुमति देता है, जो इच्छित सुरक्षा उपायों को कमजोर करता है।
यहाँ उपयोगकर्ता noraj
के लिए सुरक्षित SFTP कॉन्फ़िगरेशन का एक उदाहरण है (/etc/ssh/sshd_config
– openSSH):
यह कॉन्फ़िगरेशन केवल SFTP की अनुमति देगा: स्टार्ट कमांड को मजबूर करके शेल एक्सेस को अक्षम करना और TTY एक्सेस को अक्षम करना, लेकिन सभी प्रकार के पोर्ट फॉरवर्डिंग या टनलिंग को भी अक्षम करना।
यदि आपके पास SFTP सर्वर तक पहुंच है, तो आप उदाहरण के लिए सामान्य पोर्ट फॉरवर्डिंग का उपयोग करके अपने ट्रैफ़िक को इसके माध्यम से टनल कर सकते हैं:
The sftp have the command "symlink". Therefore, if you have writable rights in some folder, you can create symlinks of other folders/files. As you are probably trapped inside a chroot this won't be specially useful for you, but, if you can access the created symlink from a no-chroot service (for example, if you can access the symlink from the web), you could open the symlinked files through the web.
For example, to create a symlink from a new file "froot" to "/":
यदि आप "froot" फ़ाइल को वेब के माध्यम से एक्सेस कर सकते हैं, तो आप सिस्टम के रूट ("/") फ़ोल्डर को सूचीबद्ध कर सकेंगे।
उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम की जाती हैं बिना कमजोर विधियों को निष्क्रिय किए। एक सामान्य मामला publickey
को openSSH कॉन्फ़िगरेशन में सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना है लेकिन password
को निष्क्रिय नहीं करना। इसलिए SSH क्लाइंट के विस्तृत मोड का उपयोग करके एक हमलावर देख सकता है कि एक कमजोर विधि सक्षम है:
उदाहरण के लिए, यदि प्रमाणीकरण विफलता सीमा निर्धारित की गई है और आपको पासवर्ड विधि तक पहुँचने का मौका नहीं मिलता है, तो आप इस विधि का उपयोग करने के लिए PreferredAuthentications
विकल्प का उपयोग कर सकते हैं।
SSH सर्वर कॉन्फ़िगरेशन की समीक्षा करना आवश्यक है कि केवल अपेक्षित विधियाँ अधिकृत हैं। क्लाइंट पर विस्तृत मोड का उपयोग करने से कॉन्फ़िगरेशन की प्रभावशीलता को देखना आसान हो सकता है।
आप SSH को मजबूत करने के लिए दिलचस्प गाइड https://www.ssh-audit.com/hardening_guides.html पर पा सकते हैं
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)