안드로이드 모의해킹/동적 분석

프리다를 이용한 후킹

seungwon9201 2024. 9. 13. 18:39

프리다는 동적 바이너리 조사 도구로 앱의 프로세스에 사용자가 작성한 자바스크립트 코드나 라이브러리를 삽입할 수 있게 해 준다. 

프리다를 사용하기 위해서는 루팅된 단말과 진단 PC에 모두 설치가 되어야 한다.

PC에 프리다 설치

터미널에서 설치해주면 된다.

프리다 설치

프리다 tools 설치

설치 완료

이러면 PC에 프리다 설치는 끝이다. 

이제 단말에도 설치를 해보자.

단말에 프리다 서버 설치

루팅된 단말(필자는 Nox)에 프리다 서버를 실행해야 한다. 우선 PC에 설치한 프리다 버전과 동일한 버전의 서버를 다운받아야 한다.

단말의 버전은 이렇게 확인할 수 있다.

https://github.com/frida/frida/releases

 

Releases · frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

그럼 여기서 해당하는 버전의 프리다 서버를 다운로드하면 된다.

 

그후 아래의 절차대로 하자.(사용자 PC마다 경로는 다르니 주의하자.)

 

에러가 발생한 이유는 이미 실행시킨상태에서 한번더 실행했기 때문이다. 스크린샷찍으려고 한번더 실행시킨거니 무시해도된다.

위의 사진대로 했다면 프리다가 정상적으로 통신이 되는지 확인해야 한다.

프리다를 통해서 작동중인 프로세스 확인
프로세스 ID확인

이렇게 프라다가 정상적으로 작동한다는 것을 확인할 수 있다.

 

후킹

후킹은 특정 함수나 메시지, 이벤트 등의 호출을 가로채고 수정하는 기술이다. 

위에서 프라다 설정까지 완료했으니 후킹을 해볼 것이다.

 

안드로이드 앱 코드를 후킹할 때는 프라다에서 제공하는 자바 API를 사용해야 한다.

후킹 스크립트는 액티비티 생명주기 함수인 onCreate를 후킹할 것이다. 

타깃 앱은 기존에 설치해 둔 DIVA앱을 대상으로 할 것이다.

Java.perform(function () {
    var activity = Java.use("jakhar.aseem.diva.MainActivity");
    activity.onCreate.overload("android.os.Bundle").implementation = function (var_0) {
        console.log("onCreate() 함수가 호출됨");
        var ret = this.onCreate.overload("android.os.Bundle").call(this, var_0);
    };
})

필자는 이 스크립트의 이름을 hooking.js로 저장했다.

이제 실행을 해보자.

위의 명령어를 실행시키자마자 Nox에서 앱이 자동으로 실행이 되었다!

이렇게 프리다로 앱을 실행시켜 보았다.

이렇게 프리다 스크립트의 실행 방식을 연결 실행 방식이라고 한다.

즉, 프리다가 애플리케이션을 직접 시작시키며, 프로세스가 생성된 시점부터 훅킹이나 코드 삽입이 가능하다.

 

이 방식 말고 생성 실행 방식도 있다.

 

생성 실행 방식은 이미 실행 중인 애플리케이션의 프로세스에 연결하는 방식이다.

즉, 앱이 이미 구동 중일 때 그 앱의 프로세스에 연결하여 후반부의 동작을 추적하거나 조작이 가능하다.

 

이렇게 분석을 원하는 함수나 앱의 구조에 따라서 실행 방식을 선택할 수 있다.

'안드로이드 모의해킹 > 동적 분석' 카테고리의 다른 글

프리다를 이용한 후킹2  (1) 2024.09.13
TCP 패킷 스니핑  (0) 2024.09.13
통신 취약점 진단  (3) 2024.09.11
앱 코드 패치  (0) 2024.09.10