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

외국에 공개된 멋진 코드는 아래와 같다...

더보기







 

모토로이(Motoroi) 루팅 2번째 실패기...(XT720)

Posted 2010/04/14 22:21 by silverbug


[실패기]
여러 방법을 통해 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. 커널 취약점 나올때까지 죽어라 기다린다........................
(이걸 우리는 자포자기라고 부르죠. 거지근성..)


아이폰을 버리고 모토로이를 선택한 이유는 단 하나.... 미개척 분야... 앞으로의 미래....

근데 말이지.................................. 아이폰이랑 아이패드가 땡기는건 어카니~~ 어카니~

아들아!! 널 위해 꼭 루팅 해주마..!! 네가 컸을때는 자유로운 세상이.... ㅋㅋㅋ

Android Rooting(루팅)에 대한 오해와 진실

Posted 2010/03/16 14:43 by silverbug

루팅에 관해 많은 사람들이 살짝쿵 오해를 하는거 같아서 정리를 해보도록 합니다.

* 루팅하면 정상적인 업데이트를 할 수가 없으며, A/S가 불가능 하데요..

루팅이란... 루트를 획득하는 방법입니다. root .. uid가 0인 최고 관리자를 말하죠.

현재 안드로이드(Android)를 살펴보면, 모든 일반 프로세스는 app_숫자 형태의 유저명을 가지고 프로세스가 생성이 됩니다. (크게 봤을때 Android는 root/system/일반유저 3개의 계정으로 나눠진다고 봐도 크게 무방함)

즉 일반 유저로 프로세스가 생성(어플리케이션 실행)이 된다는거죠.

자 여기서 루팅하는 방법을  짚고 넘어가 보도록 하죠.

- 커널 취약점 이용하여 root 권한 획득

-  펌웨어 업데이트를 통한 root 권한 획득

- 부트로더 수정을 통한 업데이트.

3가지 방법으로 크게 나눠진다고 볼 수가 있겠습니다.

자 그럼.. 루팅하면 정말로 정상적인 업데이트가 불가능 하고 A/S가 불가능할까요?

커널 취약점을 이용하거나, 부트로더를 통해서 su 명령어를 복사하는 방법을 통해서 root 권한을 획득하는 방법은 단지 권한만 획득하는 과정이기 때문에.. 업데이트 할때 루팅을 했는지 체크 할 방법이 없습니다. 또한 A/S 센터에 가져가기 전에 su 명령어 등을 삭제하시면 A/S 센터에서도 루팅 했는지 알수가 없습니다.

물론 부트로더를 통해서 루팅을 했다면.. 로그가 남기 때문에 추측은 가능하겠지만, 추측은 추측일뿐입니다.

여기서 말하는 업데이트 불가/A/S 불가는 펌웨어를 업데이트 해버리거나, 부트로더를 업데이트 하는 행위에 대해서는 탐지가 가능하기 때문에, 아마도 제약이 있을 수 있습니다.

롬 업데이트 / 부트로더 패치 등만 하지 않으시면 루팅... 아무런 제약이 없을 것입니다.

부트로더 통해서 update.zip 파일 SD 카드에 넣고 하시는 분들은 zip파일 열어보시면 스크립트 존재할껍니다. 단지 su 명령어 복사하고 퍼미션 수정하는거라면 편하게 하셔도 될듯....

커널 취약점 이용해서 하는 방법 (특정 어플리케이션 깔아서 원샷~ 실행) 또한 문제 없습니다.

단지 조심해야 할껀 위에 말씀 드린대로~ 롬 업데이트... 부트로더 패치만 조심하시길.....

루팅 후 파티션 정보 변경, SD 카드 사용으로 메모리 공간 확보, 쓸데 없는 SK~ 프로그램 삭제, 불 필요 프로세스 제거 등... 충분히 많은 일들을 할 수 있습니다.

현재 국내 출시된 모토로이는 루팅이 되지는 않지만... 아래 글을 참조하면 충분히 가능성은 존재합니다. RSA 서명된 업데이트 파일 하나만 있으면 Game Over.....

그냥 쓸데 없는 잡담이었습니다.


모토로이(XT720) 루팅(Rooing) 시도. 실패....

Posted 2010/03/08 14:25 by silverbug

1. [Why] 왜? 우리는 최고 권한인 루트를 획득하려고 하는가...
  - 내가 정당한 댓가를 지불하고 구입한 기기로, 기기의 활용성(?)/성능(?)을 극대화 시키기 위해.(안드로이드에서 제공되는 어플은 한계가 많음)
  - 현재 안드로이드는 용량 제한으로, 100메가 정도 사용 가능. (허나 최고 권한을 획득하면, 용량 제한 해결 가능)

