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.

Princip komunikace s protokolem SIP
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ů.

Zachycené pakety SIP při sestavování komunikace mezi klienty
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).

Zachycený paket ACK
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).

Vytvoření datového pole pro podvržený paket BYE
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).

Vytvoření a zobrazení podvrženého paketu BYE
Obr. 5: Vytvoření a zobrazení podvrženého paketu BYE

Nakonec byl paket poslán do sítě (obr. 6).

Poslání vytvořeného paketu BYE do sítě
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.

Ověření úspěšnosti útoku podvrženého paketu BYE
Obr. 7: Ověření úspěšnosti útoku podvrženého paketu BYE

Zachycený podvržený paket BYE programem Wireshark
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.

Princip útoku pro přesměrování RTP paketů
Obr. 9: Princip útoku pro přesměrování RTP paketů

Zachycený původní obsah SDP protokolu ve zprávě INVITE
Obr. 10: Zachycený původní obsah SDP protokolu ve zprávě INVITE

Obsah protokolu SDP v podvržené 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.

Zachycená komunikace a ověření úspěšnosti útoku
Obr. 12: Zachycená komunikace a ověření úspěšnosti útoku


© 2010, Vošec - Petr Otoupalík