Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Quick Tip – Modyfikacja ruchu sieciowego urządzeń mobilnych

26 lutego 2014, 22:30 | Teksty | komentarzy 5

Kilka razy spotkałem się z sytuacją, kiedy testerzy lub developerzy, znający elementarne zasady bezpieczeństwa aplikacji webowych oraz podstawy działania narzędzi takich jak Burp Suite lub Telerik Fiddler, nie potrafili użyć tej wiedzy w projektach mobilnych. Zmiana systemu, urządzenia oraz przekleństwo nauki nowych narzędzi powoduje, że dużo osób przechodzących w świat urządzeń mobilnych zapomina chociażby o programach do modyfikacji ruchu sieciowego.

Tymczasem, aby testować bezpieczeństwo aplikacji mobilnych – chociażby w kontekście komunikacji z web serwisami – wcale nie trzeba instalować specjalnych programów, nie trzeba również „Jailbreakować” czy „rootować” swojego smartfona ani nawet poznawać nowych narzędzi. Wszystkie zabawki po prostu zostały już zainstalowane i trzeba tylko zacząć je używać.

 

Użycie ulubionego proxy w aplikacjach mobilnych

Przekierowanie ruchu z przeglądarki internetowej do proxy działa w ten sam sposób, jak przekierowanie ruchu z urządzenia mobilnego. Poniżej opiszę przykład ustawień systemu iOS 7 oraz Android 4, które zmuszę do komunikacji z Burp Suite oraz Wireshark. Zaprezentowana technika nie jest niczym zaawansowanym i w analogiczny sposób można jej użyć zarówno w innych systemach czy proxy, takich jak OWASP ZAP, Telerik Fiddler itp.

1. Ustaw lokalne proxy na swoim komputerze

W większości przypadków lokalne proxy konfiguruje się w taki sposób, aby nasłuchiwało na interfejsie lokalnym oraz porcie 8080. W tym wypadku proxy musi nasłuchiwać na interfejsie, do którego można wysyłać zapytania z urządzenia mobilnego (port może być oczywiście dowolny).

Powyższą opcję bardzo łatwo ustawia się w oprogramowaniu Burp Suite Free v1.5. W zakładce Proxy->Options należy dodać nową pozycję w sekcji Proxy Listeners, która wymusi nasłuchiwanie ruchu na porcie 8080 każdego interfejsu sieciowego (*:8080).
qt-burp-proxy

Rysunek 1. Ustawienie proxy w Burp Suite Free v1.5.

2. Wskaż proxy w urządzeniu mobilnym

Podłącz smartfona lub tablet do sieci Wi-Fi, najlepiej do tej samej, z której korzysta komputer pełniący rolę proxy. Następnie skonfiguruj ręcznie ustawienia proxy w ustawieniach sieci Wi-Fi w taki sposób, aby wskazać adres interfejsu ustawionego w punkcie 1. wraz z odpowiednim numerem portu.

Na urządzeniach pracujących pod kontrolą systemu iOS można to zrobić przez uzupełnienie sekcji PROXY HTTP w menu ustawień sieci Wi-Fi. W systemach Android ustawienia proxy kryją się w zaawansowanych szczegółach sieci Wi-Fi, do której przechodzi się poprzez dłuższe przytrzymanie przycisku Wi-Fi.
qt-ios-proxy

Rysunek 2. Ustawienie proxy w systemie iOS.

Rysunek 3. Ustawienie proxy w systemie Android.

Rysunek 3. Ustawienie proxy w systemie Android.

Od tego momentu ruch sieciowy generowany przez urządzenie mobilne zostanie przekierowany przez nasze ulubione proxy, w którym będziemy mieli możliwość podglądania oraz modyfikowania ruchu – tak samo jak podczas testowania aplikacji webowych w przeglądarce internetowej.

Rysunek 3. Szczegółowa analiza ruchu aplikacji w jednej z aplikacji mobilnych z wykorzystaniem narzędzia Wireshark.