2. [How] 어떠한 방식으로 최고 권한인 root를 획득할 것인가?
  - 기존 외국에서 공개된 루팅 방법 시도.
  - 취약점 분석.

[기 발표된 루팅 방법]

  - 커널 취약점 
 초창기 루팅 방법은 커널 취약점을 이용한 방법으로 루팅을 했었다. 리눅스 기반으로 만들어진 안드로이드는.. 리눅스 커널 취약점에 노출되어 있었고, 이를 활용하여 루팅 가능했음.

취약점 : CVE-2009-2692
Android exploit : http://milw0rm.com/sploits/android-root-20090816.tar.gz

그외 커널 취약점.
CVE-2009-3547
CVE-2009-2848
CVE-2009-3624
CVE-2009-2584
CVE-2009-3286
CVE-2009-1895
CVE-2009-1527

다 테스트 해볼 수가 없어서 가장 마지막에 나온  pipe 취약점(CVE-2009-3547)만 테스트 해봤으나, killed...  패치 된걸로 파악...

다음 새로 나올 커널 취약점을 기대해야 할듯....


* 모토로이 가능성 : 취약점 패치 된걸로 파악됨
  - 부트로더 recovery를 통한 수정.
    이 방법은 SD Card에 업데이트 할 파일과 설정 파일을 넣어두고 (구성을 맞춘 후 update.zip 으로 압축) SD Card에 존재하는 업데이트 설정파일을 통해 su 명령어 설치 및 퍼미션, 마운트 읽기 쓰기 모드로 재 설정을 통해 root를 획득하는 방법이다. (su 명령어를 통해 바로 root로 진입.)

  1. update.zip 파일을 sd카드에 넣어둔다.

  2. 전원 OFF

  3. 카메라 버튼 +  전원 버튼을 꾸욱~ 눌러주면 부트로더 모드로 진입하게 된다.
   진입했으면 두번째 apply sdcard:update.zip 을 선택해 준다.

  4. 완료메시지 확인 후 재부팅

  5. su 명령어를 통해 root 권한 획득.

update.zip에 존재할 스크립트 updater-script
/*
mount("MTD", "system", "/system");
ui_print("Rooting your phone...");
package_extract_file("system/bin/su", "/system/bin/su");
package_extract_file("system/app/Superuser.apk", "/system/app/Superuser.apk");
set_perm(0, 0, 04755, "/system/bin/su");
set_perm(0, 0, 0644, "/system/app/Superuser.apk");
unmount("/system");
*/



* 모토로이 가능성. Low....

일단 테스트 에러....
Verifying update package...
E:EOCD marker occurs after start of EOCD
E:signature verification failed
Installation aborted


왜 안될까?
   - 실제 부트로더 소스 코드를 살펴보면 왜 안되는지 알수가 있다.
       커널 소스를 살펴보면, update.zip 파일의 사인을 체크하게 되어 있다. (RSA 공개키 기반)

체크 순서를 살펴보면..
  1. zip 파일 제일 마지막 6바이트를 가져와 검증.
  2. EOCD 헤더 검증 22바이트
  3. SHA + RSA 검증

공개키는 /res/keys에 존재하는 키를 사용. 즉 키를 알지 못하면 update.zip 파일을 서명할 수가 없기 때문에, 기존의 방식은 사용할 수가 없다.

근데 드로이드/마일스톤은 된다던데?? 어떻게 했을까??!! 기존 버전이었나? 최신 버전도 되나?? 좀더 연구를 진행....................................

최근 모토로이 자체 서비스의 취약점을 찾고 공격을 진행하였으나, 일반 권한으로 실행... 좌절... OTL.....

루트를 획득하는 그날까지.... 영원하라...
 

p.s
 현재 상황 :: RSA 키로 사인된 업데이트 파일하나만 배포되면.. (업데이트 시 사용되는 파일) 루팅 가능할걸로 추정...  열심 분석 끝에 RSA 인증 부분까지 넘어왔음.           
RSA 재 사인 하면 가능.



본 글은 가능성(?)을 염두해두고 쓴 글이며, 감청과 전혀 관련이 없습니다.



남자들이라면(?), 많은 사람들이 저런 페이지를 한번쯤 보았을것이다. 훔............

그냥 어떤식으로 사이트를 막는지 궁금해서 분석해본 결과를 토대로 작성해보도록 한다.

과연 어떤식으로 막을까???

