관리 메뉴

Information Security

SSL Pinning 우회 본문

모바일/Frida

SSL Pinning 우회

HackingPractice 2020. 12. 24. 17:04

SSL Pinning

클라이언트 측에서 사용하는 기법으로, SSL 통신에서 취약하다고 알려져 있는 중간자 공격을 방지할 수 있다. 클라이언트 측에 신뢰할 수 있는 인증서들을 저장하고, 이는 이후 실제 통신 과정에서 서버가 제공하는 인증서와 비교하는 데 사용된다. 만약 이 과정에서 미리 저장된 인증서와 서버가 제시한 인증서가 일치하지 않는다면, 연결은 중단될 것이고, 유저의 정보가 서버로 전송되지 않을 것이다. 이런 방식으로 클라이언트 측에 설치되는 다른 인증서로는 통신이 되지 않고 서버에서 제공하는 인증서로만 통신할 수 있게 하는 것이다.
Burp Suite와 같은 프록시 도구를 사용해서 서버와 통신하는 패킷을 중간에 가로챌 수 있지만, 이 SSL Pinning이 적용된 클라이언트에서 보내는 패킷은 중간에서 패킷을 가로챌 수 없다.

 

Pinned SSL Demo 앱을 실행시킨 후 Submit requset 버튼 클릭 시 Connection refused 메시지를 확인할 수 있다.

그림 1-1 Pinned SSL Demo 

Use pinned SSL Connection 체크박스를 해제 후 Submit requset 버튼 클릭 시 Connection refused 메시지를 확인할 수 있다.

그림 1-2 SSL

체크박스 해제 후 burp suite를 확인을 하면 Reuqest 값을 확인할 수 있다. 체크 박스 설정이 되어 있으면 Request 값이 잡히지 않았다.

그림 1-3 Request

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

SSL pinning 관련된 소스코드를 확인했다.

 

Frida CodeShare

 

codeshare.frida.re

그림 1-4 codeshare

Pinned SSL Demo 프로세스를 확인했다.

그림 1-5 프로세스

codeshare에서 불러온 코드를 실행시키면 /data/local/tmp/cert-der.crt 파일이 없다고 에러 메시지를 보여주는 것을 알 수 있다.

그림 1-6 에러메시지

Download 폴더에 있는 인증서를 /data/local/tmp/cert-der.crt 복사 후 777 권한을 주었다.

그림 1-7 cert.der

명령어를 다시 시작하면 정상적으로 동작하는 것을 알 수 있다.

그림 1-8 ssl pinning

User pinned SSL connection 체크박스 설정 후 Submit Request 클릭 시 잡히지 않았던 Request 값이 잡히는 것을 알 수 있다.

그림 1-9 Request

SSLContext initialized whit our custom TrustManager 라는 신뢰 있는 메시지가 뜨는 것을 확인할 수 있다.

그림 1-10 TrustManager

'모바일 > Frida' 카테고리의 다른 글

SSL Pinning 우회 코드 분석  (0) 2020.12.25
Frida - sieve.apk BruteForce PIN  (0) 2020.12.21
Frida - sieve.apk 로그인 우회  (1) 2020.12.20
Uncrackable1 - 암호화  (0) 2020.12.18
UnCrackable - Level1  (0) 2020.12.17