1 puan yazan GN⁺ 2024-03-06 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-03-06
Hacker News görüşleri
  • Hukuki boyuta dair merak

    • Bu tür bir eylemin yasal olup olmadığı merak ediliyor.
    • Teknik olarak bunun bir DCMA ihlali olacağını varsaydığını, ancak bu varsayımın yanlış olabileceğinden şüphelendiğini söylüyor.
    • Bunun hukuken nasıl mümkün olduğu sorgulanıyor.
  • Decompile ve yeniden derleme denemesi ile adanmışlık

    • Benzer bir yolu denediğini, ancak decompile/düzenleme/yeniden derleme aşamasında vazgeçtiğini söylüyor.
    • Bu adanmışlığa hayran kaldığını ve buna ne kadar zaman harcandığını merak ettiğini belirtiyor.
    • Kendisinin bir zaman sınırı koyup buna uyduğunu ekliyor.
  • Geçmişteki tekniklerin kaybı

    • Geçmişteki +Orc dönemini anımsıyor.
    • İstenmeyen dalları bulup kaldırma yöntemleri gibi o dönemin bilgisinin büyük ölçüde unutulduğunu söylüyor.
    • Bugün öğrenilmesi gereken çok daha fazla başka teknik olduğunu belirtiyor.
  • Meta'nın RE savunmalarına dair gözlem

    • Meta'nın (özellikle Messenger'ın) reverse engineering (RE) savunmalarının oldukça gevşek olduğuna dikkat çekiyor.
    • Üretim build'inde IsUsingSandbox() fonksiyonunu kaldırmanın basit olacağını söylüyor.
    • Gelişmiş obfuscation teknikleri kullanılmadan önce bile bu savunmaların aşılmasının kolay olacağını belirtiyor.
  • Sandbox modunda certificate pinning

    • Sandbox modunda da certificate pinning'i zorunlu kılmanın yolları olduğundan bahsediyor.
    • Üniversite yıllarında Snapchat trafiğini man-in-the-middle (MitM) saldırısıyla yakalamaya çalıştığını ama başaramadığını hatırlıyor.
  • Runtime binary checksum'un faydası

    • Runtime binary checksum'un değişiklik yapmayı zorlaştırmada işe yarayıp yaramayacağını soruyor.
    • Bunun mobil uygulamalarda yaygın bir prosedür olup olmadığını ve iOS ya da Android SDK'larının böyle bir özellik sunup sunmadığını merak ediyor.
    • Nihai çözümün yalnızca binary içindeki birkaç byte'ı değiştirmek olduğu için, bunun engellenebileceğini düşündüğünü söylüyor.
  • Proxy aracı kullanımına dair soru

    • Yazıda kullanılan proxy aracının ne olduğunu soruyor.
    • Bu araç çalışırken tüm uygulama trafiğini yönlendirip yönlendirmediğini merak ediyor.
  • Büyük şirket uygulamalarının güvenliği

    • Büyük şirketlerin uygulamalarının neden tamamen obfuscate edilmediğini ve değiştirilmiş binary'lerin çalışmasını reddeden başka korumalar içermediğini sorguluyor.
  • Meta uygulama trafiğini yakalamanın gerekliliği

    • Meta uygulamalarının trafiğini yakalamanın gerekli olmadığını savunuyor.
    • Meta'nın bug bounty eğitim sayfasına bağlantı veriyor.
  • Trafik izlemenin önemi

    • Facebook uygulamasının mikrofon üzerinden kullanıcıları dinleyip hedefli reklam gösterdiği yönündeki komplo teorilerini çürütmek açısından bunun önemli olduğunu vurguluyor.
    • Bunu çürütmenin en kolay yolunun uygulama ile Facebook sunucuları arasındaki trafiği izlemek olduğunu, ancak certificate pinning'in buna engel olduğunu belirtiyor.
    • Komplo teorilerine inanan insanları ikna etmenin zor olduğunu, ancak böyle bir izlemenin mümkün olduğunu bilmenin önemli olduğunu söylüyor.