
TrustedSec Attack Platform किसी संगठन से स्थापित कनेक्शन सुनिश्चित करने के लिए इंफ्रास्ट्रक्चर पर ड्रॉपर्स का एक विश्वसनीय तरीका है।
TAP - रिमोट पेनेट्रेशन टेस्टिंग प्लेटफ़ॉर्म बिल्डर।
लेखक: David Kennedy @HackingDave
कंपनी: TrustedSec (https://www.trustedsec.com)
प्रोजेक्ट पेज: https://github.com/trustedsec/tap
एक TrustedSec प्रोजेक्ट - कॉपीराइट 2020
समर्थित ऑपरेटिंग सिस्टम: Linux (Ubuntu Linux पसंदीदा)
TAP एक रिमोट पेनेट्रेशन टेस्टिंग प्लेटफ़ॉर्म बिल्डर है। सुरक्षा उद्योग के लोगों के लिए, यात्रा अक्सर एक बोझ बन जाती है और ग्राहक के लिए भारी लागत जोड़ती है। TAP को इन बॉक्सों की तैनाती को बेहद सरल बनाने और रिमोट पेनेट्रेशन टेस्टिंग प्लेटफ़ॉर्म तैनात करने के लिए एक सेल्फ-हीलिंग और स्थिर प्लेटफ़ॉर्म बनाने के लिए डिज़ाइन किया गया था। मूल रूप से अवधारणा सरल है, आप एक नया बॉक्स पहले से कॉन्फ़िगर करते हैं और TAP सेटअप फ़ाइल चलाते हैं। यह Linux पर एक सेवा स्थापित करेगा जिसे आप जिस तरह चाहें कॉन्फ़िगर किया जाएगा। यह जो करेगा वह आपके लिए इंटरनेट पर उपलब्ध एक मशीन के लिए रिवर्स SSH टनल स्थापित करना है। वहाँ से आप उस सर्वर से बॉक्स को स्थानीय रूप से एक्सेस कर सकते हैं जिससे वह वापस जुड़ता है। TAP स्वचालित रूप से पता लगाता है कि SSH कनेक्शन कब बासी हो गया है और आपके लिए स्वचालित रूप से इसे फिर से बनाएगा।
इसमें कई अन्य विकल्प भी हैं, उदाहरण के लिए, यदि आप SSH खो देते हैं, तो यह एक टेक्स्ट फ़ाइल से जुड़ेगा और आपके लिए कमांड निष्पादित करेगा। साथ ही यह खुद को लगातार अपडेट करता है और यह सुनिश्चित करता है कि आप Ubuntu Linux के लिए नवीनतम पैकेज चला रहे हैं (यदि वह आपका OS है)।
python setup.py - This will install TAP.
TAP को अनइंस्टॉल करने के लिए:
python setup.py - This will uninstall TAP.
TAP सेट करते समय, आपके मन में जो प्रश्न हो सकते हैं वह REMOTE ssh सर्वर है, यह एक बाहरी बॉक्स होगा जिसमें SSH एक्सपोज़्ड होगा। यह वह बॉक्स होगा जिससे आप TAP मशीन को वापस जोड़ना चाहते हैं, वह मशीन जो आपके पास इंटरनेट पर कनेक्शन की प्रतीक्षा कर रही है। रूट का उपयोग करने की अनुशंसा नहीं की जाती है क्योंकि यह एक सुरक्षा चूक है। SSH टनल स्थापित करने के लिए एक सामान्य उपयोगकर्ता का उपयोग करें। अभी यह केवल पासवर्ड है, हालाँकि बाद में हम SSH कुंजियों के लिए समर्थन जोड़ेंगे। पासवर्ड AES का उपयोग करके संग्रहीत किया जाता है, हालाँकि सिफर कुंजी भंडारण इस समय असुरक्षित है। बॉक्स तक बना-बनाया एक्सेस रखने वाला कोई व्यक्ति सिफर कुंजी पकड़ सकता है और पर्याप्त समय और दृढ़ता के साथ कॉन्फ़िग में पासवर्ड डिक्रिप्ट कर सकता है। इसे बाद के रिलीज़ में ठीक किया जाएगा।
दूसरा LOCAL पोर्ट है जो REMOTE बॉक्स पर होगा। जब TAP रिवर्स SSH के माध्यम से वापस जुड़ता है, तो यह REMOTE बॉक्स से जुड़ता है और मशीन पर एक स्थानीय पोर्ट स्थापित करता है। जब आप इंटरनेट पर रिमोट बॉक्स पर SSH करते हैं, तो आप ssh user@localhost -p <LOCAL PORT> करना चाहेंगे। यह वह पोर्ट होगा जिसे TAP REMOTE सिस्टम पर बाइंड करता है ताकि आप इसे एक्सेस कर सकें।
एक बार जब आप इसे कॉन्फ़िगर कर लेते हैं, TAP के पास एक डिफ़ॉल्ट पथ होता है जहाँ से यह अपडेट खींचता है, आप इसे अपने स्वयं के अपडेट पथ में बदल सकते हैं। मैंने जानबूझकर इसे github से दूर रखा है ताकि आप अनुमोदित अपडेट के लिए जो चाहें निर्दिष्ट कर सकें।
अगला, आप TAP को कमांड भेज सकते हैं, यह हर दो मिनट में नए निर्देशों की जाँच करता है। आपको एक पथ निर्दिष्ट करने की आवश्यकता है, उदाहरण के लिए:
https://websiteurl/commands.txt
TAP हर दो मिनट में नए कमांड की तलाश में उस पथ की जाँच करेगा, ध्यान दें कि यह अगला भाग महत्वपूर्ण है। टेक्स्ट फ़ाइल की पहली पंक्ति में "EXECUTE COMMAND" होना चाहिए (डबल कोट्स के बिना)। एक बार TAP इसे पहचान लेता है, यह जाँच करेगा कि कमांड पहले निष्पादित हुआ था या नहीं और यदि नहीं, तो यह कमांड को पंक्ति दर पंक्ति निष्पादित करेगा। यह तब उपयोगी है जब आप TAP से कनेक्शन खो देते हैं और इसे ठीक करने के लिए कमांड निष्पादित करने की आवश्यकता होती है।
एक बार जब आप सेटअप चलाते हैं, तो यह फ़ाइलों को /usr/share/tap में स्थापित करेगा। यदि आप निर्दिष्ट करते हैं तो यह स्वचालित रूप से शुरू होगा, और स्वचालित रूप से Debian अपडेट, TAP अपडेट आदि जैसे अपडेट की जाँच करेगा।
यदि आप Debian का उपयोग कर रहे हैं तो आपको अपडेट सर्वरों के साथ-साथ अपने REMOTE बॉक्स को भी व्हाइटलिस्ट करना चाहिए, जिससे आप वापस जुड़ते हैं।
बस इतना ही!
यदि आप SSH कुंजियों का उपयोग नहीं करने और पासवर्ड का उपयोग करने का निर्णय लेते हैं, तो कॉन्फ़िग इसे AES प्रारूप में संग्रहीत करता है (python-pycrypto की आवश्यकता है)। यदि आपको पासवर्ड अपडेट करने की आवश्यकता है, तो scripts निर्देशिका पर जाएं जिसमें एन्क्रिप्टेड पासवर्ड को अपडेट करने और एक नई डायनामिक सिफर कुंजी बनाने के लिए update-password स्क्रिप्ट है।
इसके अलावा एक अच्छी ट्रिक, एक बार जब आप वहाँ पहुँच जाते हैं, तो एक छोटा टूल है जिसे हमने मूल रूप से SSH VPN के लिए लिखा है। यह बहुत अच्छा काम करता है यदि आप बड़े ट्रैफ़िक वॉल्यूम जैसे पोर्ट स्कैन, भेद्यता स्कैन आदि नहीं कर रहे हैं। नीचे एक सरल टूल है जो VPN बनाने के लिए sshuttle को रैप करता है। बस नीचे दी गई फ़ाइल को एक पायथन फ़ाइल में सहेजें और चलाएँ और कमांड का उपयोग करें। यह आपको उस रिमोट नेटवर्क में VPN कर देगा जहाँ TAP तैनात है। आप कुछ भी कर सकते हैं, जब तक कि यह अत्यधिक बड़ी मात्रा वाला ट्रैफ़िक न हो (काफी स्थिर)।
VPN को संभालने के दो तरीके हैं, पहला नीचे दिए गए SSHuttle विधि के माध्यम से है। आप TrustedSec में Geoff Walton द्वारा बनाए गए एक ट्रांसपेरेंट VPN का भी उपयोग कर सकते हैं जो scripts फ़ोल्डर के अंतर्गत स्थित है। यह एक TAP इंटरफ़ेस बनाएगा और SSH के माध्यम से आपको सिस्टम में VPN करेगा। SSHuttle के साथ, पोर्ट स्कैन जैसी चीज़ें ठीक से काम नहीं करती हैं, ssh-tunnel स्क्रिप्ट की अत्यधिक अनुशंसा करेंगे।
SSHUTTLE एक टूल है जो आपको SSH को एक ट्रांसपेरेंट प्रॉक्सी VPN के रूप में उपयोग करने की अनुमति देता है। आप इस स्क्रिप्ट का उपयोग रिमोट TAP डिवाइस के साथ संवाद करने और पूर्ण VPN के लिए प्रॉक्सी पर अपने सिस्टम को टनल करने के लिए कर सकते हैं। यह आपको अपने स्वयं के डिवाइस के माध्यम से परीक्षण करने की अनुमति देता है, न कि TAP डिवाइस का उपयोग करने की।
import subprocess
import time
if not os.path.isfile("/usr/sbin/sshuttle"):
print "[!] SSHUTTLE does not appear to be installed, installing now"
subprocess.Popen("apt-get install sshuttle -f", shell=True).wait()
print("Welcome to the sshuttle wrapper for TAP.")
print("Enter the address for the SSH server, i.e. box.sshserver.com")
reverse1 = input("Enter SSH server (REMOTE server): ")
reverse2 = input("Enter the remote SSH port for %s:: " % (reverse1))
reverse3 = input("Enter the port to tunnel for the local TAP machine (i.e. TAP box localhost port): ")
reverse4 = input("Enter the username to connect to REMOTE system: ")
print)"Triggering tunnel now...")
time.sleep(2)
subprocess.Popen("ssh -f %s@%s -L %s:localhost:%s -N" % (reverse4, reverse1, reverse3, reverse2), shell=True).wait()
subprocess.Popen("sshuttle --dns -vr %s@localhost:%s 0/0" % (reverse4,reverse3), shell=True).wait()
TAP आपके सभी http/https ट्रैफ़िक को SSH के माध्यम से आपके रिमोट बॉक्स तक टनल करने के लिए proxychains4 (proxychains-ng) का उपयोग करता है। यह कंटेंट/एग्रेस फ़िल्टरिंग में मदद करता है ताकि आप सुनिश्चित कर सकें कि आपके पास हमेशा सब कुछ अप-टू-डेट है। proxychains का उपयोग करने के लिए, बस proxychains4 <command_you_want_to_use> टाइप करें - TAP अपडेट स्वचालित रूप से इसका उपयोग करते हैं।
TAP सेटअप प्रक्रिया के दौरान आपसे पूछेगा कि क्या आप सिस्टम पर निष्पादित सभी कमांड को लॉग करना चाहते हैं। यदि आप ऐसा करते हैं, तो सिस्टम पर दर्ज सभी कमांड लॉग हो जाएंगे ताकि आप ग्राहक को प्रदान कर सकें या डिवाइसों पर क्या हुआ इसका रिकॉर्ड रख सकें। सभी लॉग /var/log/messages के अंतर्गत सहेजे जाते हैं।
Ubuntu 18.04 LTS (debian और अन्य ubuntu संस्करणों पर ठीक काम करना चाहिए)