2010년 11월 9일 화요일

안드로이드폰 취약점 테스트 결과 - 권한획득 OK !

몇일전 안드로이드 취약점에 대해서 포스팅을 하였다. 이제서야 테스팅을 해 보았는데, 제대로 동작을 잘 한다.
WebKit 의 취약점을 이용하는 것인 만큼, 사용자는 공격자가 만들어 놓은 웹 페이지에 접속하는 것만으로도
권한을 얻을 수 있는 가능성을 제공해 준다.

공격코드에 포함된 쉘 코드는 리버스쉘 코드로 원격에서 명령어 수행이 가능해진다. 일전에 안드로이드 폰의
IP 에 대해서 알아보았는데, 필자가 사용하는 것은 내부에서는 Private 주소를 사용하게 된다. 이 뜻은, NAT 개념과 같아서 외부에서는 내부 안드로이드 폰으로 접근이 현실적으로 쉽지 않다. 하지만, 리버스 쉘은 안드로이드 폰 자체에서 외부로 접속하는 것이므로 쉽게 우회가 가능해진다.

다음과 같은 형태로 테스트를 진행했다.

192.168.0.223 (안드로이드 폰) -> 192.168.0.240: 7777 (웹 서버)  로 접근하여 취약점 코드 페이지가 실행되고, 리버스 쉘 코드가 수행되어 다시 192.168.0.240 의 7777 번 포트로 연결이 되는 것이다. 접속되면 아래와 같이 연결이 된 것을 확인할 수 있다.

$ netstat -na | grep 7777
tcp        0      0 192.168.0.240:7777      192.168.0.223:54960     ESTABLISHED

다음은 접속화면의 예로, ls 명령어 수행과 df 를 한 결과이다.


ps 를 통해 프로세스의 결과 일부는 아래와 같고, 뒤에 id 를 통해 권한을 확인한 것이다.

app_40    3095  1201  668    324   c006e1b8 afe0d62c S ///system/bin/sh
app_40    3139  3095  668    324   c006e1b8 afe0d62c S /system/bin/sh
app_40    3147  3139  668    316   c006e1b8 afe0d62c S /system/bin/sh
app_40    3149  3147  2128   420   c006e1b8 0010d508 S /system/bin/busybox
app_40    3173  3149  816    336   00000000 afe0c75c R ps
id
uid=10040(app_40) gid=10040(app_40) groups=1015(sdcard_rw),3003(inet)

접속된 권한이 app_40 이므로, 실행된 각 프로세스는 app_40 을 갖고 있다.

이렇게 쉘 권한을 얻었다는 뜻은 무엇일까? 원하는대로 조작이 충분히 가능해 지는 것이다. 물론 권한 제약이 있지만, 이전에 공개된 root 권한을 획득하는 공격코드와 같은 것만 제대로 준비되면 이것또한 가능해 진다.

무엇보다도 이번에 공개된 취약점의 장점은, 현재 인터넷 상에서 많이 발생하는 웹을 이용한 형태의 취약점과
같이 안드로이드폰의 브라우저를 통해 특정 사이트를 방문하는 것 만으로 권한획득이 가능해 진다는 점에서
앞으로 안드로이드를 이용한 위험성에 대해서 더욱 깊게 고민해 봐야 될 문제이다.
사용자가 조작된 페이지에 방문하게 하는 것은 사회공학적 기법만을 사용해서도 어렵지 않게 끌어들일 수 있다.

참고로, 브라우저를 통해 접속된 후에는 브라우저가 Crash 되어 종료버린다.

이 글의 목적은 현재 공개된 안드로이드  취약점코드에 대해 위험성을 알리고자 하는 것이다. 악의적으로
이용되지 않기를 바라며, 앞으로 브라우저를 통한 웹 사이트 방문시에는 주의가 요구된다.
(* 안드로이드 2.2 에서는 패치가 된 상태이다.)

[관련 글]

댓글 5개:

  1. 국내에서는 아직 이 취약점과 관련한 소식을 거의 찾아보기 힘드네요. 위험성도 너무 높은데...

    답글삭제
  2. 지금 저 취약점에 대해서 연구하고 있는데 궁금한점이 있어서 좀 여쭤보려고합니다.

    혹시 직접 쉘코드를 만드셨나요? 저는 메타스플로잇으로 쉘코드 만들어서 해봤는데 계속 안되더라구요

    혹시 직접 쉘코드를 작성하신건지 메타스플로잇을 이용하셨는지 궁금합니다.

    방법 좀 알려주셨으면 합니다. 감사합니다

    답글삭제
  3. @t3bn3 - 2010/11/24 12:07
    테스트 시점에는 공개된 공격코드를 그대로 이용했습니다. 쉘코드도 당연히 코드에 있는 것이며, 주소와 포트부분만 쉘 코드를 변경해서 테스트 하였습니다. 최근에, 또 웹을 이용한 취약점이 있다고 알려졌습니다. 구글에 이 사실이 통보되었고, 세부적인 코드 내용은 아직 공개되지 않았습니다. 참고로 프로요 2.2 에서도 가능하다고 하더군요.

    답글삭제
  4. 답변 감사합니다.

    알려주시기전에 성공했습니다. 엄청난 헤멤속에서.. T.T

    결국 엄청 간단한것이었는데 아무것도 아닌것때문에 엄청 헤맸네요;

    프로요 2.2에서는 패치됐다고한거 같은데.. 2.2에서는 테스트 안해봐서 잘 모르겠네요

    답글삭제
  5. @t3bn3 - 2010/11/25 08:50
    고생하셨네요. 이번 취약점은 2.2에서는 패치되어 있습니다.

    제가말했던 것은 이번 취약점과 다른 것입니다. 아직 세부사항이 알려져있지 않으며, 프로요에서도 영향을 받는다고 합니다.

    답글삭제