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

10 KiB

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

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

डी-ओब्फस्केशन कैसे करें

डी-ओब्फस्केशन की रणनीतियाँ ओब्फस्केशन की विधि पर निर्भर करती हैं। यह खंड स्टैटिक डी-ओब्फस्केशन तकनीकों का परिचय देता है, जो स्टैटिक विश्लेषण या रिवर्सिंग के लिए उपयुक्त हैं:

  • DEX बाइटकोड (Java) के लिए, एक सामान्य दृष्टिकोण यह है कि एप्लिकेशन के डी-ओब्फस्केशन तरीकों की पहचान की जाए और उन्हें एक Java फाइल में दोहराया जाए, जिसे फिर ओब्फस्केटेड तत्वों के खिलाफ निष्पादित किया जाता है।
  • Java और Native Code दोनों के लिए, एक और तकनीक डी-ओब्फस्केशन एल्गोरिदम को Python जैसी परिचित स्क्रिप्टिंग भाषा में अनुवाद करने की होती है, जोर देते हुए कि एल्गोरिदम को समझना उतना महत्वपूर्ण नहीं है जितना कि उसे निष्पादित करने में सक्षम होना।

ओब्फस्केशन के संकेत

ओब्फस्केशन की पहचान करना कुछ संकेतों की पहचान करने में शामिल है, निम्नलिखित उदाहरण दिए गए हैं:

  • Java और Android में स्ट्रिंग्स की अनुपस्थिति या गड़बड़ स्ट्रिंग्स की उपस्थिति, जो स्ट्रिंग ओब्फस्केशन का संकेत देती है।
  • एसेट्स डायरेक्टरी में बाइनरी फाइलों का अस्तित्व या DexClassLoader कॉल्स, जो संभावित कोड अनपैकिंग और लोडिंग का संकेत देते हैं।
  • पहचान योग्य JNI फंक्शन्स के बिना Native लाइब्रेरीज का उपयोग, जो नेटिव मेथड ओब्फस्केशन का सुझाव देता है।

स्ट्रिंग डीओब्फस्केशन अभ्यास

स्टैटिक विश्लेषण संदर्भ में स्ट्रिंग डीओब्फस्केशन का अभ्यास करने के लिए एक अभ्यास दिया गया है। कार्य में एक नमूना फाइल शामिल है जिसमें एक विशिष्ट SHA256 डाइजेस्ट होता है, जिसमें विश्लेषक को एप्लिकेशन को गतिशील रूप से चलाए बिना एक ओब्फस्केटेड Javascript स्ट्रिंग का पता लगाना होता है।

समाधान में एक Python स्क्रिप्ट शामिल होती है जो एन्कोडेड स्ट्रिंग को डिसाइफर करती है, जिससे coinhive.com से एक एम्बेडेड स्क्रिप्ट का पता चलता है और एक माइनर की शुरुआत होती है।

अतिरिक्त संसाधन

Android ऐप्स को डी-ओब्फस्केट करने के बारे में और अंतर्दृष्टि, विशेष रूप से उन्नत ओब्फस्केशन तकनीकों पर केंद्रित, BlackHat USA 2018 और REcon 2019 में वार्ताओं में तलाशी जा सकती है, प्रत्येक Android एप्लिकेशन में ओब्फस्केशन के अनूठे पहलुओं को कवर करती है।

अभ्यास https://maddiestone.github.io/AndroidAppRE/obfuscation.html से:

enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C"

length = len(enc_str)
count = 0
dec_str = [0] * (length/2)
while (count < length):
dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF
count += 2
print dec_str


key = [75, 67, 81, 82, 49, 57, 84, 90]
enc_str = dec_str
count = 0
length = len(enc_str)
while (count < length):
dec_str[count] = chr(enc_str[count] ^ key[count % len(key)])
count += 1
print ''.join(dec_str)

संदर्भ और आगे पढ़ने के लिए

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [वीडियो]
  • यह वार्ता एक Android एप्लिकेशन द्वारा प्रयुक्त सबसे जटिल एंटी-एनालिसिस नेटिव लाइब्रेरीज की रिवर्स इंजीनियरिंग पर चर्चा करती है। यह मुख्य रूप से नेटिव कोड में obfuscation तकनीकों पर केंद्रित है।
  • REcon 2019: “The Path to the Payload: Android Edition” [वीडियो]
  • यह वार्ता Java कोड में केवल obfuscation तकनीकों की एक श्रृंखला पर चर्चा करती है, जिसका उपयोग एक Android बॉटनेट अपने व्यवहार को छिपाने के लिए कर रहा था।
Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

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