루팅 우회 1. 루팅이란 ? 루팅은 쉽게 말해 시스템 최고 권한(root)을 얻는 것이다. 안드로이드에서는 안정적인 기기의 동작을 보장하기 위해 루트 권한은 일반적인 사용자가 접근하지 못하도록 되어 있다. 시스템 내부 저장소 접근, 권한 변경 등 많은 작업을 수행할 수 있기 때문이다. 하지만 Frida를 이용한 후킹을 위해서는 루팅된 시스템이 필요하며, 이때 루팅 탐지 기법이 적용된 애플리케이션은 동작이 어려울 수 있다. 2. 공격 방법 루팅된 폰으로 앱 실행 시 루팅을 탐지하여 앱이 종료된다. jadx이용하여 apk 파일을 분석하면 루팅을 탐지하여 boolean형으로 값을 반환하는 함수를 확인할 수 있다. 후킹을 통해 false를 반환하도록 하면 루팅 탐지를 우회할 수 있다. 추가로 fridaCheck..

1. 어플에서 frida-server가 동작되고 있으면 탐지하여 앱이 종료되는 것을 확인 2. Jadx를 통해 어플 분석 → frida 탐지 class가 리소스 파일을 참조하는 것 확인 3. 리소스 → lib → x86_64 → libfrida-check.so 파일 확인 4. IDA Ghidra를 통해 libfrida-check.so 파일 디버깅 frida_check 함수부분에서 조건문 확인 → localhost인 127.0.0.1 값과 0xa269 값 확인 0xa269 는 Big-Endian 으로 보임 따라서 → 692a로 계산 → frida 기본포트인 27042 값 확인 결론 : 해당 check은 localhost에 frida-server의 기본포트인 27042 값을 체킹하여 탐지 5. 해당 frid..

준비물 **덤프를 하기 위해서는 탈옥이 되어있어야 하며, 앱이 실행되어 있는 상태여야 한다. **python3 이상 https://github.com/rootbsd/fridump3 GitHub - rootbsd/fridump3: A universal memory dumper using Frida for Python 3 A universal memory dumper using Frida for Python 3 - GitHub - rootbsd/fridump3: A universal memory dumper using Frida for Python 3 github.com **python3 이하 https://github.com/Nightbringer21/fridump GitHub - Nightbringer2..

내가 사용한 방법은 Frida 후킹을 통해 탈옥 탐지를 우회하지만, 서브루틴에 탈옥탐지 코드가 존재하기 때문에 클래스와 메소드를 명시 할 수 없어 offset과 베이스주소로 계산하여 우회하는 방법을 사용했다. 탈옥 탐지를 우회하기 위해선 먼저 탈옥 탐지 코드를 확인해야 한다. 이때 여러가지 도구를 사용하는데 현재 글에서는 IDA PRO를 사용하였다. 하지만 본 탐지영역은 클래스, 메소드로 되어있지 않고 서브루틴으로 되어있기 때문에 서브루틴의 시작주소(offset)을 사용하여 후킹을 진행했다. (아래사진으로 예시를 들면 offset은 0x37444이다.) 사용한 스크립트는 다음과 같다. if(ObjC.available){ try{ var module_base = Module.findBaseAddress([..

프리다 후킹을 통한 탈옥 탐지 우회는 두가지가 있다. 그 중 클래스와 메소드를 확인이 가능할 때 사용하는 방법을 소개한다. 1. 클래스 및 메소드를 후킹하는 방법 이 방법에는 수많은 스크립트가 존재한다. 그 스크립트는 아래에서 다운로드 받을 수 있다. https://github.com/noobpk/frida-ios-hook GitHub - noobpk/frida-ios-hook: A tool that helps you easy trace classes, functions, and modify the return values of methods on A tool that helps you easy trace classes, functions, and modify the return values of met..