
CVE-2016-5195 dirtycow by timwr स्वचालित मल्टी फ़ाइल पैच टूल
कृपया ध्यान दें कि मैं औपचारिक रूप से इस कोड का परीक्षण नहीं कर रहा हूँ इसे एक शैक्षिक उपकरण के रूप में डिज़ाइन किया जा रहा है
यह क्या करता है? android-dirtycow-replacer CVE-2016-5195 डर्टीकाउ एक्सप्लॉइट का उपयोग करके 1000 से अधिक फ़ाइलों की सूची को पैच करता है। आप इसे 10000 तक संपादित कर सकते हैं लेकिन 1000 पर्याप्त होना चाहिए। यह पहले जाँच करता है कि फ़ाइलें अलग हैं या नहीं, यदि नहीं तो यह बदलने का प्रयास करता है और यदि त्रुटि होती है तो रुक जाता है। यह आपका काम है कि आप फ़ाइलों को संपादित करके, या अपने selinux को पैच करके, या जो भी हो, प्रदान करें। dirtycow केवल उसे बदल सकता है जिसे वह पढ़ सकता है, और इसीलिए यह उपकरण अंतिम उपकरण नहीं है।
क्षमा करें यदि मैंने कुछ बातें दो बार कही हैं मेरा कोडर हेड है यह कोड Note 5 पर परीक्षण किया गया था और सही ढंग से काम करता प्रतीत होता है। हालांकि... यह कोड अधिकांशतः अपरीक्षित है और अंतिम प्रोजेक्ट नहीं है। मैं एक toolbox.c dirtycow एक्सप्लॉइट डिज़ाइन कर रहा हूँ जो सामान्यतः अपठनीय फ़ाइलों, जैसे init, को ओवरराइट करेगा। क्यों toolbox? क्योंकि मैं toolbox का शोषण करके आवश्यक रूट + कॉन्टेक्स्ट प्राप्त कर सकता हूँ और फिर सभी फ़ाइलें पढ़ सकता हूँ।
आवश्यकताएँ Linux, जैसे कि Ubuntu का नवीनतम संस्करण (मुफ्त), और Android SDK और Android NDK (भी मुफ्त)।
निर्देश files.txt नामक एक फ़ाइल बनाएँ जिसमें बाएँ/दाएँ पथ हों जिन्हें आप बदलना चाहते हैं। /system/build.prop /data/local/tmp/replace/build.prop सुनिश्चित करें कि आपकी फ़ाइलें समीकरण के दोनों ओर मौजूद हैं, काफी सरल चीज़, मुझे उम्मीद है! मेरा सुझाव है कि फ़ाइल को सूची में जोड़ने से पहले cat करने का प्रयास करें। उदाहरण: adb shell cat /init बाएँ का पथ बदली जा रही फ़ाइल है (स्पेस पर ध्यान दें) दाएँ का पथ वह फ़ाइल है जिससे इसे बदलना है
उदाहरण शामिल इस उदाहरण के साथ एक उदाहरण files.txt मौजूद है। यह परीक्षण फ़ाइलों की ओर इंगित करता है (इसे देखने के लिए संपादित करें) परीक्षण फ़ाइलों वाली दो निर्देशिकाएँ भी हैं: replace/ और replacewith/ replace/ निर्देशिका के अंदर 4 फ़ाइलें हैं: beingpatched1, beingpatched2,..3,..4 beingpatched# पाठ == unpatched001 --- unpatched004 replacedwith/ में फ़ाइलों में patchingdon1 से patchingdon4 तक पाठ है जब आप 'make push' टाइप करते हैं तो यह संकलित होगा और ये निर्देशिकाएँ, files.txt और replacer को /data/local/tmp/ पर push किया जाएगा ..अब भी मेरे साथ हैं?, उदाहरण के लिए वास्तविक निर्देश एक फ़ोल्डर में अनज़िप करें, राइट क्लिक करें और इस फ़ोल्डर में दो टर्मिनल खोलें ......टिप: यदि आप एक टर्मिनल विंडो पर क्लिक करते हैं और फिर दूसरे पर, दोनों टर्मिनल विंडो दिखाई देती रहती हैं
एक टर्मिनल विंडो में टाइप करें: make log
अगली टर्मिनल विंडो में टाइप करें: make push <===कोई त्रुटि नहीं, है ना?
adb shell फिर cd data/local/tmp फिर ./replacer
मुख्य प्रोजेक्ट का अवलोकन -- यह प्रोजेक्ट नहीं तुलना फ़ंक्शन को toolbox.c के ट्रिगर के रूप में डिज़ाइन किया जा रहा है तुलना फ़ंक्शन फ़ाइलों की बाइट दर बाइट तुलना करता है ताकि यह निर्धारित कर सके कि वे भिन्न हैं या नहीं। यह toolbox.c के लिए /init को पुनः लोड करने का प्रयास करने का ट्रिगर होगा। इसके बाद toolbox.c एक लॉग फ़ाइल लिखेगा (अगली ट्रिगर कुंजी भी) toolbox.c प्रयास के बाद दूसरी लॉग फ़ाइल में लॉग करेगा (अंतिम ट्रिगर) जो हमें बताएगा कि सभी फ़ंक्शन का प्रयास किया गया। इससे हम विफलता पर हार मानने से पहले प्रत्येक चरण के लिए कई कॉन्टेक्स्ट आज़माने में सक्षम होंगे, संभवतः आवश्यक।
android-dirtycow-replacer मेरा लक्ष्य एक स्वचालित dirtycow.c प्रतिस्थापन उपकरण डिज़ाइन करना है जिसका उपयोग toolbox.c या dumpstat.c के अंदर एक एक्सप्लॉइट के रूप में किया जा सके। android-dirtycow-replacer पैच करने के लिए फ़ाइलों को एक टेक्स्ट फ़ाइल से पढ़ता है, फिर जाँचता है कि फ़ाइलें भिन्न हैं या नहीं और यदि तभी वे भिन्न हैं तो android-dirtycow-replacer dirtycow.c का उपयोग करके फ़ाइलों को पैच करेगा। फिर से, यह कोड toolbox.c / dumpstate.c में विलय करने के लिए डिज़ाइन किया जा रहा है ताकि अप्रतिस्थापनीय फ़ाइलों को पैच किया जा सके! मेरा अंतिम कोड संभवतः UID और कॉन्टेक्स्ट हैंडलिंग कोड से जुड़ा होगा। यह मेरे अपने कोड में एक फोर्क है।
इस ऐप के अन्य उपयोग भी हो सकते हैं लेकिन मैं इसे इस समय अन्य उपयोगों के लिए डिज़ाइन नहीं कर रहा हूँ। सबसे व्यवहार्य उपयोग जो मन में आता है वह है बूट के बाद फ़ाइलों की एक स्थिर सूची को बदलना, जैसे फ़ॉन्ट या स्क्रीन बंद होने पर ऐप्स के लिए इंटरनेट तक पहुँच की अनुमतियाँ हटाना। या /etc के अंतर्गत कई अन्य सेटिंग्स जो प्रत्येक बूट के बाद ठीक की जाएँगी।
आवश्यक
इस समय सॉफ़्टवेयर अपडेट नहीं किया जा रहा है। सॉफ़्टवेयर को उदाहरण कोड के रूप में सूचीबद्ध किया जा रहा है मैं व्यक्तिगत रूप से मानता हूँ कि यह उपकरण अपने वर्तमान स्वरूप में किसी भी दायरे के डिवाइस पर रूट प्राप्त कर सकता है। मैं यह भी मानता हूँ कि यह उस लक्ष्य को प्राप्त करने के लिए एक शक्तिशाली संगठनात्मक उपकरण है। मेरे लिए समस्या यह है कि मुझे इस समय अपने व्यक्तिगत सेल फोन पर रूट प्राप्त करने में कोई दिलचस्पी नहीं है। मैंने इतनी चीज़ें क्रैश की हैं कि मेरा Note 5 इतना अद्भुत है और इसे वापस सेटअप करना एक कठिन काम है। कृपया ध्यान दें कि मैं कहीं भी इस कोड का परीक्षण नहीं कर रहा हूँ! इसे एक शैक्षिक उपकरण के रूप में डिज़ाइन किया जा रहा है
यदि आपको कोई समस्या है कृपया समस्या सूचीबद्ध करें और मैं इसे ठीक कर दूंगा जब मैं कर सकता हूँ जब तक मैं अपने परीक्षण डिवाइस पर सुरक्षित रूप से ऐसा कर सकता हूँ।