추측 1.
   - 사용자가 웹사이트를 방문하기 위해 인터넷 익스플로러의 URL 창에 도메인을 치게 되면, 자신의 컴퓨터는 그 도메인의 아이피를 DNS 서버에 요청하여 아이피를 얻어오게 된다.
그리고 그 아이피로 접속하여, HTTP 헤더를 보내고 응답을 받아 웹페이지를 뿌려준다.

 즉 이러한 DNS 서버에 도메인을 요청할때,  경고 페이지가 있는 IP를 돌려줘서, 경고 페이지로 접속하게 한다.

추측 2.
  - 도메인에 해당하는 IP에 한해, 무조건 경고 페이지가 존재하는 서버로 돌려버린다.

추측 3.
  - 패킷을 까서, HTTP 헤더중 Host: 필드를 보고, 불법 사이트일 경우, 경고 서버 페이지로 리다이렉션 시킨다.


추측 1에 대한 실험.
  - DNS 서버를 외국 서버로 맞춰놓고 테스트 결과, 이상무.
  - nslookup 결과, 실제 불법 사이트 아이피 돌려줌. 이상무.

추측 2에 대한 실험
  - ip로 바로 접속했을 경우, 정상적인 접속 가능함. 이상무

추측 3에 대한 실험.
  1. nslookup을 통한 ip조회.
  2. ip로 접속.
      telnet ip 80
  3. 간단한 헤더 요청.
     GET / HTTP/1.0
  4. 정상적인 응답. - 이상무 -
  5. 다시 헤더 요청
     GET / HTTP/1.0
     Host: 불법사이트
  6. 차단. warning.or.kr 사이트로 이동
  7. 혹시 모든 아이피에 대해서 패킷 보고 검사?? - 테스트 -
  8. 외부 다른 서버의 아이피로 헤더 요청
     GET / HTTP/1.0
     Host: 불법사이트
  9. 차단 하지 않음. ( 그래야지요~ )
  
  결론>
      위 방식은 dest ip 로 가는 패킷 중 Host: 불법 사이트 에 대해서만 필터링하는 것으로 파악.

      살짝 바꾸면, 외부 다른 패킷 감시 가능하것군.....................................................

질문>> 너한테 저런 차단 프로그램 의뢰가 왔다면 어케 할껀데??
답변>> 나도 저렇게 짠다. 방법 없다 -_-;

이글을 쓴 이유... ::  너무 오래 블로그 관리 안해서 ................................. 심심풀이용.....


믿고 살아야지요.. 아암 그렇구 말구요... 전에 뉴스 보니깐 댓글 실시간 감시 한다던데....
우움.. 이미 기술은 갖춰져 있는 상태고.. 바로 시행 가능하겠네요.... 냠냠.....................

싸이월드 추적기 불법으로 판결. 쿠키값 저장했다고~~~~...
그럼 저거 패킷 저장하면 불법인데........ 쿠키값은 빼고~ 저장해야지요.. 그럼 누가 누군지 어케 알지 -_-;; 냠 심심풀이용............. 글....... 

이 글을 읽는 당신은 낚였습니다.



BackTrack 4 Beta Public Released

Posted 2009/02/11 14:29 by silverbug


BackTrack 4 Beta 버전이 릴리즈 됐군요. 

DVD : 854MB
Kernel 2.6.28.1 보다 많은 하드웨어 지원!
PXE Boot 지원
KDE 3 (정식 버전에는 아마도 4.2 버전이..)
DHCP 기본으로 제공 안함. (사용시 cmd> /etc/init.d/networking start)
VMWARE 사용자를 위한~ 작업(vmware tools 완벽 지원 - vmware 6.5.1)
만약 X를 잡지 못한다면~ xorg.conf 자동 생성(cmd> Xorg -configure)
기타 등등~

다운로드
http://www.remote-exploit.org/backtrack_download.html

추가된 기능중에 눈에 띄는건 다음과 같습니다.


1. Generating WPA tables with pyrit and CUDA!!


엘콤 소프트 제품 안쓰고!! BackTrack으로 가능하겠군요.!! 굿!!!!!!!!!!!!!!! CUDA~ 테스트!~~
(맘에 쏙~~~~ 드는)

2. RFID Tools Revamped, BT4 Beta Pre Release in Shmoocon!


  RFID 관련 툴들이 ~~ 많이 들어갔어요~~ 오예!

3. BT4 and SEXY Maltego Transforms


오 더욱 쉽게~ 더욱 간단하게~ 무선랜을 이용해 보아요~~ 이젠 그래픽컬하게~~