hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md

35 lines
7.8 KiB
Markdown

## Manual **De-obfuscation Techniques**
**सॉफ़्टवेयर सुरक्षा** के क्षेत्र में, अस्पष्ट कोड को समझने योग्य बनाने की प्रक्रिया, जिसे **de-obfuscation** कहा जाता है, महत्वपूर्ण है। यह गाइड de-obfuscation के विभिन्न रणनीतियों में गहराई से जाती है, जो स्थैतिक विश्लेषण तकनीकों और अस्पष्टता पैटर्न को पहचानने पर केंद्रित है। इसके अतिरिक्त, यह व्यावहारिक अनुप्रयोग के लिए एक व्यायाम प्रस्तुत करती है और उन लोगों के लिए आगे के संसाधनों का सुझाव देती है जो अधिक उन्नत विषयों का अन्वेषण करना चाहते हैं।
### **Strategies for Static De-obfuscation**
जब **obfuscated code** के साथ काम कर रहे होते हैं, तो अस्पष्टता की प्रकृति के आधार पर कई रणनीतियाँ अपनाई जा सकती हैं:
- **DEX bytecode (Java)**: एक प्रभावी दृष्टिकोण में एप्लिकेशन के de-obfuscation तरीकों की पहचान करना शामिल है, फिर इन तरीकों को एक Java फ़ाइल में दोहराना। इस फ़ाइल को लक्षित तत्वों पर अस्पष्टता को उलटने के लिए निष्पादित किया जाता है।
- **Java और Native Code**: एक और विधि de-obfuscation एल्गोरिदम को Python जैसी स्क्रिप्टिंग भाषा में अनुवाद करना है। यह रणनीति यह उजागर करती है कि प्राथमिक लक्ष्य एल्गोरिदम को पूरी तरह से समझना नहीं है, बल्कि इसे प्रभावी ढंग से निष्पादित करना है।
### **Identifying Obfuscation**
अस्पष्ट कोड को पहचानना de-obfuscation प्रक्रिया में पहला कदम है। प्रमुख संकेतक शामिल हैं:
- Java और Android में **स्ट्रिंग्स की अनुपस्थिति या उलझन**, जो स्ट्रिंग अस्पष्टता का सुझाव दे सकती है।
- **बाइनरी फ़ाइलों की उपस्थिति** जो assets निर्देशिका में हैं या `DexClassLoader` को कॉल करती हैं, जो कोड अनपैकिंग और गतिशील लोडिंग का संकेत देती हैं।
- **अज्ञात JNI फ़ंक्शंस के साथ Native Libraries** का उपयोग, जो संभावित रूप से मूल विधियों की अस्पष्टता को इंगित करता है।
## **Dynamic Analysis in De-obfuscation**
नियंत्रित वातावरण में कोड को निष्पादित करके, गतिशील विश्लेषण **यह देखने की अनुमति देता है कि अस्पष्ट कोड वास्तविक समय में कैसे व्यवहार करता है**। यह विधि विशेष रूप से जटिल अस्पष्टता पैटर्न के आंतरिक कार्यों को उजागर करने में प्रभावी है जो कोड के वास्तविक इरादे को छिपाने के लिए डिज़ाइन किए गए हैं।
### **Applications of Dynamic Analysis**
- **Runtime Decryption**: कई अस्पष्टता तकनीकों में स्ट्रिंग्स या कोड खंडों को एन्क्रिप्ट करना शामिल होता है जो केवल रनटाइम पर डिक्रिप्ट होते हैं। गतिशील विश्लेषण के माध्यम से, इन एन्क्रिप्टेड तत्वों को डिक्रिप्शन के क्षण में कैप्चर किया जा सकता है, जिससे उनकी वास्तविक रूप प्रकट होती है।
- **Identifying Obfuscation Techniques**: एप्लिकेशन के व्यवहार की निगरानी करके, गतिशील विश्लेषण विशिष्ट अस्पष्टता तकनीकों की पहचान करने में मदद कर सकता है, जैसे कोड वर्चुअलाइजेशन, पैकर, या गतिशील कोड जनरेशन।
- **Uncovering Hidden Functionality**: अस्पष्ट कोड में छिपी हुई कार्यक्षमताएँ हो सकती हैं जो केवल स्थैतिक विश्लेषण के माध्यम से स्पष्ट नहीं होती हैं। गतिशील विश्लेषण सभी कोड पथों का अवलोकन करने की अनुमति देता है, जिसमें वे भी शामिल हैं जो शर्तानुसार निष्पादित होते हैं, ताकि ऐसी छिपी हुई कार्यक्षमताओं को उजागर किया जा सके।
## References and Further Reading
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* यह टॉक एक Android एप्लिकेशन द्वारा उपयोग किए जाने वाले सबसे जटिल एंटी-एनालिसिस मूल पुस्तकालयों में से एक के रिवर्स इंजीनियरिंग के बारे में है। यह मुख्य रूप से मूल कोड में अस्पष्टता तकनीकों को कवर करता है।
* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* यह टॉक एक श्रृंखला की अस्पष्टता तकनीकों पर चर्चा करता है, जो केवल Java कोड में है, जिसका उपयोग एक Android बोटनेट अपने व्यवहार को छिपाने के लिए कर रहा था।