საპირისპირო ინჟინერია მეტრო Android აპი

ძალიან სასიამოვნოა Android აპებში სერტიფიკატების ჩამაგრების მზარდი მიღება. როდესაც ვეშვები აპს, რომელიც უშვებს კავშირის შეცდომებს პროქსი-მოთხოვნის მცდელობისას, უფრო მეტად მაინტერესებს ღრმა ჩაყვინთვა. ასეთი იყო, როდესაც ახლახან გამოვიყენე Subway აპი. APK-ის შეცვლამ სხვა საინტერესო აღმოჩენებს შორის სერთიფიკატის დამაგრება გამოავლინა.

აპის გაშვებამ პროქსის მოთხოვნების დროს გამოიწვია ეს შეცდომა:

ჩამაგრება საკმაოდ მარტივია გვერდის ავლით. დავიწყე აპის დეკომპილირებით და საკვანძო სიტყვების ჩამაგრების წყაროს კოდის ანალიზით. მე რეალურად აღმოვაჩინე დამაგრების განხორციელებები ორ ცალკეულ კლასში, რომლებიც განხორციელდა X509TrustManager. აქ არის ერთ-ერთი მეთოდი, რომელიც აიძულებს დამაგრებას:

 // Code removed at request of Subway leadership

ამის გვერდის ავლით ისეთივე მარტივი იყო, როგორც დაბრუნების განცხადების დამატება smali კოდში, რათა გამოტოვოთ დამაგრების კოდი ზემოთ მოცემულ მეთოდში. გაითვალისწინეთ დამატება დაბრუნება-ბათილი განცხადება ქვემოთ:

 // Code removed at request of Subway leadership

აპლიკაციის ხელახლა კომპილაციისა და ინსტალაციის შემდეგ, გაკვირვებული ვიყავი ამ ახალი შეცდომის დანახვით:

Subway იყენებდა მორგებული აპის ხელმოწერის დადასტურების პროცესს, რათა თავიდან აიცილოს მათი APK-ის უკან დაბრუნება. ამ პროცესის ხსენების წყაროს ვიპოვე, მე მივაკვლიე მას შემდეგ მეთოდზე:

 // Code removed at request of Subway leadership

ეს იყო საპირისპირო ინჟინერიის თავიდან აცილების საინტერესო მცდელობა, თუმცა რეალურად მხოლოდ მცირე შეფერხება გამოიწვია. ამ პროცესის გვერდის ავლით, მე უბრალოდ დავამატე ხაზი, რომ გამოვტოვო მეთოდის შესრულება მეორეს დამატებით. დაბრუნება-ბათილი ხაზი, ზემოთ მოყვანილი შემოვლითი პროცესის მსგავსი.

 // Code removed at request of Subway leadership

აპლიკაციის ხელახალი კომპილაციისა და ინსტალაციის შემდეგ, მე წარმატებით შევძელი პროქსის მოთხოვნების დაყენება:

ჩემი კვლევის დროს წავაწყდი ეს Reddit პოსტი. როგორც ჩანს, Subway ასევე ადგენდა, იყო თუ არა მომხმარებლის მოწყობილობა root. მე მოვიძიე წყაროში და დავადასტურე ხსენებები root გამოვლენის მეთოდების შესახებ.

 // Code removed at request of Subway leadership

ეს არის შესანიშნავი მაგალითი იმისა, რომ აპი ძალიან სერიოზულად ეკიდება უსაფრთხოებას, მაგრამ მე არ ვარ დარწმუნებული ძირეული შემოწმების პროცესის მსჯელობაში. მიუხედავად იმისა, რომ სერთიფიკატის დამაგრება და ხელმოწერის გადამოწმების ტექნიკა ზოგადად კარგი იდეაა, ისინი მხოლოდ ოდნავ აფერხებენ საპირისპირო საინჟინრო პროცესს.