Mobile/Frida
-
[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 zgote에러 발생할 때 (SystemApp Hooking)Mobile/Frida 2019. 7. 8. 12:53
[ Frida zygote Error ]Frida로 App을 실행할 때, 위와 같은 에러가 발생하는 경우가 있다. 에러문을 보면, zygote와 Magisk 라는 단어가 언급된다. zygote는 Android System에서 부모프로세스같은 개념으로 생각하면 된다.Magisk는 디바이스를 루팅할 때, SuperSU처럼 루팅HelperApp이다. 이런 에러를 해결하려면 'Magisk의 Hide옵션이 활성화 된 경우 비활성화 하라' 라는 경고문 대로Magisk Hide옵션을 비활성화를 하면 된다고 한다. 근데 나는 그래도 저 에러가 계속 뜨더라.. 그래서 더 찾아본 결과, frida-server를 /system경로에서 실행하면 된다고 한다. [ /system ]이렇게 frida-server를 /system으..
-
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가 접근..