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 हमला करने की कोशिश कर सकते हैं:
हमले का मार्ग:
ट्रैफ़िक पुनर्निर्देशन: हमलावर पीड़ित के ट्रैफ़िक को अपनी मशीन पर हस्तांतरित करता है, प्रभावी रूप से SSH सर्वर से कनेक्शन प्रयास को अवरोधित करता है।
हस्तक्षेप और लॉगिंग: हमलावर की मशीन एक प्रॉक्सी के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरण को वैध SSH सर्वर होने का नाटक करके कैप्चर करती है।
कमांड निष्पादन और रिले: अंततः, हमलावर का सर्वर उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है, कमांड को असली SSH सर्वर पर आगे बढ़ाता है, उन्हें निष्पादित करता है, और परिणामों को वापस उपयोगकर्ता को भेजता है, जिससे प्रक्रिया सहज और वैध प्रतीत होती है।
SSH MITM ठीक वही करता है जो ऊपर वर्णित है।
MitM को वास्तविक रूप से कैप्चर करने के लिए आप ARP स्पूफिंग, DNS स्पूफिंग या नेटवर्क स्पूफिंग हमलों में वर्णित अन्य तकनीकों का उपयोग कर सकते हैं।
यदि आप सिस्टम पर खोजे गए 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 "/":
If you can access the file "froot" via web, you will be able to list the root ("/") folder of the system.
उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियों को सक्षम किया जाता है बिना कमजोर विधियों को निष्क्रिय किए। एक सामान्य मामला 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)