22 - Pentesting SSH/SFTP
बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाई गई है! आज हमारे साथ शामिल हों https://go.intigriti.com/hacktricks और शुरू करें बाउंटी कमाना जो तक $100,000 तक हो सकता है!
मूल जानकारी
SSH (Secure Shell या Secure Socket Shell) एक नेटवर्क प्रोटोकॉल है जो एक असुरक्षित नेटवर्क पर किसी कंप्यूटर से सुरक्षित कनेक्शन स्थापित करने की संभावना प्रदान करता है। यह दूरस्थ सिस्टम तक पहुंचते समय डेटा की गोपनीयता और अखंडता बनाए रखने के लिए आवश्यक है।
डिफ़ॉल्ट पोर्ट: 22
SSH सर्वर:
openSSH – OpenBSD SSH, BSD, Linux वितरणों और Windows में शिप होता है Windows 10 से
Dropbear – कम मेमोरी और प्रोसेसर संसाधनों वाले वातावरणों के लिए SSH कार्यान्वयन, OpenWrt में शिप होता है
PuTTY – Windows के लिए SSH कार्यान्वयन, क्लाइंट सामान्यत: उपयोग किया जाता है लेकिन सर्वर का उपयोग अधिक दुर्लभ है
CopSSH – Windows के लिए OpenSSH का कार्यान्वयन
SSH पुस्तकालय (सर्वर-साइड कार्यान्वयन करना):
wolfSSH – ANSI C में लिखी गई SSHv2 सर्वर पुस्तकालय जो एम्बेडेड, आरटीओएस, और संसाधन-सीमित वातावरणों के लिए लक्षित है
Apache MINA SSHD – Apache SSHD जावा पुस्तकालय Apache MINA पर आधारित है
paramiko – Python SSHv2 प्रोटोकॉल पुस्तकालय
गणना
बैनर ग्रबिंग
स्वचालित ssh-audit
ssh-audit एक टूल है जो ssh सर्वर और क्लाइंट कॉन्फ़िगरेशन की मान्यता की जांच के लिए है।
https://github.com/jtesta/ssh-audit https://github.com/arthepsy/ssh-audit/ से एक अपडेटेड fork है।
विशेषताएँ:
SSH1 और SSH2 प्रोटोकॉल सर्वर समर्थन;
SSH क्लाइंट कॉन्फ़िगरेशन का विश्लेषण;
बैनर पकड़ें, डिवाइस या सॉफ़्टवेयर और ऑपरेटिंग सिस्टम को पहचानें, संपीड़न का पता लगाएं;
कुंजी-विनिमय, होस्ट-कुंजी, एन्क्रिप्शन और संदेश सत्यापन कोड एल्गोरिदम इकाइयों को इकट्ठा करें;
एल्गोरिदम सूचना उत्पादन (उपलब्ध कब से, हटा दिया गया/अक्षम, असुरक्षित/कमजोर/पुराना, आदि);
एल्गोरिदम सिफारिशें उत्पादन (पहचाने गए सॉफ़्टवेयर संस्करण के आधार पर जोड़ें या हटाएं);
सुरक्षा सूचना उत्पादन (संबंधित मुद्दे, निर्धारित CVE सूची, आदि);
एल्गोरिदम सूचना के आधार पर SSH संस्करण संगतता का विश्लेषण;
OpenSSH, Dropbear SSH और libssh से ऐतिहासिक सूचना;
Linux और Windows पर चलता है;
कोई आवश्यकताएँ नहीं।
सर्वर की सार्वजनिक SSH कुंजी
कमजोर एन्क्रिप्शन एल्गोरिदम
यह डिफ़ॉल्ट रूप से nmap द्वारा पता चलता है। लेकिन आप sslcan या sslyze भी उपयोग कर सकते हैं।
Nmap स्क्रिप्ट
शोडन
ssh
ब्रूट फोर्स उपयोगकर्ता नाम, पासवर्ड और निजी कुंजी
उपयोगकर्ता नाम सूचीकरण
कुछ OpenSSH संस्करणों में आप उपयोगकर्ताओं की सूचीकरण के लिए एक समय आक्रमण बना सकते हैं। आप इसे उत्पादित करने के लिए मेटास्प्लॉइट मॉड्यूल का उपयोग कर सकते हैं:
कुछ सामान्य ssh क्रेडेंशियल्स यहाँ और यहाँ और नीचे।
निजी कुंजी ब्रूट फोर्स
अगर आपको कुछ ssh निजी कुंजी पता है जो उपयोग की जा सकती है... तो इसे प्रयास करें। आप nmap स्क्रिप्ट का उपयोग कर सकते हैं:
या MSF अतिरिक्त मॉड्यूल:
या ssh-keybrute.py
का उपयोग करें (नेटिव पायथन3, हल्का और पुराने एल्गोरिदम सक्षम): snowdroppe/ssh-keybrute.
ssh-keybrute.py
का उपयोग करें (नेटिव पायथन3, हल्का और पुराने एल्गोरिदम सक्षम): snowdroppe/ssh-keybrute.यहाँ ज्ञात बुरी कुंजी मिल सकती है:
कमजोर SSH कुंजी / Debian पूर्वानुमाननीय PRNG
कुछ सिस्टमों में एक्सरिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए गए यादृच्छिक बीज में ज्ञात दोष हो सकते हैं। इससे एक बहुत ही कम कुंजी अंतरिक्ष हो सकता है जिसे ब्रूटफोर्स किया जा सकता है। Debian सिस्टम पर उत्पन्न कमजोर PRNG से प्रभावित सिस्टमों पर पूर्व-उत्पन्न कुंजी के सेट यहाँ उपलब्ध हैं: g0tmi1k/debian-ssh.
आपको यहाँ देखना चाहिए ताकि पीड़ित मशीन के लिए वैध कुंजी खोजें।
केरबेरोस
crackmapexec ssh
प्रोटोकॉल का उपयोग करके --kerberos
विकल्प का उपयोग केरबेरोस के माध्यम से प्रमाणीकरण करने के लिए कर सकता है।
अधिक जानकारी के लिए crackmapexec ssh --help
चलाएं।
डिफ़ॉल्ट क्रेडेंशियल्स
विक्रेता | उपयोगकर्ता नाम | पासवर्ड |
APC | apc, डिवाइस | apc |
Brocade | व्यवस्थापक | admin123, password, brocade, fibranne |
Cisco | व्यवस्थापक, cisco, सक्षम करें, hsa, pix, pnadmin, ripeop, रूट, 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 | रूट, nsroot, nsmaint, vdiadmin, kvm, cli, व्यवस्थापक | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
D-Link | व्यवस्थापक, उपयोगकर्ता | private, admin, user |
Dell | रूट, उपयोगकर्ता1, व्यवस्थापक, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
EMC | व्यवस्थापक, रूट, सिस्टम व्यवस्थापक | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
HP/3Com | व्यवस्थापक, रूट, 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 | व्यवस्थापक, रूट | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
IBM | USERID, व्यवस्थापक, प्रबंधक, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, सिस्टम, डिवाइस, ufmcli, ग्राहक | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
Juniper | netscreen | netscreen |
NetApp | व्यवस्थापक | netapp123 |
Oracle | रूट, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
VMware | vi-admin, रूट, hqadmin, vmware, व्यवस्थापक | vmware, vmw@re, hqadmin, default |
SSH-MitM
यदि आप पीड़ित के रूप में स्थानीय नेटवर्क में हैं जो SSH सर्वर से उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्ट होने जा रहा है, तो आप उन क्रेडेंशियल्स को चुराने के लिए MitM हमला करने की कोशिश कर सकते हैं:
हमले का मार्ग:
ट्रैफिक पुनर्निर्देशन: हमलावादी पीड़ित का ट्रैफिक अपनी मशीन पर भटकाता है, असली तरीके से कनेक्शन प्रयास को बीच में रोकता है SSH सर्वर के लिए।
अंतर्दृष्टि और लॉगिंग: हमलावादी की मशीन एक प्रॉक्सी के रूप में काम करती है, उपयोगकर्ता के लॉगिन विवरणों को पक्षधर करती है और वास्तविक SSH सर्वर के रूप में बनने का दावा करती है।
कमांड निष्पादन और रिले: अंत में, हमलावादी सर्वर उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है, असली SSH सर्वर को कमांड फॉरवर्ड करता है, उन्हें निष्पादित करता है, और परिणाम उपयोगकर्ता को वापस भेजता है, जिससे प्रक्रिया सुगम और वैध लगती है।
SSH MITM उसी काम को करता है जैसा ऊपर वर्णित किया गया है।
वास्तविक MitM को कैप्चर करने के लिए आप ARP स्पूफिंग, DNS स्पूफिंग जैसी तकनीकों का उपयोग कर सकते हैं या नेटवर्क स्पूफिंग हमलों में वर्णित अन्य तकनीकों का उपयोग कर सकते हैं।
SSH-Snake
यदि आप एक नेटवर्क चलाना चाहते हैं जिसमें प्राप्त की गई SSH निजी कुंजियों का उपयोग करके प्रत्येक सिस्टम पर नए होस्ट के लिए प्रत्येक निजी कुंजी का उपयोग करते हैं, तो SSH-Snake आपके लिए है।
SSH-Snake स्वचालित और पुनरावृत्ति करने वाले निम्नलिखित कार्यों को करता है:
वर्तमान सिस्टम पर, किसी भी SSH निजी कुंजियों को खोजें,
वर्तमान सिस्टम पर, उन सभी होस्ट या गंतव्य (उपयोगकर्ता@होस्ट) को खोजें जिन्हें निजी कुंजियाँ स्वीकार की जा सकती हैं,
प्राप्त सभी गंतव्यों में 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 ब्रूट फोर्स
SFTP कमांड निष्पादन
SFTP सेटअप के साथ एक सामान्य अवधारणा होती है, जहां प्रशासक उपयोगकर्त
यहाँ एक सुरक्षित SFTP कॉन्फ़िगरेशन का उदाहरण है (/etc/ssh/sshd_config
- openSSH) उपयोगकर्ता noraj
के लिए:
यह कॉन्फ़िगरेशन केवल SFTP को अनुमति देगा: शेल एक्सेस को बंद करके स्टार्ट कमांड को मजबूर करना और TTY एक्सेस को बंद करना लेकिन सभी प्रकार के पोर्ट फॉरवर्डिंग या टनलिंग को भी बंद करना।
SFTP टनलिंग
यदि आपके पास एक SFTP सर्वर तक पहुंच है तो आप इसके माध्यम से अपना ट्रैफ़िक टनल कर सकते हैं, उदाहरण के लिए सामान्य पोर्ट फॉरवर्डिंग का उपयोग करके।
SFTP सिंलिंक
sftp में "symlink" कमांड होता है। इसलिए, अगर किसी फोल्डर में writable rights हैं, तो आप अन्य फोल्डर/फाइलों के symlinks बना सकते हैं। आप शायद chroot में phase गए हों, इसलिए यह आपके लिए विशेष रूप से उपयोगी नहीं होगा, लेकिन, अगर आप no-chroot सेवा से बनाए गए symlink तक पहुंच सकते हैं (उदाहरण के लिए, अगर आप वेब से symlink तक पहुंच सकते हैं), तो आप वेब के माध्यम से symlinked फाइलों को खोल सकते हैं।
उदाहरण के लिए, एक symlink बनाने के लिए नए फाइल "froot" से "/" की ओर:
प्रमाणीकरण विधियाँ
उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो घटक प्रमाणीकरण को सक्षम करना एक सामान्य अभ्यास है बजाय साधारण घटक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम कर दी जाती हैं बिना कमजोर विधियाँ को निष्क्रिय किये। एक आम मामला है openSSH कॉन्फ़िगरेशन पर publickey
को सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना लेकिन password
को निष्क्रिय न करना। इसलिए SSH क्लाइंट के वर्बोस मोड का उपयोग करके एक हमलावता देख सकता है कि एक कमजोर विधि सक्षम है:
उदाहरण के लिए यदि किसी प्रमाणीकरण विफलता सीमा सेट की गई है और आपको कभी पासवर्ड विधि तक पहुंचने का मौका नहीं मिलता, तो आप PreferredAuthentications
विकल्प का उपयोग करके इस विधि का उपयोग करने के लिए बाध्य कर सकते हैं।
एसएसएच सर्वर कॉन्फ़िगरेशन की समीक्षा करना आवश्यक है ताकि केवल अपेक्षित विधियाँ अधिकृत हों। क्लाइंट पर वर्बोस मोड का उपयोग कॉन्फ़िगरेशन की प्रभावकारिता देखने में मदद कर सकता है।
कॉन्फ़िग फ़ाइलें
Fuzzing
References
आप यहाँ https://www.ssh-audit.com/hardening_guides.html पर SSH को मजबूत बनाने के रोचक गाइड ढूंढ सकते हैं।
बग बाउंटी टिप: Intigriti में साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! हमारे साथ शामिल हों https://go.intigriti.com/hacktricks आज ही, और शुरू करें बाउंटी कमाना तक $100,000 तक!
HackTricks Automatic Commands
Last updated