
STUN/TURN सर्वरों की गलत कॉन्फ़िगरेशन के लिए परीक्षण और शोषण करें, जिससे SOCKS प्रॉक्सी के माध्यम से आंतरिक नेटवर्क पिवोटिंग, मेमोरी लीक हमले और आंतरिक पोर्ट स्कैनिंग संभव होती है।
Stunner एक उपकरण है जो STUN, TURN और TCP पर TURN सर्वरों का परीक्षण और शोषण करने के लिए है। TURN एक प्रोटोकॉल है जो मुख्यतः वीडियो कॉन्फ्रेंसिंग और ऑडियो चैट (WebRTC) में उपयोग होता है।
यदि आपको एक गलत कॉन्फ़िगर किया गया सर्वर मिलता है, तो आप इस उपकरण का उपयोग करके एक स्थानीय socks प्रॉक्सी खोल सकते हैं जो सभी ट्रैफ़िक को TURN प्रोटोकॉल के माध्यम से सर्वर के पीछे के आंतरिक नेटवर्क में रिले करता है।
मैंने इस उपकरण को Cisco Expressway के परीक्षण के दौरान विकसित किया था जिसके परिणामस्वरूप कुछ कमज़ोरियाँ सामने आईं: https://firefart.at/post/multiple_vulnerabilities_cisco_expressway/
आवश्यक उपयोगकर्ता नाम और पासवर्ड प्राप्त करने के लिए आपको उन्हें एक आउट-ऑफ-बैंड विधि का उपयोग करके प्राप्त करना होगा, जैसे Burp के साथ वेब ब्राउज़र से Connect अनुरोध को सूंघना। मैंने रीडमी के निचले भाग में एक उदाहरण कार्यप्रवाह जोड़ा है कि आप ऐसे सर्वर का परीक्षण कैसे करेंगे।
यह कार्य Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License के तहत लाइसेंस प्राप्त है। इस लाइसेंस की एक प्रति देखने के लिए, http://creativecommons.org/licenses/by-nc-sa/4.0/ पर जाएँ या Creative Commons, PO Box 1866, Mountain View, CA 94042, USA को एक पत्र भेजें।
STUN: RFC 5389
TURN: RFC 5766
TURN for TCP: RFC 6062
TURN Extension for IPv6: RFC 6156
यह कमांड stun या turn सर्वर के बारे में कुछ जानकारी प्रिंट करेगा जैसे समर्थित प्रोटोकॉल और विशेषताएँ जैसे उपयोग किया गया सॉफ़्टवेयर।
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--timeout value connect timeout to turn server (default: 1s)
--help, -h show help (default: false)
./stunner info -s x.x.x.x:443
यह कमांड कई निजी और प्रतिबंधित श्रेणियों को आज़माता है यह देखने के लिए कि क्या TURN सर्वर निर्दिष्ट IP पतों पर कनेक्शन की अनुमति देने के लिए कॉन्फ़िगर किया गया है। यदि कोई विशिष्ट श्रेणी प्रतिबंधित नहीं है तो आप इस श्रेणी को अन्य प्रदान किए गए कमांड के साथ आगे गणना कर सकते हैं। यदि कोई IP पहुँच योग्य है तो इसका मतलब है कि TURN सर्वर इस IP पर ट्रैफ़िक अग्रेषित करेगा।
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--help, -h show help (default: false)
TCP आधारित TURN कनेक्शन (आपसे TURN सर्वर तक कनेक्शन):
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol tcp
UDP आधारित TURN कनेक्शन (आपसे TURN सर्वर तक कनेक्शन):
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol udp
यह उन TURN सर्वरों के लिए सबसे उपयोगी कमांड में से एक है जो बैकएंड सर्वरों के लिए TCP कनेक्शन का समर्थन करते हैं। यह बिना किसी प्रमाणीकरण के एक स्थानीय socks5 सर्वर लॉन्च करेगा और सभी TCP ट्रैफ़िक को TURN प्रोटोकॉल पर रिले करेगा (SOCKS पर UDP वर्तमान में समर्थित नहीं है)। यदि सर्वर गलत कॉन्फ़िगर किया गया है, तो यह ट्रैफ़िक को आंतरिक पतों पर अग्रेषित करेगा, जिससे इसका उपयोग आंतरिक सिस्टम तक पहुँचने और सर्वर को आंतरिक नेटवर्क में प्रॉक्सी के रूप में दुरुपयोग करने के लिए किया जा सकता है। यदि आप socks पर DNS लुकअप भी करना चाहते हैं, तो यह आपके स्थानीय नाम सर्वर का उपयोग करके हल किया जाएगा, इसलिए निजी IPv4 और IPv6 पतों के साथ काम करना सबसे अच्छा है। कृपया ध्यान दें कि यह मॉड्यूल केवल TCP ट्रैफ़िक को रिले कर सकता है।
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--listen value, -l value Address and port to listen on (default: "127.0.0.1:1080")
--drop-public, -x Drop requests to public IPs. This is handy if the target can not connect to the internet and your browser want's to check TLS certificates via the connection. (default: true)
--help, -h show help (default: false)
./stunner socks -s x.x.x.x:3478 -u username -p password -x
प्रॉक्सी प्रारंभ करने के बाद अपना ब्राउज़र खोलें, सेटिंग्स में प्रॉक्सी को socks5 पर ip 127.0.0.1:1080 के साथ इंगित करें (सुनिश्चित करें कि आप स्थानीय पते को बायपास करने का विकल्प सेट न करें क्योंकि हम रिमोट स्थानीय पतों तक पहुँचना चाहते हैं) और ब्राउज़र में अपनी पसंद का IP कॉल करें।
उदाहरण: https://127.0.0.1, https://127.0.0.1:8443 or https://[::1]:8443 (ये परीक्षण किए जा रहे TURN सर्वर पर स्थानीय इंटरफ़ेस से पोर्ट कॉल करेंगे)।
आप इस प्रॉक्सी का उपयोग करने के लिए proxychains को भी कॉन्फ़िगर कर सकते हैं (लेकिन यह बहुत धीमा होगा क्योंकि प्रत्येक अनुरोध के परिणामस्वरूप प्रॉक्सी को सक्षम करने के लिए कई अनुरोध होते हैं)। बस /etc/proxychains.conf को संपादित करें और ProxyList के अंतर्गत मान socks5 127.0.0.1 1080 दर्ज करें।
सही ढंग से कॉन्फ़िगर की गई proxychains के साथ इस socks5 प्रॉक्सी पर nmap का उदाहरण (ध्यान दें कि यह -sT है TCP syns करने के लिए अन्यथा यह socks5 प्रॉक्सी का उपयोग नहीं करेगा)
sudo proxychains nmap -sT -p 80,443,8443 -sV 127.0.0.1
यह संभवतः कोई उपयोगी जानकारी नहीं देगा लेकिन सर्वर द्वारा समर्थित सभी उपलब्ध ट्रांसपोर्ट (= आंतरिक सिस्टम के लिए प्रोटोकॉल) की गणना करने में उपयोगी हो सकता है। यह कुछ कस्टम प्रोटोकॉल कार्यान्वयन दिखा सकता है लेकिन अधिकतर केवल डिफ़ॉल्ट लौटाएगा।
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--help, -h show help (default: false)
./stunner brute-transports -s x.x.x.x:3478 -u username -p password
यह कमांड एक उपयोगकर्ता नाम के लिए दी गई फ़ाइल से सभी पासवर्ड TURN प्रोटोकॉल (UDP) के माध्यम से आज़माता है। यह एक pcap का विश्लेषण करते समय उपयोगी हो सकता है जहाँ आप उपयोगकर्ता नाम देख सकते हैं लेकिन पासवर्ड नहीं। कृपया ध्यान दें कि इस मामले में ऑफ़लाइन ब्रूटफोर्स बहुत तेज़ है।