6/26/2015

[ANDROID] 안드로이드 루팅 여부 확인하기

다수의 모바일 악성코드는 사용자 디바이스의 루팅 여부를 확인하는 경우가 많습니다.
추가적인 root exploit 없이 쉽게 root 권한을 사용할 수 있으며, root 권한을 통해 안드로이드 OS에서 통제하지 못하는 부분에 대해서도 작업이 가능하기 때문입니다.

ANROID Rooting 확인하기


APK에서 루팅 여부를 검증하는 방법은 간단합니다. su(switch user) 를 통해 리눅스에서 사용자 권한 전환 or root 권한 전환을 하듯이 안드로이드에서도
루팅 후 su 명령을 통해 root 권한을 획득하게 됩니다.

try {
    Runtime.getRuntime().exec("su");
} catch ( Exception e) {
    Log.d("root", "not rooting");
}

Runtime.getRuntime().exec 명령을 통해 su 를 실행하였을 때 루팅이 되어있다면 에러가 없을것이고, 루팅이 되지 않았다면 Execption 으로 catch 문에
걸릴것입니다.

또한 시스템 내 su 파일이 존재하는지 확인하는 방법도 있습니다.

/system/bin/su
/system/xbin/su
/system/app/superuser.apk
/data/data/com.noshufou.android.su

위와 같이 su 파일이나 루팅 어플(superuser)에 대한 확인을 통해 루팅 여부 확인이 가능합니다.
공격자는 su 명령 실행, path 확인 후 루팅 시 원하는 작업을 진행하고, 비 루팅 시 root 권한을 따내는 exploit 을 사용하는 형태로
apk 를 작성하여 사용자를 공격할 수 있습니다.

개발적인 측면에서도 개발한 app의 보안성을 위해 rooting 여부를 확인하는 어플도 다수 존재합니다. 물론 완전하게 확인할 수 있다고는 못할 것 같습니다.
충분히 루팅 여부 확인에 대해서 우회가 가능할 수 있지만 일반적으로 어느정도는 예방할 수 있습니다.


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment