모바일 취약점 점검/Android

[Android] OS변조(루팅) 탐지 코드

서쪽곰 2023. 5. 15. 16:13

목 차

     

    안드로이드 루팅

    루팅은 Android 운영 체제에 대한 관리 액세스 권한을 얻는 프로세스로, 이를 통해 사용자는 제조업체에서 일반적으로 허용하는 것 이상으로 장치의 소프트웨어를 수정할 수 있습니다. 여기에는 사용자 지정 ROM 설치, 사전 설치된 앱 제거, 일반적으로 제한되는 시스템 파일 및 설정 액세스가 포함될 수 있습니다.

    루팅은 다양한 도구와 방법을 사용하여 수행할 수 있지만 일반적으로 Android 시스템의 보안 취약성을 악용하여 높은 권한을 얻습니다. 이는 잠재적으로 장치의 보안 및 안정성을 손상시킬 수 있고 제조업체의 보증을 무효화할 수 있으므로 위험할 수 있습니다.

    그러나 루팅은 기기의 모양과 기능을 사용자 정의하고, Google Play 스토어에서 사용할 수 없는 앱을 설치하고, 불필요한 시스템 프로세스와 블로트웨어를 제거하여 성능을 향상하는 기능과 같은 여러 이점을 제공할 수도 있습니다.

    관련된 위험을 이해하고 Android 운영 체제를 잘 이해하는 숙련된 사용자만 루팅을 시도해야 한다는 점에 유의해야 합니다. 또한 루팅은 모든 관할권에서 합법적이지 않을 수 있으므로 사용자는 장치를 루팅 하기 전에 법률을 위반하지 않는지 확인해야 합니다.

     

    루팅 탐지 코드

    public static boolean isRooted() {
            try {
                // test-keys 태그가 있는지 확인
                String buildTags = android.os.Build.TAGS;
                if (buildTags != null && buildTags.contains("test-keys")) {
                    return true;
                }
    
                // Superuser.apk 파일이 있는지 확인
                File file = new File("/system/app/Superuser.apk");
                if (file.exists()) {
                    return true;
                }
    
                // su, busybox 바이너리가 해당 경로에 있는지 확인
                String[] paths = {"/system/bin/", "/system/xbin/", "/sbin/", "/system/sd/xbin/", "/system/bin/failsafe/",
                        "/system/bin/.ext/", "/system/usr/we-need-root/", "/data/local/xbin/", "/data/local/bin/", "/data/local/"};
                for (String path : paths) {
                    if (new File(path + "su").exists() || new File(path + "busybox").exists()) {
                        return true;
                    }
                }
    
                // su 명령이 실행 가능한지 확인
                Process process = null;
                try {
                    process = Runtime.getRuntime().exec("su");
                    return true;
                } catch (Exception e) {
                } finally {
                    if (process != null) {
                        try {
                            process.destroy();
                        } catch (Exception e) {
                        }
                    }
                }
            } catch (Exception e) {
            }
    
            return false;
        }

    소스코드 순서대로 아래의 4가지 경우를 확인하여 루팅되었는지 확인

    1) /system/build.prop 설정파일의 ro.build.tags=release-keys 가 루팅 시 ro.build.tags=test-keys로 변경되었는지 확인

    2) Superuser.apk 파일이 있는지 확인
    3) su, busybox 바이너리가 해당 경로에 존재하는지 확인
    4) su 명령이 실행 가능한지 확인

     

    2023.05.15 - [보안/모바일 취약점 점검] - [Android, iOS] OS변조(루팅/탈옥), 무결성 검증, 디버깅 탐지 프로젝트 파일

     

    [Android, iOS] OS변조(루팅/탈옥), 무결성 검증, 디버깅 탐지 프로젝트 파일

    1. 프로젝트 실행결과 Android_Integrity.zip - Android 프로젝트 파일 iOS_Integrity.zip - iOS 프로젝트 파일 Integrity.apk - Android 프로젝트 빌드 파일 Integrity.ipa - iOS 프로젝트 빌드 파일 1) Android Android 프로젝트

    seo-security.tistory.com

     

    반응형