에뮬레이터와 Burp Suite에서 Android 앱의 HTTP 통신 캡처 (Android 7.0 이상 지원)

개요



버그 사냥 등으로 Android 앱의 HTTP 통신을 캡처할 필요가 있을까 생각한다. 그래서 본 기사에서는 Android 에뮬레이터의 NoxPlayer와 Burp Suite를 이용한 환경을 구축한다.

본 기사에서는 macOS와 NoxPlayer를 사용하는 것을 전제로 하고 있지만, 그 이외의 환경에서도 Android 에뮬레이터와 Burp Suite를 준비할 수 있으면 같은 방법으로 환경 구축할 수 있다(라고 생각한다).

Android7.0부터는 증명서의 취급 방법의 변경에 의해, Burp Suite의 클라이언트 증명서의 인스톨 방법에 한 번 더 추가할 필요가 있다. 본 기사에서는 그 설정에도 대응한다.

환경


  • macOS Catalina 10.15.7
  • Homebrew 2.6.0
  • NoxPlayer 3.0.5.0
  • Burp Suite Community 2020.12.01

  • 절차



    0. 준비


  • homebrew-cask에서 NoxPlayer 설치
  • Burp Suite 설치
  • Burp Suite 인증서 ( cacert.der ) 준비
  • 호스트 시스템의 로컬 IP 주소 확인
  • 아래 그림과 같이 NoxPlayer의 시스템 설정에서 루트 화



  • 1. 0.에서 준비한 인증서를 Android 시스템 인증서로 설치



    다음 명령을 사용하여 cacert.der를 시스템 인증서로 설치할 수 있는 형식으로 변환합니다.
    ❯ openssl x509 -inform DER -in cacert.der -out cacert.pem
    ❯ mv cacert.pem `openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1`.0
    
    9a5ba575.0
    
    adb 를 사용하여 준비한 인증서 파일( 9a5ba575.0 )을 에뮬레이터에 설치합니다. adb는 homebrew-cask로 NoxPlayer를 설치한 경우 /Applications/NoxAppPlayer.app/Contents/MacOS/adb에 배치됩니다.
    ❯ adb push 9a5ba575.0 /sdcard/9a5ba575.0
    ❯ adb shell
    
    dreamqltecan:/ # su
    dreamqltecan:/ # mount -o rw,remount /system
    dreamqltecan:/ # mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/ 
    dreamqltecan:/ # chmod 644 /system/etc/security/cacerts/9a5ba575.0 
    dreamqltecan:/ # reboot
    

    2. Burp Suite의 대기 주소를 All interface로 설정



    이하의 화상과 같이 설정한다.





    3. 에뮬레이터의 네트워크 설정에서 호스트 시스템의 Burp Suite를 프록시 서버로 설정



    0.에서 조사한 호스트 머신의 로컬 IP 주소 ( 192.168.3.13 )를 여기에서 설정합니다.



    4. 테스트



    적당한 어플리케이션을 기동하면, Burp Suite로 HTTP 통신의 내용이 캡쳐 되어 있는 것을 확인할 수 있다.



    참고문헌


  • Configuring Burp Suite With Android Nougat
  • 좋은 웹페이지 즐겨찾기