NFsec Logo

W poszukiwaniu endpointów aplikacji mobilnej bez brudzenia rączek

02/04/2017 w Pen Test Brak komentarzy.  (artykuł nr 599, ilość słów: 374)

P

ierwszym korkiem w każdej ocenie bezpieczeństwa aplikacji mobilnych w Androidzie jest posiadanie pliku .APK, który reprezentuje aktualną wersję aplikacji mobilnej. W większości przypadków to klient (firma, osoba prywatna) jest odpowiedzialna za dostarczenie nam tego pliku – szczególnie w sytuacji, gdy aktualna wersja aplikacji nie jest publicznie dostępna. Chyba, że chcemy lub zlecono nam ocenę czarnej skrzynki (ang. black box) to wówczas w naszym interesie jest pozyskanie takiego pliku. Poniżej znajduje się prosty przykład, jak z publicznie dostępnej aplikacji wyciągnąć developerskie i testowe adresy, które przez zaniedbanie mogły zostać pozostawione w kodzie takiej aplikacji.

Większość publicznie dostępnych aplikacji znajduje się na platformie Google Play Store. My wybieramy taką, której firma jest obecna w serwisie do legalnych testów bezpieczeństwa – HackerOne. Nie musimy instalować żadnych dodatkowych programów na naszej maszynie, aby pozyskać interesujące nas obiekty. Możemy wykorzystać do tego takie serwisy, jak ApkLeecher, czy APK Downloader. Po ściągnięciu pliku APK wybranej aplikacji na dysk lokalny wykorzystamy serwis Decompilers online w celu uzyskania możliwie największej ilości plików źródłowych i informacji z nich zawartych. Serwis w zamian za upload pliku w formacie APK po przeprocesowaniu powinien umożliwić nam ściągnięcie spakowanego pliku z źródłami (com.dżigibąk.android_source_from_JADX.zip). Pierwszym krokiem jest rozpakowanie archiwum:

unzip com.dżigibąk.android_source_from_JADX.zip

Drugim – proste przeszukanie wszystkich plików, które zawierają adres testowanego serwisu np. dżigibąk.com:

cd com.dżigibąk.android_source_from_JADX
grep -ri -l "dżigibąk.com" *

W wyniku polecenia otrzymujemy listę plików z wyszukiwaną frazą:

AndroidManifest.xml
com/dżigibąk/android/ui/login/OAuthFragment.java
com/dżigibąk/android/util/receivers/DeepLinkReceiver.java
com/dżigibąk/libdżigibąk/data/http/AnalyticsApi.java
com/dżigibąk/libdżigibąk/data/http/BaseBrokebackModule.java
com/dżigibąk/libdżigibąk/data/http/Brokeback.java
com/dżigibąk/libdżigibąk/data/http/PrismApi.java
com/dżigibąk/libdżigibąk/data/model/Order.java
res/values/strings.xml
res/values-zh/strings.xml

Możemy także od razu wyświetlić wyszukiwaną frazę, w celu oceny, czy stanowi ona dla nas jakąś wartość:

find . -type f -print0 | xargs -I {} -0 grep "dżigibąk.com" "{}"
public static final String DEV_ANALYTICS_URL = "http://goku.dev.dżigibąk.com";
public static final String DEV_BROKEBACK_URL = "http://brokeback.dev.dżigibąk.com";
public static final String DEV_EXPERIMENTS_URL = "http://analytics.dev.dżigibąk.com";

Czyli w niecałe 10 minut znaleźliśmy 3 adresy developerskie:

goku.dev.dżigibąk.com (10.2.1.56) (12 linia AnalyticsApi.java)
brokeback.dev.dżigibąk.com (10.2.4.106) (94 linia Brokeback.java)
analytics.dev.dżigibąk.com (10.2.6.89) (13 linia PrismApi.java)

Niestety nie są one dostępne z poziomu internetu (wartości IP w nawiasach). Oprócz błędu możliwości odpytania o ich adresy DNS z sieci zewnętrznej nie stanowią żadnego cennego znaleziska, ale skoro już mamy pliku źródłowe – możemy je przeszukać pod kątem innych błędów…

Kategorie K a t e g o r i e : Pen Test

Tagi T a g i : , , , , , ,

Komentowanie tego wpisu jest zablokowane.