- 모바일 usb 케이블 연결 시

 

USB 디버깅 사용 여부 감지에 대하여 아래와 같이 내용 전달해 드립니다

체크가 필요한 시점에 안드로이드의 세팅 값으로 부터 ADB Enable 상태를 가져와서 체크합니다

 

가져오기 위한 클래스는 아래 링크를 참고해 주세요
https://developer.android.com/reference/android/provider/Settings.Secure

 

가져오기 위한 상숫값은 아래 링크를 참고해 주세요
https://developer.android.com/reference/android/provider/Settings.Global#ADB_ENABLED

 

Settings.Global  |  Android 개발자  |  Android Developers

 

developer.android.com

 

'모바일' 카테고리의 다른 글

 Cydia Impactor alternative  (0) 2020.09.10
메모리 덤프 시 평문 추출 대응 방안  (0) 2020.09.06
갤럭시 S7 루팅  (0) 2020.08.24
frida iOS hook  (0) 2020.08.10
frida 추가  (0) 2020.08.10
블로그 이미지

wtdsoul

,

갤럭시 S7 루팅

모바일 2020. 8. 24. 21:11

https://dl.twrp.me/herolte/

 

Download TWRP for herolte

Team Win strives to provide a quality product. However, it is your decision to install our software on your device. Team Win takes no responsibility for any damage that may occur from installing or using TWRP. We recommend downloading the latest version of

dl.twrp.me

https://github.com/topjohnwu/Magisk/releases

 

Releases · topjohnwu/Magisk

The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.

github.com

deliberate-practice.tistory.com/54

 

Magisk를 이용한 안드로이드 루팅

Magisk를 이용한 안드로이드 루팅 Magisk를 이용하여 루팅하는 방법을 알아보겠습니다. Magisk는 /system 디렉토리를 변경하지 않고 루트 권한 획득이 가능하고 Magisk Manager 앱에서 쉽게 다양한 모듈

deliberate-practice.tistory.com

https://dl.twrp.me/hlteskt/

 

Download TWRP for hlteskt

Team Win strives to provide a quality product. However, it is your decision to install our software on your device. Team Win takes no responsibility for any damage that may occur from installing or using TWRP. We recommend downloading the latest version of

dl.twrp.me

 

- G7 루팅 할려다가 엄청나게 삽질을 하여 기록을 남겨둠

- 해당 방법은 안드로이드 8.0에서 진행하였고, Super Su가 아닌 Magisk를 이용한 루팅 방법이다.

- 만약 리커버리에서 나처럼 Super Su 설치를 진행하면 그냥 순정펌웨어 설치하는게 정신 건강에 좋다.

 

G7 TWRP 설치 및 Magisk 설치

 

준비물

G7(SM-G930S), Odin3 v3.13, TWRP, Magisk Manager, Magisk.apk 

 

- 최초 리커버리 이미지 설치 : 볼륨 하 + 홈 버튼 + 전원 버튼 

- 리커버리 접근 : 볼륨 상 + 홈 버튼 + 전원 버튼

 

1. Odin 이용 시 Auto Reboot, Reset Time 제거 후 진행

2. 메인 메뉴에서 Wipe 선택 > 우측 하단의 Format Data 선택 > yes 입력 후 키보드 우측 하단의 체크 버튼 선택

(무결성 검증 때문에 필수)

3. adb push /Magisk-v20.3.zip /sdcard 후 install 설치

4. 리커버리 및 Magisk 설치 후 기기 내 Magisk.apk 설치 

 

- 참고

오딘으로 TWRP를 설치하고 부팅을 하면 순정리커버리로 복원됩니다.
TWRP를 설치할때 오딘에서 Auto Reboot에 체크를 해제하라는게 이것때문이지요.
오딘에서 Auto Reboot에 체크를 해제해도 바로 부팅을 시켜버리면 순정리커버리로 복원되어버립니다.
오딘에서 TWRP를 올린후 바로 리커버리로 진입하세요. 잘못해서 부팅되버리면 도루묵입니다.
이게 어렵다 싶으시다면 CAF Auto Root로 루팅을 먼저 하신후 Flashify 앱으로 리커버리를 설치하는 방법도 있습니다. 

 

 



'모바일' 카테고리의 다른 글

