
APK recon की उबाऊ प्रक्रिया को स्वचालित करने का एक उपकरण
एक उपकरण जो APK फ़ाइल पर recon प्रक्रिया को स्वचालित करता है।
स्लाइसर एक निकाले गए APK फ़ाइल का पथ स्वीकार करता है और फिर सभी गतिविधियों, रिसीवरों और सेवाओं को लौटाता है जो निर्यातित हैं और null अनुमतियाँ रखते हैं और बाहरी रूप से उत्तेजित किए जा सकते हैं।
नोट: APK को jadx या apktool के माध्यम से निकाला जाना चाहिए।
क्यों?
मैंने लगभग 3 सप्ताह पहले (जून 2020 में) बग बाउंटी शुरू की और मैं एंड्रॉइड ऐप्स पर अपना सर्वश्रेष्ठ प्रयास कर रहा हूँ। लेकिन मैंने एक चीज देखी कि सभी ऐप्स में कुछ ऐसी चीजें थीं जो मुझे गहराई में जाने से पहले करनी होती थीं। इसलिए मैंने सोचा कि उस प्रक्रिया को एक सरल उपकरण के साथ स्वचालित करना अच्छा होगा।
drozer क्यों नहीं?
खैर, drozer एक अलग जानवर है। हालांकि यह सभी सुलभ घटकों का पता लगाता है लेकिन मैं उन आदेशों को बार-बार चलाने से थक गया था।
drozer का उपयोग करके स्वचालित क्यों नहीं करें?
मैंने वास्तव में कुछ drozer आदेशों को चलाने के लिए एक bash स्क्रिप्ट लिखी थी ताकि मुझे उन्हें मैन्युअल रूप से न चलाना पड़े, लेकिन फिर भी कुछ उबाऊ काम करने होते थे। जैसे कि विभिन्न API कुंजियों के लिए strings.xml की जाँच करना, यह परीक्षण करना कि क्या firebase DB सार्वजनिक रूप से सुलभ था या क्या उन Google API कुंजियों ने अपने उपयोग पर कोई सीमा निर्धारित की है या नहीं, और भी बहुत कुछ।
सभी फ़ाइलों को खोज क्यों नहीं?
मुझे लगता है कि grep या ripgrep जैसे उपकरण सभी फ़ाइलों में खोज करने के लिए अधिक तेज़ होंगे। इसलिए यदि आप कुछ विशिष्ट खोजना चाहते हैं तो उन उपकरणों का उपयोग करना बेहतर होगा। लेकिन अगर आपको लगता है कि कुछ ऐसा है जो सभी एंड्रॉइड फ़ाइलों में जाँचा जाना चाहिए, तो बेझिझक एक मुद्दा खोलें।
जाँचें कि क्या APK ने android:allowbackup को true पर सेट किया है
जाँचें कि क्या APK ने android:debuggable को true पर सेट किया है।
सभी गतिविधियों, सेवाओं और प्रसारण रिसीवरों को लौटाएं जो निर्यातित हैं और null अनुमति सेट रखते हैं। यह दो बातों के आधार पर तय किया जाता है:
android:exporte=true मौजूद है और कोई अनुमति सेट नहीं है।Intent-filters परिभाषित है या नहीं, यदि हाँ तो इसका मतलब है कि वह घटक डिफ़ॉल्ट रूप से निर्यातित है (यह एंड्रॉइड दस्तावेज़ीकरण में दिया गया नियम है।).json ट्रिक के लिए परीक्षण करके APK के Firebase URL की जाँच करें।
myapp.firebaseio.com है तो यह जाँच करेगा कि https://myapp.firebaseio.com/.json कुछ लौटाता है या अनुमति अस्वीकार करता है।जाँचें कि क्या Google API कुंजियाँ सार्वजनिक रूप से सुलभ हैं या नहीं।
Duplicate का दर्द सामने आएगा।not applicable के रूप में बंद कर सकती है और दावा करेगी कि KEY में usage cap है - r/suspiciouslyspecific 😉strings.xml और AndroidManifest.xml में मौजूद अन्य API कुंजियाँ लौटाएँ।
/res/raw और res/xml निर्देशिका में मौजूद सभी फ़ाइल नामों की सूची बनाएँ।
सभी URL और पथ निकालें।
git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -hइसका उपयोग बहुत सरल है। निम्नलिखित विकल्प उपलब्ध हैं:
Extract information from Manifest and strings of an APK
Usage:
slicer [OPTION] [Extracted APK directory]
Options:
-d, --dir path to jadx output directory
-o, --output Name of the output file(not implemented)
मैंने अभी तक output फ़्लैग लागू नहीं किया है क्योंकि मुझे लगता है कि यदि आप slicer आउटपुट को yaml फ़ाइल में रीडायरेक्ट कर सकते हैं तो यह एक उचित प्रारूप होगा।
python3 slicer.py -d path/to/extact/apk -c config.json
URL और पथ निकालने के लिए उपयोग किया जाने वाला एक्सट्रैक्टर मॉड्यूल @ndelphit द्वारा apkurlgrep से लिया गया है।
इसमें लागू की गई सभी विशेषताएँ वे चीज़ें हैं जो मैंने पिछले कुछ हफ्तों में सीखी हैं, इसलिए यदि आपको लगता है कि APK में जाँची जाने वाली विभिन्न अन्य चीज़ें हैं तो कृपया उस सुविधा के लिए एक मुद्दा खोलें और मुझे इसे लागू करने में खुशी होगी :)
यदि आप चाहें तो मुझे कॉफी खरीद सकते हैं: