기존과 달라진 점
Android 6 까지에서는 사용자 영역에서 인증서를 설치하면 프록시에서 패킷이 잘 잡혔습니다. 그러나 Android 7 부터 보안 변경점이 생겨서 사용자 영역에 인증서를 설치해도 패킷을 잡을수가 없습니다.
인증서를 시스템 영역에 설치해야 하는데 루팅되지 않은 Android 7 기기에는 설치할 수 없기 때문에 이제 루팅되지 않은 기기는 진단 시 활용할 수 있는 부분이 거의 없어졌습니다.
저는 이번에 녹스를 통해서 burpsuite 인증서 설치 방법을 확인해 볼 예정입니다.
중간중간 오류가 있었는데 해결방법을 찾아보고 해결한 부분도 있고 해결하지 못한 부분도 있습니다.
해결하지 못한 부분은 추후에 계속해서 확인해보도록 하겠습니다.
1. 사전준비(녹스(Nox) 및 프록시 연결 확인) 및 기존방법 확인
새로운 인증서 설치 방법을 확인하기 전에 기존에 사용하던 방식대로 사용자 영역에서 인증서 설치시 어떻게 되는지 먼저 확인해보도록 하겠습니다.
먼저 프록시를 연결한 상태로 인터넷 브라우저를 실행을 해보겠습니다.
아래와 같이 일반적인 인증서 문제를 확인할 수 있습니다.
이제 사용자 영역에 인증서를 설치 후 브라우저에 접근해 보겠습니다.
burp 인증서를 SD 카드로 옮긴 후 [보안 > 자격증명 저장소 > SD카드에서 설치 ]
다운로드 한 burp 인증서를 선택 해 줍니다.
이름을 입력하고 확인을 눌러 줍니다.
다시 [자격증명 저장소] 에서 [신롸할 수 있는 자격증명]을 선택해 줍니다.
사용자 영역을 선택해 줍니다.
다음과 같이 인증서가 설치된 것을 확인 할 수 있습니다.
이제 다시 브라우저를 실행해 보도록 하겠습니다.
처음과 마찬가지로 정상적이지 않습니다.
자 이제 시스템 영역에 인증서를 설치해 보도록 하겠습니다.
2. 시스템 영역에 인증서 설치 방법
현재 시스템 영역에서 인증서 설치 시 중요한 부분은 그냥 설치하면 사용자 영역에 설치했던것과 마찬가지로 안된다는 것입니다.
인증서에 인증기간이 365일 미만으로 제한되어 있는 인증서를 만든 후 설치해야 됩니다.
본 필자는 720일로 만들어서 시험을 해보고 안되는 것을 확인해 봤습니다.
그러니 꼭 365일 미만으로 만들어서 하시기 바랍니다.
> 먼저 openssl 을 통해서 기간이 제한된 인증서를 만들어 줍니다.
openssl.cnf 파일을 이용하여 개인키를 생성/ Country Name 만 KR 로 입력 후 나머지는 임의로 입력 하셔도 됩니다.
openssl req -x509 -days 360 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca -config openssl.cnf |
> 생성한 개인키를 DER 형식으로 변환해 줍니다.
openssl rsa -in server.key -inform pem -out server.key.der -outform der |
> 생성한 개인키를 pkcs8 형식으로 변환해 줍니다.
openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt |
> 여기까지 해주면 디렉터리 내에 5개의 파일이 생성된 것을 확인할 수 있습니다.
ca.der 파일을 보면 기간이 360일 인 것을 확인할 수 있습니다.
> 다음으로 ca.der 파일을 ca.pem 파일로 변환해 줍니다.
openssl x509 -inform DER -in limit360.der -out ca.pem |
> ca.pem 파일 내 해시 값 추출
openssl x509 -inform PEM -subject_hash_old -in ca.pem |
> ca.pem 파일을 추출한 해시 값으로 변경 (.0 파일)
자 이제 파일을 설치해 보도록 하겠습니다.
아래 순서대로 수행하도록 합니다.
- (Nox)
>adb shell # mount -o rw,remount /system >adb push 4af8e865.0 /system/etc/security/cacerts/ |
- (Andorid 기기)
Download 폴더로 인증서를 넣어 줍니다.
adb push 4af8e865.0 /mnt/sdcard/Download/ |
순서대로 수행하고 시스템 영역으로 파일을 이동시켜 줍니다.
> adb shell # su # mount -o rw,remount /system # mv /mnt/sdcard/Download/4af8e865.0 /system/etc/security/cacerts/ |
이제 인증서가 설치 되었는지 확인해 보도록 하겠습니다.
시스템 영역에서 sosal 인증서가 잘 설치되어 있는것을 확인할 수 있습니다.
> 이제 버프에 생성한 인증서 정보를 import 시키면 됩니다.
[proxy - Options - Import/export CA certificate] 선택 후
> [Certificate and private key in DER format] 선택 후 [Next] 을 눌러줍니다.
> ca.der 과 server.key.pkcs8.der 추가 후 등록해 줍니다.
이제 녹스(Nox) 에서 브라우저를 실행하여 naver에 접속 해줍니다.
브라우저 접속 시 인증서 에러 없이 정상적으로 통신이 이루어 지는것을 확인 할 수 있습니다.
3. Chrome 브라우저 인증서 에러
이렇게 설치 후 Chrome 브라우저로 naver.com 에 접근해 보았습니다.
다음과 같이 에러가 나는데 이상하게 크롬 브라우저에서만 이런 현상이 일어납니다.
추후에 이유를 알게되면 업데이트 하도록 하겠습니다.
댓글