ios, Narzędzia

Jak podglądać ruch sieciowy na iPhone – Fiddler

Hej,

Jakiś czas temu, a raczej duży kawał czasu temu, napisałam posta o tym jak podglądać ruch sieciowy z iPhone przy użyciu narzędzia ZAP (link). Dzisiaj temat bardzo podobny, jednak tym razem wykorzystam do tego celu narzędzie Fiddler.

Post pisałam mając w ręku telefon z iOS 12.2 (dla innych wersji iOSa poszczególne ekrany mogą wyglądać nieco inaczej).

Najpierw należy pozwolić Fiddlerowi na przechwytywanie ruchu z zewnętrznych urządzeń. Klikam w Tools > Options > Conncetions i tam zaznaczam checkboxa „Allow remote computers to connect”.

Image 2019-04-17 at 11.59.20 AM

Następnie sprawdzam moje ip. Można je szybko podejrzeć w Fiddlerze (w prawym górnym rogu):

Image 2019-04-17 at 12.05.29 PM.png

Kolejnym krokiem będzie zainstalowanie wtyczki do Fiddlera: „CertMaker for iOS and Android”

Potem ustawiam odpowienie proxy w moim telefonie: Ustawienia > Wi-Fi > nazwa sieci > Konfiguruj proxy:

Image from iOS (9)

Następnie na iPhone w Safari odpalam link: http://ipv4.fiddler:8888/ i pobieram FiddlerRoot certificate.

Image 2019-04-17 at 12.22.23 PM

Teraz instaluję pobrany certyfikat na telefonie wchodząc w Ustawienia > Ogólne > Profile

Image from iOS (10)

W ostatnim kroku należy aktywować certyfikat w telefonie: Ustawienia > Ogólne > To urządzenie > Ustawienie zaufania certyfikatu

Image from iOS (11)

Od tej chwili można pogdlądać ruch sieciowy w Fiddlerze zarówno z przeglądarki jak i z apek mobilnych. 🕵️‍♀️📱🔍😎

Bezpieczeństwo

Inżynieria Wsteczna – co to takiego?

Inżynieria wsteczna, odwrotna, programowanie zwrotne – co to takiego?

Jest to proces badania aplikacji w celu ustalenia jej działania, a w konsekwencji stworzenia odpowiednika. Jest to jedna z technik wykorzystywana podczas przeprowadzania audytu bezpieczeństwa aplikacji.

Jedną z technik inżynierii wstecznej jest dekompilacja czyli przekształcanie kodu maszynowego do języka wyższego poziomu. Warto jednak zaznaczyć, że dekompilacja nie odtwarza kodu źródłowego sprzed jego kompilacji. Odtwarza pewną postać źródłową programu w języku wyższego rzędu.

Jak się zabezpieczyć?

Aby zabezpieczyć naszą aplikację przed potencjalnym atakiem poprzez jej modyfikację powinniśmy jakoś tę czynność utrudnić ewentualnemu „napastnikowi”.

Jedną z technik ochrony przed stosowaniem inżynierii wstecznej jest obfuskacja kodu.

Obfuskacja czyli zaciemnianie kodu jest to technika przekształcania programów tak aby utrudnić ich zrozumienie zachowując przy tym semantykę. Wyróżniamy kilka typów obfuskacji: transformacja wyglądu, transformacja danych, transformacja kontroli.

Transformacja wyglądu – zmiana nazw zmiennych i funkcji, zmiana formatowania, usuwanie komentarzy.

Transformacja danych – rozdzielanie zmiennych, konwersja statycznych danych do procedury, zmiana kodowania, zmiana długości życia zmiennej, łączenie zmiennych skalarnych, zmiana realizacji dziedziczenia, rozłam/łączenie tablic, zmiana porządku instancji zmiennych / metod / tablic.

Transformacja kontroli – zmiana przebiegu, rozszerzenie warunków pętli,  zmiana kolejności komend / pętli / wyrażeń, metody inline, ogólnikowe wyrażenia, klonowanie metod.

Obfuskacja a minifikacja

No właśnie. Gdzie właściwie tkwi różnica? Czytając definicje obfuskacji i minifikacji można mieć wrażenie, że właściwie to to samo. I właściwie tak jest. Efekt obfuskacji i minifikacji często jest podobny jednak różnica pomiędzy tymi pojęciami tkwi w celu. Celem obfuskacji jest zaciemnienie kodu i utrudnienie jego czytania. Celem minifikacji jest zmniejszenie rozmiaru aplikacji.

Przykładowe narzędzia do obfuskacji kodu:

  • Java: ProGuard, JODE, JavaGuard, DexGuard
  • .NET: Obfuscar
  • JS: javascript-obfuscator, grunt-javascript-obfuscator
  • PHP: php-obfuscator, php-packer