Pentesting VoIP
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
VoIP Osnovne Informacije
Da biste počeli da učite kako VoIP funkcioniše, proverite:
Basic VoIP ProtocolsOsnovne Poruke
Response Codes
1xx—Provisional Responses
2xx—Успешни одговори
3xx—Odgovori o preusmeravanju
4xx—Odgovori o grešci klijenta
5xx—Odgovori o grešci servera
6xx—Global Failure Responses
VoIP Enumeration
Telephone Numbers
Jedan od prvih koraka koje Red Tim može učiniti je da potraži dostupne telefonske brojeve za kontaktiranje sa kompanijom koristeći OSINT alate, Google pretrage ili skeniranje web stranica.
Kada imate telefonske brojeve, možete koristiti online usluge za identifikaciju operatera:
Znajući da li operater pruža VoIP usluge, možete identifikovati da li kompanija koristi VoIP... Štaviše, moguće je da kompanija nije angažovala VoIP usluge, već koristi PSTN kartice za povezivanje svoje VoIP PBX sa tradicionalnom telefonskom mrežom.
Stvari kao što su automatski odgovori sa muzikom obično ukazuju na to da se koristi VoIP.
Google Dorks
OSINT informacije
Svaka druga OSINT enumeracija koja pomaže u identifikaciji VoIP softvera koji se koristi biće korisna za Red Team.
Mrežna enumeracija
nmap
može skenirati UDP usluge, ali zbog broja UDP usluga koje se skeniraju, veoma je spor i možda neće biti veoma tačan sa ovim vrstama usluga.
svmap
iz SIPVicious-a (sudo apt install sipvicious
): Pronaći će SIP usluge u naznačenoj mreži.svmap
je lako blokirati jer koristi User-Agentfriendly-scanner
, ali možete izmeniti kod iz/usr/share/sipvicious/sipvicious
i promeniti ga.
SIPPTS skeniranje
from sippts: SIPPTS skeniranje je veoma brz skener za SIP usluge preko UDP, TCP ili TLS. Koristi više niti i može skenirati velike opsege mreža. Omogućava lako označavanje opsega portova, skeniranje i TCP i UDP, korišćenje druge metode (po defaultu će koristiti OPTIONS) i specificiranje različitog User-Agent-a (i još mnogo toga).
metasploit:
Extra Network Enumeration
PBX takođe može izlagati druge mrežne usluge kao što su:
69/UDP (TFTP): Ažuriranja firmvera
80 (HTTP) / 443 (HTTPS): Za upravljanje uređajem putem veba
389 (LDAP): Alternativa za čuvanje informacija o korisnicima
3306 (MySQL): MySQL baza podataka
5038 (Manager): Omogućava korišćenje Asteriska sa drugih platformi
5222 (XMPP): Poruke koristeći Jabber
I drugi...
Methods Enumeration
Moguće je pronaći koje metode su dostupne za korišćenje u PBX-u koristeći SIPPTS enumerate
iz sippts
Анализирање одговора сервера
Веома је важно анализирати заглавља која сервер шаље назад, у зависности од типа поруке и заглавља која шаљемо. Са SIPPTS send
из sippts можемо слати персонализоване поруке, манипулишући свим заглављима, и анализирати одговор.
Takođe je moguće dobiti podatke ako server koristi websockets. Sa SIPPTS wssend
iz sippts možemo slati personalizovane WS poruke.
Extension Enumeration
Extensions in a PBX (Private Branch Exchange) system refer to the jedinstveni interni identifikatori dodeljeni pojedinačnim telefonskim linijama, uređajima ili korisnicima unutar organizacije ili preduzeća. Extensions make it possible to efikasno usmeravaju pozive unutar organizacije, bez potrebe za pojedinačnim spoljnim brojevima telefona za svakog korisnika ili uređaj.
svwar
from SIPVicious (sudo apt install sipvicious
):svwar
is a free SIP PBX extension line scanner. In concept it works similar to traditional wardialers by pogađanjem opsega ekstenzija ili datog spiska ekstenzija.
SIPPTS exten
from sippts: SIPPTS exten identifikuje ekstenzije na SIP serveru. Sipexten može proveriti velike mreže i opsege portova.
metasploit: Takođe možete enumerisati ekstenzije/korisnička imena sa metasploit:
enumiax
(apt install enumiax
): enumIAX је Inter Asterisk Exchange протокол бруте-форце енумератор корисничких имена. enumIAX може радити у два различита режима; Секвенцијално Погађање Корисничког Имена или Напад Речником.
VoIP Napadi
Brute-Force lozinke - online
Nakon što su otkrili PBX i neke ekstenzije/korisnička imena, Crveni Tim može pokušati da se autentifikuje putem REGISTER
metode na ekstenziji koristeći rečnik uobičajenih lozinki za brute force autentifikaciju.
Imajte na umu da korisničko ime može biti isto kao ekstenzija, ali ova praksa može varirati u zavisnosti od PBX sistema, njegove konfiguracije i preferencija organizacije...
Ako korisničko ime nije isto kao ekstenzija, moraćete da otkrijete korisničko ime koje treba da brute-forcujete.
svcrack
iz SIPVicious (sudo apt install sipvicious
): SVCrack vam omogućava da provalite lozinku za određeno korisničko ime/ekstenziju na PBX-u.
SIPPTS rcrack
from sippts: SIPPTS rcrack je daljinski alat za razbijanje lozinki za SIP usluge. Rcrack može testirati lozinke za nekoliko korisnika na različitim IP adresama i opsezima portova.
Metasploit:
VoIP Sniffing
Ako pronađete VoIP opremu unutar Open Wifi mreže, mogli biste sniff-ovati sve informacije. Štaviše, ako ste unutar zatvorenije mreže (povezani putem Ethernet-a ili zaštićene Wifi mreže) mogli biste izvesti MitM napade kao što su ARPspoofing između PBX-a i gateway-a kako biste sniff-ovali informacije.
Među mrežnim informacijama, mogli biste pronaći web akreditive za upravljanje opremom, korisničke ekstenzije, korisnička imena, IP adrese, čak i hashovane lozinke i RTP pakete koje možete reprodukovati da čujete razgovor, i još mnogo toga.
Da biste dobili ove informacije, mogli biste koristiti alate kao što su Wireshark, tcpdump... ali posebno kreirani alat za sniff-ovanje VoIP razgovora je ucsniff.
Imajte na umu da ako se TLS koristi u SIP komunikaciji nećete moći da vidite SIP komunikaciju u čistom obliku. Isto će se desiti ako se koristi SRTP i ZRTP, RTP paketi neće biti u čistom tekstu.
SIP akreditive (Brute-Force lozinke - offline)
Pogledajte ovaj primer da bolje razumete SIP REGISTER komunikaciju da biste saznali kako se akreditive šalju.
sipdump
&sipcrack
, deo sipcrack (apt-get install sipcrack
): Ovi alati mogu izvući iz pcap-a digest autentifikacije unutar SIP protokola i bruteforce-ovati ih.
SIPPTS dump
from sippts: SIPPTS dump može da izvuče digest autentifikacije iz pcap datoteke.
SIPPTS dcrack
from sippts: SIPPTS dcrack je alat za razbijanje digest autentifikacija dobijenih sa SIPPTS dump.
SIPPTS tshark
from sippts: SIPPTS tshark izvlači podatke SIP protokola iz PCAP datoteke.
DTMF kodovi
Ne samo SIP akreditivi mogu se pronaći u mrežnom saobraćaju, takođe je moguće pronaći DTMF kodove koji se koriste, na primer, za pristup govornoj pošti. Moguće je poslati ove kodove u INFO SIP porukama, u zvuku ili unutar RTP paketa. Ako su kodovi unutar RTP paketa, možete iseći taj deo razgovora i koristiti alat multimo da ih ekstrahujete:
Besplatni pozivi / Asterisks konekcije pogrešne konfiguracije
U Asterisku je moguće omogućiti konekciju sa određene IP adrese ili sa bilo koje IP adrese:
Ako je IP adresa specificirana, host neće morati da šalje REGISTER zahteve s vremena na vreme (u REGISTER paketu se šalje vreme trajanja, obično 30min, što znači da će u drugom scenariju telefon morati da REGISTER svakih 30min). Međutim, moraće da ima otvorene portove koji omogućavaju veze sa VoIP serverom za primanje poziva.
Da bi se definisali korisnici, mogu se definisati kao:
type=user
: Korisnik može primati pozive samo kao korisnik.type=friend
: Moguće je obavljati pozive kao peer i primati ih kao korisnik (koristi se sa ekstenzijama)type=peer
: Moguće je slati i primati pozive kao peer (SIP-trunks)
Takođe je moguće uspostaviti poverenje sa nesigurnom promenljivom:
insecure=port
: Omogućava peer veze validirane IP-om.insecure=invite
: Ne zahteva autentifikaciju za INVITE porukeinsecure=port,invite
: Oba
Kada se koristi type=friend
, vrednost promenljive host neće biti korišćena, tako da ako administrator pogrešno konfiguriše SIP-trunk koristeći tu vrednost, bilo ko će moći da se poveže na njega.
Na primer, ova konfiguracija bi bila ranjiva:
host=10.10.10.10
insecure=port,invite
type=friend
Besplatni pozivi / Asterisk kontekst pogrešnih konfiguracija
U Asterisku, kontekst je imenovani kontejner ili sekcija u dijal planu koja grupiše povezane ekstenzije, akcije i pravila. Dijal plan je osnovna komponenta Asterisk sistema, jer definiše kako se upravlja i usmerava dolaznim i odlaznim pozivima. Konteksti se koriste za organizaciju dijal plana, upravljanje kontrolom pristupa i pružanje razdvajanja između različitih delova sistema.
Svaki kontekst je definisan u konfiguracionom fajlu, obično u extensions.conf
fajlu. Konteksti su označeni uglastim zagradama, sa imenom konteksta unutar njih. Na primer:
Unutar konteksta, definišete ekstenzije (uzorke biranih brojeva) i povezujete ih sa serijom akcija ili aplikacija. Ove akcije određuju kako se poziv obrađuje. Na primer:
Ovaj primer demonstrira jednostavan kontekst pod nazivom "my_context" sa ekstenzijom "100". Kada neko pozove 100, poziv će biti prihvaćen, biće puštena poruka dobrodošlice, a zatim će poziv biti prekinut.
Ovo je drugi kontekst koji omogućava pozivanje na bilo koji drugi broj:
Ako administrator definiše default context kao:
Svako će moći da koristi server za pozivanje na bilo koji drugi broj (a administrator servera će platiti za poziv).
Štaviše, po defaultu, sip.conf
datoteka sadrži allowguest=true
, tako da bilo koji napadač bez autentifikacije će moći da pozove bilo koji drugi broj.
SIPPTS invite
iz sippts: SIPPTS invite proverava da li PBX server dozvoljava da pravimo pozive bez autentifikacije. Ako SIP server ima pogrešnu konfiguraciju, dozvoliće nam da pravimo pozive na spoljne brojeve. Takođe može da nam dozvoli da prebacimo poziv na drugi spoljni broj.
Na primer, ako vaš Asterisk server ima lošu konfiguraciju konteksta, možete prihvatiti INVITE zahtev bez autorizacije. U ovom slučaju, napadač može da pravi pozive ne znajući nijednog korisnika/lozinku.
Besplatni pozivi / Pogrešno konfigurisani IVRS
IVRS označava Interaktivni sistem za glasovne odgovore, telekomunikacionu tehnologiju koja omogućava korisnicima da komuniciraju sa kompjuterskim sistemom putem glasovnih ili tonskih unosa. IVRS se koristi za izgradnju automatskih sistema za upravljanje pozivima koji nude niz funkcionalnosti, kao što su pružanje informacija, usmeravanje poziva i prikupljanje korisničkih unosa.
IVRS u VoIP sistemima obično se sastoji od:
Glasovnih poruka: Prethodno snimljene audio poruke koje vode korisnike kroz IVR meni opcije i uputstva.
DTMF (Dual-Tone Multi-Frequency) signalizacija: Tonski unosi generisani pritiskanjem tastera na telefonu, koji se koriste za navigaciju kroz IVR menije i pružanje unosa.
Usmeravanje poziva: Usmeravanje poziva na odgovarajuću destinaciju, kao što su specifična odeljenja, agenti ili ekstenzije na osnovu korisničkog unosa.
Prikupljanje korisničkih unosa: Prikupljanje informacija od pozivaoca, kao što su brojevi računa, ID slučajeva ili bilo koji drugi relevantni podaci.
Integracija sa spoljnim sistemima: Povezivanje IVR sistema sa bazama podataka ili drugim softverskim sistemima za pristup ili ažuriranje informacija, izvršavanje radnji ili pokretanje događaja.
U Asterisk VoIP sistemu, možete kreirati IVR koristeći plan biranja (extensions.conf
datoteku) i razne aplikacije kao što su Background()
, Playback()
, Read()
, i druge. Ove aplikacije vam pomažu da reprodukujete glasovne poruke, prikupite korisničke unose i kontrolišete tok poziva.
Primer ranjive konfiguracije
Prethodni je primer gde se korisniku traži da pritisne 1 za poziv u odeljenje, 2 za poziv u drugo, ili potpunu internu ako je zna. Ranljivost je u tome što se naznačena dužina interne ne proverava, tako da korisnik može uneti 5 sekundi vremensko ograničenje za ceo broj i biće pozvan.
Umetanje interne
Korišćenje interne kao:
Gde ${EXTEN}
je ekstenzija koja će biti pozvana, kada se ext 101 uvede ovo bi se desilo:
Međutim, ako ${EXTEN}
omogućava unos više od brojeva (kao u starijim verzijama Asteriska), napadač bi mogao uneti 101&SIP123123123
da pozove telefonski broj 123123123. I ovo bi bio rezultat:
Zato, poziv na ekstenziju 101
i 123123123
će biti poslat i samo prvi koji primi poziv će biti uspostavljen... ali ako napadač koristi ekstenziju koja zaobilazi bilo kakvo podudaranje koje se vrši, ali ne postoji, mogao bi injektovati poziv samo na željeni broj.
SIPDigestLeak ranjivost
SIP Digest Leak je ranjivost koja utiče na veliki broj SIP telefona, uključujući i hardverske i softverske IP telefone, kao i telefonske adaptore (VoIP na analogne). Ranjivost omogućava curenje odgovora na Digest autentifikaciju, koji se izračunava iz lozinke. Offline napad na lozinku je tada moguć i može povratiti većinu lozinki na osnovu odgovora na izazov.
**Scenarijo ranjivosti odavde**:
IP telefon (žrtva) sluša na bilo kojem portu (na primer: 5060), prihvatajući telefonske pozive
Napadač šalje INVITE IP telefonu
Telefon žrtve počinje da zvoni i neko podiže slušalicu i odmah je spušta (jer se niko ne javlja na drugom kraju)
Kada se telefon spusti, telefon žrtve šalje BYE napadaču
Napadač izdaje 407 odgovor koji traži autentifikaciju i postavlja izazov za autentifikaciju
Telefon žrtve daje odgovor na izazov za autentifikaciju u drugom BYE
Napadač može zatim da izvede brute-force napad na odgovor na izazov na svom lokalnom računaru (ili distribuiranoj mreži itd.) i pogodi lozinku
SIPPTS leak iz sippts: SIPPTS leak koristi ranjivost SIP Digest Leak koja utiče na veliki broj SIP telefona. Izlaz se može sačuvati u SipCrack formatu kako bi se bruteforce-ovao koristeći SIPPTS dcrack ili SipCrack alat.
Click2Call
Click2Call omogućava web korisniku (koji, na primer, može biti zainteresovan za proizvod) da unesu svoj broj telefona kako bi bio pozvan. Zatim će biti pozvan komercijal, a kada podigne slušalicu, korisnik će biti pozvan i povezan sa agentom.
Uobičajeni Asterisk profil za ovo je:
Prethodni profil omogućava BILO KOM IP adresi da se poveže (ako je lozinka poznata).
Da bi se organizovao poziv, kao što je prethodno navedeno, nema potrebe za dozvolama za čitanje i samo originate u pisanje je potrebno.
Sa tim dozvolama, svaka IP adresa koja zna lozinku može da se poveže i izvuče previše informacija, kao:
Moguće je zatražiti više informacija ili akcija.
Prisluškivanje
U Asterisku je moguće koristiti komandu ChanSpy
koja označava produžetak(e) za praćenje (ili sve njih) kako bi se čule razgovore koji se odvijaju. Ova komanda treba da bude dodeljena produžetku.
Na primer, exten => 333,1,ChanSpy('all',qb)
označava da ako pozovete produžetak 333, on će pratiti sve
produžetke, početi da sluša kada započne novi razgovor (b
) u tihom režimu (q
) jer ne želimo da se uključujemo u njega. Možete preći sa jednog razgovora na drugi pritiskom na *
, ili biranjem broja produžetka.
Takođe je moguće koristiti ExtenSpy
za praćenje samo jednog produžetka.
Umesto slušanja razgovora, moguće je snimati ih u fajlove koristeći produžetak kao:
Pozivi će biti sačuvani u /tmp
.
Takođe možete čak naterati Asterisk da izvrši skriptu koja će otkriti poziv kada se zatvori.
RTCPBleed ranjivost
RTCPBleed je veliki bezbednosni problem koji utiče na Asterisk-bazirane VoIP servere (objavljen 2017. godine). Ranjivost omogućava RTP (Real Time Protocol) saobraćaju, koji nosi VoIP razgovore, da bude presretnut i preusmeren od strane bilo koga na Internetu. To se dešava zato što RTP saobraćaj zaobilazi autentifikaciju prilikom navigacije kroz NAT (Network Address Translation) vatrozidove.
RTP proksi pokušavaju da reše NAT ograničenja koja utiču na RTC sisteme tako što proksiraju RTP tokove između dve ili više strana. Kada je NAT u upotrebi, RTP proksi softver često ne može da se oslanja na RTP IP i port informacije dobijene putem signalizacije (npr. SIP). Stoga, niz RTP proksija je implementirao mehanizam gde se takav IP i port tuplet automatski uči. To se često radi inspekcijom dolaznog RTP saobraćaja i označavanjem izvornog IP i porta za bilo koji dolazni RTP saobraćaj kao onog na koji treba odgovoriti. Ovaj mehanizam, koji se može nazvati "način učenja", ne koristi nikakvu vrstu autentifikacije. Stoga napadači mogu slati RTP saobraćaj ka RTP proksiju i primati proksirani RTP saobraćaj koji je namenjen pozivaocu ili pozvanom u toku RTP toka. Ovu ranjivost nazivamo RTP Bleed jer omogućava napadačima da primaju RTP medijske tokove koji su namenjeni za legitimne korisnike.
Još jedno zanimljivo ponašanje RTP proksija i RTP stekova je da ponekad, čak i ako nisu ranjivi na RTP Bleed, oni će prihvatiti, proslediti i/ili obraditi RTP pakete iz bilo kojeg izvora. Stoga napadači mogu slati RTP pakete koji im mogu omogućiti da ubace svoj medij umesto legitimnog. Ovaj napad nazivamo RTP injekcija jer omogućava ubacivanje nelegitimnih RTP paketa u postojeće RTP tokove. Ova ranjivost može se naći i u RTP proksijima i na krajnjim tačkama.
Asterisk i FreePBX su tradicionalno koristili NAT=yes
podešavanje, koje omogućava RTP saobraćaju da zaobiđe autentifikaciju, potencijalno dovodeći do nedostatka zvuka ili jednosmernog zvuka na pozivima.
Za više informacija proverite https://www.rtpbleed.com/
SIPPTS rtpbleed
iz sippts: SIPPTS rtpbleed detektuje RTP Bleed ranjivost slanjem RTP tokova.
SIPPTS rtcpbleed
from sippts: SIPPTS rtcpbleed otkriva RTP Bleed ranjivost slanjem RTCP strimova.
SIPPTS rtpbleedflood
from sippts: SIPPTS rtpbleedflood koristi RTP Bleed ranjivost slanjem RTP tokova.
SIPPTS rtpbleedinject
from sippts: SIPPTS rtpbleedinject koristi RTP Bleed ranjivost za injectovanje audio fajla (WAV format).
RCE
U Asterisk-u nekako uspete da dodate pravila ekstenzije i ponovo ih učitate (na primer, kompromitovanjem ranjivog web menadžera), moguće je dobiti RCE koristeći System
komandu.
Postoji komanda pod nazivom Shell
koja se može koristiti umesto System
za izvršavanje sistemskih komandi ako je to potrebno.
Ako server ne dozvoljava korišćenje određenih karaktera u System
komandi (kao u Elastix-u), proverite da li web server dozvoljava kreiranje fajlova na neki način unutar sistema (kao u Elastix-u ili trixbox-u), i koristite to da napravite skriptu za backdoor i zatim koristite System
da izvršite tu skriptu.
Zanimljivi lokalni fajlovi i dozvole
sip.conf
-> Sadrži lozinku SIP korisnika.Ako Asterisk server radi kao root, mogli biste kompromitovati root.
mysql root korisnik možda nema lozinku.
ovo se može koristiti za kreiranje novog mysql korisnika kao backdoor.
FreePBX
amportal.conf
-> Sadrži lozinku administratora web panela (FreePBX).FreePBX.conf
-> Sadrži lozinku korisnika FreePBXuser koji se koristi za pristup bazi podataka.ovo se može koristiti za kreiranje novog mysql korisnika kao backdoor.
Elastix
Elastix.conf
-> Sadrži nekoliko lozinki u čistom tekstu kao što su mysql root lozinka, IMAPd lozinka, lozinka web administratora.NSeveral folderi će pripadati kompromitovanom asterisk korisniku (ako ne radi kao root). Ovaj korisnik može čitati prethodne fajlove i takođe kontroliše konfiguraciju, tako da može naterati Asterisk da učita druge backdoored binarne fajlove kada se izvrše.
RTP Injekcija
Moguće je umetnuti .wav
u razgovore koristeći alate kao što su rtpinsertsound
(sudo apt install rtpinsertsound
) i rtpmixsound
(sudo apt install rtpmixsound
).
Ili možete koristiti skripte sa http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ da skenirate razgovore (rtpscan.pl
), pošaljete .wav
u razgovor (rtpsend.pl
) i ubacite buku u razgovor (rtpflood.pl
).
DoS
Postoji nekoliko načina da se pokuša postići DoS na VoIP serverima.
SIPPTS flood
iz sippts**: SIPPTS flood šalje neograničene poruke cilju.sippts flood -i 10.10.0.10 -m invite -v
SIPPTS ping
iz sippts**: SIPPTS ping pravi SIP ping da vidi vreme odgovora servera.sippts ping -i 10.10.0.10
IAXFlooder: DoS IAX protokol koji koristi Asterisk.
inviteflood: Alat za izvođenje SIP/SDP INVITE poruka preplavljivanja preko UDP/IP.
rtpflood: Šalje nekoliko dobro formiranih RTP paketa. Potrebno je znati RTP portove koji se koriste (prvo ih snimiti).
SIPp: Omogućava analizu i generisanje SIP saobraćaja, tako da se može koristiti i za DoS.
SIPsak: SIP švajcarski nož. Takođe se može koristiti za izvođenje SIP napada.
Fuzzers: protos-sip, voiper.
OS Ranljivosti
Najlakši način da se instalira softver kao što je Asterisk je da se preuzme OS distribucija koja ga već ima instaliranog, kao što su: FreePBX, Elastix, Trixbox... Problem sa njima je što kada počnu da rade, sistem administratori možda neće ponovo ažurirati i ranljivosti će se otkrivati s vremenom.
Reference
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated