본문 바로가기
모바일/안드로이드

Android 7 버전 이상 버프인증서 설치 -1

by DeokWoo 2020. 4. 9.

■ 환경구성

- Android 7 버전 이상 기기 ( 실습은 Nox - Android 7.1)

- OpenSSL-Win64

- Burp Suite

 

안드로이드 7.0 버전 이상부터는 http://burp/ 혹은 burp suite 에서 인증서를 추출하여 기기에 인증서를 설치하고, 버프로 패킷을 잡을 시  SSL connection failed 경고 메세지가 뜨면서 패킷이 잡히지 않는다.  그 이유는 안드로이드 7.0 버전 이상부터 인증서 저장 위치가 시스템/ 사용자 권한으로 분리되면서 시스템 위치에 인증서가 설치 되어야 하는데, 기존의 방식은 사용자 위치에 인증서가 설치되기 때문에 버프에서 패킷이 잡히지 않는다는 것을 알게되었다. 여러가지 방법이 존재하지만, 가장 잘 알려져 있는 방법으로 버프 인증서를 설치하려고 한다.

 

1. 버프 인증서 설치 과정

- 안드로이드 7버전 이상 기기에서 사용자 위치에 인증서가 설치되어있고, 앱 실행 후 버프 패킷 잡을 시 네트워크 오류 메세지와 함께 앱이 종료되는 것을 확인할 수 있다.

 

[설정 - 보안 - 신뢰할 수 있는 자격증명 - 사용자] 메뉴 화면                                                    버프 프록시 연결 후 앱 실행 시  화면    

 

-  먼저 버프 인증서를 추출하고, 인터넷을 통해 openssl를 설치한다. openssl 설치 위치로 들어가서 아래 명령어를 통해 인증서 변환 및 해쉬값을 추출한다.

 

openssl 명령어를 통해 인증서 변환 화면

 

open 명령어를 통해 해쉬값 추출

 

- openssl 설치 디렉터리 내 cacert.pem 파일이 하나 존재할텐데, 그 파일 명을 위 과정에서 추출한 해쉬값.0 으로 변환해준다.

 

인증서 파일 변환 화면

 

- cmd 창 하나 열고, adb 명령어를 통해 기기 쉘 화면으로 접속한다. 위 과정에서 추출한 인증서 파일을 시스템 위치에 복사해야하는데, 시스템 디렉터리 기본 권한이 읽기 권한밖에 없어서 복사가 되지 않는다. 이럴 때는 mount 명령어를 사용하여 권한 변경을 하고 나서, 파일 복사를 하면 정상적으로 복사가 되는것을 확인할 수 있다.

 

/system 위치에 인증서 복사하는 과정을 보여주는 화면

 

- [설정 - 보안 - 신뢰할 수 있는 자격증명 - 시스템] 위치에 버프 인증서가 정상적으로 설치된 것을 확인할 수 있다.

 

시스템 위치에 설치된 인증서 목록 화면

 

- 프록시 설정 후 앱 재 실행 시 정상적으로 버프 패킷이 잡히고, 네트워크 오류가 발생하지 않아, 정상적으로 앱 사용이 가능한 상태이다.

 

버프 프록시 설정한 뒤 로그인 성공 화면

 

- 버프 프록시를 통해 모든 패킷을 잡을 수 있지만, 앱 내 webview를 통한 통신이나, 브라우저 통신 시 보안 인증서 에러가 발생하여 정상적으로 패킷 분석을 할 수 없는 상황이다. 구글 검색을 통해 알아본 결과, 버프 인증서는 기본 인증기간은 20년 이상으로 생성되는데, Google은 시스템 인증서를 39개월 이내로 지정해놨기 때문에 이러한 현상이 발생하는 것이였다. 이 문제점을 해결하기 위해, 기간이 짧은 인증서를 자체 생성하여 시스템 경로에 설치하려고 한다.

 

chrome 접속 시 보안 인증서 경고 메세지 출력 화면

 

'모바일 > 안드로이드' 카테고리의 다른 글

안드로이드 루팅(Magisk 앱)  (0) 2023.12.21
Android 7 버전 이상 버프인증서 설치 -2  (3) 2020.04.09