Android और Exchange ActiveSync पर रिमोट वाइप

एक दिन, हमारे Microsoft Exchange व्यवस्थापक ने अपनी पसंद के किसी भी उपकरण (चाहे वह iPhone हो, या BlackBerry या Android पर आधारित डिवाइस हो) को पूरी तरह से साफ़ करने की कार्यक्षमता का उल्लेख किया जो Exchange ActiveSync प्रोटोकॉल का उपयोग करके मेल प्राप्त करता है। डिवाइस सर्वर को रिपोर्ट करता है कि क्या पोंछ कार्यक्षमता इसके लिए उपलब्ध है, और व्यवस्थापक उन उपकरणों के लिए मेल के हस्तांतरण को प्रतिबंधित कर सकता है जो प्यास का समर्थन नहीं करते हैं।

पहले तो मुझे यह विश्वास नहीं हुआ: ऐसा कैसे हो, मेल खाते का हानिरहित सेटअप मेल व्यवस्थापक को मेरे व्यक्तिगत डिवाइस पर इतने विशेषाधिकार देता है। एसडी कार्ड और सभी आंतरिक मेमोरी का पूर्ण बैकअप लेने के बाद, उन्होंने एक प्रयोग का प्रस्ताव दिया। और एक चमत्कार - एक धक्का अधिसूचना आई, फोन ने लटका दिया, थोड़ी देर बाद यह रिबूट हो गया, और मैं कारखाने की सेटिंग्स के साथ रहा। और एसडी कार्ड में जीवन के कोई लक्षण दिखाई नहीं दिए।



रुचि होने के नाते, मैंने इस मुद्दे का अध्ययन करने का फैसला किया और, यदि संभव हो तो, मेल क्लाइंट की दुर्भावनापूर्ण कार्यक्षमता को अक्षम करें।



पहला कदम यह देखना था कि एसडी कार्ड का क्या हुआ। फोन लगा कि यह गायब है और मैंने इसे कार्ड रीडर में डाला। HEX संपादक में देखने से पता चला कि विभाजन तालिका (MBR) ओवरराइट की गई थी, लेकिन स्वयं विभाजन (FAT32 और Linux स्वैप) काफी सामान्य थे। अद्भुत टेस्टडिस्क उपयोगिता के साथ, मैंने तुरंत सफाई से पहले कार्ड की सामग्री को राज्य में बहाल कर दिया (यहां आपके पास पूर्ण वाइप है)

फिर मैंने एंड्रॉइड स्रोतों को देखा, कीवर्ड को मिटा, स्पष्ट, फ़ैक्टरी सेटिंग्स की खोज की। आत्म-विनाश कोड /system/framework/services.jar मॉड्यूल में स्थित है और डेटा विनाश अनुरोध ( इस वर्ग का स्रोत ) के लिए प्रतीक्षा कर रहे एक निश्चित ब्रॉडकास्टर का प्रतिनिधित्व करता है

Settings.apk एप्लिकेशन, जो ओपन-सोर्स एंड्रॉइड पैकेज का हिस्सा है, इसे निम्नलिखित तरीके से कहता है:
sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); 

यह एक अनधिकृत कॉल से माना जाता है
 It can only be granted to apps signed with the platform key, or installed on the system partition. 

लेकिन, जैसा कि हम नीचे देखेंगे, एक नियमित अनुप्रयोग इस सुरक्षा को दरकिनार कर सकता है।

सफाई शुरू करने के अन्य तरीकों की तलाश करने के बाद, Stackoverflow पर मैंने एक नुस्खा पाया कि कैसे एक नियमित अनुप्रयोग (विशेष अनुमति के बिना) Settings.apk को सफाई प्रबंधन पृष्ठ दिखाने के लिए कह सकता है, जहाँ उपयोगकर्ता स्वयं विश्वसनीय अनुप्रयोग पृष्ठ पर "क्लीन" पर क्लिक करता है।
 Context ctx = createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); Class<?> mc = ctx.getClassLoader().loadClass("com.android.settings.MasterClear"); startActivity(new Intent(ctx, mc)); 


जबकि सब कुछ उपयोगकर्ता नियंत्रण में है ...

इसके बाद, मैंने Desire Z के लिए मानक जिंजरब्रेड 2.42 फर्मवेयर (HTC Sense) से सभी एप्लिकेशन को विघटित कर दिया, और android.intent.action.MASTER_CLEAR, या com.android.itettings.MasterClear को कॉल के स्रोत में देखा।

कुल चार ऐसे आवेदन थे:
  CheckinProvider.apk
 MyHTC.apk
 Settings.apk
 Mail.apk 


