Subway Android lietotnes reversā inženierija

click fraud protection

Ir lieliski redzēt, ka arvien vairāk tiek izmantota sertifikātu piespraušana Android lietotnēs. Kad es saskaros ar lietotni, kas rada savienojuma kļūdas, mēģinot nosūtīt starpniekservera pieprasījumus, es sāku vairāk interesēties par niršanu dziļāk. Tāds bija gadījums, kad nesen izmantoju lietotni Subway. Apgriežot APK, tika atklāts sertifikātu piespraušana starp dažiem citiem interesantiem atklājumiem.

Programmas startēšana starpniekservera pieprasījumu laikā izraisīja šo kļūdu:

Piespraušana ir pietiekami vienkārša, lai to apietu. Es sāku, dekompilējot lietotni un analizējot avota kodu atslēgvārdu piespraušanai. Es faktiski atradu piespraušanas implementācijas divās atsevišķās klasēs, kas tika ieviestas X509TrustManager. Šeit ir viena no metodēm, kas piespieda piespraušanu:

 // Code removed at request of Subway leadership

To apiet bija tikpat vienkārši kā atgriešanas priekšraksta pievienošana smali kodam, lai izlaistu piespraušanas kodu iepriekš minētajā metodē. Ņemiet vērā, ka ir pievienots atgriešanās-spēkā paziņojums zemāk:

 // Code removed at request of Subway leadership

Pēc lietotnes pārkompilēšanas un instalēšanas es biju pārsteigts, redzot šo jauno kļūdu:

Subway izmantoja pielāgotu lietotnes paraksta verifikācijas procesu, lai novērstu viņu APK apvēršanu. Atrodot šī procesa pieminēšanas avotu, es to izsekoju ar šādu metodi:

 // Code removed at request of Subway leadership

Tas bija interesants mēģinājums novērst reverso inženieriju, lai gan patiesībā tas izraisīja tikai nelielu kavēšanos. Lai apietu šo procesu, es vienkārši pievienoju rindiņu, lai izlaistu metodes izpildi, pievienojot citu atgriešanās-spēkā līniju, līdzīgi iepriekš norādītajam piespraušanas apiešanas procesam.

 // Code removed at request of Subway leadership

Pēc lietotnes atkārtotas kompilēšanas un instalēšanas es varēju veiksmīgi izpildīt starpniekservera pieprasījumus:

Pētījuma laikā es paklupu šo Reddit ziņu. Acīmredzot Subway arī noteica, vai lietotāja ierīcei ir bijusi sakne. Es meklēju avotā un apstiprināju sakņu noteikšanas metožu pieminējumus.

 // Code removed at request of Subway leadership

Šis ir lielisks piemērs tam, ka lietotne ļoti nopietni uztver drošību, taču es neesmu īsti pārliecināts par saknes pārbaudes procesa pamatojumu. Lai gan sertifikātu piespraušanas un paraksta pārbaudes metodes parasti ir laba ideja, tās tikai nedaudz kavē reversās inženierijas procesu.