„Android“ programos „Subway“ atvirkštinė inžinerija

Puiku matyti, kad „Android“ programose vis dažniau taikomas sertifikatų prisegimas. Kai bandau pateikti tarpinio serverio užklausas, paleidžiu programą, kuri išmeta ryšio klaidas, aš linkęs labiau pasinerti giliau. Taip buvo, kai neseniai naudojau Subway programėlę. Atšaukus APK, tarp kai kurių kitų įdomių išvadų buvo nustatytas sertifikatų prisegimas.

Programos paleidimas perduodant tarpinio serverio užklausas sukėlė šią klaidą:

Prisegimas yra pakankamai paprastas, kad jį būtų galima apeiti. Pradėjau dekompiliuodamas programą ir analizuodamas raktinių žodžių prisegimo šaltinio kodą. Iš tikrųjų radau prisegtus diegimus dviejose atskirose klasėse, kurios buvo įdiegtos X509TrustManager. Štai vienas iš prisegimo metodų:

 // Code removed at request of Subway leadership

Apeiti tai buvo taip paprasta, kaip pridėti grįžimo teiginį į smali kodą, kad praleistumėte prisegimo kodą aukščiau nurodytu metodu. Atkreipkite dėmesį į pridėjimą grąžinimas-negalioja teiginys žemiau:

 // Code removed at request of Subway leadership

Iš naujo sukompiliavęs ir įdiegęs programą nustebau pamatęs šią naują klaidą:

„Subway“ naudojo tinkintą programos parašo patvirtinimo procesą, kad būtų išvengta APK atšaukimo. Išsiaiškinęs šio proceso paminėjimo šaltinį, atsekiau jį tokiu metodu:

 // Code removed at request of Subway leadership

Tai buvo įdomus bandymas užkirsti kelią atvirkštinei inžinerijai, nors iš tikrųjų tai sukėlė tik nedidelį vėlavimą. Norėdamas apeiti šį procesą, aš tiesiog pridėjau eilutę, kad praleisčiau metodo vykdymą, pridėdamas kitą grąžinimas-negalioja linija, panaši į aukščiau aprašytą prisegimo apėjimo procesą.

 // Code removed at request of Subway leadership

Perkompiliavus ir įdiegus programą, man pavyko sėkmingai perduoti tarpinio serverio užklausas:

Per savo tyrimus aš suklupau šis Reddit įrašas. Matyt, Subway taip pat nustatė, ar vartotojo įrenginys buvo įsišaknijęs. Aš ieškojau šaltinio ir patvirtinau šaknų aptikimo metodų paminėjimus.

 // Code removed at request of Subway leadership

Tai puikus pavyzdys, kai programa labai rimtai žiūri į saugumą, bet nesu tikras dėl šakninio tikrinimo proceso priežasčių. Nors sertifikatų prisegimo ir parašo tikrinimo metodai paprastai yra gera idėja, jie tik šiek tiek trukdo atvirkštinės inžinerijos procesui.