Frida를 이용한 루팅 탐지 우회 기법 1. 루팅 관련 바이너리 존재 여부 확인 var RootPackages = ["com.noshufou.android.su", "com.noshufou.android.su.elite", "eu.chainfire.supersu", "com.koushikdutta.superuser", "com.thirdparty.superuser", "com.yellowes.su", "com.koushikdutta.rommanager", "com.koushikdutta.rommanager.license", "com.dimonvideo.luckypatcher", "com.chelpus.lackypatch", "com.ramdroid.appquarantine", "com.ramdroid...
구성 안드로이드 환경에서 Fiddler를 사용하기 위해서는 각 기기당 역할 구분을 확실히 해야 한다. 1. Host PC - 프록시 서버 2. Fiddler - 프록시 도구 3. Android Device - 통신을 수행할 주체 위 기기와 도구를 통해 안드로이드에서 송,수신하는 트래픽을 PC에서 볼 수 있다. Android - Fiddler - Host PC 의 관계가 되는 것이다. [구성환경] Host : Windows 10 Home 64bit Android : NOX Emulator / Galaxy S10 5G / Android 5.1.1 / Rooted(Super User) [도구] Fiddler 4 Fiddler 설치는 www.telerik.com/download/fiddler/fiddler4에서..
Preview 안드로이드 환경에서 Frida와 adb로 상용 앱을 분석할 때 앱 내에서 어떤 동작을 하는지 파악하기가 쉽지 않다. 에러가 발생해서 발생하는 크래시 로그(Crash Log)가 아닌 개발자가 의도한 정상 동작은 어떻게 분석할까? 앱로그, 로그캣에서도 그에 대해 구체적으로 방법을 제시해 주지는 않는다. 그렇다고 실행 시점마다 스크린 샷을 저장해서 일일이 분석할 수도 없다. 이 포스트에서는 앱 내 기능 동작에 대해 분석하는 방법을 제시한다. 안드로이드 권한에 대한 정책은 다음과 같다. 안드로이드 5.1 이하(SDK 22이하) - 앱을 설치할 때 권한 부여 안드로이드 6.0 이상(SDK 23이상) - 앱이 실행되는 도중 권한 요청 및 거부하더라도 제한된 기능으로 동작 가능 [분석환경] OSX Bi..
Native Function 루팅 탐지 기법 우회를 위해 libc 모듈에서 실행되는 메소드를 후킹한다. 앱 리소스 보안을 위해 보안 솔루션을 적용한 경우 java레벨의 난독화와 최소화(mininalize)를 통해 어떤 메소드가 실행되는지 정적 분석을 통해 알 수 없다. 그렇기 때문에 시스템에 더 가까운 Native 함수를 후킹하여 루팅 패키지 검사, 시스템 권한 필요 명령어("su") 실행 등을 후킹한다. 앞선 포스트를 통해 조사한 루팅 탐지 기법은 다음과 같다. Interceptor.attach() Frida 스크립트에서 타켓 바이너리의 특정 함수가 호출되는 시점과 실행 후 반환되는 시점에 후킹을 하려면 Intercetpor.attach()을 통해서 흐름을 보거나 변경할 수 있다. 선언되어 있는 함수에..
루팅(Rooting)? 루팅은 쉽게 말해 시스템 최고 권한(root)을 얻는 것이다. 안드로이드에서는 안정적인 기기의 동작을 보장하기 위해 루트 권한은 일반적인 사용자가 접근하지 못하도록 되어 있다. 시스템 내부 저장소 접근, 권한 변경 등 많은 작업을 수행할 수 있기 때문이다. 하지만 Frida를 이용한 후킹을 위해서는 루팅된 시스템이 필요하며, 이 때 루팅 탐지 기법이 적용된 애플리케이션은 동작이 어려울 수 있다. 슈퍼유저는 특권제어를 할 수 있는데, 앱에 설치된 모든 권한과 시스템 백업, 다른 버전 안드로이드 설치, ROM 컨트롤 등을 할 수 있다. 시스템 안전을 보장할 수 없다. 개인정보인 연락처, 이메일 등에 접근할 수 있고 자격증명 및 비밀번호에도 접근이 가능하다. 루팅 탐지 앱 분석 루팅 탐..
안드로이드 설치 파일(APK) 역공학 환경 구성 gomguk.tistory.com/16에서 작성한 앱을 역공학으로 분석해보고 동시에 apk 구조에 대한 학습 다운로드 및 설치 APK Tool(apk → smali) https://ibotpeaches.github.io/Apktool/ java 1.8 버전 이상 필요 java -version apktool -v 설치확인 Dex2Jar(dex → jar) https://sourceforge.net/projects/dex2jar/ brew로도 설치 가능 brew install dex2jar 디컴파일 d2j-dex2jar [apk파일명] JD-GUI (jar → java) http://jd.benow.ca/ 위 방법으로 분석이 안될 때 바이트 코드 뷰어나 Jad..
gomguk.tistory.com/15 에서 작성한 앱에서 기능을 추가한다. 목적 : URI-3 에서 만든 앱에서 JavaScript Interface 등록한 함수를 html에서 호출하도록 변경한다. 패키지 변경 기존에 사용한 flutter 내장 Webview는 JS를 안정적으로 지원하지 않는다고 한다. 그래서 공식 패키지 중 "flutter_inappwebview" https://pub.dev/documentation/flutter_inappwebview/latest/index.html 를 이용한다. 설치 pubspec.yml 에서 flutter_inappwebview: 4.0.0 import 'package:flutter_inappwebview/flutter_inappwebview.dart'; And..
목적 Universal Link 를 통해 인자를 받는 webview를 사용하는 앱 개발 개발환경 개발언어 : Flutter, Kotlin 타겟 디바이스 : Android Pixel 3a API 29(Android 10.0) Emulator ' + Additional 개발언어 : Flutter, Swift 타겟 디바이스 : iPhone SE2 (iOS 13.7) Emulator 개요 웹뷰만 실행하는 앱 딥링크를 통해 인자를 받는 앱 2의 인자를 받아 1의 웹뷰를 실행하는 앱 1. 웹뷰만 실행하는 앱 flutter_webview: ^0.3.19+9 pubspec.yaml에 추가 dependencies: webview_flutter: ^0.3.19+9 flutter: sdk: flutter # The foll..
Nox Emulator에 frida-server를 설치한다. 실습 환경은 OS X Catalina 환경이지만 Windows에 설치했을 때에도 이상 없이 설치됨을 확인했다. 현재(20.11.14)기준으로 프리다 최신 버전은 14 버전이다. 공식 홈페이지에서 받을 수 있다. NOX 설치 ROOT 켜기 ADB 쉘 연결 위한 BusyBox 설치 파일 관리자 실행으로 루트 및 시스템 경로 접근 가능한지 확인 실습 환경에 ADB 설치 Windows : https://4urdev.tistory.com/77 Android SDK Platform Tools 페이지에서 OS에 맞는 ADB를 다운로드 다운받은 경로를 환경변수(시스템변수 - Path)에 등록 쉘에서 adb명령어로 설치 확인 [사진4] OSX에서는 adb co..