11 KiB
डीबग करने योग्य एप्लिकेशन का शोधन
htARTE (HackTricks AWS Red Team Expert) के साथ जीरो से हीरो तक AWS हैकिंग सीखें!
HackTricks का समर्थन करने के अन्य तरीके:
- अगर आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारा विशेष NFTs संग्रह, The PEASS Family खोजें
- जुड़ें 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह से या हमें ट्विटर 🐦 @carlospolopm पर फॉलो करें।
- अपने हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके HackTricks और HackTricks Cloud github repos में।
रूट और डीबग की जांच को छलकरना
इस पोस्ट का यह खंड https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 से एक सारांश है।
एंड्रॉइड एप्लिकेशन को डीबग करने और जांच को छलकरने के चरण
ऐप को डीबग करना
https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 पर आधारित सामग्री
- APK को डिकॉम्पाइल करें:
- APK को डिकॉम्पाइल करने के लिए APK-GUI टूल का उपयोग करें।
- android-manifest फ़ाइल में,
android:debuggable=true
डालें ताकि डीबगिंग मोड सक्षम हो। - संशोधित एप्लिकेशन को पुनः कॉम्पाइल, साइन करें, और zipalign करें।
- संशोधित एप्लिकेशन को इंस्टॉल करें:
- निम्नलिखित कमांड का उपयोग करें:
adb install <application_name>
।
- पैकेज नाम प्राप्त करें:
- तीसरे पक्षीय एप्लिकेशनों की सूची और पैकेज नाम खोजने के लिए
adb shell pm list packages –3
का निष्पादन करें।
- ऐप को डीबगर कनेक्शन के लिए इंतजार करने के लिए सेट करें:
- कमांड:
adb shell am setup-debug-app –w <package_name>
। - नोट: इस कमांड को प्रत्येक बार चलाया जाना चाहिए पहले एप्लिकेशन को शुरू करने से पहले ताकि यह डीबगर का इंतजार करे।
- स्थायित्व के लिए,
adb shell am setup-debug-app –w -–persistent <package_name>
का उपयोग करें। - सभी झंडे हटाने के लिए,
adb shell am clear-debug-app <package_name>
का उपयोग करें।
- Android Studio में डीबगिंग के लिए तैयारी करें:
- Android Studio में जाएं File -> Open Profile or APK में।
- पुनः कॉम्पाइल किया गया APK खोलें।
- मुख्य जावा फ़ाइलों में ब्रेकपॉइंट सेट करें:
MainActivity.java
(विशेष रूप सेonCreate
विधि में),b.java
, औरContextWrapper.java
में ब्रेकपॉइंट रखें।
जांच को छलकरना
एप्लिकेशन, कुछ समयों पर, यह सत्यापित करेगा कि यह डीबग करने योग्य है और रूटेड डिवाइस की निर्देशक भी जांचेगा। डीबगर का उपयोग करके ऐप जानकारी को संशोधित करने, डीबग करने योग्य बिट को असेट करने, और खोजी गई बाइनरी के नामों को बदलने के लिए उपयोग किया जा सकता है ताकि इन जांचों को छलकर सकें।
डीबग की जांच के लिए:
- झंडे की सेटिंग संशोधित करें:
- डीबगर कंसोल के वेरिएबल सेक्शन में जाएं:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
। - नोट:
flags = 814267974
का बाइनरी प्रतिनिधित्व11000011100111011110
है, जिससे पता चलता है कि "Flag_debuggable" सक्रिय है।
ये कदम समूह में एकत्रित करते हैं कि ऐप्लिकेशन को डीबग किया जा सकता है और डीबगर का उपयोग करके कुछ सुरक्षा जांचों को छलकर सकते हैं, जो ऐप्लिकेशन के व्यवहार का अधिक विश्लेषण या संशोधन सुनिश्चित करता है।
कदम 2 में एक झंडे की मान को 814267972 में बदलने की आवश्यकता है, जो बाइनरी रूप में 110000101101000000100010100 के रूप में प्रतिनिधित्व किया जाता है।
एक सुरक्षा दोष का शोधन
एक विकल्प प्रदान किया गया था जिसमें एक वंशी एप्लिकेशन का उपयोग किया गया जिसमें एक बटन और एक टेक्स्टव्यू था। प्रारंभ में, एप्लिकेशन "Crack Me" प्रदर्शित करता है। लक्ष्य है कि स्रोत कोड को संशोधित किए बिना "Try Again" संदेश को "Hacked" में रनटाइम में बदलें।
दोष की जांच करना
- एप्लिकेशन को
apktool
का उपयोग करके डिकॉम्पाइल किया गया था ताकिAndroidManifest.xml
फ़ाइल तक पहुंचा जा सके। AndroidManifest.xml
मेंandroid_debuggable="true"
की उपस्थिति यह सूचित करती है कि एप्लिकेशन डीबग करने योग्य है और छलांग के लिए संवेदनशील है।- यह ध्यान देने योग्य है कि
apktool
का उपयोग केवल कोड को संशोधित किए बिना डीबग करने योग्य स्थिति की जांच के लिए किया गया था।
सेटअप की तैयारी
- इस प्रक्रिया में एम्युलेटर प्रारंभ करना, वंशी एप्लिकेशन को इंस्टॉल करना, और
adb jdwp
का उपयोग करके डलविक वीएम पोर्ट्स की पहचान करना शामिल था। - JDWP (जावा डीबग वायर प्रोटोकॉल) एक अद्वितीय पोर्ट को उजागर करके वीएम में चल रहे एप्लिकेशन की डीबगिंग की अनुमति देता है।
- दूरस्थ डीबगिंग के लिए पोर्ट फॉरवार्डिंग आवश्यक था, जिसके बाद लक्षित एप्लिकेशन को जेडीबी से जोड़ने की आवश्यकता थी।
रनटाइम पर कोड इंजेक्शन
- छलांग को सेट करके और एप्लिकेशन के फ्लो को नियंत्रित करके छलांग किया गया था।
classes
औरmethods <class_name>
जैसे कमांड्स का उपयोग किया गया था ताकि एप्लिकेशन की संरचना का पता चल सके।onClick
विधि पर एक ब्रेकपॉइंट सेट किया गया था, और इसका नियंत्रण किया गया था।locals
,next
, औरset
कमांड्स का उपयोग किया गया था ताकि स्थानीय चरों की जांच और संशोधन किया जा सके, विशेष रूप से "Try Again" संदेश को "Hacked" में बदलने के लिए।- संशो