본문 바로가기

pjh

안드로이드 7.0이상에서 버프 프록시 잡는법 본문

H A C K I N G/Android

안드로이드 7.0이상에서 버프 프록시 잡는법

리뷰 빡 2019. 12. 5. 10:51

안드로이드 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/

 

Comments