Realizace praktických útoků
Tato kapitola se zabývá praktickými útoky na přenos dat v reálném čase a to především útoky
realizovanými na signalizační protokol SIP. Tyto útoky dokazují, jak je důležité kromě zabezpečení
přenosu multimediálních dat také zabezpečit obsah dat signalizačních.
Odposlouchávání RTP paketů
Tento útok byl realizován pomocí síťového analyzátoru Wireshark. Pokud se útočník dostane k přenášenému
toku nezabezpečených RTP paketů, může si jednotlivé zachycené RTP toky dat po skončení načítání zobrazit
a následně, pokud se jedná o kodek G.711, je uložit do zvukového souboru a přehrát ve zvukovém přehrávači.
Přerušení sestaveného spojení podvržením zprávy BYE
Pro pochopení tohoto útoku je důležité znát komunikaci na základě SIP protokolu, která je naznačena
na obrázku 1. Nejdříve posílá volající klient volanému inicializační zprávu Invite. Když volaný
klient tuto zprávu obdrží, nastane stav vyzvánění a je-li hovor přijat, tak je volajícímu klientovi
zaslána odpověď 200 OK. Volající klient pak potvrdí úspěšné sestavení relace zprávou ACK. Z obrázku
je také vidět, že veškerá SIP komunikace jde přes SIP server. Když se jeden z účastníků rozhodne
ukončit spojení, pošle serveru zprávu BYE a ten ji přepošle druhému klientovi. Tím je spojení ukončeno.
Obr. 1: Princip komunikace s protokolem SIP
Tento útok využívá toho, že jsou signalizační data protokolu SIP posílána sítí v otevřené podobě.
Princip útoku je jednoduchý. Je založen na tom, že bude vytvořen SIP paket, který bude obsahovat
zprávu BYE a který bude následně poslán do sítě za účelem ukončení spojení. Aby byl tento útok
úspěšný, je nutné, aby podvržený paket měl stejný identifikátor hovoru, kterým je Call-ID.
Bylo zjištěno, že nejjednodušší způsob jak tento paket vytvořit, je modifikovat paket ACK,
kterým volající strana potvrzuje sestavení hovoru při navazování spojení. V tomto paketu pak
stačí zaměnit hodnotu ACK za BYE.
Z obrázku 1 je také patrné, že zpráva BYE může být poslána buď na SIP server nebo jednomu z klientů.
Byly vyzkoušeny oba způsoby. Pokud byl paket poslán na adresu klienta útok byl úspěšný, protože
klient nekontroluje parametr branch, kterým je jedinečně identifikována transakce mezi účastníky.
Pokud byl podvržený paket zaslán na SIP server, tak byl útok neúspěšný, protože server zjistil,
že hodnota parametru branch je jiná než očekávaná hodnota.
Pro realizaci tohoto útoku byla použita kombinace programů Scapy a Wireshark. Samotný útok byl
realizován programem Scapy a Wireshark sloužil pouze k ověření úspěšnosti útoku. Nejdříve bylo
zachyceno sestavení spojení a zachycené pakety uloženy do proměnné p (obr. 2). Při zachytávání
byl vhodně nastaven filtr tak, aby docházelo pouze k zachycení paketů SIP, které jsou přenášeny
pomocí protokolu UDP a jsou vyměňovány mezi porty 5060, které jsou standardně použity pro přenos
SIP paketů.
Obr. 2: Zachycené pakety SIP při sestavování komunikace mezi klienty
Bylo zjištěno, že hledaný paket ACK byl uložen v devátém zachyceném paketu (obr. 3).
Obr. 3: Zachycený paket ACK
Následně byl do proměnné raw zkopírován obsah pole Raw z proměnné p[8] a byla změněna hodnota ACK
na BYE (obr. 4).
Obr. 4: Vytvoření datového pole pro podvržený paket BYE
Následovalo vytvoření paketu se zdrojovou adresou SIP serveru, s cílovou adresou jednoho klienta
a se zdrojovým a cílovým portem 5060. Příkazem paket.show() bylo možné si vytvořený paket zobrazit
(obr. 5).
Obr. 5: Vytvoření a zobrazení podvrženého paketu BYE
Nakonec byl paket poslán do sítě (obr. 6).
Obr. 6: Poslání vytvořeného paketu BYE do sítě
Programem Wireshark byla ověřena úspěšnost útoku – viz obr. 7. Lze si všimnou, že předtím,
než byl poslán paket BYE, byly pakety RTP posílány ze dvou IP adres, konkrétně z adres 192.168.2.123
a 192.168.2.196. Poté co jeden z klientů přijal podvržený BYE paket, odpověděl serveru zprávou 200 OK
a ukončil spojení. Z výpisu si lze také všimnou, že druhý klient neměl o ukončení spojení ponětí
a posílal RTP pakety dál. Zachycený podvržený paket BYE je zobrazen na obrázku 8.
Obr. 7: Ověření úspěšnosti útoku podvrženého paketu BYE
Obr. 8: Zachycený podvržený paket BYE programem Wireshark
Přesměrování RTP paketů
Jednou z možností jak přesměrovat RTP pakety je modifikovat obsah protokolu SDP, který je při
sestavování komunikace založené na signalizačním protokolu SIP přenášen ve zprávě INVITE. V protokolu
jsou mimo jiné také údaje o IP adrese a portu, které budou použity v průběhu komunikace pro přenos
multimediálních dat. Pokud útočník provede modifikaci těchto údajů, komunikační klient bude, aniž by
to uživatel zaregistroval, odesílat RTP data na jinou IP adresu a port než je adresa uživatele, se
kterým navázal kontakt.
Útok byl opět realizován programem Scapy. Princip útoku je znázorněn na obr.9. Uživatel Novak
(192.168.2.175) chtěl navázat spojení s uživatel Vomacka (192.168.2.189). Poslal tedy zprávu
INVITE na SIP SERVER (192.168.2.134) a ten ji předal dál volanému uživateli. Pomocí Scapy byla
tato zpráva zachycena (obr. 10) a v obsahu protokolu SDP byla změněna IP adresa, která by měla
být použita pro zasílání RTP dat (obr. 11). K úspěšnosti útoku je ovšem důležité, aby uživatel
Vomacka nepřijal hovor dřív, než bude podvržený paket vyslán do sítě. Jestliže se útočníkovi podaří
poslat modifikovaný paket dříve, než bude komunikace navázána, uživatel útok nezaregistruje a po
přijetí hovoru bude posílat RTP pakety na IP adresu, kterou útočník modifikoval.
Obr. 9: Princip útoku pro přesměrování RTP paketů
Obr. 10: Zachycený původní obsah SDP protokolu ve zprávě INVITE
Obr. 11: Obsah protokolu SDP v podvržené zprávě INVITE
Jak je vidět z předchozích dvou obrázků, modifikované IP adresy se nacházejí v parametrech o a c.
Dále je také možnost modifikovat hodnotu portu, která se nachází v parametru m.
K ověření úspěšnosti útoku sloužil program Wireshark, kterým byly zachyceny data na straně uživatele
Vomacky (obr. 12). Ze zachycené komunikace lze vyčíst, že nejdříve uživateli přišla originální
zpráva INVITE. Dříve než uživatel přijal hovor, útočník poslal modifikovanou zprávu INVITE a po
přijetí hovoru byly RTP data posílána na IP adresu útočníka, konkrétně na 192.168.2.137.
Obr. 12: Zachycená komunikace a ověření úspěšnosti útoku