Subwayn Android-sovelluksen käänteinen suunnittelu

click fraud protection

On hienoa nähdä varmenteiden kiinnittämisen yleistyvän Android-sovelluksissa. Kun törmään sovellukseen, joka heittää yhteysvirheitä yrittäessään lähettää välityspalvelinpyyntöjä, olen yleensä kiinnostunut sukeltamaan syvemmälle. Näin oli, kun käytin äskettäin Subway-sovellusta. APK: n kääntäminen paljasti sertifikaatin kiinnittymisen muiden mielenkiintoisten havaintojen joukossa.

Sovelluksen käynnistäminen välityspalvelinpyyntöjen aikana aiheutti tämän virheen:

Kiinnitys on riittävän yksinkertaista ohitettavaksi. Aloitin purkamalla sovelluksen ja analysoimalla lähdekoodia avainsanojen kiinnittämiseksi. Löysin itse asiassa kiinnitystoteutuksia kahdesta erillisestä luokasta, jotka toteuttivat X509TrustManager. Tässä on yksi menetelmistä, jotka pakottivat kiinnityksen:

 // Code removed at request of Subway leadership

Tämän ohittaminen oli yhtä helppoa kuin paluulausekkeen lisääminen smali-koodiin ohittaaksesi yllä olevan menetelmän kiinnityskoodin. Huomaa lisäys palautus-tyhjä alla oleva lausunto:

 // Code removed at request of Subway leadership

Sovelluksen uudelleen kääntämisen ja asennuksen jälkeen olin yllättynyt nähdessäni tämän uuden virheen:

Subway käytti mukautettua sovelluksen allekirjoituksen vahvistusprosessia estääkseen APK: n peruutuksen. Tarkastellessani lähteen mainintaa tästä prosessista, jäljitin sen seuraavaan menetelmään:

 // Code removed at request of Subway leadership

Tämä oli mielenkiintoinen yritys estää käänteinen suunnittelu, vaikka se itse asiassa aiheutti vain pienen viiveen. Ohitakseni tämän prosessin, lisäsin vain rivin, joka ohittaa menetelmän suorittamisen lisäämällä toisen palautus-tyhjä rivi, samanlainen kuin yllä oleva kiinnityksen ohitusprosessi.

 // Code removed at request of Subway leadership

Sovelluksen uudelleenkääntämisen ja asennuksen jälkeen onnistuin välittämään välityspalvelinpyynnöt:

Tutkimukseni aikana törmäsin siihen tämä Reddit-postaus. Ilmeisesti Subway määritteli myös, oliko käyttäjän laite rootattu. Selailin lähdettä ja vahvistin maininnat juuritunnistusmenetelmistä.

 // Code removed at request of Subway leadership

Tämä on loistava esimerkki sovelluksesta, joka suhtautuu tietoturvaan erittäin vakavasti, mutta en ole aivan varma juuritarkistusprosessin syistä. Vaikka varmenteiden kiinnitys- ja allekirjoitusten varmennustekniikat ovat yleensä hyvä idea, ne haittaavat vain hieman käänteissuunnitteluprosessia.