12/02/2015

[WEB HACKING] Burp Suite를 통한 Android SSL Packet 분석(Android Proxy + SSL Certificate)

Android 분석 중 발생하는 패킷에 대해 분석할 때 대부분 tcpdump + wireshark 조합을 많이 사용하게 됩니다. 그 중 http 패킷에 대해서는 wireshark 보다 익숙한 burp가 좋기 때문에 프록시를 burp로 걸고 보는 경우가 많았지요.

그 중 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.html


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

3 comments:

  1. 7.0 부턴 사용자/시스템 인증서 권한 차이로 sdcard에 넣어 설치하는 방법은 유요하지 않습니닷.
    아래와 같이 포맷에 맞게 인증서 변환 후 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/

    ReplyDelete
  2. 그리고.. 어차피 이 이슈때문에 그냥 인증서를 생성해서 하시는걸 추천드립니다.
    https://twitter.com/hahwul/status/1232655652931039232

    ReplyDelete
  3. $ openssl genrsa -out ca.key 2048
    $ 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) 인증서 올리면 끝

    ReplyDelete