naroSEC
article thumbnail

들어가기 앞서

 

'안드로이드/루팅 탐지 및 우회' 카테고리의 글 목록

모바일 분석 글을 주로 포스팅 합니다.

naro-security.tistory.com

루팅 탐지 및 우회 기법에 대한 주제에 이어서 이번 시간에는 디버깅에 관한 개요에 살펴보고 다음 포스팅부터 디버깅 탐지 방법과 우회 기법에 대해서 다뤄보도록 하겠다.

 

실습 진행에 사용되는 ANDITER 앱은 아래의 Github에서 다운로드 가능하다.

 

GitHub - naroSEC/Anditer

Contribute to naroSEC/Anditer development by creating an account on GitHub.

github.com


디버그의 개요

[그림 1]

먼저 디버그(Debug)란, 프로그래밍 과정에서 발생하는 코드 단의 오류나 비정상적인 연산으로 인해 프로그램이 오작동 되는 경우 이를 해결하고자 버그(오류)를 찾고 수정하는 행위를 의미하며 디버그 수행과정을 디버깅(Debugging)이라고 한다. 모바일 애플리케이션의 오류가 개발 당시 모두 발견되지 못할 수 있기 때문에 서비스 운영 중에 발견될 수도 있다. 운영 중에 확인된 오류는 테스팅 및 검증 조직에서 환경을 구성하여 트러블 슈팅을 진행하게 되는데 이때 디버그 모드에서 코드 상의 오류를 발견하고 수정하게 된다.

 

디버그는 개발자 입장에서 코드 상의 오류를 찾을 수 있는 기능이기 때문에, 공격자에게 악용되면 동적 분석을 통해 애플리케이션의 데이터 흐름과 동작원리가 파악될 수 있어 반드시 탐지하고 차단되야 한다. 이와 같은 디버그를 이용한 분석과정을 모바일 동적 분석이라고 한다.

 

[그림 2] JEB 디컴파일러를 이용한 애플리케이션 동적 디버깅 과정

[그림 2]는 JEB의 디버그 기능을 이용해 ANDITER 앱의 isCheckRootingBinary() 함수를 동적 분석하는 과정으로 if 구문의 실제 비교되는 데이터 값을 확인할 수 있다.


디버그 사용을 위한 사전 조건

애플리케이션을 디버그 하기 위해서는 두 가지 전제조건이 필요하다. 첫 번째는 분석 대상의 AndroidManifest.xml 파일에 디버그 허용 옵션(debuggable)이 설정되어 있거나, 두 번째는 모바일 디바이스 자체 내에서 디버그 모드 지원 관련 시스템 설정이 되어 있어야 한다.

 

먼저 첫 번째 ‘AndroidManifest.xml 파일 디버그 허용 옵션(debuggable)여부’에 대해서 살펴보고자 한다. AndroidManifest.xml 파일은 해당 애플리케이션에 대한 서비스, Intent, broadcast receiver 등의 구성요소, 액세스 권한 등의 정보 이외에도 디버그 모드 허용여부 설정도 포함되어 있다. 설정정보는 실행 시 사용한 빌드 도구, Android OS, Google Play에 제공하게 된다.

[그림 3] AndroidManifest.xml 파일 내용 중 일부

[그림 3]은 AndroidManifest.xml 파일 내용 중 일부로 애플리케이션 자체에서 디버그 모드 사용을 허용할 경우 application 태그의 debuggable 속성이 true로 설정되어 있어야 한다.

 

[그림 4] ro.debuggable 시스템 속성

두 번째 ‘모바일 디바이스 자체 내에서 디버그 모드 지원 관련 시스템 설정’은 Android 시스템 파일인 build.prop의 빌드 속성 중 ro.debuggable 값을 1로 변경해 사용하는 경우이다. build.prop은 Android OS가 부팅 시 참조하는 빌드 정보 및 시스템 속성이 정의된 파일로 ro.debuggable 값이 1로 설정되어 있을 경우 모바일 디바이스 자체 내에서 모든 애플리케이션에 대한 디버그 모드 사용이 지원된다. 이 경우 [그림 3-2]와 같이 debuggable 속성이 true로 설정되어 있지 않아도 디버그 사용이 가능해진다.


마무리

지금까지 디버깅에 대한 개요와 동적 디버깅을 수행하기 위한 사전 조건에 관해서 살펴봤다. 다음 포스팅부터는 모바일 애플리케이션 단에서 동적 디버깅을 탐지하기 위한 방안과 또 이를 공격자의 관점에서 어떻게 우회할 수 있는지 다뤄보도록 하겠다.

profile

naroSEC

@naroSEC

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...