Install Burp Certificate

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

एक वर्चुअल मशीन पर

सबसे पहले, आपको बर्प से Der प्रमाणपत्र डाउनलोड करने की आवश्यकता है। आप इसे प्रॉक्सी --> विकल्प --> आयात / निर्यात सीए प्रमाणपत्र में कर सकते हैं।

Der प्रारूप में प्रमाणपत्र निर्यात करें और इसे एक रूप में परिवर्तित करें जिसे Android समझ सकेगा। ध्यान दें कि एवीडी में एंड्रॉइड मशीन पर बर्प प्रमाणपत्र कॉन्फ़िगर करने के लिए आपको इस मशीन को -writable-system विकल्प के साथ चलाने की आवश्यकता है। उदाहरण के लिए आप इसे इस प्रकार चला सकते हैं:

C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system

फिर, बर्प का प्रमाणपत्र कॉन्फ़िगर करने के लिए करें:

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

एक बार मशीन पूरी तरह से रिबूट होने के बाद बर्प सर्टिफिकेट उसके द्वारा उपयोग में होगा!

मैजिस्क का उपयोग

यदि आपने अपनी डिवाइस को मैजिस्क के साथ रूट किया है (शायद एक एम्युलेटर), और आप पिछले स्टेप्स का पालन नहीं कर सकते हैं ताकि बर्प सर्टिफिकेट इंस्टॉल कर सकें क्योंकि फ़ाइल सिस्टम केवल पढ़ने योग्य है और आप इसे राइटेबल नहीं रीमाउंट कर सकते, तो एक और तरीका है।

इस वीडियो में स्पष्ट किया गया है कि आपको:

  1. सीए सर्टिफिकेट इंस्टॉल करें: बस मोबाइल में डाउनलोड्स फ़ोल्डर में स्टोर होने के लिए DER बर्प सर्टिफिकेट को .crt एक्सटेंशन में बदलकर ड्रैग एंड ड्रॉप करें और Install a certificate -> CA certificate पर जाएं

  • सर्टिफिकेट सही ढंग से स्टोर हुआ है यह जांचने के लिए Trusted credentials -> USER पर जाएं

  1. इसे सिस्टम विश्वसनीय बनाएं: मैजिस्क मॉड्यूल MagiskTrustUserCerts (एक .zip फ़ाइल) डाउनलोड करें, फ़ोन में ड्रैग एंड ड्रॉप करें, फ़ोन में मैजिक्स ऐप में जाएं Modules सेक्शन में, .zip मॉड्यूल को चुनें और इंस्टॉल करने के बाद फ़ोन को रीबूट करें:

  • रीबूट करने के बाद, Trusted credentials -> SYSTEM पर जाएं और चेक करें कि पोस्ट्स्विगर सर्टिफिकेट वहाँ है

एंड्रॉइड 14 के बाद

नवीनतम एंड्रॉइड 14 रिलीज में, सिस्टम-विश्वसनीय सर्टिफिकेट अथॉरिटी (CA) सर्टिफिकेट्स के हैंडलिंग में एक महत्वपूर्ण परिवर्तन देखा गया है। पहले, ये सर्टिफिकेट्स /system/etc/security/cacerts/ में रखे गए थे, जिन्हें रूट प्राइविलेज़ वाले उपयोगकर्ताओं द्वारा एक्सेस और मॉडिफाई किया जा सकता था, जिससे सिस्टम पर तत्काल लागू हो सकता था। हालांकि, एंड्रॉइड 14 के साथ, स्टोरेज स्थानक को /apex/com.android.conscrypt/cacerts में स्थानांतरित किया गया है, जो /apex पथ के भीतर एक निर्विवाद स्थान है, जो प्राकृतिक रूप से अपरिवर्तनीय है।

एपेक्स कैकर्ट्स पथ को राइटेबल रूप में रीमाउंट करने की कोशिशें विफल होती हैं, क्योंकि सिस्टम ऐसे ऑपरेशन की अनुमति नहीं देता। यहाँ तक कि डायरेक्टरी को एक अस्थायी फ़ाइल सिस्टम (tmpfs) के साथ अनमाउंट या ओवरले करने की कोशिशें भी अपरिवर्तनीता को नहीं दूर करती हैं; एप्लिकेशन्स फ़ाइल सिस्टम स्तर पर परिवर्तनों का अवलोकन करते रहते हैं। यह सहनशीलता /apex माउंट को प्राइवेट प्रोपेगेशन के साथ कॉन्फ़िगर करने से होती है, जिससे सुनिश्चित होता है कि /apex डायरेक्टरी के अंदर के कोई भी परिवर्तन अन्य प्रक्रियाओं पर प्रभाव नहीं डालते।

