Nieuws
Voice over IP en Netwerkbeveiliging
Een vaak onderschat component van een Voice over IP (VoIP) implementatie is netwerkbeveiliging. Hoewel in de afgelopen maanden er af en toe berichten opduiken over gedupeerde bedrijven zien we dat er in de praktijk nog steeds erg weinig aandacht aan de beveiliging van VoIP wordt besteed. Het blijkt in de praktijk mogelijk te zijn om ongeauthenticeerd gesprekken op te kunnen zetten met interne toestellen of zelfs met externe lijnen zoals ISDN of een SIP Trunk.
Een sprekend voorbeeld hiervan is een klant waar ik gevraagd werd om een onderzoek uit te voeren naar de kraakbaarheid van hun Voice over IP telefooncentrale. De klant had namelijk een hoge rekening gekregen van hun telefoonprovider waaruit bleek dat er in een weekend duizenden gesprekken waren gevoerd naar een Afrikaans land. Deze klant maakte gebruik van een Cisco UCM Express telefooncentrale, een systeem waarbij een Cisco router als telefooncentrale ingezet kan worden. De klant had intern Cisco telefoons staan die op basis van SCCP, ook wel Skinny genoemd, werkten en hun verbinding naar buiten bestond uit een drietal ISDN-2 aansluitingen. Eigenlijk een vrij eenvoudige configuratie die je vaak tegenkomt in de praktijk.
Bij deze klant ging het mis op twee punten:
- Remote Beheer
- Interne Netwerkscheiding
- Niet uitschakelen van onnodige services
De leverancier van deze klant vond het een goed idee om extern beheer mogelijk te maken. Daarom had men een extern IP adres op deze telefooncentrale geconfigureerd en deze aan de WAN kant van het netwerk geplaatst. Hier zat een firewall tussen, maar deze was geconfigureerd om alles door te laten en het netwerk te bridgen.
Daarnaast had deze klant maar een enkel VLAN, in dit VLAN zaten de telefoons, de telefooncentrale, de werkstations en het onbeveiligde wireless access point geconfigureerd.
Wat uiteindelijk de deur wagenwijd openzette was het feit dat onnodige services niet waren uitgeschakeld. Op de Cisco router stond een SIP service te luisteren.
De volgende dial-peers waren geconfigureerd op de router:
dial-peer voice 10 pots
translation-profile incoming TRANSLATE_CALLING
preference 7
destination-pattern 0T
port 2/0
!
dial-peer voice 20 pots
translation-profile incoming TRANSLATE_CALLING
preference 4
destination-pattern 0T
direct-inward-dial
port 2/1
!
dial-peer voice 30 pots
translation-profile incoming TRANSLATE_CALLING
preference 2
destination-pattern 0T
port 3/0
!
dial-peer voice 40 pots
translation-profile incoming TRANSLATE_CALLING
preference 3
destination-pattern 0T
port 3/1
!
dial-peer voice 50 pots
translation-profile incoming TRANSLATE_CALLING
preference 5
destination-pattern 0T
direct-inward-dial
port 1/0
Dit zorgt er voor dat alle nummers die met een 0 beginnen doorgestuurd worden naar de genoemde poort, in dit geval een ISDN poort. Er werd geen controle uitgevoerd of de nummers wel lokaal bekend waren.
Een simpele regel: “sip:00512751015@externIP.vandeklant.nl” in een willekeurige SIP Client was voldoende om vanaf extern te bellen naar het nummer “0512751015”.
Er zijn mensen die het internet afzoeken naar openstaande SIP poorten om vervolgens daar gratis verkeer over heen te kunnen sturen. Stel je eens voor dat je een goedkope telefoonprovider bent: gratis bellen naar de hele wereld! Maar voor elke telefoontik naar buiten moet je zelf geld betalen, op dat moment kan het lonend zijn om met een script openstaande SIP poorten te zoeken en daar gedurende een periode telefoonverkeer over heen te routeren. Uiteraard is dit verboden, maar het internet is zonder grenzen.
Dat de beveiliging van VoIP een veelvoorkomend probleem is blijkt wel uit het onderzoekje wat ik heb uitgevoerd.
Een willekeurige scan van een internet subnet met svmap uit de SIPVicious toolkit geeft binnen 15 minuten de volgende interessante resultaten:
SIP Device | User Agent | Fingerprint |
2×2.x9.2×4.18:5060 | Cisco-SIPGateway/IOS-12.x | Cisco-SIPGateway/IOS-12.x |
2×3.x0.x0.112:5060 | Asterisk PBX | Asterisk / BandwidthVoice |
2×3.1×0.1×9.154:5060 | Tilgin Vood 322_ESA1100_03_05_08_00 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.11x.2×6.94:5060 | Tilgin Vood 111s_1_12_2_RC_1 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7141 (UI) |
40.04.35 (Jun 19 2007) / AVM FRITZ!Box Fon WLAN 7050 | ||
14.04.15 (Jul 12 2006) | ||
2×3.12x.1×2.35:5060 | BT Home Hub 2.0A Build 8.1.H.G | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.1×0.1×9.174:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.1×1.xx0.215:5060 | Tilgin Vood 453W_B_AS0000-03_05_08_08 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.1×2.xx4.90:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.x7.x16.114:5060 | SAGEM / 3202.2 / 2601EA | F139R72-0.00 |
2×3.x17.x97.162:5060 | SAGEM / 3202.3 / 2601EA | F139R72-0.00 |
2×3.1×4.xx7.69:5060 | Tilgin Vood 452W_B_AS0000-03_05_08_08 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.1×0.xx2.13:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.2×3.xx9.218:5060 | AVM FRITZ!Box Fon WLAN Annex A 08.04.26 (Sep 6 2006) | AVM or Speedport |
2×3.2×7.xx1.238:41542 | unknown | AVM FRITZ!Box Fon WLAN 7141 (UI) 40.04.35 (Jun 19 2007) |
2×3.2×8.xx9.189:5060 | unknown | AVM or Speedport |
2×3.x27.xx0.226:5060 | unknown | F309R19-2.00 / F142R75-0.00 / F139R72-0.00 |
2×3.x65.x12.61:5060 | Telefonadapter – Telia Bredbandstelefoni | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.xx4.2×7.254:5060 | Pirelli Broadband Solutions/Discus | Asterisk / BandwidthVoice |
Platform/DWV_TEL_4.3.2.0025 | ||
2×3.x84.2×1.166:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
x82.2×0.1×1.54:5060 | Cisco-SIPGateway/IOS-12.x | Cisco-SIPGateway/IOS-12.x |
2×3.xx0.xx9.71:5060 | Tilgin Vood 342_ESA1100_03_05_08_00 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.x00.x83.231:5060 | Tilgin Vood 342_ESA1100_03_05_08_00 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.1×0.1×2.13:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.x03.1×9.218:5060 | AVM FRITZ!Box Fon WLAN Annex A 08.04.26 (Sep 6 2006) | AVM or Speedport |
2×3.2×7.1×1.238:41542 | unknown | AVM FRITZ!Box Fon WLAN 7141 (UI) 40.04.35 (Jun 19 2007) |
2×3.2×8.1×9.189:5060 | unknown | AVM or Speedport |
2×3.x27.2×0.226:5060 | unknown | F309R19-2.00 / F142R75-0.00 / F139R72-0.00 |
2×3.x65.x12.61:5060 | Telefonadapter – Telia Bredbandstelefoni | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.x74.xx7.254:5060 | Pirelli Broadband Solutions/Discus | Asterisk / BandwidthVoice |
Platform/DWV_TEL_4.3.2.0025 | ||
2×3.x84.xx1.166:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
x2.2×0.xx1.54:5060 | Cisco-SIPGateway/IOS-12.x | Cisco-SIPGateway/IOS-12.x |
2×3.1×0.xx9.71:5060 | Tilgin Vood 342_ESA1100_03_05_08_00 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.1×0.x8x.231:5060 | Tilgin Vood 342_ESA1100_03_05_08_00 | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.1×6.xx6.214:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.1×7.xx7.18:5060 | M5T SIP-UA SAFE/v3.6.4.8 | Linksys/SPA2102-3.3.6 / M5T SIP-UA SAFE/v3.6.4.8 |
2×3.1×5.xx3.138:5060 | Asterisk PBX | Asterisk / Linksys/PAP2T-3.1.15(LS) |
2×3.1x.x0.68:5060 | SAGEM / 3202.2 / 2601EA | Viceroy 1.2 / F139R72-0.00 |
2×3.1×2.xx8.236:5060 | Linksys/SPA2102-5.2.3 | Linksys or Sipura |
2×3.1×5.x0.89:5060 | Linksys/SPA2102-5.1.9 | Linksys/SPA2102-5.1.9 / Linksys/SPA2102-5.1.12 |
2×3.1×6.xx9.111:5060 | Sphairon UA – 2.26-2.15.7 NetConnect | AVM FRITZ!Box Fon WLAN 7170 29.04.22 (Sep 6 2006) |
2×3.2×3.xx4.161:5060 | AVM FRITZ!Box Fon WLAN Annex A 08.03.62 | AVM or Speedport |
2×3.2×8.xx7.66:5060 | unknown | Grandstream phone |
2×3.x9.xx1.213:5060 | AVM FRITZ!Box Fon WLAN 7140 (AOL) 30.04.33 (May 10 2007) | AVM or Speedport |
2×3.x9.xx9.177:5060 | AVM FRITZ!Box Fon WLAN 7050 (UI) 14.04.33 (May 10 2007) | AVM or Speedport |
2×3.4x.xx8.60:5060 | AVM FRITZ!Box Fon WLAN 7270 54.04.68 (Dec 17 2008) | AVM or Speedport |
2×3.xx.xx3.87:5060 | unknown | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7050 14.04.15 |
(Jul 12 2006) | ||
2×3.x3.x22.16:5060 | unknown | T-Com Speedport W500V / Firmware v1.37 MxSF/v3.2.6.26 |
2×3.x4.x35.77:5060 | Telefonadapter – Telia Bredbandstelefoni | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7141 (UI) |
40.04.35 (Jun 19 2007) / AVM FRITZ!Box Fon WLAN 7050 | ||
14.04.15 (Jul 12 2006) | ||
2×3.x4.x36.14:5060 | Telefonadapter – Telia Bredbandstelefoni | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7170 29.04.22 |
(Sep 6 2006) / 3CXPhoneSystem | ||
2×3.x6.xx7.220:5060 | Telefonadapter – Telia Bredbandstelefoni | Linksys/SPA2102-3.3.6 / AVM FRITZ!Box Fon WLAN 7141 (UI) |
40.04.35 (Jun 19 2007) |
Deze apparaten zullen allemaal gesprekken accepteren, misschien niet naar externe telefoonnummers, maar zeker wel naar interne extensies. Om deze interne extensies te leren kennen hebben we de tool svwar uit de SIPVicious toolkit.
Op een willekeurige host uit deze lijst krijg ik met een scan op extensies 10 – 5000 het volgende antwoord:
INFO:TakeASip:trying to get self ip .. might take a while
INFO:root:start your engines
INFO:TakeASip:Ok SIP device found
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-1383820685;rportrnFrom: "10"
<sip:10@xxx.xxx.xxx.xxx>;tag=313001373636383833363935rnTo: "10" <sip:10@xxx.xxx.xxx.xxx>;tag=994394975rnCall-ID: 823320980rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-2206181257;rportrnFrom: "11"
<sip:11@xxx.xxx.xxx.xxx>;tag=31310132373535303230383836rnTo: "11" <sip:11@xxx.xxx.xxx.xxx>;tag=880968812rnCall-ID: 3952691097rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-990536748;rportrnFrom: "12"
<sip:12@xxx.xxx.xxx.xxx>;tag=31320132313136363439323538rnTo: "12" <sip:12@xxx.xxx.xxx.xxx>;tag=2356592349rnCall-ID: 919958410rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-3023029120;rportrnFrom: "13"
<sip:13@xxx.xxx.xxx.xxx>;tag=313301333738303930353136rnTo: "13" <sip:13@xxx.xxx.xxx.xxx>;tag=3879336450rnCall-ID: 398996016rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-4166942786;rportrnFrom: "14"
<sip:14@xxx.xxx.xxx.xxx>;tag=31340133383530393234383930rnTo: "14" <sip:14@xxx.xxx.xxx.xxx>;tag=3142010219rnCall-ID: 341819626rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-3347144645;rportrnFrom: "15"
<sip:15@xxx.xxx.xxx.xxx>;tag=31350132393230383138373137rnTo: "15" <sip:15@xxx.xxx.xxx.xxx>;tag=1609553384rnCall-ID: 1818435497rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-2423719321;rportrnFrom: "16"
<sip:16@xxx.xxx.xxx.xxx>;tag=313601343135353239303835rnTo: "16" <sip:16@xxx.xxx.xxx.xxx>;tag=3931031177rnCall-ID: 1313715558rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-2380026049;rportrnFrom: "17"
<sip:17@xxx.xxx.xxx.xxx>;tag=31370131383332373434373030rnTo: "17" <sip:17@xxx.xxx.xxx.xxx>;tag=1340984734rnCall-ID: 1213899189rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-2709629244;rportrnFrom: "18"
<sip:18@xxx.xxx.xxx.xxx>;tag=31380133323030323334373531rnTo: "18" <sip:18@xxx.xxx.xxx.xxx>;tag=2171041207rnCall-ID: 3089834486rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
ERROR:TakeASip:Response: 'SIP/2.0 500 Internal Server ErrorrnVia: SIP/2.0/UDP xxx.xxx.xxx.xxx:5060;branch=z9hG4bK-3977079662;rportrnFrom: "19"
<sip:19@xxx.xxx.xxx.xxx>;tag=313901313839393634303236rnTo: "19" <sip:19@xxx.xxx.xxx.xxx>;tag=345811620rnCall-ID: 1604000460rnCSeq: 1 REGISTERrnContent-Length: 0rnrn'
INFO:root:Total time: 0:00:03.242660
Hoewel we geen verbinding kunnen maken met de extensies geeft dit dus aan dat de extensies 10 – 19 in gebruik zijn, anders zou er ook een reactie op de overige nummers die we scannen (20 – 5000) komen.
We kunnen nu twee dingen doen, we kunnen met svcrack uit de SIPVicious de authenticatie proberen te kraken en de extensie overnemen of we kunnen op dit moment het toestel bereiken door sip:10@xxx.xxx.xxx.xxx te bellen in onze SIP Client. Een ideale manier om mensen te bereiken op hun interne nummer en verder te gaan met bijvoorbeeld social engineering.
Voor een voorbeeld hoe makkelijk het is om een VoIP netwerk te kraken zie de volgende demonstratie video van de tool “sipautohack” : https://vimeo.com/2524735?hd=1
Bij het implementeren van een Voice over IP netwerk is het altijd zaak om goed na te denken over de infrastructuur en de beveiliging:
- Maak altijd een ontwerp en laat deze zo nodig controleren door een partij met ervaring
- Doe een VoIP Security Scan test na de implementatie zodat je zeker weet dat de implementatie veilig is
Quick-win configuratie tips:
- Zorg ervoor dat de telefooncentrale niet direct aan het internet gekoppeld wordt
- Configureer altijd een Firewall op of voor de telefooncentrale die SIP of H.323 connecties alleen toestaat vanaf een vertrouwde partij, bijvoorbeeld een SIP provider
- Als je een SIP trunk tussen meerdere gebouwen of bedrijven wilt opzetten doe dit nooit over het internet, maar gebruik een private lijn of een VPN tunnel (zoals IPSec Site2Site of OpenVPN)
- Zorg er voor dat ongeauthenticeerde extensies nooit naar nummers mogen bellen die geld kosten (zoals ISDN poorten of een SIP trunk)
- Op Asterisk centrales zet “alwaysauthreject=yes” in sip.conf, dit zorgt ervoor dat extensie scanners niet kunnen zoeken naar bruikbare extensies doordat authenticatie requests met een valide gebruikersnaam maar een onjuist wachtwoord met dezelfde foutmelding worden geweigerd als requests met een onjuiste gebruikersnaam
- Op Asterisk centrales schakel de Asterisk Manager Interface uit als je deze niet gebruikt of blokkeer externe toegang daartoe
- Schakel ongebruikte services altijd uit
Wilt u meer informatie? Neem dan contact met ons op!