메모리 덤프 시 평문 추출 대응 방안  (0) 2020.09.06
모바일 usb 케이블 사용 여부 탐지  (0) 2020.09.06
frida iOS hook  (0) 2020.08.10
frida 추가  (0) 2020.08.10
iOS (SSL Pinning)  (0) 2020.08.09
블로그 이미지

wtdsoul

,

frida iOS hook

모바일 2020. 8. 10. 13:23

https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06j-testing-resiliency-against-reverse-engineering

 

iOS Anti-Reversing Defenses

 

mobile-security.gitbook.io

 

https://scent2d.tistory.com/86

 

frida iOS hooking

iOS 후킹 원리 정리도 나중에.. 스터디 참고 URL은 아래와 같음 https://blog.attify.com/bypass-jailbreak-detection-frida-ios-applications/ Bypass Jailbreak Detection with Frida in iOS applications In th..

scent2d.tistory.com

위 경로 참고

 

if (ObjC.available) {

try {
var className = "mVaccine";
var funcName = "- mvc";
var hook = eval('ObjC.classes.' + className + '["' + funcName + '"]');
var newretval = ptr("0x0")

Interceptor.attach(hook.implementation, {
    onLeave: function(retval) { console.log("[*] Class Name: " + className);
    console.log("[*] Method Name: " + funcName);
    console.log("\t[-] Type of return value: " + typeof retval);
    console.log("\t[-] Original Return Value: " + retval);
    retval.replace(newretval)
    console.log("\t[-] New Return Value: " + newretval) } });

var className2 = "cc_Util";
var funcName2 = "+checkJailBreakStatus";
var hook2 = eval('ObjC.classes.' + className + '["' + funcName + '"]');

Interceptor.attach(hook2.implementation, {
    onLeave: function(retval) { console.log("[*] Class Name: " + className);
    console.log("[*] Method Name: " + funcName);
    console.log("\t[-] Type of return value: " + typeof retval);
    console.log("\t[-] Original Return Value: " + retval);
    newretval = ptr("0x0")
    retval.replace(newretval)
    console.log("\t[-] New Return Value: " + newretval) } });

var className3 = "cc_IntroViewController";
var funcName3 = "- prepareAppStateCheck";
var hook3 = eval('ObjC.classes.' + className + '["' + funcName + '"]');

Interceptor.attach(hook3.implementation, {
    onLeave: function(retval) { console.log("[*] Class Name: " + className);
    console.log("[*] Method Name: " + funcName);
    console.log("\t[-] Type of return value: " + typeof retval);
    console.log("\t[-] Original Return Value: " + retval);
    newretval = ptr("0x0")
    retval.replace(newretval)
    console.log("\t[-] New Return Value: " + newretval) } });


}
catch(err) { console.log("[!] Exception2: " + err.message); } }

else { console.log("Objective-C Runtime is not available!"); }

 

관건은...내가 후킹하고 싶은

 

클래스명, 메소드명을 찾아서.. 

 

해당 메소드명의 값을 출력해보고 

 

반환 값을 replace하면 된다. 

 

 - 참고

'모바일' 카테고리의 다른 글

모바일 usb 케이블 사용 여부 탐지  (0) 2020.09.06
갤럭시 S7 루팅  (0) 2020.08.24
frida 추가  (0) 2020.08.10
iOS (SSL Pinning)  (0) 2020.08.09
안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법  (0) 2020.08.08
블로그 이미지

wtdsoul

,

frida 추가

모바일 2020. 8. 10. 01:57

 

https://blog.attify.com/bypass-jailbreak-detection-frida-ios-applications/

 

Bypass Jailbreak Detection with Frida in iOS applications

In this blog post, we will have a look at Frida, which is one of the really interesting tools for mobile application security analysis. This is also something we cover in-depth in our Advanced Android and iOS Exploitation training for which you can registe

blog.attify.com

https://github.com/0xdea/frida-scripts

 

0xdea/frida-scripts

A collection of my Frida.re instrumentation scripts to facilitate reverse engineering of mobile apps. - 0xdea/frida-scripts

github.com

 

'모바일' 카테고리의 다른 글

갤럭시 S7 루팅  (0) 2020.08.24
frida iOS hook  (0) 2020.08.10
iOS (SSL Pinning)  (0) 2020.08.09
안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법  (0) 2020.08.08
iOS 무결성 검증 건  (0) 2020.08.07
블로그 이미지

wtdsoul

,

iOS (SSL Pinning)

