pjh
안드로이드 7.0이상에서 버프 프록시 잡는법 본문
안드로이드 7.0 버전 이상에서 버프 인증서를 등록하여도
버프에서 패킷이 제대로 잡히지 않는 현상을 확인할 수 있습니다.
그 이유는 사용자 인증서와 시스템 인증서의 권한 차이인데요.
(저희가 인증서를 설치하면 사용자 인증서로 들어가게 됩니다~)
그래서 인증서를 시스템쪽에 넣어줘야 합니다.
일단 제가 아는 방법은 두가지가 있는데
첫번째는 후킹을 이용한 방법
----------------------------- 후킹코드 -----------------------------
Java.perform(function() {
var array_list = Java.use("java.util.ArrayList");
var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');
ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {
// console.log('Bypassing SSL Pinning');
var k = array_list.$new();
return k;
}
}, 0);
---------------------------------------------------------------------
개인적으로 전 후킹이 편하네요 ㅎㅎ
두번째는 직접 시스템 영역에 인증서를 넣어주는 방법
버프 인증서를 추출하여 openssl을 이용하여 인증서 변환 및 해쉬값을 추출합니다.
인증서 변환 -> openssl x509 -inform DER -in <추출한 인증서> -out cacert.pem
해쉬값 추출 -> openssl x509 -inform PEM -subject_hash_old -in cacert.pem
cacert.pem 파일의 이름을 해쉬값.0으로 변환합니다.
파일명 변경 후 해당 파일을 인증서를 안드로이드 시스템 인증서 영역에 넣어주면 끝~!
adb root
adb mount
adb push 9a5ba575.0 /system/etc/security/cacerts/
'H A C K I N G > Android' 카테고리의 다른 글
APK 파일 디컴파일에서 컴파일까지 (0) | 2020.03.12 |
---|---|
루팅폰에서 권한 변경 후에도 Read-Only 발생할 때 (0) | 2020.02.13 |
frida zygote 에러 (0) | 2020.02.13 |
smali toast 메시지 코드 (0) | 2019.12.05 |