안드로이드 기타/ETC

Burp Proxy 인증서를 디바이스에 설치하는 2가지 방법

naroSEC 2023. 8. 14. 21:25

개요

모바일 디바이스에서 Burp Suite를 사용하기 위해서는 Proxy 서버 인증서를 디바이스에 설치해야 하며, 인증서를 설치하지 않고 네트워크 통신 시 높은 확률로 SSL/TLS 관련 오류가 발생하게 된다. PC 단에서는 인증서를 설치하지 않고 Burp Suite를 사용해도 큰 문제가 없지만 모바일 앱의 경우는 다르다. 일반적으로 앱에서는 API 서버와 통신을 시도할 때 okhttp3 모듈을 사용한다. 해당 모듈의 경우 내부 코드에서 자체적으로 인증서 체인 검증을 진행하며 이때, 검증 체인 키 값을 디바이스에 설치된 Root CA에서 가지고 온다. 그리고 인증 키가 존재하지 않는다면 통신에 실패하게 된다. 따라서, Burp Suite를 이용할 때 해당 Proxy 서버의 인증서(PostSwigger)가 디바이스에 설치되어 있지 않다면, 서버와의 통신에 문제가 생길 수 있으며 추가로 앱 내에 웹 진단에도 지장이 생기게 된다. 물론, Frida를 이용한 체인 검증 과정을 후킹하는 방법도 있지만 해당 포스팅에서는 Proxy 인증서를 직접 디바이스에 설치하는 2가지 방법을 소개하고자 한다.


첫 번째 방법(OpenSSL을 이용한 방법)

첫 번째 방법은 OpenSSL을 이용하여 Burp Suite에서 다운로드 받은 인증서를  "pem" 확장자를 가진 X.509 디지털 인증서로 변환시켜 디바이스에 직접 추가해주는 방법이다. Windows OS 경우 기본적으로 OpenSSL이 설치되어 있으나, 만약 설치되어 있지 않다면 아래의 링크에서 다운로드 받아 설치해준다.

 

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 300MB hard drive space March 14, 2023 - OpenSSL 3.1 is available. Also, Happy Pi Day. Users

slproweb.com

 

Burp Suite를 실행시킨 후 "Proxy" 설정 탭에서 [그림 1]과 같이 "Import / export CA certificate" 버튼을 클릭한 다음 Export 항목의 "Certificate in DER format" 타입을 지정하고 Next 버튼을 클릭해 Proxy 인증서를 다운로드 받는다.

[그림 1]

openssl 명령어를 이용하여 다운로드 받은 Proxy 인증서를 "pem" 확장자로 변환해준다.

openssl x509 -inform DER -in [다운로드 받은 인증서 이름] -out cacert.pem

[그림 2]

아래의 명령어를 통해 변환한 인증서 파일에서 Hash 값을 추출한다.

openssl x509 -inform PEM -subject_hash_old -in cacert.pem

[그림 3]

[그림 2]에서 변환한 "pem" 인증서 파일의 이름을 [그림 3]에서 추출한 Hash 값으로 바꾸고 확장자를 0으로 지정해준다.

[그림 4]

ADB(Android Debug Bridge)를 통해 인증서를 디바이스 내에 /data/local/tmp 디렉터리로 이동시켜준다. 추가로 ADB는 Android SDK 플랫폼 유틸 중 하나로 디바이스와 PC 간의 통신 및 디버깅을 지원해주는 도구이다. ADB를 설치하지 않은 경우 아래의 링크에서 다운로드 받아 사용하면 된다.

 

SDK 플랫폼 도구 출시 노트  |  Android 개발자  |  Android Developers

Android SDK 플랫폼 도구는 Android SDK의 구성요소입니다.

developer.android.com

adb push 9a5ba575.0 /data/local/tmp

[그림 5]

ADB를 통해 디바이스로 이동시킨 인증서를 이제 루트 인증서(CA 인증서) 디렉터리인 "/system/etc/security/cacerts/"로 이동시켜 줘야하는데 해당 디렉터리의 경우 시스템 레벨 디렉터리로써, 파일 시스템 자체에 쓰기 권한이 제한되어 있다. 따라서, mount 명령어를 이용하여 해당 파일 시스템에 쓰기 권한을 부여한 다음 파일을 옮겨줘야 한다. ADB 셸로 접근 후 아래의 명령어를 통해 전체 파일 시스템에 쓰기 권한을 부여해준다.

mount -o rw,remount /

[그림 6]

cp(copy) 명령어를 사용하여 인증서를 루트 인증서 디렉터리로 복사해준다.

cp /data/local/tmp/9a5ba575.0 /system/etc/security/cacerts/

[그림 7]

인증서를 루트 인증서 디렉터리로 복사했다면, mount 명령어를 사용해 파일 시스템을 다시 원상 복구 시켜준다. 그리고 디바이스를 재부팅 시켜주면 SSL 인증서 오류 없이 Burp Suite 사용이 가능해진다.

mount -o ro,remount /

[그림 8]


두 번째 방법(설정에서 인증서 추가하기)

두 번째 방법은 디바이스 설정에서 인증서를 직접 추가해주는 방법으로 첫 번째 방법과 달리 빠르고 간편하게 사용할 수 있다. 먼저 모바일 디바이스를 PC와 연결하고 디바이스 장치로 접근해준다.

[그림 9]

[그림 1]에서 다운로드 받은 인증서의 확장자를 "crt"로 변경한 다음 디바이스 장치의 최상위 디렉터리로 옮겨준다.

[그림 10]

디바이스 설정에서 "생체 인식 및 보안" 탭으로 이동해준다.

[그림 11]

"기타 보안 설정" 항목으로 이동해준다.

[그림 12]

"디바이스 저장된 인증서 설치" 항목을 클릭해준다.

[그림 13]

"CA 인증서" 항목을 클릭해준다.

[그림 14]

디바이스 장치로 복사했던 인증서를 선택하여 해당 인증서를 설치해준다.

[그림 15]

인증서 설치가 완료 되었다면, "사용자 인증서" 항목을 통해 설치한 인증서 정보를 확인할 수 있다.

[그림 16]


마무리

지금까지 모바일 디바이스에서 Burp Suite를 사용하기 위한 두 가지 Proxy 서버 인증서 설치 방법을 살펴봤다. 포스팅에서 소개한 두 가지 방법 외에도 Frida를 이용한 체인 검증 과정을 후킹하는 방법과 Burp Suite에 앱 서버 인증서를 등록하는 방법 등 다양항 방법이 있으나, 보편적으로 위 두 가지 방법이 가장 많이 사용되며 다음 포스팅에서는 해당 포스팅 방법 외에 방법을 이용한 인증서를 설치하는 방법을 다뤄보도록 하겠다.