티스토리 뷰

728x90
반응형

아마 SSL/TLS(인증서) Pinning 방식은 Android 7 부터 안드로이드 개발자들이 MITM(Man-in-the-middle) 공격을 막기 위해서 만들었을 겁니다. 

 

그리고 보통 SSL/TLS Pinning 우회를 하는 이유는 모바일 앱에서 Network Traffic Capture 도구나 Proxy 도구에서 SSL/TLS 를 Strip 하고 HTTPS 트래픽을 보기 위해서 할 겁니다. (아니면 말구요... 일단 저는 그렇습니다.)

 

그리고 일반적으로 생각나는 방법으로는 Frida 라는 도구를 이용해서 SSL/TLS pinning 하는 클래스인 com.android.org.conscrypt.TrustManagerImpl 의 checkTrustedRecursive 를 주로 후킹해서 우회하곤 할 겁니다.

 

다만 이를 위해서는 우선 모바일 앱 후킹 도구인 Frida를 설치해야합니다. 그리고 Frida 를 온전히 사용하기 위해서는 모바일이 루팅이 되어 있어야 합니다. 따로 분석용 폰이 없다면 불편하겠죠.

 

그래서 다른 방법이 없을까 찾다가 알게된 방법인데요. 바로 APK 자체에서 SSL/TLS Pinning 하는 클래스를 조작해버리는 겁니다.

 

이론적으로 이를 수행하기 위해서는 아래 과정을 거치면 됩니다.

1. apktool 로 우선 apk 파일을 디코딩합니다. 
https://ibotpeaches.github.io/Apktool/

 

Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

A tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications. It also makes working with an app easier because of the project like file structure and

ibotpeaches.github.io

2. 앱의 네트워크 보안 설정에서 사용자 인증서를 사용할 수 있도록 허용해줍니다. https://developer.android.com/training/articles/security-config

 

네트워크 보안 구성  |  Android 개발자  |  Android Developers

앱 개발자가 안전한 구성 파일에서 네트워크 보안 설정을 사용자설정할 수 있는 기능입니다.

developer.android.com

3. SSL/TLS(인증서) pinning 하는 코드를 비활성화하도록 수정해줍니다.

https://owasp.org/www-community/controls/Certificate_and_Public_Key_Pinning#android

 

Certificate and Public Key Pinning Control | OWASP Foundation

Certificate and Public Key Pinning on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.

owasp.org

4. 그러고나서 다시 apktool 도구로 디코딩하고 코드를 수정해줬던 앱의 디렉토리를 APK 파일로 컴파일 해줍니다.

5. 마지막으로 apksigner 를 이용해서 apk 를 서명해줍니다. (서명할 수 있는 도구는 다양합니다만, 아래는 uber-apk-signer 라는 도구입니다.)

https://github.com/patrickfav/uber-apk-signer

 

GitHub - patrickfav/uber-apk-signer: A cli tool that helps signing and zip aligning single or multiple Android application packa

A cli tool that helps signing and zip aligning single or multiple Android application packages (APKs) with either debug or provided release certificates. It supports v1, v2 and v3 Android signing s...

github.com

 

이런 과정으로 SSL/TLS Pinning 하는 코드를 제거하여 HTTPS 트래픽을 볼 수 있도록 만들어줄 수 있습니다. 그리고 다행히 이런 복잡한 과정을 손으로 할 필요 없이 한번에 자동화해서 해주는 모듈이 생겼습니다.

 

바로 apk-mitm 이란 모듈입니다. https://www.npmjs.com/package/apk-mitm

 

apk-mitm

A CLI application that automatically prepares Android APK files for HTTPS inspection. Latest version: 1.2.1, last published: 18 days ago. Start using apk-mitm in your project by running `npm i apk-mitm`. There are no other projects in the npm registry usin

www.npmjs.com

 

Node.js 14+ 버전이 설치되어 있으시다면 아래 명령어로 설치하실 수 있습니다.

$ npm install -g apk-mitm

 

그리고 사용법은 아래와 같이 정말 간단합니다.

$ apk-mitm <path-to-apk>

 실사용 예시는 아래와 같습니다.

$ apk-mitm .\app-outsource-release.apk

실사용 예시

그러면 자동으로 원래 파일 이름에 -patched 가 붙게 되는 것을 볼 수 있습니다. 그리고 바로 그 apk 파일이 인증서 pinning 이 우회된 apk 파일이 되겠습니다.

 

설치하구서 이제 자유롭게 Wireshark 나 Burpsuite, Fiddler 와 같은 도구로 트래픽을 캡쳐하면서 점검을 해보면 될 것 같습니다!

 

아 물론 위 방법은 APK 파일이 리패키징이 가능하다는 전제하에 수행할 수 있는 방법이겠지요. 앱 무결성 검증을 하는 APK면 불가능한 방법이 되겠습니다.

 

추가로 APK 리패키징에 대해서 알아보고 싶으시다면 아래 링크들을 참고하시면 되겠습니다.

https://domdom.tistory.com/entry/Android-APK-%ED%8C%8C%EC%9D%BC-%EB%A6%AC%ED%8C%A8%ED%82%A4%EC%A7%95repackaging%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

[Android] APK 파일 리패키징(repackaging)하는 방법

PC 환경 : Windows 10 x64 1. apktool 을 다운로드 받습니다. 아래 URL에 들어가셔서 우선 wrapper script 부터 다운로드 받습니다. https://ibotpeaches.github.io/Apktool/install/ Apktool - How to Install I..

domdom.tistory.com

그리고 아래는 APK 파일을 디컴파일, 컴파일, 리패키징, 리사이닝 등을 쉽게할 수 있는 도구에 대한 설명이 적힌 링크입니다.

https://domdom.tistory.com/entry/APK-Easy-Tool-APK-%EB%94%94%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%8B%B8%EC%9D%B4%EB%8B%9D-%EB%A6%AC%ED%8C%A8%ED%82%A4%EC%A7%95-%ED%95%A0-%EB%95%8C-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%8F%84%EA%B5%AC

 

[APK Easy Tool] APK 디컴파일, 싸이닝, 리패키징 할 때 유용한 도구

중요 기능에 대해서는 사실 위 이미지가 다 설명하고 있기 때문에 다운로드 주소만 소개드리고, 아래 내용에서는 제가 사용하면서 겪은 느낌과 발생한 오류에 대한 처리 방법에 대해서 설명하

domdom.tistory.com

마지막으로 아래는 실제로 소스코드를 수정해서 리패키징하는 과정을 설명하는 워게임 문제풀이에 대해 작성된 링크입니다.

https://domdom.tistory.com/entry/Hackthebox-APKey-Writeup%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4

 

[Hackthebox] - APKey Writeup(문제풀이)

문제 설명 This app contains some unique keys. Can you get one? 일단 이 문제는 문제 파일로 apk 파일을 하나 제공했습니다. 문제 분석 바로 디컴파일해서 분석을 해보았습니다. activity 에는 MainActivity..

domdom.tistory.com

 

- 끝 -

 

728x90
반응형
댓글