Meta के Messenger की certificate pinning तोड़ना (macOS)
- Meta का macOS के लिए Messenger application, standalone desktop application Texts.com model के समान है।
- Texts.com में Meta platform project का नेतृत्व करने वाले Batuhan İçöz का मानना है कि network requests को intercept करना पहला महत्वपूर्ण कदम है।
- Meta ने security मजबूत करने के लिए certificate pinning लागू की है, और MITM(मैन-इन-द-मिडल) attack के ज़रिए server requests के analysis को रोकती है।
certificate pinning क्या है?
- Proxy client सेट करते समय उसे "certificate authority" पर trust करने के लिए configure करना होता है।
- certificate authority द्वारा जारी certificate का उपयोग करके requests की जानकारी को intercept और decrypt किया जा सकता है।
- अगर service certificate pinning लागू करती है, तो वह केवल किसी विशेष certificate authority द्वारा जारी certificate ही स्वीकार करती है, जिससे user की certificate authority द्वारा जारी certificate का उपयोग नहीं किया जा सकता।
डिफ़ॉल्ट व्यवहार
- certificate pinning को disable किए बिना सभी requests "internal error" के रूप में लौटती हैं, और proxy software "SSL handshake failure" दिखाता है।
- क्योंकि request अपना lifecycle पूरा नहीं कर पाती, इसलिए request के बारे में जानकारी infer नहीं की जा सकती।
वांछित व्यवहार
- MITM attack का उपयोग करके network debugging tool में requests, responses और headers को सफलतापूर्वक पढ़ा जा सकता है।
संभावित approach
- पहले काम कर चुके तरीकों में से एक binary में URL string को ऐसे unsafe self-hosted endpoint से बदलना था जो TLS implement नहीं करता।
- Frida जैसी dynamic instrumentation library का उपयोग किया जा सकता है, लेकिन Messenger खासकर hooking के दौरान crash होने की प्रवृत्ति रखता है।
- Frida का उपयोग करना एक जटिल deployment process भी शामिल करता है।
approach
- Messenger डाउनलोड करके उसे Applications folder में ले जाने के बाद, ARM binary को Hopper में import किया गया।
- Hopper का उपयोग करके binary को disassemble, decompile, recompile, debug और visualize किया जा सकता है।
- बदलाव को न्यूनतम रखने के लिए "SSL pinning validation failed" जैसी strings खोजी गईं।
- "Using custom sandbox -> turn off SSL verification" string मिली, और संबंधित function ढूँढकर उसे modify किया गया।
- IsUsingSandbox function को हमेशा true पर सेट करके certificate pinning को disable किया गया।
परिणाम
- नई executable file export करने और signature हटाने के बाद, मूल Messenger binary को नई binary से replace किया गया।
- Messenger को restart करने पर proxy tool में headers, response body और सभी request जानकारी दिखाई देने लगी।
- binary के 97,477,728 bytes में से सिर्फ 4 bytes बदलकर request interception सफल हुआ।
deployment
- binary को compile करने के बाद उसे Batuhan को भेजा गया।
- Batuhan ने signing certificate लेकर उसे install किया और application पर sign किया।
- signing पूरा होने के बाद वह अपने system पर binary का उपयोग करके अपनी requests देख सकता था।
GN⁺ की राय
- यह लेख एक दिलचस्प उदाहरण देता है कि security researchers Meta के Messenger app में certificate pinning को कैसे bypass करते हैं।
- certificate pinning, man-in-the-middle attacks को रोकने वाला एक महत्वपूर्ण security feature है, लेकिन researchers द्वारा इसे bypass करने के तरीके खोज निकालना security community को महत्वपूर्ण insights देता है।
- यह तकनीक developers को अपने apps या services की security मज़बूत करने में मदद कर सकती है, और security vulnerabilities खोजने व उन्हें ठीक करने में योगदान दे सकती है।
- हालांकि, ऐसे research का दुरुपयोग malicious उद्देश्यों के लिए भी हो सकता है, इसलिए findings साझा करते समय सावधानी बरतनी चाहिए।
- समान functionality देने वाले अन्य tools में Wireshark या Burp Suite जैसे network analysis tools शामिल हैं, जिनका उपयोग network traffic को monitor और analyze करने के लिए व्यापक रूप से किया जाता है।
1 टिप्पणियां
Hacker News की राय
कानूनी पहलू को लेकर जिज्ञासा
decompile और recompile की कोशिश तथा समर्पण
पुरानी तकनीकी जानकारी का खो जाना
Meta के RE defenses पर अवलोकन
IsUsingSandbox()को हटाना आसान होगा, ऐसा कहा गया।sandbox mode में certificate pinning
runtime binary checksum की उपयोगिता
proxy tool के उपयोग पर सवाल
बड़ी कंपनियों के applications की security
Meta app traffic intercept करने की संभावना
traffic monitoring का महत्व