
CVE-2016-5195 dirtycow by timwr 자동화된 다중 파일 패치 도구
공식적으로 이 코드를 테스트하지 않았음을 알려드립니다 이 코드는 교육 도구로 설계되었습니다.
이것은 무엇을 하나요? android-dirtycow-replacer는 CVE-2016-5195 dirtycow 익스플로잇을 사용하여 1000개 이상의 파일 목록을 패치합니다. 10000개로 편집할 수 있지만 1000개면 충분합니다. 먼저 파일이 다른지 확인하고, 다르지 않으면 교체를 시도하며 오류가 발생하면 중단됩니다. 파일을 편집하거나 selinux를 패치하거나 하는 등 교체할 파일을 제공하는 것은 사용자의 몫입니다. dirtycow는 읽을 수 있는 것만 교체할 수 있기 때문에 이 도구가 최종 도구가 아닙니다.
코더 마인드라서 같은 말을 두 번 했을 수도 있습니다 이 코드는 Note 5에서 테스트되었으며 정상적으로 작동하는 것으로 보입니다. 하지만... 이 코드는 대부분 테스트되지 않았으며 최종 프로젝트가 아닙니다. 저는 일반적으로 읽을 수 없는 파일(예: init)을 덮어쓸 수 있는 toolbox.c dirtycow 익스플로잇을 설계하고 있습니다. 왜 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/ 디렉토리 안에는 beingpatched1, beingpatched2,..3,..4 파일이 있으며, beingpatched# 텍스트는 unpatched001 --- unpatched004입니다. replacedwith/ 디렉토리의 파일에는 patchingdon1부터 patchingdon4까지의 텍스트가 포함되어 있습니다. 'make push'를 입력하면 컴파일되고 이 디렉토리, files.txt 및 replacer가 /data/local/tmp/로 푸시됩니다. .. 아직 따라오고 계신가요?,
예제 실제 방법 폴더에 압축을 풀고 마우스 오른쪽 버튼을 클릭하여 이 폴더에서 두 개의 터미널을 엽니다. ......팁: 한 터미널 창을 클릭한 다음 다른 터미널 창을 클릭하면 두 터미널 창이 모두 계속 표시됩니다.
한 터미널 창에 다음을 입력하세요: make log
다음 터미널 창에 다음을 입력하세요: make push <===오류 없죠?
adb shell then cd data/local/tmp then ./replacer
메인 프로젝트 개요 -- 이 프로젝트가 아님 비교 함수는 toolbox.c의 트리거로 설계되고 있습니다 비교 함수는 파일을 바이트 단위로 비교하여 다를지 여부를 결정합니다. 이것이 toolbox.c가 /init을 다시 로드하려고 시도하는 트리거가 될 것입니다. 다음으로 toolbox.c는 로그 파일(또한 다음 트리거 키)을 작성할 것입니다. toolbox.c는 시도 후 다른 로그 파일(최종 트리거)에 기록하여 시도된 모든 기능을 알려줍니다. 이를 통해 포기하기 전에 각 단계에서 여러 컨텍스트를 시도할 수 있으며, 이는 필요할 가능성이 높습니다.
android-dirtycow-replacer 내 목표는 toolbox.c 또는 dumpstat.c 내에서 익스플로잇으로 사용할 자동화된 dirtycow.c 교체 도구를 설계하는 것입니다. android-dirtycow-replacer는 텍스트 파일에서 패치할 파일을 읽은 다음 파일이 다른지 테스트하고, 다를 경우에만 dirtycow.c를 사용하여 파일을 패치합니다. 다시 말하지만 이 코드는 패치 불가능한 파일을 패치하는 수단으로 toolbox.c / dumpstate.c에 병합되도록 설계되고 있습니다! 최종 코드는 UID 및 컨텍스트 처리 코드와 얽힐 가능성이 높습니다. 이것은 제 코드의 분기점입니다.
이 앱은 다른 용도로도 사용될 수 있습니다 하지만 현재 다른 용도로 설계하지는 않습니다. 떠오르는 가장 실용적인 용도는 부팅 후 고정된 파일 목록(예: 글꼴)을 교체하거나 화면이 꺼져 있을 때 앱이 인터넷에 접속할 수 있는 권한을 제거하는 것입니다. 또는 /etc 아래의 다른 많은 설정들을 매 부팅 후 복구하는 것입니다.
필수 사항
현재 소프트웨어가 업데이트되지 않습니다. 소프트웨어는 예제 코드로 등록됩니다 개인적으로 이 도구가 현재 상태로 범위 내의 모든 기기에서 루트를 획득할 수 있다고 생각합니다. 또한 정확히 그 목표를 달성하기 위한 강력한 조직 도구라고 생각합니다. 문제는 현재 제 개인 휴대폰에서 루트를 얻는 데 관심이 없다는 것입니다. 제 Note 5가 너무 훌륭해서 다시 설정하기 어려울 정도로 충분히 망가뜨렸습니다. 어디서도 이 코드를 테스트하지 않음을 알려드립니다! 이 코드는 교육 도구로 설계되었습니다
문제가 있는 경우 문제를 나열해 주시면 테스트 장치에서 안전하게 수정할 수 있을 때 수정하겠습니다.