# Burp प्रमाणपत्र स्थापित करें
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे**? या क्या आप **PEASS के नवीनतम संस्करण तक पहुँचना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जाँच करें! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह * [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें * **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram समूह**](https://t.me/peass) में शामिल हों या मुझे **Twitter** पर **फॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **अपनी हैकिंग ट्रिक्स साझा करें, [**hacktricks repo**](https://github.com/carlospolop/hacktricks) और [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके.**
## वर्चुअल मशीन पर सबसे पहले आपको Burp से Der प्रमाणपत्र डाउनलोड करना होगा। आप यह _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ में जाकर कर सकते हैं। ![](<../../.gitbook/assets/image (367).png>) **Der प्रारूप में प्रमाणपत्र निर्यात करें** और इसे ऐसे रूप में **परिवर्तित** करें जिसे **Android** समझ सके। ध्यान दें कि **AVD में Android मशीन पर burp प्रमाणपत्र को कॉन्फ़िगर करने के लिए** आपको इस मशीन को **`-writable-system`** विकल्प के साथ **चलाना** होगा।\ उदाहरण के लिए आप इसे इस तरह चला सकते हैं: {% code overflow="wrap" %} ```bash C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system ``` {% endcode %} फिर, **burp प्रमाणपत्र को कॉन्फ़िगर करने के लिए**: {% code overflow="wrap" %} ```bash openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0" mv burp_cacert.pem $CERTHASHNAME #Correct name adb root && sleep 2 && adb remount #Allow to write on /syste adb push $CERTHASHNAME /sdcard/ #Upload certificate adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges adb reboot #Now, reboot the machine ``` {% endcode %} मशीन पुनः आरंभ होने के बाद, बर्प प्रमाणपत्र उसके द्वारा उपयोग में लिया जाएगा! ## Magisc का उपयोग करना यदि आपने अपने डिवाइस को Magisc के साथ रूट किया है (शायद एक एमुलेटर), और आप पिछले चरणों का पालन नहीं कर सकते हैं क्योंकि फाइलसिस्टम केवल-पढ़ने के लिए है और आप इसे लिखने योग्य रूप में पुनः माउंट नहीं कर सकते हैं, तो एक और तरीका है। [**इस वीडियो**](https://www.youtube.com/watch?v=qQicUW0svB8) में बताया गया है कि आपको क्या करना है: 1. **CA प्रमाणपत्र स्थापित करें**: बस DER Burp प्रमाणपत्र को `.crt` एक्सटेंशन में बदलकर मोबाइल में **खींचें और छोड़ें** ताकि यह डाउनलोड फोल्डर में संग्रहीत हो जाए और `Install a certificate` -> `CA certificate` पर जाएं
* `Trusted credentials` -> `USER` पर जाकर जांचें कि प्रमाणपत्र सही ढंग से संग्रहीत हुआ है
2. **इसे सिस्टम विश्वसनीय बनाएं**: Magisc मॉड्यूल [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (एक .zip फाइल) डाउनलोड करें, इसे फोन में **खींचें और छोड़ें**, फोन में **Magics ऐप** पर जाएं **`Modules`** सेक्शन में, **`Install from storage`** पर क्लिक करें, .zip मॉड्यूल को चुनें और इंस्टॉल होने के बाद फोन को **पुनः आरंभ** करें:
* पुनः आरंभ करने के बाद, `Trusted credentials` -> `SYSTEM` पर जाएं और जांचें कि Postswigger प्रमाणपत्र वहां है
## एंड्रॉइड 14 के बाद परिवर्तन: * अब तक, सिस्टम-विश्वसनीय CA प्रमाणपत्र **`/system/etc/security/cacerts/`** में रहते थे। एक मानक AOSP एमुलेटर पर, इन्हें रूट एक्सेस के साथ सीधे संशोधित किया जा सकता था, जिससे तुरंत **हर जगह प्रभाव** पड़ता था। * एंड्रॉइड 14 में, सिस्टम-विश्वसनीय CA प्रमाणपत्र आमतौर पर **`/apex/com.android.conscrypt/cacerts`** में रहेंगे, और **`/apex` का पूरा हिस्सा अपरिवर्तनीय है**। * **APEX cacerts पथ को पुनः माउंट करना जैसे लिखने योग्य नहीं किया जा सकता** - पुनः माउंट सिर्फ विफल हो जाते हैं। वास्तव में, यदि आप रूट शेल से पूरे पथ को अनमाउंट भी कर देते हैं, तो ऐप्स अभी भी आपके प्रमाणपत्रों को ठीक से पढ़ सकते हैं। * ऊपर से एक tmpfs डायरेक्टरी माउंट करने की वैकल्पिक तकनीक भी काम नहीं करती है - भले ही इसका मतलब हो कि `ls /apex/com.android.conscrypt/cacerts` कुछ भी नहीं दिखा सकता है (या आप जो भी चाहें), ऐप्स अभी भी वही मूल डेटा देखेंगे। * क्योंकि `/apex` माउंट को [स्पष्ट रूप से माउंट किया गया है](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **PRIVATE प्रसारण के साथ**, ताकि `/apex` पथ के अंदर सभी माउंट्स में होने वाले सभी परिवर्तन कभी भी प्रक्रियाओं के बीच साझा नहीं किए जाते हैं। यह OS को शुरू करने वाली `init` प्रक्रिया द्वारा किया जाता है, जो फिर [Zygote प्रक्रिया](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote) को लॉन्च करती है (एक नए माउंट नेमस्पेस के साथ जो माता-पिता से कॉपी किया गया है, इसलिए अपने **खुद के निजी `/apex` माउंट** सहित), जो बदले में **प्रत्येक ऐप प्रक्रिया को शुरू करता है** जब भी डिवाइस पर एक ऐप लॉन्च किया जाता है (जो फिर उसी निजी `/apex` माउंट को कॉपी करते हैं)। ### माउंटपॉइंट्स को पुनरावर्ती रूप से पुनः माउंट करना * आप `/apex` को मैन्युअली पुनः माउंट कर सकते हैं, PRIVATE प्रसारण को हटाकर और इसे लिखने योग्य बना सकते हैं (विडंबना यह है कि पूरी तरह से निजी प्रसारण को हटाना _हर जगह_ प्रसारित होता है) * आप `/apex/com.android.conscrypt` की पूरी सामग्री को कहीं और कॉपी करते हैं * फिर आप `/apex/com.android.conscrypt` को पूरी तरह से अनमाउंट कर देते हैं - इस मॉड्यूल को अपरिवर्तनीय रूप से प्रदान करने वाले रीड-ओनली माउंट को हटा देते हैं * फिर आप सामग्री को वापस कॉपी करते हैं, ताकि यह `/apex` माउंट में सीधे रहती है, जहां इसे संशोधित किया जा सकता है (आपको यह जल्दी से करना होगा, क्योंकि [जाहिर तौर पर](https://infosec.exchange/@g1a55er/111069489513139531) आप अन्यथा क्रैश देख सकते हैं) * यह तुरंत प्रभाव में आना चाहिए, लेकिन वे `system_server` को मारने की सिफारिश करते हैं (सभी ऐप्स को पुनः आरंभ करना) ताकि सब कुछ एक सुसंगत स्थिति में वापस आ जाए। ```bash # Create a separate temp directory, to hold the current certificates # Otherwise, when we add the mount we can't read the current certs anymore. mkdir -p -m 700 /data/local/tmp/tmp-ca-copy # Copy out the existing certificates cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/ # Create the in-memory mount on top of the system certs folder mount -t tmpfs tmpfs /system/etc/security/cacerts # Copy the existing certs back into the tmpfs, so we keep trusting them mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/ # Copy our new cert in, so we trust that too mv $CERTIFICATE_PATH /system/etc/security/cacerts/ # Update the perms & selinux context labels chown root:root /system/etc/security/cacerts/* chmod 644 /system/etc/security/cacerts/* chcon u:object_r:system_file:s0 /system/etc/security/cacerts/* # Deal with the APEX overrides, which need injecting into each namespace: # First we get the Zygote process(es), which launch each app ZYGOTE_PID=$(pidof zygote || true) ZYGOTE64_PID=$(pidof zygote64 || true) # N.b. some devices appear to have both! # Apps inherit the Zygote's mounts at startup, so we inject here to ensure # all newly started apps will see these certs straight away: for Z_PID in "$ZYGOTE_PID" "$ZYGOTE64_PID"; do if [ -n "$Z_PID" ]; then nsenter --mount=/proc/$Z_PID/ns/mnt -- \ /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts fi done # Then we inject the mount into all already running apps, so they # too see these CA certs immediately: # Get the PID of every process whose parent is one of the Zygotes: APP_PIDS=$( echo "$ZYGOTE_PID $ZYGOTE64_PID" | \ xargs -n1 ps -o 'PID' -P | \ grep -v PID ) # Inject into the mount namespace of each of those apps: for PID in $APP_PIDS; do nsenter --mount=/proc/$PID/ns/mnt -- \ /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts & done wait # Launched in parallel - wait for completion here echo "System certificate injected" ``` ### NSEnter के माध्यम से Bind-mounting * सबसे पहले, हमें कहीं एक लिखने योग्य निर्देशिका सेट अप करनी होगी। मौजूदा दृष्टिकोण के साथ आसान संगतता के लिए, मैं यह `tmpfs` माउंट के साथ कर रहा हूँ जो अभी भी मौजूद गैर-APEX सिस्टम सर्ट निर्देशिका पर है: ```bash mount -t tmpfs tmpfs /system/etc/security/cacerts ``` * फिर आप उस निर्देशिका में CA प्रमाणपत्र रखते हैं जिसमें आप रुचि रखते हैं (उदाहरण के लिए, आप मौजूदा `/apex/com.android.conscrypt/cacerts/` CA प्रमाणपत्र निर्देशिका से सभी डिफ़ॉल्ट को कॉपी करना चाह सकते हैं) और उचित अनुमतियाँ और SELinux लेबल सेट करते हैं। * फिर, `nsenter` का उपयोग करके Zygote के माउंट नेमस्पेस में प्रवेश करें, और इस निर्देशिका को APEX निर्देशिका पर बाइंड माउंट करें: ```bash nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \ /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` Zygote प्रक्रिया प्रत्येक ऐप को जन्म देती है, ऐसा करने के लिए अपने माउंट नेमस्पेस की प्रतिलिपि बनाती है, इसलिए यह सुनिश्चित करती है कि सभी नए लॉन्च किए गए ऐप्स (अब से शुरू किए गए सब कुछ) इसका उपयोग करेंगे। * फिर, `nsenter` का उपयोग करके प्रत्येक पहले से चल रहे ऐप के नेमस्पेस में प्रवेश करें, और वही करें: ```bash nsenter --mount=/proc/$APP_PID/ns/mnt -- \ /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` वैकल्पिक रूप से, यदि आप अजीब UX की परवाह नहीं करते हैं, तो आप `init` (PID 1) पर ही बाइंड माउंट करने में सक्षम होना चाहिए और फिर `stop && start` चलाकर OS को सॉफ्ट-रिबूट करें, सभी नेमस्पेस को फिर से बनाएं और अपने परिवर्तनों को हर जगह प्रसारित करें (लेकिन व्यक्तिगत रूप से मैं अजीब रिबूट की परवाह करता हूँ, इसलिए मैं उस मार्ग को पूरी तरह से नजरअंदाज कर रहा हूँ)।
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * क्या आप **cybersecurity company** में काम करते हैं? क्या आप अपनी **company का विज्ञापन HackTricks में देखना चाहते हैं**? या क्या आप **PEASS के नवीनतम संस्करण तक पहुँच चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) देखें! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा संग्रह विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का। * [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें। * **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में या मुझे **Twitter** पर **फॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **hacktricks repo** में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें और **hacktricks-cloud repo** में।