본문 바로가기
Previous Research

안드로이드 루팅 탐지 및 우회 기법 연구 (1)

by _Jay_ 2021. 5. 17.
반응형

 

 

이번 글부터 시작해서 총 3편으로 이어지는 글은 제가 2016년에 대학원에서 수행한 안드로이드 루팅 탐지 및 우회 기법연구에 대한 내용입니다. 안드로이드 루팅 탐지는 대학원 연구실 학부 인턴이었던 2015년부터 연구를 시작하였고, 이를 바탕으로 2016년에 특허 출원 및 소프트웨어 저작권 등록을 진행했습니다. 2017년에는 국제 컨퍼런스에 논문을 제출했으나 그 땐 이미 안드로이드 루팅에 대해 많은 연구가 존재한 상태여서 아쉽게도 통과되지 못했었습니다.

 

이 글에서는 지금은 대중적으로 사용하고 있는 NDK를 이용한 네이티브 레벨에서의 루팅 탐지 및 우회 기법에 대해 설명하고 있는데, 현재 트렌드와는 많이 다를 수 있기 때문에 이런 내용이 있구나하고 공부할 때 참고하면 도움이 될 것 같습니다.

 

이번에 쓰는 글에서는 안드로이드 루팅과 기존 루팅 탐지 및 우회 기법에 대해 설명드리고, 다음 글에서는 NDK를 이용한 안드로이드 루팅 탐지 시스템에 대해, 마지막 글은 NDK를 활용하여 직접 구현한 탐지 기법이 기존 루팅 탐지 기법과 성능을 비교한 내용에 대해 논문 형식으로 짧고 명료하게 작성하고자 합니다.

 

 

안드로이드 루팅

 

루팅은 안드로이드 운영체제의 취약점 등을 사용해서 안드로이드의 관리자 권한인 루트 권한을 얻는 행위다. 안드로이드 운영체제는 리눅스 커널 기반이기 때문에 일반적으로 사용자가 모바일 디바이스에서 관리자 권한을 획득할 수 없다. 하지만 사용자가 안드로이드 디바이스에서 강제적으로 루팅을 수행하여 하드웨어 및 프로세스 성능을 임의로 높이거나 UI를 커스터마이징하는 행위가 가능하다.

 

하지만 루팅이 된 디바이스가 악성코드에 감염되면 사용자 개입 없이 과금 및 개인정보 유출, 추가 악성 앱 설치, 키로깅 등의 악성 행위가 가능하게 된다. 그리고 시스템에 치명적인 손상을 입힐 수 있으며, 모바일 백신 등의 보안 앱을 중지시키고 삭제할 수 있기 때문에 디바이스의 안정성을 보장할 수 없다.

 

안드로이드에서 루팅을 수행하는 방법은 크게 안드로이드 운영체제의 취약점을 이용하여 su 바이너리를 설치하는 루팅 원터치 앱을 사용하거나, 부트 이미지 변경 및 커스텀 롬을 빌드하여 루팅하는 방법이 있다. 가장 흔한 방법은 SuperUser, kingroot 등의 루팅 원터치 앱을 통해 루팅하는 방법이며, 이 외의 방법들의 경우 수행 방법이나 프로세스는 다르지만 su 바이너리를 설치하여 루트 권한을 얻는다는 공통점을 가진다.

 

 

기존 루팅 탐지 및 우회 기법

 

 

안드로이드 디바이스에서 루팅을 하는 사용자가 증가함에 따라서, 다양한 게임 및 금융 앱에서 서비스를 실행하기 전에 루팅 탐지를 수행하고 있다. 하지만 이를 우회하기 위한 기법들이 계속적으로 발견되고 있어서 좀 더 정교한 탐지 방법이 필요하다.

 

기존에 안드로이드에서 루팅을 탐지하는 기법은 표 1과 같이 su 바이너리의 존재 유무와 ro.secure, ro.debuggable 등 안드로이드의 설정값을 확인하여 탐지하는 방법을 사용했다. 그러나 대부분 기존 앱들에서는 루팅 탐지를 Java 레벨에서 수행하고 있기 때문에, 간단한 디컴파일 과정을 통해 루팅 탐지 모듈의 소스코드를 분석하여 쉽게 우회할 수 있다는 단점을 지니고 있다.

 

안드로이드 디바이스에서 루팅을 한 사용자들은 루팅 탐지를 우회하기 위해 XDA 개발자 포럼에서 배포하는 오픈소스 기반 후킹 프레임워크인 Xposed를 사용하고 있다. 가장 대중적인 루팅 탐지 우회 방법은 Xposed 프레임워크에 RootCloak 모듈을 추가하여 특정 메소드 후킹을 통해 리턴 값을 변조하는 방법이다. 이와 같은 방법을 통해 루팅 탐지 모듈을 무력화시킬 수 있다.

 

 

반응형

댓글