2024. 10. 23. 17:43ㆍ2024 Android
안드로이드 기기 스펙
Galaxy On7
Version : 8.1.0
Model : SM-G610S
Serial : R59JB019LA
취약점 진단 도구 스펙
Magisk 21.0 헬조선 버전
Frida -> 16.2.1
frida-tools -> 12.3.0
python -> 3.7.7
java -> 17 설치
1. apktool
apktool.bat 경로를 환경변수에 추가하여 사용
앱 컴파일, 디커파일 시 사용
C:/ apktool d [앱 패키지 경로]
패키지들은 /data/app/ 에 저장되고 있음
C:/ frida-ps -Uai -> 앱 프로세스명 확인
다음 명령어로 동작중인 프로세스 확인
# pm list packages | grep [찾는 앱 이름]
C:/ adb pull [Packge Path] [로컬 저장 경로]
2. jadx-gui
jadx-gui.bat 파일을 직접 클릭하여 gui버전 사용
3. alzip
apk파일을 압축해제하면 dex, xml 파일 등을 추출할 수 있음
4. IDA
실제로 잘 사용은 못함
5. adb
adb devices
adb shell
6. frida
frida-ps -Uai
U 옵션은 USB 연결된 기기
모바일 앱에서 frida-server 실행시키고 frida로 연결
C:/ frida-ps -Uai
루팅우회 시도
1. 앱을 실행시키면 프로세스아이디를 확인할 수 있다
2. 프로세스 아이디값을 사용해 해당 프로세스에 접근(attach)한다.
C:/ frida -U -p [PID] -l [Javascript]
3. 루팅이 탐지되었다는 경고창이 떳고 "확인" 버튼을 누르면 앱이 종료되는 것이 아니라 앱 실행이 일시중지되었다.
4. 다시 앱을 켜보니 다행히 앱 연결이 종료되어있지 않았고 루팅 체크를 우회할 수 있었다.
확인 버튼을 눌렀을 때 프로세스가 종료된다면 어떻게 frida를 앱에 attach할 수 있을지 의문..
해당 앱은 Bypass TrustManagerImpl 메서드를 사용하고 있어서 해당 코드를 우회하는 자바스크립트를 동작시켜 우회함
try {
// Bypass TrustManagerImpl (Android > 7) {1}
var array_list = Java.use("java.util.ArrayList");
var TrustManagerImpl_Activity_1 = Java.use('cohttp://m.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl_Activity_1.checkTrustedRecursive.implementation = function(certs, ocspData, tlsSctData, host, clientAuth, untrustedChain, trustAnchorChain, used) {
console.log('[+] Bypassing TrustManagerImpl (Android > 7) checkTrustedRecursive check: ' + host);
return array_list.$new();
};
} catch (err) {
console.log('[-] TrustManagerImpl (Android > 7) checkTrustedRecursive check not found');
//console.log(err);
}
try {
// Bypass TrustManagerImpl (Android > 7) {2} (probably no more necessary)
var TrustManagerImpl_Activity_2 = Java.use('cohttp://m.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl_Activity_2.verifyChain.implementation = function(untrustedChain, trustAnchorChain, host, clientAuth, ocspData, tlsSctData) {
console.log('[+] Bypassing TrustManagerImpl (Android > 7) verifyChain check: ' + host);
return untrustedChain;
};
} catch (err) {
console.log('[-] TrustManagerImpl (Android > 7) verifyChain check not found');
//console.log(err);
}
4. logcat
모바일 기기에 접속하여 logcat 실행 및 로그기록 저장 후 로컬로 이동시킨다
C:/ adb shell
$ su -
# cd /data/local/tmp
# logcat > log.txt
C:/ adb pull /data/local/tmp/log.txt
'2024 Android' 카테고리의 다른 글
안드로이드 앱 루팅 탐지 로직 후킹 우회 (0) | 2024.10.24 |
---|