본문 바로가기
seCurity

[Android] Android 7.0 이상 웹 프록시 사용을 위한 인증서 설치 방법

by every7hing 2021. 1. 25.
반응형

 

웹 테스팅을 할 때는 상관이 없지만, 모바일 진단을 하다보면 모바일 단말과 Proxy Tool들의 설정을 매번 해줘야하는 것이 여간 번거로운 일이 아닙니다.

특히, Android 7.0 이상으로 넘어오면서 인증서 설정이 좀 더 귀찮아졌다고나 할까요. 사용자 인증서와 시스템 인증서에 대한 체크 강화와 유효한 인증서 기간이 점점 짧아지고 있기 때문이죠.

 

그래서 저는 Custom Certificate File을 만들고, 그것을 가지고 단말기에 설치해서 사용하고 있습니다. 매번 할 때마다 찾아보고 다시 하는 것들이 귀찮으니, 여기에 정리해놓고 공유하고자 합니다.

그럼, 먼저 Custom Certificate File을 만들어봅시다.

 

openssl을 통해 만들꺼라, openssl 설치가 필요하신 분들은 미리 설치를 하시기 바랍니다.

 

Custom Certificate File 생성

  • Key 파일 생성
openssl genrsa -out ca.key 2048
  • Cert 파일 생성 (유효기간을 30일로 설정)
openssl req -days 30 -key ca.key -x509 -new -nodes -sha256 -out ca.pem
  • p12 파일 생성
openssl pkcs12 -out ca.p12 -inkey ca.key -export -in ca.pem

 

위 명령까지 문제없이 진행되었다면, 3가지 파일이 생성됩니다.

ca.key
ca.pem
ca.p12

ca.pem 파일은 Android 단말기에 설치될 파일입니다.

ca.p12 파일은 Web Proxy Tool에 설치될 파일입니다. 여기서는 BurpSuite이 되겠네요.

 

Burpsuite에 인증서 Import

Burpsuite에서 아래와 같이 생성된 ca.p12 파일을 import하면 됩니다.

Proxy → Options → Import / export CA certificate → Certificate and private key from PKCS#12 keystore

 

파일 선택 후, 생성 시 입력한 비밀번호를 입력하면 됩니다.

 

Android 단말기에 인증서 설치

Android 단말기에 생성한 인증서를 설치하기 위해서는 먼저 생성된 인증서 파일의 subject hash를 알아내야 합니다.

openssl x509 -inform PEM -subject_hash_old -in ca.pem
1935964a

 

저 같은 경우는 위와 같이 subject hash 값이 나온걸 확인할 수 있었습니다.

이 후에는, Android 시스템에서 사용하는 .pem 파일의 네이밍 포맷을 바꿔주면 되는데요. 다음과 같이 바꿔줍시다.

위에서 확인된 subject hash 값의 뒤에 .0을 붙여줍니다.

copy ca.pem 1935964a.0 # Windows
cp ca.pem 1935964a.0 # Linux

 

이제 모든 준비는 끝났습니다.

Android 단말기에 adb 명령을 통해 해당 파일을 넣어주기만 하면 됩니다.

저 같은 경우는 루팅이 되어 있는 Nox App에서 진행했기 때문에, adb shell 명령 진행시 이미 root 권한을 획득한 상태로 진행되었습니다. root 권한이 획득된 상태가 아니라면, su 명령을 통해 root 권한 획득 후 명령을 진행해야 함을 알려드립니다.

adb push 1935964a.0 /sdcard/
adb shell "mount -o remount,rw /system"
adb shell "cp /sdcard/1935964a.0 /system/etc/security/cacerts/"
adb shell "chmod 644 /system/etc/security/cacerts/1935964a.0"
adb shell "reboot"

 

이 후, 아래와 같이 Android 단말기에서 시스템 자격증명에 설치된 인증서를 찾아보면 본인이 설정한 이름의 인증서가 적용된 것을 볼 수 있습니다.

 

설정 → 보안 → 신뢰할 수 있는 자격증명

 

그리고, BurpSuite을 이용해서 프록시가 제대로 동작하는지 테스트해보면 다음과 같이 잘 동작하는 것을 확인할 수 있습니다.

 

반응형

댓글