Rysunek 4. Szczegółowa analiza ruchu aplikacji w jednej z aplikacji mobilnych z wykorzystaniem narzędzia Wireshark.

Rysunek 5. Modyfikacja ruchu aplikacji mobilnej w Burp Suite.

Rysunek 5. Modyfikacja ruchu aplikacji mobilnej w Burp Suite.

Powyższy sposób jest bardzo prosty i skuteczny, może jednak powodować pewien problem dotyczący komunikacji SSL, w szczególności na „niezłamanych urządzeniach”. Sytuacja taka powstaje przez fakt podstawiania fałszywego certyfikatu przez proxy, przez co część połączeń może kończyć się błędem. Tego typu problemy są jednak tematem na inną część artykułu z serii Quick Tip. :)

Na (nie)szczęście większość komunikacji w aplikacjach mobilnych nie odbywa się przez szyfrowany kanał, a w dodatku jeśli testujemy swoją aplikację, zawsze można ją skonfigurować w taki sposób, aby dla potrzeb developerskich nie używała szyfrowanego kanału.

 

Podsumowanie

Warto czasem wychodzić ze swojej strefy komfortu i spróbować wykorzystać coś dobrze znanego w całkowicie nowych warunkach – z pewnością szybko odnajdziemy wspólny mianownik między znanymi technikami i nowo poznawanym obszarem.

Nie przejmujmy się złudną barierą technologiczną – opisany w tym artykule sposób przekierowania ruchu sieciowego nie jest niczym odkrywczym, ale najważniejsze jest to, że zadziałała na każdym urządzeniu, które umożliwia konfigurację proxy – wliczając w to niektóre sterowniki przemysłowe, konsole, SmartTV, a w niedalekiej przyszłości może nawet lodówki i inny sprzęt AGD.

Czasem też po prostu fajnie jest zobaczyć, co dzieje się „pod spodem” naszej ulubionej aplikacji. Może się okazać, że po krótkiej analizie całkowicie zmienimy o niej zdanie…

Rysunek 6. Oooops – jak się okazuje nie wszystkie aplikacje mobilne wysyłają nasze dane uwierzytelniające szyfrowanym kanałem... nieładnie!

Rysunek 6. Oooops – jak się okazuje nie wszystkie aplikacje mobilne wysyłają nasze dane uwierzytelniające szyfrowanym kanałem… nieładnie!

Adrian “Vizzdoom” Michalczyk

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. sebob

    Dobry artykuł – zgadzam się :), czasem wystarczy podłączenie pod XCODE IDE telefonu lub tabletu i efekt jest podobny – przestajesz używać aplikacji bo widzisz jak się komunikuje…

    Odpowiedz
  2. bl4de

    Dobry art :)

    BTW, zestaw zaprezentowany przez Adriana (Burp + Wireshark) to potęga, jeśli chodzi o analizę ruchu sieciowego. W każdym przypadku ;)

    Odpowiedz
  3. Michał

    Na moim SG3 (Android 4.3) jest taki fuckup, że po zmianie opcji proxy na „Ręcznie” nie można zapisać ustawień (wyszarzony przycisk „Zapisz”) cokolwiek bym nie poprzestawiał. Na googlach ludzie mają podobne problemy ale nie znalazłem niestety żadnego rozwiązania. Any ideas ? :)

    Odpowiedz
    • Czasem tak niestety bywa. Podobny problem miałem kiedyś z ActiveSync gdzie usługę miałem wystawioną na niestandardowym porcie. Nie było możliwości zapisania konfiguracji wykorzystującej port inny niż 443/80.

      Odpowiedz
  4. rootoor

    Poradnik bardzo ciekawy… mam jednak prośbę, mógłby mi ktoś rzucić linkiem, wskazówką, czymkolwiek jjak zmodyfikować przesłane dane?

    Odpowiedz

Odpowiedz