Frida
-
[FRIDA] 실행되지 않는 메소드 호출하기Mobile/Frida 2019. 10. 12. 01:34
Frida로 App의 후킹포인트를 잡을 때 특수한 조건에만 실행이 되거나, 아예 실행되지 않는 메소드들을 후킹해야 할 때가 있다. 위 그림으로 예시로 들면, 빨간박스 yep( )는 중요한 값을 반환해주는 메소드인데 어느곳에서도 호출되지 않는다. 이때는 아래 코드로 간단하게 yep( )를 호출해줄 수 있다. Java.perform(function() { var Target = Java.use("com.hellocmu.picoctf.FlagstaffHill"); Target.getFlag.overload("java.lang.String","android.content.Context").implementation = function(a,b) { var retVal = this.yep(a); console.lo..
-
[FRIDA] App String Trace (모든 문자열 출력)Mobile/Frida 2019. 10. 12. 00:44
Java.perform(function () { const StringBuilder = Java.use('java.lang.StringBuilder'); StringBuilder.toString.implementation = function () { var retVal = this.toString(); console.log("StringBuilder.toString(): " + retVal); return retVal; }; }); java.lang.StringBuilder의 toString( )를 후킹해서 App내부에서 생성되는 모든 문자열을 트레이싱 할 수 있다. App내부에서 SecretKey값을 아무리 암호화해도 결국엔 복호화하여 String으로 변환하는 작업이 있기 마련이다. 이런 상황에서 문자..
-
[FRIDA] App 변수 후킹하는 법Mobile/Frida 2019. 10. 7. 20:17
Frida로 App의 변수값에 접근하여 값을 출력하고 수정하는 법에 다루도록 하겠다. App을 JEB로 열어보면 위 그림처럼 변수들이 사용되고 있는 것을 확인할 수 있다. Frida Javascript API 중 'Java.choose("class",Callback)'API를 이용해서 위 변수들에 접근할 수 있는데, 여기서는 MainActivity에 선언된 lose변수에 접근해서 값을 출력하고 원하는대로 조작하는 것을 목표로 해보겠다. Java.choose("com.example.HOOKAPP.MainActivity", { onMatch: function(instance) { HOOKING CODE~~~ }, onComplete: function() { HOOKING CODE~~~ } }); Java.c..
-
[FRIDA] Android HashMap 오브젝트 출력하는 법Mobile/Frida 2019. 10. 4. 10:59
Frida로 HashMap 오브젝트의 값을 출력해야 할 때가 있다. var HashMapNode = Java.use('java.util.HashMap$Node'); var iterator = hashmap.entrySet().iterator(); while (iterator.hasNext()) { var entry = Java.cast(iterator.next(), HashMapNode); console.log(entry.getKey()); console.log(entry.getValue()); } 그럴 때는 위 코드로 HashMap 오브젝트에 접근할 수 있다. 2020.04.03 추가 - java.util.Map 오브젝트도 위와 동일한 방법으로 출력할 수 있다. 출처 - https://github.co..
-
Frida를 이용한 App DB복호화Key 알아내기(with.TigerText)Mobile/Frida 2019. 7. 5. 10:16
이번에는 Frida를 이용해서 TigerText App의 암호화된 DB를 복호화 해볼 것이다.TigerText App은 카카오톡과 같은 메신저App이며, 텔레그램처럼 보안메시지 기능을 지원하는 App이다.현재는 TigerConnect라는 이름으로 서비스하고 있다.1. Frida란?모바일 환경에서 대표적인 DBI(Dynamic Binary Instrumentation)Tool로 스크립트를 통해서 App을 분석할 수 있다.Frida를 사용하는 목적은 Java Method나 Native함수를 후킹해서 흐름을 조작하려는 것이 가장 크다.대표적인 예로는 SSL Pinning Bypass, Decrypt Key Leak, Method Trace 등이 있다.Frida는 Python이나 C언어등 다양한 언어환경에서 F..
-
FRIDA Hooking (OWASP-UnCrackable1)Mobile/Frida 2019. 6. 24. 20:19
Frida로 함수를 후킹해서 우리 입맛대로 바꿔볼 것이다.실습 App은 OWASP에서 실습용으로 만든 Crackme 시리즈로 진행할 것이다.OWASP-mstg : https://github.com/OWASP/owasp-mstg/tree/master/Crackmes 총 3개로 Level1 / Level2 / Level3로 나뉜다.이번 글에서는 Level1을 Clear하는것을 목표로 진행해보겠다.[ UnCrackable1 ] 설치는 루팅된 기기에 [adb install APK경로]로 설치해줘도 되고, Nox같은 에뮬레이터에 올려도 된다.나는 루팅된 기기에 APK를 설치하고 진행하였다. [ App 실행 ]우선 실행하면 위와 같이 루팅된 것을 탐지하고 [OK]를 누르면 App이 종료된다.코드를 보면서 어떤 로직..
-
[DBI Tool] FridaMobile/Frida 2019. 6. 24. 19:43
모바일 환경에서 DBI(Dynamic Binary Instrumentation) Tool로 유명한 Frida에 대해서 알아보자 DBI란 말 그대로 동적으로 바이너리를 분석하는 행위인데,대표적으로 리눅스에서는 Angr가 있고, 윈도우에서는 Pin이 있다.(예시로 제시된 툴들이 각 플랫폼에 국한된다는 뜻은 아니다.) Frida 또한 모바일 환경뿐만 아니라 PC환경에서도 사용이 가능하다.Frida스크립트는 Python, C 등 다양하게 언어로 작성할 수 있으며, 실질적인 후킹 스크립트는 JavaScript로 작성한다. 나는 평소에 사용하던 언어인 Python으로 스크립트를 작성하였다. 루트권한이 없으면 사용할 수 있는 리소스범위가 극도로 좁아진다.안드로이드의 권한체계는 샌드박스 개념과 같아서 각 UID가 접근..