모바일 2020. 8. 9. 23:08

 

 

https://github.com/nabla-c0d3/ssl-kill-switch2/releases

 

Releases · nabla-c0d3/ssl-kill-switch2

Blackbox tool to disable SSL certificate validation - including certificate pinning - within iOS and OS X Apps - nabla-c0d3/ssl-kill-switch2

github.com

 

모바일 단말기의 프록시 설정 시 단말기와 프록시 구간의 SSL 암호화가 사설 인증서로 암호화 되기 때문에, 경고 메세지가 뜨거나 통신을 수행할 수 없는 경우가 빈번히 발생합니다.

 

위의 문제 때문에 모바일 단말기에 SSL 패킷 분석을 위해 사설 인증서를 신뢰할 수 잇는 인증서로 등록하여 패킷 분석을 진행합니다. (ex /Burp/cert)

하지만, 디바이스의 신뢰할 수 있는 저장소를 무시하고 자체적으로 앱 내부에 저장된 인증서로 SSL 연결을 맺는 앱들이 존재하여 프록시 툴 상에 패킷을 확인할 수 없는 경우가 존재합니다.

 

인증서에 대한 검증이 클라이언트 측에서 이루어지기 때문에 애플리케이션에서 수행되는 인증서 검증을 비활성화하는 트윅을 설치하여 인증서 검증의 우회가 가능합니다.

 

com.nablac0d3.sslkillswitch2_0.14.deb 파일

/private/var/mobile/Media/Downloads 경로에 이동

 

dpkg -i <package>.deb

killall -HUP SpringBoard

 

 

'모바일' 카테고리의 다른 글

frida iOS hook  (0) 2020.08.10
frida 추가  (0) 2020.08.10
안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법  (0) 2020.08.08
iOS 무결성 검증 건  (0) 2020.08.07
ro.debuggable 동적디버깅  (0) 2020.08.06
블로그 이미지

wtdsoul

,

 

https://ryanking13.github.io/2020/07/01/capturing-https-android-without-frida.html

 

안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법

안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법

ryanking13.github.io

https://omespino.com/tutorial-universal-android-ssl-pinning-in-10-minutes-with-frida/

 

TUTORIAL – UNIVERSAL ANDROID SSL PINNING IN 10 MINUTES WITH FRIDA – @omespino

Hi everyone It’s been a while from my last post but I’m back, now I want to show you that you can start hacking android apps with frida without pain, I took me several hours to figure out how to get the frida installation ready but at the end that wasn

omespino.com

https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

 

Frida CodeShare

 

codeshare.frida.re

 

해당 블로그 내용을 그대로 가져왔습니다.

 

앱이 HTTPS를 사용하여 패킷을 암호화하고 있다면 가짜 루트 인증서를 설치해서 암호화된 패킷을 중간에서 MITM 방식으로 가로채서 복호화하여야 합니다.

 

문제는, 안드로이드 7.0인 Nougat부터는 시스템적으로 사용자가 설치한 루트 인증서를 신뢰하지 않도록 하는 옵션(SSL-Pinning)이 디폴트로 설정되어 있습니다.

이 때문에 안드로이드 7.0 이상에서 가짜 루트 인증서를 디바이스에 설치하고 패킷 스니핑을 시도하면, 인증서 검증에 문제가 생겨서 앱이 제대로 동작하지 않습니다.

✔️ Frida를 이용한 우회

이러한 SSL-Pinning 옵션을 우회하는 방법으로 잘 알려진 것은 Frida를 이용해서, 앱의 인증서 검증 과정을 후킹하는 방법입니다.

해당 방법에 대해서는 아래 포스트에 자세히 설명되어 있습니다.

Frida는,

  • 👍 SSL-Pinning 우회 외에도 다양한 용도로 사용할 수 있고,
  • 👍 안드로이드 뿐만 아니라 iOS 등의 환경에서도 사용할 수 있다는 장점이 있습니다.

그렇지만 한편으로는,

  • 👎 매번 adb에서 Frida 서버를 실행하고 컴퓨터와 통신해야 한다는 점과,
  • 👎 루팅된 디바이스가 필요해서 에뮬레이터를 사용하지 않으면 번거롭다는 단점이 있습니다.

 

 

'모바일' 카테고리의 다른 글