पहले दो Google और एचटीसी ऑनलाइन सेवाओं से खोए हुए डिवाइस को अवरुद्ध करने के लिए कार्यात्मक हैं, फिर डिवाइस को सेटिंग पेज से उपयोगकर्ता के अनुरोध पर मंजूरी दे दी गई है और जांच का अपराधी मेल क्लाइंट है।

मेलर निम्नलिखित कोड के साथ सफाई कहता है:
  Intent i = new Intent("android.intent.action.MAIN"); i.setClassName("com.android.settings", "com.android.settings.MasterClear"); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("EASRemoteWipe", true); this.mContext.startActivity(i); 

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

मुझे संदेह है कि इस कोड को निष्पादित करने के लिए विशेष अनुमति की आवश्यकता नहीं है (मैं जांच नहीं कर सकता, क्योंकि न तो जावा-आईडीई और न ही एंड्रॉइड एसडीके स्थापित हैं)।

इस पर मेरी जिज्ञासा संतुष्ट हुई। Dasasma लिस्टिंग में MasterXlear पर MasterClear लाइन को सही करने के बाद, मैंने Mail.apk को फिर से बनाया, इसे डिवाइस पर अपलोड किया और जांच की कि वाइप एक्सचेंज कमांड की अब फोन पर पावर नहीं है (जब मैं मेल को सिंक्रोनाइज़ करने की कोशिश करता हूं, तो "हारे हुए" फोन तक एक सिंक्रोनाइज़ेशन एरर दिखाई देता है। विनिमय खाते से निष्प्रभावी हो जाएगा, उसके बाद, अगले सिंक्रनाइज़ेशन पर, सभी मेल नए डिवाइस की तरह फिर से डाले जाएंगे, और सामान्य रूप से काम करना जारी रखेंगे)

अंत में, मैं कुछ रेक का वर्णन करूँगा, जिन्होंने मुझे उन पर काबू पाने में बहुत आनंद दिया। एंड्रॉइड डेवलपर्स के लिए, ये प्रारंभिक चीजें हैं, लेकिन नौसिखिए हैकर्स के लिए वे स्पष्ट नहीं हैं।

1. पुनर्निर्माण के आवेदन का हस्ताक्षर।

किसी भी एंड्रॉइड एप्लिकेशन को व्यक्तिगत डेवलपर प्रमाणपत्र के साथ हस्ताक्षरित होना चाहिए, अन्यथा यह शुरू नहीं होगा। यदि आप इस तरह से इसके बारे में पूछते हैं, तो ओपनसेल प्रोग्राम से एक मुफ्त प्रमाण पत्र प्राप्त किया जा सकता है:
 openssl genrsa -out key.pem 1024 openssl req -new -key key.pem -out request.pem openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt 

नतीजतन, हम प्रतिष्ठित प्रमाणपत्र प्राप्त करते हैं। pem , key.pem और key.pk8 , जिसके साथ हम साइनअप.जर उपयोगिता का उपयोग करके पुन: निर्मित Mail.apk पर हस्ताक्षर करेंगे:
 java -jar signapk.jar certificate.pem key.pk8 Mail-unsigned.apk Mail-signed.apk 


2. दलविक कैश

प्रत्येक एप्लिकेशन में एक JIT संकलन कैश होता है ताकि वह हर रन को संकलित न करे। सामान्य तरीके से एपीके इंस्टॉल करते समय, कैश को साफ़ कर दिया जाता है, लेकिन जब आप एप्लिकेशन (/ / सिस्टम / ऐप सिस्टम पार्टीशन पर) कॉपी करते हैं, तो आपको इसे स्वयं क्लियर करना होगा:
 rm /data/dalvik-cache/*@Mail.apk@* 


3. Glitches apktool

एपीकेटीटी उपयोगिता, जिसका उपयोग मैंने आवेदन को अलग करने और फिर से बनाने के लिए किया, लगातार एक अक्षम फ़ाइल बनाई। एपीके के अंदर, द्विआधारी resource.arsc फ़ाइल में संग्रहित संसाधन हैं (उदाहरण के लिए, इस फ़ाइल में xml संसाधन द्विआधारी में परिवर्तित हो जाते हैं, xml ट्री में सुविधाजनक नेविगेशन के लिए सबसे अधिक संभावना है) और classes.dex में संकलित कोड। चूंकि मुझे केवल कोड को संपादित करने की आवश्यकता है, जब मैं डिक्रिप्लिमेंटिंग -r विकल्प (संसाधनों को डिकोड नहीं करता) सेट करता हूं और निश्चित एंट्रिल्स को एपीके फ़ाइल में वापस संकलित करने के बाद, यह अंत में शुरू हुआ।

Source: https://habr.com/ru/post/In148331/


All Articles