목 차
안드로이드 루팅
루팅은 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' 카테고리의 다른 글
[Android] 안드로이드 12 이상 루팅 및 초기화 (갤럭시 S10) (0) | 2024.05.08 |
---|---|
[Android] 안드로이드 루팅 & 순정 펌웨어 복구 (0) | 2023.05.31 |
[Android, iOS] OS변조(루팅/탈옥), 무결성 검증, 디버깅 탐지 프로젝트 파일 (0) | 2023.05.15 |
[Android] 안티 디버깅(Anti-Debugging) 코드 (2) | 2023.05.15 |
[Android] 무결성(앱 위변조) 검증 코드 (0) | 2023.05.15 |