frida 추가  (0) 2020.08.10
iOS (SSL Pinning)  (0) 2020.08.09
iOS 무결성 검증 건  (0) 2020.08.07
ro.debuggable 동적디버깅  (0) 2020.08.06
ADB shell /data/data 추출  (0) 2020.08.06
블로그 이미지

wtdsoul

,

https://ddungkill.tistory.com/111

 

[IOS] 모바일 진단 - 탈옥 및 무결성 검증

Step 1. 탈옥된 디바이스 준비 - 현재, Apple 사에서 Cydia Impactor 사용을 서버단에서 막아서 (Impactor를 이용한) 탈옥툴 설치가 불가능함. - Apple Developer Account로만 Impactor 사용 가능(연회비 \130000..

ddungkill.tistory.com

위 경로 참조

환경 : Clutch 2.0.4 사용

 

Step 2.  Clutch로 진단할 Application 복호화

./clutch -i // 복호화할 앱 리스트 출력

./clutch -b [num] // 복호화할 앱 선택

 

Step 3. 앱 분석 & 코드 변경 (탈옥 우회 / 무결성 검증)

- clutch로 복호화한 앱은 /var/tmp/clutch/--- 밑에 있음.

- 실행 파일을 PC로 가져와서 분석 및 코드 변경

- 탈옥 우회 시 보통 IDA로 분석 후 HxD로 조작

- 무결성 검증 시엔 실행파일 Hash 값 비교(HashCalc 등 사용)

 

Step 4. 실행파일 업로드

- 변조/조작한 실행 파일을 설치 경로에 붙여넣기

- 보통 /var/containers/Bundle/Applications/--- 하위임.

- 기존 실행파일 삭제 후 업로드

- chmod 명령어를 이용해 권한 부여 ( chmod 777 [파일 이름] )

 

Step 5. 변조된 앱 실행

- 변조된 앱을 재실행하여 탈옥 / 무결성 우회 가능 판단

 

'모바일' 카테고리의 다른 글

iOS (SSL Pinning)  (0) 2020.08.09
안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법  (0) 2020.08.08
ro.debuggable 동적디버깅  (0) 2020.08.06
ADB shell /data/data 추출  (0) 2020.08.06
iOS 10.x.x 탈옥  (0) 2020.08.04
블로그 이미지

wtdsoul

,

 

https://taesun1114.tistory.com/entry/rodebuggable-%EB%B3%80%EA%B2%BD%EC%9D%84-%ED%86%B5%ED%95%9C-%EB%8F%99%EC%A0%81-%EB%94%94%EB%B2%84%EA%B9%85

 

ro.debuggable 변경을 통한 동적 디버깅

https://securitynote.tistory.com/13 [Android] DirtyCow(더티카우) 취약점 (CVE-2016-5195) DirtyC0w(더티카우) 취약점 (CVE-2016-5195) 개요 1) DirtyC0w (더티카우) 취약점이란? : 2016년 10월 CVE-2016-5195..

taesun1114.tistory.com

예전에 mprop 을 들어본 기억이 나서 해당 경로를 참고

 

 

https://www.bodkin.ren/index.php/archives/533/

 

Android 「动态分析」打开调试开关的三种方法 - SewellDinG @ 老 锥

应用的动态调试是Android逆向的大类,而打开可调试开关则是动态调试的第一步,总结一下打开开关的三种方法; AndroidManifest.xml 最常规的方法,拿到一个应用后,直接反编译,在AndroidManifest.xml的application中添加android:debuggable="true"字段,在回编译、签名、安装、然后进行动态调试; mprop 修改系统调试的总开关字段,由于系统文件只可读,强制修改重新编译镜像再刷入设备又很复杂还不安全,这里可以注入init进程,修改内存中的ro.d

www.bodkin.ren

위 포스팅을 통해 해답을 찾았는데

 

default.prop의 값을 변경해도 메모리에 올라와있는 속성 값은 그대로 0 이기 때문에 동적 디버깅이 되지 않는다.

 

위 블로그에서 mprop라는 파일을 다운받아, 실행하면 ro.debuggable값이 1로 패치 된다.

 

Usage

./mprop ro.debuggable 1

 

어떤 원리인지 궁금해서 살펴본 결과, /proc/1/maps의 /dev/__properties__안의 값을 변경하고 있다.

 

실제 단말기에서 확인한 결과, /init 프로세스의 /dev/__properties__의 메모리 주소를 확인한 후 인자로 받은 변경하고자 하는 속성값을 검색 후 값을 변경하는 것으로 보인다.

 

해당 메모리 주소의 값을 살펴보니 인자로 넣어 준 debuggable의 값이 들어있고 정상적으로 0x31(1)로 값이 변경된 것을 확인할 수 있었다.

 

이 후, manifest.xml 파일에 android:debuggable="true"값이 없어도 정상적으로 동적 디버깅이 가능함.

 

----------------------------------

 

아래 글은 린포럼에서 긁어옴

 

위의 내용에서 mprop 깃헙에 보게되면

https://github.com/wpvsyou/mprop?files=1

두개의 폴더가 있어요.

v7a
v8a

v7a는 32bit을
v8a는 64bit을 이야기해요.

그래서 IDA로 동적 디버깅 하실분들은 위의 내용 참고하시면 좋을 것 같아요.
좀더 v7a와 v8a의 내용은 아래에 링크 남겨드릴테니 봐주세요 :)

