Cel dekompilacji aplikacji mobilnej

Dekompilacja polega na „odwróceniu’ pobranej aplikacji do momentu gdy dostępny jest kod źródłowy.

Celem inżynierii wstecznej każdej aplikacji jest wydobycie wartościowych informacji (z punktu widzenia atakującego) z kodu owej aplikacji.

Przykładem takich wartościowych informacji są np. zahardkodowane poświadczenia (login i hasło osadzone w kodzie aplikacji), czy prywatne adresy IP serwera aplikacji mobilnej.

Jakie narzędzia są potrzebne do dekompilacji?

Zakładając, że aplikacja mobilna została pobrana, następujące narzędzia pomogą w uzyskaniu dostępu do jej kodu:

  • Dex2jar – narzędzie służące do konwersji rozpakowanej aplikacji mobilnej (*.apk) do postaci Javowej (*.jar)
  • Jd-gui – narzędzie służące do wyświetlania kodu aplikacji z uzyskanego powyższą metodą pliku jar.

Dekompilacja krok po kroku

Przechodząc do praktycznego przykładu, zaprezentowana będzie dekompilacja aplikacji mobilnej, która została stworzona (celowo dziurawa) po to, aby móc na niej trenować umiejętności pentesterskie.

Krok 1 – Pobieranie aplikacji mobilnej

W tym artykule wykorzystana zostanie aplikacja o nazwie div-beta.apk, pobrana z https://github.com/payatu/diva-android .

Krok 2 – Rozpakowanie aplikacji mobilnej

Mając pobraną aplikacją w formacie *.apk należy ją rozpakować. Aby to zrealizować, wystarczy posłużyć się narzędziem takim jak unzip.

Jak widać, po rozpakowaniu aplikacji, pojawi się sporo zasobów.

Krok 3 – konwersja pliku *.dex do *.jar

Poniższy zrzut ekranu prezentuje, w jaki sposób zrobić ową konwersję:

Jak widać, pojawił się plik classes-dex2jar.jar, który można teraz otworzyć poprzez narzędzie jd-gui.

Krok 4 – otworzenie pliku *.jar i uzyskanie dostępu do kodu aplikacji

W poniższym zrzucie, czytelnik może zobaczyć, w jaki sposób otwiera się skonwertowana aplikacja do formatu *.jar w narzędziu jd-gui.

Teraz atakujący będzie miał możliwość czytania aplikacji, jak z otwartej księgi, a co za tym idzie będzie miał szansę znaleźć luki bezpieczeństwa, bądź inne cenne dla dalszego ataku dane.

W następnym artykule zaprezentowane zostaną techniki korzystania z narzędzia jd-gui w kontekście konkretnych informacji, których atakujący może poszukiwać.

Podsumowanie

Zaprezentowana technika dekompilacji niepodpisanej aplikacji mobilnej jest techniką przykładową. Omówione powyżej narzędzia zostały pokazane oczywiście nie w formie wyczerpującej – mają one dużo większe możliwości, niż wynika to z powyższego artykułu.

Ich potencjał będzie również poruszany w następnych artykułach z serii testów penetracyjnych aplikacji mobilnych.