Android 6.0 에서 루팅을 하려면?
Android 6.0 에서 루팅을 하려면?
이전에는 안드로이드가 보안에 취약해서 금방금방 루팅도 되었는데..
점점 SELinux 를 적용하지 않나.. 약빨고 보안 업데이트를 해대서 꽤 강해졌다.
간단하게 어느 부분을 수정해야 최종적으로 시스템 변조가 가능한 Root 권한을 얻을 수 있는지 알아보자.
대부분의 안드로이드 6.0 OEM 제조사들의 시스템 변조 방지 순서는 다음과 같다.
Bootloader[Locked] - Signed Boot Image - System DM-Verify - Mount System
여기서 사용자가 루트 권한을 사용할 수 있게 하기 위해서는 보조 App과 /system/xbin 쯤에 su 바이너리가 있어야하고, su 바이너리는 setUID 권한과 SELinux 에서도 대빵 권한을 먹어야 한다.
그러기 위해서는 먼저 system 파티션을 변조 해야하는데, 하도 변조해대다보니 화가난 안드로이드는 system 파티션에도 무결성 검사 기능 [DM-Verify] 를 도입해버린다.
이 DM-Verify 를 실행시키는 놈은 boot 이미지에 config 형태나 데몬으로 존재하는데, 이놈을 해제해야 변조된 system으로 정상 부팅해 사용할 수 있게 된다.
boot 이미지 내의 sepolicy 또한 superuser 권한을 위해 patch 또는 갈아치워져야 한다.
삼성 기종들은 다행히도 워런티만 포기하면 루팅을 하던 뭘 하던 건들지 않기 때문에, 변조된 커스텀 recovery 를 기기에 설치해 recovery 내에서 system 파티션 변조와 boot image 변조를 함께 진행한다.
물론, 변조된 recovery 와 boot image 들은 sign이 되지 않은 상태이지만, bootloader에서는 경고와 KNOX 워런티 해제를 적용한 뒤 정상 부팅 시켜준다.
그에 반해 국내 LG 기종들은 bootloader 가 sign이 되지 않은 이미지들은 부트를 거부하기 때문에, 전체적인 작업 진행이 어렵다.