Zpětné inženýrství aplikace Subway pro Android

click fraud protection

Je skvělé sledovat rostoucí přijetí připínání certifikátů v aplikacích pro Android. Když narazím na aplikaci, která při pokusu o zadání proxy požadavků vyvolá chyby připojení, mám tendenci se více zajímat o potápění hlouběji. To byl případ, kdy jsem nedávno použil aplikaci Subway. Obrácení souboru APK odhalilo mimo jiné zajímavé zjištění připnutí certifikátu.

Spuštění aplikace během požadavků na proxy způsobilo tuto chybu:

Připnutí je dostatečně jednoduché na to, aby se obešlo. Začal jsem dekompilací aplikace a analýzou zdrojového kódu pro připnutí klíčových slov. Vlastně jsem našel implementace připnutí ve dvou samostatných třídách, které implementovaly X509 TrustManager. Zde je jedna z metod, která vynutila připnutí:

 // Code removed at request of Subway leadership

Obejít to bylo stejně jednoduché jako přidání příkazu return do malého kódu a přeskočení připínacího kódu ve výše uvedené metodě. Všimněte si přidání return-void níže uvedené prohlášení:

 // Code removed at request of Subway leadership

Po rekompilaci aplikace a instalaci jsem byl překvapen, že jsem viděl tuto novou chybu:

Subway používal vlastní proces ověřování podpisu aplikace, aby zabránil vrácení jejich APK. Vyhledal jsem zdroj pro zmínky o tomto procesu a vysledoval jsem jej zpět k následující metodě:

 // Code removed at request of Subway leadership

Byl to zajímavý pokus o zabránění zpětnému inženýrství, i když ve skutečnosti způsobil pouze mírné zpoždění. Abych tento proces obešel, jednoduše jsem přidal řádek pro přeskočení provádění metody přidáním dalšího return-void linka, podobně jako výše uvedený proces přemostění připnutí.

 // Code removed at request of Subway leadership

Po rekompilaci a instalaci aplikace se mi podařilo úspěšně zadat proxy požadavky:

Během svého výzkumu jsem narazil tento příspěvek na Redditu. Subway zřejmě také zjišťoval, zda bylo zařízení uživatele rootováno. Hledal jsem ve zdroji a potvrdil zmínky o metodách detekce kořenů.

 // Code removed at request of Subway leadership

Toto je skvělý příklad aplikace, která bere zabezpečení velmi vážně, ale nejsem si zcela jistý zdůvodněním procesu kontroly root. Ačkoli jsou techniky připínání certifikátů a ověřování podpisů obecně dobrý nápad, pouze mírně brání procesu reverzního inženýrství.