https://developer.android.com/ndk/guides/abis?hl=ko

블로그 이미지

wtdsoul

,

https://digitalis.postype.com/post/2290617

 

ADB Shell로 어플리케이션 패키지 파일 추출하기

Mobile Forensic 스마트 폰 포렌식을 진행함에 있어서 가장 큰 문제는 데이터 추출이라 생각 된다. 스마트 폰의 경우에는 제조사, 운영체제, 정책 등이 다양하여 디지털 포렌식의 관점에서 접근할 때

digitalis.postype.com

블로그 내용 중 아래 내용을 참고

 

Extract

폴더 내부의 모든 파일들에 대해서 추출하기 위해서는 "cp" 명령어에 "r" 옵션을 주어 재귀적으로 탐색 뒤, 모든 파일과 디렉터리에 대해 복사를 시도한다.

아래의 예제에서는 "com.naver.nozzle"이라는 네이버 관련 Application의 복사를 시도 하였고, 추후 PC로 옮겨오기 용이하게 External Storage인 "/sdcard"로 복사를 하였다.

 

1. zeroltektt:/ # cp -r /data/data/com.naver.nozzle /sdcard/test_folder

 

 

복사를 하다보면 lib 폴더에 대해서 복사가 정상적으로 진행되지 않을 수 있는데, lib 폴더는 보통 Application을 실행하기 위해 필요한 공용 라이브러리를 Symbolic Link로 이어 놓은 형태이다.

Link와 연결 되어있는 라이브러리 파일들에 대해서는 권한이 미치지 않으므로 복사가 정상적으로 진행되지 않는 것은 당연하다. 또한 lib 폴더의 내용들은 조사에 영향을 주는 사용자 데이터가 포함되지 않으므로 무시하고 진행하여도 무방할 것이다.

 

 

1. C:\Users\Donghyun Kim

2. adb pull /sdcard/test_folder

 

복사를 완료했다면 adb shell을 종료하고 adb pull이라는 명령어를 이용해서 PC로 폴더들을 복사한다.

 

 

'모바일' 카테고리의 다른 글

iOS 무결성 검증 건  (0) 2020.08.07
ro.debuggable 동적디버깅  (0) 2020.08.06
iOS 10.x.x 탈옥  (0) 2020.08.04
Cydia Impactor 없이 IPA 파일 설치(Xcode 7.3 에러 우회)  (0) 2020.08.02
Android debugging Anti-cheating  (0) 2020.07.29
블로그 이미지

wtdsoul

,

iOS 10.x.x 탈옥

모바일 2020. 8. 4. 01:57

 

Altserver 에서 현재 12.2 버전 이상

윈도우 10 환경을 요구하는 상황에서 다시 3utools로 탈옥이 현재 가능하다.

 

vm ware에 mac을 설치해야 하나 고민했는데 다행이구만

 

환경 : win7

iOS version : 10.1.1 ~ 10.3.x

 

'모바일' 카테고리의 다른 글

ro.debuggable 동적디버깅  (0) 2020.08.06
ADB shell /data/data 추출  (0) 2020.08.06
Cydia Impactor 없이 IPA 파일 설치(Xcode 7.3 에러 우회)  (0) 2020.08.02
Android debugging Anti-cheating  (0) 2020.07.29
ios 환경에서 gdb 이용  (0) 2020.07.15
블로그 이미지

wtdsoul

,