ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드 루팅 탐지 방법
    case Computer : 2013. 10. 21. 10:04



    안드로이드 앱을 만들다보면 루팅 탐지를 하고 루팅된 단말기에서는 알림창을 띄우거나 앱이 실행되지 못하게 막아야한다.


    일반적으로 구글링을 통해서 찾아보면 몇몇 공통적인 방식이 사용된다.


    "su" 프로그램 실행 및 실행이 되는지 체크

    "su" 파일이 존재하는지 체크

    그외 su와 같은 역할의 프로그램


    위같이 보통 루팅시에 설치되는 프로그램인 "su" 를 검사한다.

    하지만 이 방법은 간단한 방법으로 우회 가능하다 "su" 이름을 바꿔버리면 그만 이다.


    그래서 위에 우회 방법을 차단할 수 있는 방법을 소개한다.


    SetUID 라고 들어보았는가?


    "su" 프로그램은 일반 권한을 root 권한으로 상승시키는 프로그램이다. 그렇다 보니 SetUID 권한을 항상 가지고 있으며 other에게도 실행권한을 부여되어 있다. 아무리 "su"프로그램을 이름을 바꾸더라고 최소한 권한은 유지되어야 나중에 실행하더라고 권한을 부여받을 수 있다.



    그 말인 즉 su에 권한은 최소한 "-r-sr-x--x  root group_perm su"을 유지해야한다.


    그렇기때문에 파일을 검사할때 이름을 검색하는것이 아닌 권한을 검색하는것이다.


    검색 조건은 이렇다

    1. setUID bit가 있는것

    2. owner가 root 인것

    3. other에게 실행권한(x)이 있는것


    위 권한을 충족하는 파일을 찾으면 어김없이 "su"가 걸리게된다.


    위 방법도 절대적인 방법은 아니며, 다만 "su" 를 단순이 이름이 변경되었을때 검사하는 방법이다.

    "su"를 삭제해버린다면 다시 루팅을 검사할수 없을것이다.


    검사방식은 단순하다. "ls -l -a DIR" 시스템 명령을 통해 "su"가 존재할 만한 위치를 검사하는 것이다.

    일반적인 Linux라면 find 명령을 통해서 seuid 권한이 포함된것을 찾으면 쉽지만 android에는 find 프로그램이 없다. 

    그렇기 때문에 "ls -l -a"로 파일을 상세 목록을 얻고 결과값 파싱을 통해 찾으면 된다.


    -----------------------추가(2014.01.24)


    위 방법을 적용할때는 특정 디렉토리만 검사해야합니다.

    유닉스/리눅스 기반에 root권한이면서 setuid를 가진 파일이 여려개 있기때문에 모든 디렉토리를 검사한다면 

    ㅂsu가 아닌 다른 정상적인 프로그램이 탐지될수 있습니다.


    반응형

    'case Computer :' 카테고리의 다른 글

    Android 앱 분석 (APK)  (12) 2014.02.17
    Memory Cheat App List for Android  (2) 2014.01.10
    [도구소개] Allpairs  (0) 2013.09.24
    Android CTS 및 Testing  (0) 2013.08.08
    CSV  (1) 2013.06.19

    댓글

Designed by Tistory.