개요 모바일 앱을 진단하다 보면 DroidX, AndroGuard 등 다양한 보안 솔루션이 적용된 앱을 보게 되는데 이들 대부분은 Frida를 필수적으로 탐지한다. 솔루션이 Frida를 탐지할 때는 보편적으로 Frida 생성 파일, 포트, 모듈 검사를 통해 탐지하며, 몇몇 솔루션에서는 역후킹 방안을 이용해 Frida를 막기도 한다. 해당 포스팅은 이러한 탐지 방법 중에서도 Frida 서버를 이용하여 포트 탐지를 우회하는 방법을 기술하고자 한다. 방법 1. PC와 모바일 디바이스를 USB로 연결한 상태에서 [그림 1]과 같이 원격 셸에 접근한다. adb shell 2. Frida 서버를 -h 옵션을 인자로 주고 실행하면 Frida 서버에 관한 다양한 옵션을 확인할 수 있으며, 이 중에서 -l 옵션은 Fri..
개요 Unity 기반의 엔진으로 제작된 안드로이드 게임 앱 분석 시 일반적으로 Assembly-CSharp.dll 파일을 통해 앱에서 사용되는 클래스와 함수 정보를 파악하게 된다. Assembly-CSharp.dll 파일에는 Unity의 게임 오브젝트들을 제어하고 게임의 동작과 기능을 구현하는데 이용되는 C# 스크립트가 포함되어 있으며, 컴파일 방식(Mono 및 IL2CPP)에 따라서 세부 코드를 파악하고 변조까지도 가능해진다. 때문에, 개발사들은 해당 파일을 통해 크래커들이 게임에서 사용되는 주요 클래스와 함수 코드를 분석하지 못하게 은닉 기법을 사용하여 숨긴다. 대표적인 은닉 기법으로는 PE구조와 CLR 메타데이터의 헤더를 손상시키거나 파일을 암호화하는 방법이 있으며, 이 경우 헤더 시그니처 복구 또..
개요 Frida 스크립트 작성 시 C/C++ 로 작성된 네이티브 함수를 후킹할 때 인자 값 변조 및 확인을 위해 자주 사용되는 메모리(Memory) 모듈의 문법에 관해서 정리를 하고자 포스팅 한다. 해당 포스팅은 완결 판이 아니며, 추후 계속 추가될 예정이다. Memory 모듈 사용법 및 설명 Memory 모듈이란? 앱의 메모리에 접근하고 조작하는 기능을 제공하며, 메모리 모듈을 사용하여 특정 주소의 메모리를 읽거나 쓰는 것이 가능하고 메모리 주소에 대한 포인터를 조작, 블록을 할당 및 해제 할 수 있도록 지원되는 모듈이다. 문법 및 사용법 예시 [ Memory.read ] Memory.readInt(address) address로 지정한 메모리 주소에서 4바이트 정수 데이터를 읽어 반환한다. 예: va..
개요 모바일 진단 시 대상 앱의 보안 탐지 코드를 우회하기 위해 Frida(이하 프리다)를 자주 애용한다. 그런데 프리다를 사용하다 보면 몇몇 알 수 없는 오류가 발생해서 시간을 소비하는 경우가 종종 있는데 그 중에서도 Spawn 방식으로 프리다를 실행할 때 발생하는 대표적인 오류 2가지에 대해 해결 방법을 기술하고자 한다. 에러 이슈 프리다를 Spawn 방식으로 실행 시 발생하는 대표적인 두 가지 오류는 아래와 같다. unexpectedly timed out while waiting for app to launch unexpectedly timed out while waiting for signal from process with Pid Error: VM::AttachCurrentThread faile..