본문 바로가기

40./41. Android

Android Rooting 체크 우회(Hooking with Cydia Substrate)

일부 금융 모바일 애플리케이션의 경우 Super user 권한을 임시 비활성화해도 정상 작동하지만 대부분의 금융 애플리케이션은 위변조를 통하여 Android 플랫폼 위변조를 탐지를 우회하게 된다. 하지만 최근 모바일 애플리케이션은 난독화, 재컴파일 방지, 위변조 탐지 등을 통해서 애플리케이션 위변조를 이용한 Super user 권한 탐지 우회가 어려워지고 있다.

Android Hooking

후킹(영어: hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 이때 이러한 간섭된 함수 호출, 이벤트 또는 메시지를 처리하는 코드를 후크(영어: hook)라고 한다.

크래킹(불법적인 해킹)을 할 때 크래킹 대상 컴퓨터의 메모리 정보, 키보드 입력 정보 등을 빼돌리기 위해서 사용되기도 한다.

예를 들어 특정한 API를 후킹하게 되면 해당 API의 리턴값을 조작하는 등의 동작을 수행할 수 있다..
- 위키백과, 우리 모두의 백과사전.


후킹을 통해서 ARM 기반의 안드로이드 환경(Rooting 필수)에서 모바일 애플리케이션 위변조 없이 해당 애플리케이션 라이브러리 내 함수에 대한 호출 주소를 변경하여 Rooting 탐지 및 특정 기능 변경이 가능하다.



There is a process that is called "Zygote". This is the heart of the Android runtime. Every application is started as a copy ("fork") of it. This process is started by an /init.rc script when the phone is booted. The process start is done with /system/bin/app_process, which loads the needed classes and invokes the initialization methods.

*. zygote process
Zygote란  Android System에서 애플리케이션을 빠르게 구동하기 위해서 미리 fork되어있는 중립적인 상태로 대기하는 프로세스로 system에서 exec()호출을 통해 특정 애플리케이션을 실행하면 zygote process와 결합하여 구동하게 된다.

zygote process는 init process에 의해 구동되며 init process가 system 구동에 필요한 각 daemon을 로드 후 마지막에 로드되는 process로 android 서비스 및 애플리케이션은 zygote process를 통해 로드되어 진다. Android Shell ps 명령어를 이용하여 PID와 PPID를 통하여 init process가 생성시킨 process들과 zygote process가 생성시킨 process를 확인 가능하다. zygote process가 실행이 되면 Dalvik VM을 실행시키게 되는데 class와 resource를 미리 로딩한 상태로 application의 logic을 기다리게되어 구동 속도가 빨라지게 된다.

* Cydia Substrate는 Xposed와 비슷한 방식으로 후킹을 진행하며, 아직 Cydia Substrate의 후킹방식을 분석을 종료하지 못하여 대신 Xposed 후킹 방식을 서술하였습니다.

Xposed 프레임웍을 설치하면 확장 app_process 실행 파일을 /system/bin 아래 복사한다. 확장된 setup 프로세스는 Xposed jar 파일을 classpath에 추가하고 특정 위치에서 method를 호출하게 된다. 예를 들어 VM이 생성된 직후 Zygote가 애플리케이션의 main method를 호출 하기 전에 Xposed가 method 내부에서 일부 맥락(context)을 수행하게 된다.


후킹방법

- Superuser 권한 활성화 확인



- Hana N Bank 루팅 탐지 확인




- Play 스토어에서 Cydia substrate, Root cloak plus 설치



- RootCloak Plus에서 루팅 탐지를 우회할 어플리케이션 선택



- Hana N Bank 어플리케이션 종료 후 재 실행 (루팅 미탐지)



 ※ 주의

 본 사이트의 모든 정보는 정보보안 강화를 위한 연구 목적으로 작성되는 블로그 입니다.

 만일 악의적으로 이용시 사용자는 아래와 같은 관련법으로 처벌 받을 수 있습니다.


 

※ 참고자료

Cydia Substrate
http://www.cydiasubstrate.com/id/38be592b-bda7-4dd2-b049-cec44ef7a73b/

Xposed
https://github.com/rovo89/XposedBridge/wiki/Development-tutorial