Archives
- September 2011 (1)
- February 2011 (1)
- December 2010 (1)
- November 2010 (1)
- September 2010 (7)
- August 2010 (7)
W chwili gdy Gadu-Gadu wprowadziło szyfrowanie połączeń bardzo się ucieszyłem. Po pewnym czasie zaczęło mnie jednak zastanawiać, czy aby na pewno teraz nie da się podsłuchać rozmów prowadzonych przez najnowszą wersję Gadu-Gadu. Kilka dni temu zabrałem się więc do analizy jak to obecnie działa.
Po zainstalowaniu Gadu-Gadu 10 (osobiście używam EKG) pierwsze co mi się rzuciło w oczy to masa reklam ;) . Ale nie o tym miałem pisać. Druga rzecz która mi się rzuciła w oczy to fakt nie szyfrowania rozmów prowadzonych z osobami posiadającymi starsze wersje komunikatora (myślałem, że wszystkie rozmowy są szyfrowane). To czy rozmowa jest szyfrowana czy nie, można sprawdzić spoglądając na małą kłódkę umieszczoną w oknie konwersacji. Przyjmuje ona trzy stany: połączenie szyfrowane, brak szyfrowania, częściowe szyfrowanie. Tak na prawdę, bezpieczna rozmowa może być tylko gdy połączenie jest w pełni szyfrowane.
Nasunęło mi się w tedy pytanie: jeśli GG nie szyfruje wszystkiego, to czy da się wymusić, żeby nie szyfrował niczego? :) Odpowiedź po szybkiej analizie okazała się twierdząca. Ale po kolei.
Zgodnie z opisem protokołu znajdującym się pod adresem http://toxygen.net/libgadu/protocol/ Gadu-Gadu przed połączeniem z serwerem dowiaduje się z jakim adresem IP powinien się połączyć korzystając z jednego z adresów:
http://appmsg.gadu-gadu.pl/appsvc/appmsg_ver8.asp?fmnumber=NUMER&fmt=FORMAT&lastmsg=WIADOMOSC&version=WERSJA http://appmsg.gadu-gadu.pl/appsvc/appmsg3.asp?fmnumber=NUMER&version=WERSJA&fmt=FORMAT&lastmsg=WIADOMOSC http://appmsg.gadu-gadu.pl/appsvc/appmsg.asp?fmnumber=NUMER&version=WERSJA&fmt=FORMAT&lastmsg=WIADOMOSC
oczekujÄ…c w odpowiedzi czegoÅ› podobnego do:
21513 0 91.214.237.86:8074 91.214.237.86 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <BODY BGCOLOR="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0" STYLE="overflow: hidden"> <script language="javascript1.2" type="text/javascript"><!-- /* (c)AdOcean 2003-2007 */ document.write('<script id="GaduGadu.GaduGadu_Komunikator.Klient 8.x.Komunikat_8x_400x265" src="http://s1.gg.adocean.pl/_'+(new Date()).getTime()+'/ad.js?id=2OFVHt3XndRg_T.nEIYAI7DwsLqnroLks8KQgStpPSb.Q7/age=0/gender=0/uid=0/redir=http://adserver.gadu-gadu.pl/clickmsg8.asp?uid=0%26adid=21513%26url=" language="javascript"><\/script>'); //--></script> <!-- (C)2000-2008 Gemius SA - gemiusTraffic / ver 11.1 / Komunikat_8x_400x265 --> <script type="text/javascript"> <!--//--><![CDATA[//><!-- var gemius_identifier = new String('0rs1NCMFwUdWDhcwy0etGnZHTDNB6iwjjVQMY9fzAS3.O7/sarg=469af506095de10f119130a0e900b2e67fead344'); //--><!]]> </script> <script type="text/javascript" src="http://gg.hit.gemius.pl/xgemius.js"></script> </BODY> </HTML>
Czego nie ma w dokumentacji, a co wynikło podczas analizy pakietów przesyłany do serwerów GG przez Gadu-Gadu 10 to fakt, że najnowsza wersja klienta łączy się z jeszcze innym adresem, mianowicie:
http://appmsg.gadu-gadu.pl/appsvc/appmsg_ver10.asp?fmnumber=NUMER&fmt=FORMAT&lastmsg=WIADOMOSC&version=WERSJA
OtrzymujÄ…c w odpowiedzi coÅ› podobnego do:
21515 1 ggproxy-15.gadu-gadu.pl:443 ggproxy-15.gadu-gadu.pl <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <BODY BGCOLOR="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0" STYLE="overflow: hidden"> <script language="javascript1.2" type="text/javascript"><!-- /* (c)AdOcean 2003-2010 */ document.write('<script id="GaduGadu.GaduGadu_Komunikator.Klient 10.x.Komunikat_10x_400x265" src="http://s1.gg.adocean.pl/_'+(new Date()).getTime()+'/ad.js?id=69o6d_etk9D0nxOE5AcaallJjLlQqpCXT4rvYvOGjCD.m7/age=0/gender=0/uid=0/redir=http://adserver.gadu-gadu.pl/clickmsg10.asp?uid=0%26adid=21515%26url=" language="javascript"><\/script>'); //--></script> <!-- (C)2000-2010 Gemius SA - gemiusTraffic / ver 11.1 / Komunikat_10x_400x265 --> <script type="text/javascript"> <!--//--><![CDATA[//><!-- var gemius_identifier = new String('zI41j3y4wP5pP8HeEVW7RXaIj_5BvFs7elRY_QAax2z.77/sarg=469af506095de10f119130a0e900b2e67fead344'); //--><!]]> </script> <script type="text/javascript" src="http://gg.hit.gemius.pl/xgemius.js"></script> </BODY> </HTML>
Jak można szybko zauważyć połączenie odbywa się na zupełnie innym porcie. Pierwszy pomysł na jaki wpadłem to spróbowanie podszycia się pod serwer odpowiedzialny za informowanie klientów gdzie mają się łączyć i przekierowanie ich na jeden z serwerów GG który nie wykorzystuje szyfrowania. W tym celu wykorzystując DNS Spoofing przekierowałem domenę appmsg.gadu-gadu.pl na swój lokalny komputer, a na nim utworzyłem w odpowiedniej ścieżce plik appmsg_ver10.asp z następującą zawartością.
0 0 91.214.237.15:8074 0.0.0.0
Gdzie 91.214.237.15:8074 to jakiś z aktualnie działających serwerów z listy dostępnej na stronie http://www.kadu.net/monitor/.
Okazało się, że był to strzał w dziesiątkę. Gadu-Gadu połączyło się ze zdefiniowanym przeze mnie serwerem i przy wszystkich prowadzonych rozmowach nie wykorzystywało szyfrowania :) .
Metoda ta ma jednak dość poważne wady:
Oczywiście zapewne istnieją sposoby na ominięcie tych niedogodności, ale wymagają one sporego nakładu pracy.
Poniżej prezentacja ataku w środowisku testowym:
Czas trwania: 6:04    Napisy: NIE    Jakość: 1920×1200 px   Autor: Suriv
Jako, że pojawiajÄ… siÄ™ gÅ‚osy o nieczytelnoÅ›ci filmu informujÄ™, że by obejrzeć go na peÅ‚nym ekranie należy używać minimum rozdzielczoÅ›ci Full HD (1920×1080) i oglÄ…dać najlepiej w jakoÅ›ci Oryginal (wyżej niż 1080p). W celu obejrzenia filmu na niższej rozdzielczoÅ›ci należy wybrać jakość 720p i otworzyć wyÅ›wietlanie filmu w oknie.