Meta'nın Messenger sertifika pinning'ini kırmak (macOS)
- Meta'nın macOS için Messenger uygulaması, bağımsız bir masaüstü uygulaması olan Texts.com modeline benziyor.
- Texts.com'daki Meta platformu projesine liderlik eden Batuhan İçöz, ağ isteklerini yakalamanın ilk adım olarak önemli olduğunu düşünüyor.
- Meta, güvenliği güçlendirmek ve MITM (ortadaki adam) saldırılarıyla sunucu isteklerinin analiz edilmesini önlemek için sertifika pinning uygular.
Sertifika pinning nedir?
- Bir proxy istemcisi ayarlarken, "sertifika otoritesi"ne güvenecek şekilde yapılandırmanız gerekir.
- Sertifika otoritesi tarafından verilen sertifikalar kullanılarak isteklere ilişkin bilgiler yakalanabilir ve çözülebilir.
- Bir hizmet sertifika pinning uygularsa, yalnızca belirli sertifika otoriteleri tarafından verilen sertifikaları kabul eder; böylece kullanıcının sertifika otoritesi tarafından verilen sertifikalar kullanılamaz.
Varsayılan davranış
- Sertifika pinning devre dışı bırakılmazsa, tüm istekler "iç hata" olarak döner ve proxy yazılımı "SSL handshake failure" gösterir.
- İstekler yaşam döngüsünü tamamlayamadığı için istekler hakkındaki bilgiler çıkarılamaz.
İstenen davranış
- MITM saldırısı kullanılarak ağ hata ayıklama araçlarında istekler, yanıtlar ve başlıklar başarıyla okunabilir.
Olası yaklaşımlar
- Daha önce işe yarayan yöntemlerden biri, ikilideki URL dizelerini TLS uygulamayan ve güvenli olmayan, self-hosted bir endpoint ile değiştirmekti.
- Frida gibi dinamik araçsal gözlem kütüphaneleri kullanılabilir, ancak Messenger özellikle hooking sırasında çökmeye yatkındır.
- Frida kullanmak karmaşık bir dağıtım süreci içerir.
Yaklaşım
- Messenger indirilip Uygulamalar klasörüne taşındıktan sonra ARM ikilisi Hopper'a aktarılır.
- Hopper ile ikili ayrıştırılabilir, decompile edilebilir, yeniden derlenebilir, hata ayıklanabilir ve görselleştirilebilir.
- En az değişiklikle ilerlemek için "SSL pinning validation failed" gibi dizeler aranır.
- "Using custom sandbox -> turn off SSL verification" dizesi bulunur ve ilgili işlev bulunup değiştirilir.
- IsUsingSandbox işlevi her zaman true dönecek şekilde ayarlanarak sertifika pinning devre dışı bırakılır.
Sonuç
- Yeni yürütülebilir dosya dışa aktarılıp imzası kaldırıldıktan sonra, özgün Messenger ikilisi yeni ikiliyle değiştirilir.
- Messenger yeniden başlatıldığında proxy aracı başlıkları, yanıt gövdesini ve tüm istek bilgilerini gösterir.
- İkili dosyanın 97,477,728 baytının yalnızca 4 baytı değiştirilerek istekler başarıyla yakalanır.
Dağıtım
- İkili derlendikten sonra Batuhan'a gönderilir.
- Batuhan bir imza sertifikası alır, bunu kurar ve uygulamayı imzalar.
- İmzalama tamamlandığında kendi sisteminde bu ikiliyi kullanarak kendi isteklerini görebilir.
GN⁺'un yorumu
- Bu makale, güvenlik araştırmacılarının Meta'nın Messenger uygulamasında sertifika pinning'i nasıl atlattığına dair ilgi çekici bir örnek sunuyor.
- Sertifika pinning, ortadaki adam saldırılarını önleyen önemli bir güvenlik özelliğidir; ancak araştırmacıların bunu aşmanın yollarını bulması güvenlik topluluğu için önemli içgörüler sağlar.
- Bu teknik, geliştiricilerin kendi uygulama veya hizmetlerinin güvenliğini güçlendirmesine yardımcı olabilir ve güvenlik açıklarının bulunup giderilmesine katkı sağlayabilir.
- Ancak bu tür araştırmaların kötü niyetli amaçlarla kullanılma ihtimali de bulunduğundan, sonuçlar paylaşılırken dikkatli olunmalıdır.
- Benzer işlevler sunan diğer araçlar arasında Wireshark ve Burp Suite gibi ağ analiz araçları bulunur; bunlar ağ trafiğini izlemek ve analiz etmek için yaygın olarak kullanılır.
1 yorum
Hacker News görüşleri
Hukuki boyuta dair merak
Decompile ve yeniden derleme denemesi ile adanmışlık
Geçmişteki tekniklerin kaybı
Meta'nın RE savunmalarına dair gözlem
IsUsingSandbox()fonksiyonunu kaldırmanın basit olacağını söylüyor.Sandbox modunda certificate pinning
Runtime binary checksum'un faydası
Proxy aracı kullanımına dair soru
Büyük şirket uygulamalarının güvenliği
Meta uygulama trafiğini yakalamanın gerekliliği
Trafik izlemenin önemi