안드로이드 누가(Nougat, Android 7.0) 이후 부터는 사용자가 사설 인증서를 등록하면 루트 인증서로 설치가 되지 않고 사용자 인증서로 설치가 되서 신뢰할 수 있는 인증서로 인식을 하지 않아 SSL Connection 오류가 난다. 

안드로이드 OS 자체적으로 SSL-Pinning을 하고 있다고 생각하면 된다.

 

IOS도 동일한 현상이 일어나서 확인할 결과 IOS는 자체적으로 사설 인증서를 루트 인증서로 신뢰할 수 있도록 만드는 기능을 만들어 놓았었다(간편함...** IOS 10 이상에서 SSL 인증서 등록이 필요한 경우는 아래 포스팅 참고)

https://securitynote.tistory.com/44?category=788948

 

[iOS] ios 버전 10+ Burp SSL 인증서 등록

SSL 통신 프록시 연결 오류 최근 IOS 10 이상 버전에서 BURP 인증서 등록 후, SSL 통신을 잡는데 에러가 일어나서 무슨 새로운 솔루션이 생겨난줄 알았다... 그런데 그런게 아니었나 보다...!! 일단 지금 상태는..

securitynote.tistory.com

하지만 안드로이드는 그런 기능을 지원하지 않으므로 Frida를 이용해 SSL-Pinning을 우회해야 한다.

 

0. 환경

  - Python 3.8 

  - 루팅된 Android 10 (Android 7 이상 모두 사용가능)

1. 환경 세팅(frida 세팅)

 

1) PC 파이썬 설치 후 pip install을 통해 frida와 frida-tools를 설치한다.

pip install frida
pip install frida-tools

2) MOBILE adb 연결 후 모바일 기기의 Bit 및 Type 확인

첫번째 명령어만으로도 확인 가능

Bit > adb shell getprop ro.product.cpu.abi
Type > adb shell getprop ro.product.cpu.abi2

 

3) frida-server 다운로드

아래 링크 접속 후 기기 버전에 맞는 frida-server 다운로드 

https://github.com/frida/frida/releases

 

frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

단, 녹스를 사용할 경우, arm이 아닌 32bit로 다운받아야한다!!

 

4) 기에 frida-server 이동

 - PC 다운받은 압축 파일을 푼다.

 - PC 압축 해제한 파일 내 위치한 바이너리 파일명을 "frida-server"로 변경한다. 

    -> 굳이 안바꿔도 되지만 실행하기 훨씬편함

 - MOBILE adb 명령어를 통해 "frida-server" 파일을 모바일 기기의 /data/local/tmp 파일로 옮긴다.

adb push frida-server /data/local/tmp

 - MOBILE /data/local/tmp로 옮겨진 "frida-server" 파일에 실행권한을 준다.

# chmod 777 /data/local/tmp/frida-server

 - MOBILE frida-server 실행

# ./frida-server &

 

2. Android용 SSL-Pinning 우회 코드 저장

이제 frida 환경 세팅은 끝났다. 아래 링크로 접속하여 Android용 SSL-Pinning 코드를 다운받고 원하는 경로에 .js 확장자로 저장한다. 나는 frida-ssl-and.js로 저장했다.

https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

 

Frida CodeShare

 

codeshare.frida.re

3.PC 후킹하고 싶은 앱의 PID 혹은 패키지명 확인

frida-ps -U

4.PC 후킹

frida -U -l frida-ssl-and.js --no-pause -f [패키지명]  //패키지명을 통한 후킹

5. 끝!

이제 SSL 패킷도 잘~ 잡힐 것이다~!!

 


첨부된 사진이 없어 진행에 어려움이 있으신 분들은 댓글 남겨주세요ㅠㅠ 

  1. guest 2020.12.11 10:52

    안녕하세요~ 스크립트 작동까지는 확인을 하였습니다.
    허나 앱을 실행하면 로고에 멈춰있고 패킷자체가 아예 안오네요 ㅠㅠ
    너무너무 느린건지 아예 안되는건지... 하나의 패킷도 안와서 긴가민가 하네요
    다른 크롬이나 브라우저 https 패킷은 잘 잡는 상태입니다.
    혹시 이런 경우가 있으셨나요?

  2. 앨리빈 2020.12.11 11:23 신고

    알맞는 스크립트를 사용하신건지 확인해보세요 패킷이 느리게 가는거 보다 후킹이 제대로 안됐을 가능성이 높아보입니다~ 그리고 나서도 너무 느린것 같으시면 [기타] 버프(burp)와 피들러(Fiddler) 연동 - https://securitynote.tistory.com/m/46 게시물 참고 해보세요~

+ Recent posts