Сјајно је видети све веће усвајање качења сертификата у Андроид апликацијама. Када налетим на апликацију која даје грешке у вези док покушавам да пошаљем прокси захтеве, постајем више заинтересован за дубље роњење. Такав је био случај када сам недавно користио апликацију Субваи. Преокретање АПК-а открило је причвршћивање сертификата међу неким другим занимљивим налазима.
Покретање апликације током проксија захтева изазвало је ову грешку:
Качење је довољно једноставно да се заобиђе. Почео сам тако што сам декомпилирао апликацију и анализирао изворни код за причвршћивање кључних речи. Заправо сам пронашао закачење имплементације у две одвојене класе које су имплементиране Кс509ТрустМанагер. Ево једне од метода која је наметнула качење:
// Code removed at request of Subway leadership
Заобилажење овога било је једноставно као додавање повратне изјаве у смали код да би се прескочио код за качење у методу изнад. Обратите пажњу на додавање повратак-празнина изјава испод:
// Code removed at request of Subway leadership
Након поновног компајлирања апликације и инсталирања, био сам изненађен када сам видео ову нову грешку:
Субваи је користио процес верификације прилагођеног потписа апликације да би спречио поништавање њиховог АПК-а. Тражећи извор за помињање овог процеса, пратио сам га до следеће методе:
// Code removed at request of Subway leadership
Ово је био занимљив покушај спречавања обрнутог инжењеринга, иако је заправо изазвао само мало одлагање. Да бих заобишао овај процес, једноставно сам додао ред да прескочим извршење методе додавањем другог повратак-празнина линију, слично горе наведеном процесу заобилажења прикачења.
// Code removed at request of Subway leadership
Након поновног компајлирања и инсталирања апликације, успео сам да успешно извршим прокси захтеве:
Током мог истраживања, налетео сам на овај пост на Реддиту. Очигледно, Субваи је такође одређивао да ли је корисников уређај укорењен. Тражио сам около у извору и потврдио помињање метода детекције корена.
// Code removed at request of Subway leadership
Ово је одличан пример апликације која безбедност схвата веома озбиљно, али нисам сасвим сигуран у разлоге који стоје иза процеса провере роот-а. Иако су технике закачења сертификата и верификације потписа генерално добра идеја, оне само мало ометају процес обрнутог инжењеринга.