Android 1.x/2.x the real youdev feat. init local root exploit.
안드로이드 취약점이 발견됐습니다.
드디어 안드로이드 폰들에게 광명의 빛이.. ~~~ 올레!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
루팅의 공격 과정은 기존의 공격 방식과 좀 다릅니다.
기존의 공격 방식을 간단하게 설명하면....
- Firmware 수정을 통한 강제로 firmware 밀어 넣기.
- update.zip을 통한 루트 권한 획득.
- 커널 취약점.
이었습니다. 허나 이번 취약점은 안드로이드에서의 문제점인데요. (실제 폰에서만 동작하는... 가상의 애뮬레이터에서는 동작하지 않음)
자 초 간단 분석을 해 보도록 합시다.
--------------------------------------------------------------
이 분석 과정은 분석가 Silverbug의 지맘대로 분석으로 절대로 전문가적인 내용이 아님을 미리 밝혀드립니다.
자 그럼 공격자의 입장에서 어떤 식으로 공격이 가능한지 알아보자.
이 데이터를 소켓을 통해 강제로 보내면 된다. 내용은 아래처럼...
ACTION=add0DEVPATH=~~~~
SUBSYSTEM=firmware0~~
FIRMWARE=공격자가 지정한 hotplug 설정 파일(백도어)
/proc/sys/kernel/hotplug 에 공격자가 지정한 디렉터리의 exploid가 들어가게 되고.. 그 hotplug 실행.
그럼 root는 hotplug 파일을 공격자가 만든 hotplug 파일을 읽어들이게 되고..
hotplug 파일 안에는 hotplug의 경로가 아닌 공격자가 만든 백도어(트로잔)의 경로를 넣어두어 루트가 실행하도록 한다.
백도어는 대략 일반 리눅스에서처럼 아래의 코드처럼 작성하면 된다. (아래의 컴파일된 코드를 다른 곳으로 복사 또는 권한 변경)
char *sh[] = {"/system/bin/sh", 0};
setuid(0);
setgid(0);
execve(*sh, sh, env);
익스플로잇 코드는 root 권한으로 재마운트를 통해 rootshell을 카피하도록 하였다.
드디어 염원이던 모토로이도 루팅이 됐다. 하지만 모토로라 제품의 경우 RSA로 펌웨어를 체크하기 때문에 현재로서는 ... 사용자가 만든 펌웨어는 나올 수 가 없을 것이다. (2.2 프로요 업데이트는 업체에서 해줘야 ㅠㅠ 하는)
즉 루팅만 된다는..
아래의 URL을 통해 루팅 과정을 볼 수가 있다.
http://alldroid.org/default.aspx?g=posts&t=493
외국에 공개된 멋진 코드는 아래와 같다...
더보기
[실패기]
여러 방법을 통해 RSA로 서명된 XT720 용 update.zip을 구했습니다.
아 희망이 보이는.................... 듯 하였으나...... 털썩....
RSA 서명을 우회하기 위해 서명된 update.zip과 제가 만든 임의의 update.zip을 짬뽕시켜서 새로운 update.zip을 만들었습니다.
그리고 나서, 전에 만들어 놓은 체크 프로그램을 통해 돌려봤습니다.
// 서명된 원본 update.zip
[root@oops Root]# ./verity original.zip
EOCD SIZE : 1494
0 : 50, 1: 4b, 2: 5, 3: 6
Success
// 새로운 update.zip
[root@oops Root]# ./verity u.zip
EOCD SIZE : 25646
0 : 50, 1: 4b, 2: 5, 3: 6
EOCD marker occurs after start of EOCD
Fuck....
아 무참히 실패하네요.... 그래도... update.zip을 핸드폰에 올리고 부트로더를 통해 실행해보았습니다.
역시나 안되네요.....
모토로라에서 제공하는 RSD Lite 를 통해 부트로더 버전을 살펴보면.. 분명 버전은 낮은데..................... 왜......
// 문제의 부트로드 소스 코드.. (RSA 우회 방지를 위해 zip 파일이 두개 이상 짬뽕되면... 뻑.........가게 만들어 놓은 방어 장치)
for (i = 4; i < eocd_size-3; ++i) {
if (eocd[i ] == 0x50 && eocd[i+1] == 0x4b && eocd[i+2] == 0x05 && eocd[i+3] == 0x06) {
LOGE("EOCD marker occurs after start of EOCD\n");
fclose(f);
return VERIFY_FAILURE;
}
}
이제 부트로더를 사용한 작업은 ㅠㅠ 종료해야 할꺼 같고.....
FOTA 코드 분석해보면 /system/etc/security/otacerts.zip 키를 통해서 작업하는데...
이 부분에서는 zip 라이브러리 이용해서 키 체크하는 부분이라.. 중간에 바꿔치기 해도.. 안될꺼 같기도 하고.....
(해보긴 해야죠...)
암울합니다... SKT나 모토로라 본사 가서 개인키 좀~~~ 주세요~ 하면 맞겠죠? ㅋㅋㅋㅋ
다른 여러가지 가능성을 살펴도록 하죠. (우리는 이걸 희망이라고 말하죠?)
1. SKT Installer
SKT Installer를 봅시다. 이 프로그램은 T Store에서 프로그램을 받아 설치할때 사용하는 프로그램입니다.
저넘을 살펴보면... (기억을 되살려..... 기억이 잘 안나는데..)
배열[0] = "chmod";
배열[1] = "644";
배열[2] = "apk 위치???"
exec(배열);
이러한 코드를 사용합니다. 저는 코딩을 독학으로 배웠지만.... 보안 일을 하는 입장에서 저러한 코드는.......;; 좀 아니자나요~~~
저 프로그램이 system 권한으로 호출되기 때문에... 가능성은 희박하나마... system 권한을 획득할 수도 있습니다..... (가능성이 제로에 가깝다 하더라도..)
2. dmb 서비스인 프로그램(?) zklxsp???
분석한 내용이 많아서... 희미해가는 기억들 ㅠㅠ
root 권한으로 돌죠... 분석을 해보면... 코드가 살짝쿵 잘되어 있긴 하나...
100% 코드 분석이 안된 상태라 머라 할말은 없지만.. 가능성은 보이는???? BOF???
처음에 실행할때, 라이브러리 맞춰주고 에뮬에서 돌리면 일단 유닉스 소켓 접속부분부터 통과해야.. 제대로 동적 분석이....
3. 커널 취약점 나올때까지 죽어라 기다린다........................
(이걸 우리는 자포자기라고 부르죠. 거지근성..)
아이폰을 버리고 모토로이를 선택한 이유는 단 하나.... 미개척 분야... 앞으로의 미래....
근데 말이지.................................. 아이폰이랑 아이패드가 땡기는건 어카니~~ 어카니~
아들아!! 널 위해 꼭 루팅 해주마..!! 네가 컸을때는 자유로운 세상이.... ㅋㅋㅋ