본문 바로가기
Previous Research

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

by _Jay_ 2021. 5. 17.
반응형

 

 

안드로이드 루팅 탐지 및 우회 기법 연구에 대한 마지막 글로, 이전 글에서 설명한 제안 시스템을 구현하고 기존의 자바 기반의 루팅 탐지 시스템과 성능을 비교한 결과를 언급하겠습니다. 실제 구현은 안드로이드 스튜디오에서 NDK를 사용하여 루팅 탐지를 서비스 형태로 실행하는 앱 형태로 구현했으며 예제 코드 또한 별도로 올릴테니 참고하시면 됩니다.

 

이후에 수행한 안드로이드 앱 분석 자동화 연구에서 대부분 금융권 및 게임사의 앱 분석을 통해 네이티브 레벨에서 루팅 탐지를 수행하고 있음을 확인했는데요. 이 연구를 진행했을 당시만 해도 Frida 같은 네이티브 후킹 프레임워크가 대중화되기 이전이었지만, 단순히 APK 내 SO 파일을 분석하고자 하면 IDA 디스어셈블러 통해 분석이 가능 했었죠. 그렇기 때문에 제가 이 연구를 진행했던 2015년에도 이미 늦은 감이 없지 않아 있었지만, 정부 과제 수행을 위해서 진행했던 연구이기 때문에 충분한 가치를 지닌 연구라고 생각합니다.

 

3-4년이 지난 지금은 인터넷 상에 자료들이 엄청 많기 때문에, 구글에서 검색하면 이런 논문 형태의 글이 아닌 실제 분석과 실습을 통한 글들도 많이 찾을 수 있으니 참고한다면 공부에 도움이 될 것으로 생각되구요. 꽤 시간이 지난 연구이지만 정부 사업에 속한 프로젝트를 수행하며 진행했기 때문에 부득이하게 핵심이 되는 내용은 제외하였습니다. 이후 개인적으로 연구를 진행할 기회가 된다면 네이티브 루팅 탐지 우회 기법에 대해서도 연구하여 올려보겠습니다. 

 

 

 

네이티브 루팅 탐지 시스템 개발 환경

 

제안한 시스템의 구현을 위해 안드로이드 개발 환경 NDK를 사용하여 네이티브 루팅 탐지 시스템을 구현하였다. 안드로이드에서는 개발자가 C/C++과 같은 네이티브 코드를 이용하여 개발할 수 있도록 NDK를 제공한다. 해당 시스템은 C 기반으로 루팅 탐지 모듈을 구현하여 NDK에서 제공하는 크로스 플랫폼 컴파일러를 통해 라이브러리 형태로 생성하여 안드로이드 디바이스에서 동작시킨다.

 

제안한 시스템에서 루팅 탐지 모듈은 라이브러리 형태인 SO 파일로 제작되어 Java 기반의 루팅 탐지 모듈에 비해 디컴파일 및 소스코드 분석이 어렵고, Xposed 프레임워크의 RootCloak 모듈을 통한 메소드 후킹이 불가능하다. 이러한 장점을 활용하여 기존의 Java 기반 루팅 탐지의 문제점을 해결할 수 있다.

 

 

네이티브 루팅 탐지 시스템 테스트 환경

 

 

구현된 네이티브 루팅 탐지 시스템의 성능을 평가하기 위해서 위의 그림과 같이 기본 안드로이드 디바이스 환경과 루팅 환경에 대중적으로 사용되는 4가지 테스트 환경을 구축하였다.

 

첫 번째는 안드로이드 루팅과 관련된 행위가 전혀 이루어지지 않은 안드로이드 4.4버전의 운영체제이며, 두 번째는 루팅 원터치 앱으로 가장 먼저 개발되고 대중적으로 사용하고 있는 SuperSU를 이용한 환경이다. 그 위에 Xposed 프레임워크의 RootCloak 모듈을 사용하여 루팅 탐지 우회 환경을 구축하였다.

 

세 번째는 두 번째 테스트 환경과 동일한 루팅 환경에 SuperSU 앱의 루팅 기능을 비활성화한 환경이다. 다음으로 네 번째는 중국에서 개발한 루팅 원터치 앱인 kingroot를 이용하여 루팅을 수행하고, 두 번째 환경과 마찬가지로 Xposed 프레임워크의 RootCloak 모듈을 적용하였다. 마지막 다섯 번째 테스트 환경은 XDA 개발자 포럼에서 배포하고 있는 커스텀 안드로이드 이미지인 CF-AUTO-ROOT를 플래싱한 루팅 환경으로 구성하였다.

 

 

성능 평가

 

 

기존의 Java 기반 루팅 탐지 시스템에서는 루팅된 안드로이드 디바이스를 가진 사용자가 Xposed 프레임워크를 이용하여 메소드에서 조작된 값으로 리턴값을 설정하면 정확한 루팅 탐지가 불가능하였다. 그러나 네이티브 루팅 탐지 시스템에서는 Java 레벨이 아닌 네이티브 레벨에서 탐지를 수행하기 때문에 변조 및 위조되지 않은 정상 값이 출력되어 보다 정확한 탐지가 가능하였다.

 

에뮬레이터 환경 탐지 모듈에서는 BlueStack 또는 AVD와 같은 가상 환경 및 커스텀 롬 환경의 탐지가 가능했으며, Xposed 프레임워크를 이용하여 각종 설정 값을 실제 디바이스처럼 변조한 경우에도 네이티브 레벨에서 탐지를 수행함으로써 에뮬레이터 환경 여부를 정상적으로 판단할 수 있었다.

 

네이티브 루팅 탐지 시스템의 성능을 확인하기 위해 Java 기반의 우회 기법을 적용하기 위해 앞서 구축한 두 번째 및 네 번째 테스트 환경에서 루팅 탐지 우회 모듈인 Xposed 프레임워크 상에 RootCloak 모듈을 이용하여 메소드 후킹 및 변조된 결과 값을 통해 루팅 탐지를 우회하였다. 기존 Java 기반 루팅 탐지 시스템과 네이티브 루팅 탐지 시스템의 탐지 성능을 비교한 결과 표 4와 같이 기존 Java 기반 루팅 탐지에 비해 더 정확한 결과를 얻을 수 있었다.

 

 

반응형

댓글