그 중 burp에서 SSL 관련 패킷에 대해 확인이 안되어 좀 찾아본 결과 쉬운 방법으로 burp에서 Android SSL이 적용된 요청을 확인할 수 있었습니다.
Burp suite 인증서 다운로드(Download burp certificate)
PC나 Android Device에서 burp 페이지(burp 서버 페이지 / ex: 127.0.0.1:8080) 접근 후 우측 상단의 "CA Certificate" 메뉴를 클릭하여 인증서를 다운로드 받습니다.테스트에서는 PC웹을 통해 다운로드 후 ADB or 파일 관리자를 통해 안드로이드 기기에 인증서를 설치하였습니다. 앱에서 직접 접근해서 받은 후 설치하셔도 됩니다.
다운로드 받은 인증서의 파일 확장자를 der에서 cer로 변환합니다.
cacert.der -> cacert.cer
## 혹시 Burp PC로 접근이 불가할 경우(Android Device or 타 PC 접근 시)
이 경우 대부분 Proxy 설정이 localhost만 허용되어 발생하는 문제입니다. Burp Proxy 설정에서 접근할 PC/Device IP나 *로 설정하여 접근이 가능하도록 바꿔주세요.
Android Menu에서 인증서 설치하기
변환 후 Android 설정 메뉴 중 보안 메뉴에서 저장소에서 인증서를 가져와 설치합니다.
설정 -> 보안 -> 디바이스 저장공간에서 가져와 설치 -> cacert.cer 탭하여 설치
설치 후 Android에서 Proxy를 설정하여 Burp Suite 에서 확인할 수 있습니다.
Proxy 설정을 통해 SSL 패킷을 Burp로 보내기
무선랜 설정 시 고급 옵션을 사용하거나, ProxyDroid 같은 Toolkit을 이용하여 프록시를 Burp가 실행되는 PC로 지정해줍니다. 안드로이드 요청이 Burp PC로 프록시를 타고 나가게 되며 Burp단의 인증서가 설치되었기 때문에 Burp에서 SSL 패킷에 대해서도 잡을 수 있습니다.Reference
https://support.portswigger.net/customer/portal/articles/1841102-Mobile%20Set-up_Android%20Device%20-%20Installing%20CA%20Certificate.htmlHAHWULSecurity engineer, Gopher and H4cker! |
7.0 부턴 사용자/시스템 인증서 권한 차이로 sdcard에 넣어 설치하는 방법은 유요하지 않습니닷.
ReplyDelete아래와 같이 포맷에 맞게 인증서 변환 후 system 인증서 경로에 넣어줘야합니다.
$ openssl x509 -inform DER -in "cacert.der" -out burp.pem
$ openssl x509 -inform PEM -subject_hash_old -in burp.pem
$ mv burp.pem 9a5ba575.0 (공통인증서의 경우 동일)
$ adb push 9a5ba575.0 /sdcard/
$ adb shell
# su
# mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/
그리고.. 어차피 이 이슈때문에 그냥 인증서를 생성해서 하시는걸 추천드립니다.
ReplyDeletehttps://twitter.com/hahwul/status/1232655652931039232
$ openssl genrsa -out ca.key 2048
ReplyDelete$ openssl req -days 365\
-key ca.key\
-x509 -new -nodes -sha256
-out ca.pem
$ cat ca.key > certificate_burp.pem
$ cat ca.pem >> certificate_burp.pem
$ sed 's/RSA //' certificate_burp.pem > certificate_burp_final.pem
=> 이후 burp 열고
1) User options 탭 => TLS => Client TLS Certificates 접근
2) Destination host는 * , Cert type은 PKCS#12
3) 인증서 올리면 끝