안드로이드 루팅 탐지 우회






안드로이드 앱중 보안성을 중요시 하는 일부 앱들의 경우 루팅 및 무결성을 탐지하여 사용을 제한하고 있다. 


이러한 경우 탐지 기법에 따라 몇가지 우회 방법들이 존재한다. 이에 대해 간략히 정리해 본다.





1. 루팅우회



1.1. 루팅 탐지 기법


 직접 탐지하기도 하지만, 대부분 솔루션(주로 백신 모듈)을 통해서 수행한다. 매우 다양한 방법이 존재한다. 



 1) su 바이너리 탐지   


   - 목록 확인 


/system/bin/su /system/xbin/su /sbin/su /system/su /system/bin/.ext/.su /system/usr/su-backup /system/xbin/mu

  

   - File Search API 를 통해 탐색




 2) 프로세스 리스트 탐지

  

  - ps 명령 혹은 내부 명령 구현을 통해 프로세스 목록 확인




 3) 설치된 패키지 목록 탐지


   - /system/app 폴더에 존재하는 apk 파일 확인 


private static boolean checkRoot() {
        String[] paths = { "/system/app/Superuser.apk", "/system/app/su.apk", "/system/app/Spapasu.apk", etc... };
        for (String path : paths) {
            if (new File(path).exists()) return true;
        }
        return false; }

 

      

   - 패키지 목록 확인 

 $ pm list packages | grep root


 pm list packages | grep root

 package:com.devadvance.rootcloak

 package:com.devadvance.rootcloakplus

 package:com.jrummy.root.browserfree

 package:com.geohot.towelroot




   4) 루팅 카운트 탐지




   5) busybox 및 관련 명령어 탐지




   6) build.tags 확인

 

# cat /system/build.prop | grep ro.build.tags
ro.build.tags=release-keys



   7) 폴더 권한 확인


   루팅 후에는 편의를 위해 쓰기 권한을 추가해서 remount 하고 write 권한을 주는 경우가 있다. 


   다양한 디렉토리들의 쓰기 권한 검증을 수행할 수 있다.

  

/

/data /system /system/bin /system/sbin /system/xbin /vendor/bin /sys /sbin /etc ...


  


 1.2. 루팅 탐지 기법 우회

 

 루팅 탐지를 어떤 방식으로 하는지에 대한 분석이 완료되면 우회는 간단하다. 탐지하는 파일 혹은 폴더 등을 숨기거나 변경하는 방법,


 결과값을 받아온 후 조건에 따른 앱 내부 분기문 코드를 조작하여 리패키징 하는 방법, 후킹을 통해 API 를 조작하는 방법 등이 있다.



 1) 파일 혹은 폴더 변경 




 2) smail 코드 패칭  




 3) 후킹





+ Recent posts