안드로이드 누가(Nougat, Android 7.0) 이후 부터는 사용자가 사설 인증서를 등록하면 루트 인증서로 설치가 되지 않고 사용자 인증서로 설치가 되서 신뢰할 수 있는 인증서로 인식을 하지 않아 SSL Connection 오류가 난다.
안드로이드 OS 자체적으로 SSL-Pinning을 하고 있다고 생각하면 된다.
IOS도 동일한 현상이 일어나서 확인할 결과 IOS는 자체적으로 사설 인증서를 루트 인증서로 신뢰할 수 있도록 만드는 기능을 만들어 놓았었다(간편함...** IOS 10 이상에서 SSL 인증서 등록이 필요한 경우는 아래 포스팅 참고)
https://securitynote.tistory.com/44?category=788948
하지만 안드로이드는 그런 기능을 지원하지 않으므로 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
단, 녹스를 사용할 경우, 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/
3.PC 후킹하고 싶은 앱의 PID 혹은 패키지명 확인
frida-ps -U
4.PC 후킹
frida -U -l frida-ssl-and.js --no-pause -f [패키지명] //패키지명을 통한 후킹
5. 끝!
이제 SSL 패킷도 잘~ 잡힐 것이다~!!
첨부된 사진이 없어 진행에 어려움이 있으신 분들은 댓글 남겨주세요ㅠㅠ
'Hacking > Mobile' 카테고리의 다른 글
[기타] Frida dump 실행 시 device not found 오류 해결 (0) | 2020.02.05 |
---|---|
[기타] 파이썬 2.7과 파이썬 3 동시에 사용 - Windows10 (0) | 2020.01.30 |
[Android] APKTOOL 디컴파일/컴파일 에러 (0) | 2020.01.30 |
[Android] 드로저(Drozer) 이용 (1) | 2020.01.29 |
[기타] 버프(burp)와 피들러(Fiddler) 연동 (0) | 2019.07.05 |