콘텐츠로 이동

[Android] Frida로 SSL Pinning 우회하는 방법

서론

안드로이드 앱 진단 시 매번 SSL Pinning 우회 스크립트를 검색해서 쓰는데
검색하기도 귀찮고 잘 안된다.

SSL Pinning 판별법

그냥 앱 실행했을 때는 문제 없이 잘 되는데
이상하게 Proxy 설정해서 BurpSuite만 켜면 앱이 작동을 안하는 경우.
정확히는 Https 통신이 안되는 경우 대부분 SSL Pinning 이라고 보면 된다.

우회 방법

Frida를 이용한 함수 후킹을 통해 우회하게 되며
일반적으로 Frida CodeShareProject: Universal Android SSL Pinning Bypass with Frida를 참조할 것이다.

하지만 쓸데없이 코드도 엄청 길고 실행 시 뭔가 에러가 뜨거나 잘 안될 경우가 많다.
저 긴 코드 필요 없고 눈 딱감고 Frida로 아래의 코드를 실행해 보자.

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('[i] Bypassing SSL Pinning');
        var k = array_list.$new();
        return k;
    }
});

일단 위 코드로 안되면 그다음에 다른 방법을 생각해 보자.

결론

Android SSL Pinning 우회

  1. Proxy만 잡으면 통신이 안된다.
  2. SSL Pinning인 것 같다.
  3. 위의 코드를 Frida로 돌린다.
  4. 잘된다.

끝.


마지막 업데이트: 2022-10-04

댓글