Subway Android Uygulamasında Tersine Mühendislik

click fraud protection

Android uygulamalarında sertifika sabitlemenin giderek daha fazla benimsendiğini görmek harika. Proxy isteklerini gerçekleştirmeye çalışırken bağlantı hataları veren bir uygulamayla karşılaştığımda, daha derine dalmakla daha çok ilgilenmeye başlıyorum. Yakın zamanda Subway uygulamasını kullandığımda da durum böyleydi. APK'nın tersine çevrilmesi, diğer bazı ilginç bulguların yanı sıra sertifika sabitlemeyi de ortaya çıkardı.

Proxy istekleri sırasında uygulamanın başlatılması şu hataya neden oldu:

Sabitleme, atlanacak kadar basittir. Uygulamayı kaynak koda dönüştürerek ve anahtar kelimeleri sabitlemek için kaynak kodunu analiz ederek başladım. Aslında sabitleme uygulamalarını iki ayrı sınıfta uyguladım X509Güven Yöneticisi. Sabitlemeyi zorunlu kılan yöntemlerden biri:

 // Code removed at request of Subway leadership

Bunu atlamak, yukarıdaki yöntemde sabitleme kodunu atlamak için smali koduna bir return ifadesi eklemek kadar basitti. Şunun eklenmesine dikkat edin: geri dönüş boşluğu aşağıdaki ifade:

 // Code removed at request of Subway leadership

Uygulamayı yeniden derleyip yükledikten sonra şu yeni hatayı gördüğüme şaşırdım:

Subway, APK'larının geri alınmasını önlemek için özel bir uygulama imzası doğrulama süreci kullanıyordu. Bu süreçten bahseden kaynağı araştırarak, aşağıdaki yönteme kadar izini sürdüm:

 // Code removed at request of Subway leadership

Bu, tersine mühendisliği engellemeye yönelik ilginç bir girişimdi, ancak gerçekte sadece hafif bir gecikmeye neden oldu. Bu süreci atlamak için, yöntemin yürütülmesini atlamak için başka bir satır ekleyerek basitçe bir satır ekledim. geri dönüş boşluğu Yukarıdaki pinleme bypass işlemine benzer bir çizgi.

 // Code removed at request of Subway leadership

Uygulamayı yeniden derleyip yükledikten sonra proxy isteklerini başarıyla gerçekleştirebildim:

Araştırmam sırasında rastladım bu Reddit gönderisi. Görünüşe göre Subway aynı zamanda kullanıcının cihazının root edilip edilmediğini de belirliyordu. Kaynağı araştırdım ve kök tespit yöntemlerinden bahsedildiğini doğruladım.

 // Code removed at request of Subway leadership

Bu, güvenliği çok ciddiye alan bir uygulamanın harika bir örneğidir, ancak kök kontrol sürecinin arkasındaki mantıktan pek emin değilim. Sertifika sabitleme ve imza doğrulama teknikleri genel olarak iyi bir fikir olsa da, tersine mühendislik sürecini yalnızca biraz engellerler.