일단 쓰고보자

안드로이드 7.0 이상 버프잡기 (SSL Pinning 우회) 본문

모의해킹

안드로이드 7.0 이상 버프잡기 (SSL Pinning 우회)

휘갈기갈기 2020. 2. 26. 16:56

#서론

재미지다.


#준비물

1. 스마트폰 (없으면 Nox)

2. BURP SUITE

3. Frida

4. ADB

5. Hooking 코드

6. 점검 대상 앱


#시작

 

안드로이드 7.0 (Nuga) 이후부터 SSL Pinning을 지원하기 때문에 SSL Pinning이 걸려있는 앱에서는 버프로 패킷이 잡히지 않는다.

 

※ SSL Pinning : SSL(Secure Socket Layer) 통신이 MITM(Man In The Middle) 공격에 취약한 것을 보완하기 위해 사용하는 방식으로, 배포할 앱 소스에 신뢰할 인증서에 대한 정보를 같이 전달하고 해당 인증서 외에는 아무것도 신뢰하지 않음으로써 보안을 강화한다. SSL Pinning 적용된 앱에서는 MITM 상태를 만들 수 없을 뿐만 아니라 추가적인 나쁜짓(?)을 하지 못 하게 된다. 였으면 좋았을테지만 사실 SSL Pinning도 우회가 된다... 그 방법을 소개한다.

 

 

1. ADB로 스마트폰에 Frida-server 넣고 실행

※ 참고로 frida-server는 안드로이드 운영체제에 맞는 파일을 받아서 구동시켜야 함. 아래 운영체제 확인 명령어 참고.

    - C:\> adb shell getprop ro.product.cpu.abi

    - Android# getprop ro.product.cpu.abi

 

1-1) C:\> adb push frida-server /data/local/tmp/frida-server

                           [frida-server]        [Android 경로]

1-2) C:\> adb shell

1-3) Android# cd /data/local/tmp

1-4) 아래처럼 서버 구동 가능하도록 권한 주고 실행

      Android# ls -l

      -rwxrwxrwx 1 root root 38545744 2020-02-07 16:33 frida-server

1-5) Android# ./frida-server &

1-6) Android# ps | grep frida-server

      root          1418  1397  195208  77404 poll_schedule_timeout 0 S frida-server

 

 

2. Hooking 코드 및 파일 준비

2-1) 아래 사이트에서 코드 참고

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’t r

omespino.com

2-2) 코드 전문

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);

2-3) 파일로 저장 (frida-ssl-2.js)

 

 

3. Frida 통해 Hooking 파일 실행

3-1) C:\> frida -U -f [com.AAA.BBB] -l [frida-ssl-2.js] --no-paus

                                   [패키지명]      [Hooking 파일]

3-2) 위 명령어 입력하고 나면 아래와 같이 준비 완료되며, 스마트폰에서는 지정한 앱이 켜짐

불필요한 정보는 숨기고

4. 스마트폰에서 버프 프록시 연결 준비

4-1) 동일한 와이파이 연결하던, Hosted Network 설정하여 잡던 스마트폰에서 노트북으로 프록시 설정

      (192.168.XXX.XXX, 포트 8080)

4-2) 버프에서 스마트폰과 동일한 네트워크에 해당하는 대역 프록시 설정

IP주소 소중

4-3) 스마트폰에서 http://burp 접속

4-4) 버프 인증서 다운로드 후 확장자 .cer 로 변경 및 설치

 

 

5. 버프에서 앱 프록시 잡힘. 끗.