[Tutorial] 모바일 취약점 진단 시작하기
라온화이트햇 핵심연구팀 이삭
1. 개요
모바일 취약점 분석은 웹 취약점 분석과 유사한 부분이 많지만 웹 취약점 분석과 다르게 취약점 분석을 위한 환경 구축이 필요합니다. 본 포스팅에서는 모바일 취약점 분석을 위한 환경 구축 방법에 대해 최대한 간단하고 쉽게 설명하고자 합니다.
2. 준비물
모바일 취약점 분석에 필요한 것은 Frida 와 Burp Suite, Fiddler 등과 같은 프록시 툴 그리고 루팅(탈옥)된 단말기입니다. 단말기가 없다면 중고 스마트폰을 구입하시거나 집에 남는 스마트폰 등을 활용하여 루팅(탈옥)을 진행합니다. 루팅(탈옥) 방법의 경우 스마트폰 기종과 OS 버전에 따라 조금씩 다르기 때문에 본 포스팅에서 설명드리기 어렵고 유튜브와 구글을 참고하시기 바랍니다.
3. 프록시 툴 세팅
Burp Suite와 Fiddler 중 마음에 드는 프록시툴을 선택한 뒤 아래 순서로 세팅을 진행합니다. (*설명은 Burp Suite를 기준으로 진행됩니다.)
- 프록시 툴 IP및 포트 설정
- 모바일 단말기 Wi-Fi 및 프록시 설정
- 프록시 툴 인증서 등록
3-1. 프록시 툴 IP및 포트 설정
이 부분은 그냥 PC에서 프록시 툴 사용할때와 동일합니다. 차이점은 IP를 127.0.0.1이 아니라 자신의 IP(ex. 192.168.137.3)으로 세팅해야 한다는 점입니다.
3-2. 모바일 단말기 Wi-Fi 및 프록시 설정
PC와 다르게 프록시와 진단 대상이 같은 단말에 있는게 아니기 때문에 위의 그림과 같이 네트워크를 구성해야합니다. 그리고 모바일 단말에서 Wi-Fi 설정시 위 그림과 같이 프록시 설정을 해주면 모바일 단말에서 오고가는 모든 통신은 BurpSuite를 거치게 됩니다.
3-3. [Android] 프록시 툴 인증서 등록
PC의 경우 단순히 인증서를 받고 인증서 등록시 ‘신뢰할 수 있는 인증서’를 선택하고 확인을 누르면 끝이지만, Android의 경우 인증서를 등록하기 위한 방법도 복잡하고 환경에 따라 그 방법이 조금씩 다릅니다. 여기서는 가장 일반적인 방법을 소개합니다.
- 프록시 툴에서 인증서를 다운받는다. (DER 파일)
- openssl 을 통해 DER 을 PEM으로 변경한다. openssl x509 -inform DER -in cacert.der -out cacert.pem
- openssl 을 통해 인증서 해시값을 추출한다. openssl x509 -inform PEM -subject_hash_old -in cacert.pem
- PEM 파일명을 ‘해시값.0’ 으로 변경한다.
- adb를 이용해 인증서를 /system/etc/security/cacerts/ 로 옮긴다.
- 위 과정에서 Read-only file system 과 같은 에러가 발생할 경우
mount -o re, remount /
mv /data/local/tmp/9a5ba575.0 /system/etc/security/cacerts/
mount -o ro, remount
- 단말기에서 인증서를 확인하고 신뢰할 수 있는 인증서로 등록한다. (안드로이드10 기준 : 설정 → 생체 인식 및 보안 → 기타 보안 설정 → 인증서 확인)
3-4. [iPhone] 프록시 툴 인증서 등록
아이폰의 경우 안드로이드와 다르게 복잡한 과정이 필요 없습니다. Wi-Fi 및 프록시 세팅을 완료 한 뒤 아래와 같이 인증서 다운로드 페이지에 접근하여 신뢰할 수 있는 인증서로 등록하면 됩니다.
- Wi-Fi 및 프록시 설정 후 http://burp 로 이동하여 인증서 다운로드
- 설정 → 프로파일이 다운로드 됨
- 인증서 설치
- 설정 → 일반 → 정보 → 인증서 신뢰 설정 → 인증서 활성화
4. Frida 세팅
4-1. PC Frida 세팅
- Python 및 Frida 설치 Python을 자신의 환경에 맞게 설치한 뒤 명령창에 아래 명령어를 입력하여 Frida를 설치합니다. pip install frida-tools
-
Frida 버전 확인 Frida 서버를 설치하기 위해서는 자신이 설치한 Frida 버전과 타겟(단말기)의 환경을 먼저 확인해야 합니다. Frida 버전 확인은 설치 완료 메세지에 나온 버전을 확인하거나 frida –version 명령어를 통해 확인합니다.
4-2. [Android] Frida 세팅
-
타겟 환경 확인 명령창에 adb shell getprop ro.product.cpu.abi 입력하여 타겟(단말기)의 아키텍쳐를 확인합니다.
-
Frida 서버 설치 Frida Github에서 자신이 설치한 Frida 버전, 타겟 환경에 맞는 서버를 다운로드하고 압축을 해제한 뒤 해당 파일을 adb를 통해 서버를 단말기로 옮긴후 알맞은 권한을 부여하고 실행합니다.
-
Frida 정상 동작 확인 Frida 서버 실행 후 PC 명령창에 frida-ps -U 를 입력하여 아래와 같은 결과가 나온다면 구축 성공
4-3. [iPhone] Frida 세팅
iPhone Frida 설정은 3uTools 라는 툴이 있으면 편합니다.
- 타겟 환경 확인 3uTools를 실행하고 iPhone을 연결시키면 다음과 같은 화면을 확인할 수 있습니다. 해당 화면 우측 하단에 ‘View iDevice Details’를 누르면 아키텍처를 확인할 수 있습니다.
- Frida 서버 설치 안드로이드처럼 깃허브에서 환경에 맞는 Frida 서버를 다운 받고 옮겨도 되지만 Cydia를 통해 설치할 수 도 있습니다.
- Github에서 받은 서버를 직접 옮기고 싶은 경우
mobXterm 등을 이용하여 위의 주소와 포트로 접근한 뒤 파일을 옮기시면 됩니다.
- Frida 정상 작동 확인 Frida 서버 실행 후 PC 명령창에 frida-ps -U 를 입력하여 아래와 같은 결과가 나온다면 구축 성공
5. 마무리
기본적인 모바일 취약점 분석 환경 구축 방법은 끝났습니다. 이 후엔 Frida와 Burp Suite(혹은 Fiddler)등을 활용하여 모바일 취약점 분석을 수행하면됩니다. 프록시 툴은 웹 취약점 분석때 사용한 방법과 같으나 Frida의 경우 다소 생소하실 수 있습니다. Frida 활용법에 대한 내용은 현수님이 작성한 Simple Android Mobile App Hook 을 참고하시길 바랍니다.