एंड्रॉइड की आरंभिकीकरण में init प्रक्रिया शामिल है, जो ऑपरेटिंग सिस्टम की शुरुआत पर जब शुरू होती है, तो जाइगोट प्रक्रिया को भी आरंभ करती है। यह प्रक्रिया एक नए माउंट नेमस्पेस के साथ एप्लिकेशन प्रक्रियाओं को लॉन्च करने के लिए जिम्मेदार है, जिसमें एक प्राइवेट /apex माउंट शामिल है, जिससे इस डायरेक्टरी में किए गए परिवर्तनों को अन्य प्रक्रियाओं से अलग किया जाता है।

हालांकि, /apex डायरेक्टरी के भीतर सिस्टम-विश्वसनीय सीए सर्टिफिकेट्स को संशोधित करने वालों के लिए एक उपाय मौजूद है। इसमें /apex को प्राइवेट प्रोपेगेशन को हटाने के लिए मैन्युअल रीमाउंट करना शामिल है, जिससे इसे राइटेबल बनाया जा सके। इस प्रक्रिया में शामिल है /apex/com.android.conscrypt की सामग्री की किसी अन्य स्थान पर कॉपी करना, /apex/com.android.conscrypt डायरेक्टरी को अनमाउंट करना ताकि रीड-ओनली बाधा को हटाया जा सके, और फिर सामग्री को उनके मूल स्थान पर /apex के भीतर पुनर्स्थापित करना। इस दृष्टि को लागू करने के लिए इन परिवर्तनों को सिस्टम-व्यापी रूप से सुनिश्चित करने के लिए, system_server को पुनः आरंभ करने की सिफारिश की जाती है, जिससे सभी एप्लिकेशन्स को पुनः आरंभ किया जाता है और सिस्टम को एक संगत स्थिति में लाता है।

# 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 के माध्यम से बाइंड-माउंटिंग

  1. एक लिखने योग्य निर्देशिका सेट करना: प्रारंभ में, मौजूदा गैर-APEX सिस्टम प्रमाणपत्र निर्देशिका पर tmpfs को माउंट करके एक लिखने योग्य निर्देशिका स्थापित की जाती है। इसे निम्नलिखित कमांड के साथ प्राप्त किया जाता है:

mount -t tmpfs tmpfs /system/etc/security/cacerts
  1. CA प्रमाणपत्र तैयार करना: लेखनीय निर्देशिका की सेटअप के बाद, उन CA प्रमाणपत्रों को इस निर्देशिका में कॉपी किया जाना चाहिए जिन्हें आप उपयोग करना चाहते हैं। इसमें शामिल हो सकता है कि डिफ़ॉल्ट प्रमाणपत्रों को /apex/com.android.conscrypt/cacerts/ से कॉपी किया जाए। इन प्रमाणपत्रों की अनुरूप अनुमतियों और SELinux लेबल को समायोजित करना महत्वपूर्ण है।

  2. Zygote के लिए बाइंड माउंटिंग: nsenter का उपयोग करके, कोई Zygote के माउंट नेमस्पेस में प्रवेश करता है। Zygote, जो Android एप्लिकेशन लॉन्च करने के लिए जिम्मेदार प्रक्रिया है, इस कदम को सुनिश्चित करने के लिए आवश्यकता है कि आगे से प्रारंभ की गई सभी एप्लिकेशन नए संविचित CA प्रमाणपत्रों का उपयोग करें। उपयोग किया जाने वाला कमांड है:

nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts

यह सुनिश्चित करता है कि प्रत्येक नया एप्लिकेशन अपडेटेड सीए प्रमाणपत्र सेटअप का पालन करेगा।

  1. चल रहे ऐप्स में परिवर्तन लागू करना: पहले चल रहे ऐप्लिकेशन्स पर परिवर्तन लागू करने के लिए, nsenter को फिर से प्रत्येक ऐप्लिकेशन के नेमस्पेस में प्रवेश करने के लिए उपयोग किया जाता है और एक समान बाइंड माउंट करने के लिए। आवश्यक कमांड है:

nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
  1. वैकल्पिक दृष्टिकोण - सॉफ्ट रीबूट: एक वैकल्पिक विधि में init प्रक्रिया (PID 1) पर बाइंड माउंट करना शामिल है, जिसके बाद ऑपरेटिंग सिस्टम को stop && start कमांड के साथ सॉफ्ट रीबूट करना। यह दृष्टिकोण परिवर्तनों को सभी नेमस्पेस में फैलाएगा, जिससे हर चल रहे ऐप्लिकेशन को व्यक्तिगत रूप से संबोधित करने की आवश्यकता नहीं होगी। हालांकि, इस विधि को आम तौर पर पुनरारंभ करने की असुविधा के कारण कम पसंद किया जाता है।

संदर्भ

शून्य से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated