안드로이드 취약점 진단(메모리 덤프 in Nox)

 

 

안드로이드 apk 취약점 진단을 위해 NOX(녹스)를 설치하고 frida라는 프로그램으로 어플리케이션의 메모리 덤프를 진행 후, 중요 정보 등이 평문으로 저장되는지 보안에 취약한 어플리케이션을 설치 한 후, 확인하려합니다. 특히, 로그인 시 계정정보를 입력할 때, 로그인 과정을 메모리 덤프하며, 메모리 내에서 정보가 평문 저장되는지 확인합니다. 방법은 녹스에서 프리다를 설치하여 메모리 덤프!

(※원할한 진행을 위해 사전에 ADB 설치합시다!)

 

https://developer.android.com/studio/releases/platform-tools?hl=ko 

 

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

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

developer.android.com

 

 

NOX 설치

 

 

NOX(녹스)는 안드로이드 모바일 환경을 PC에서 실행할 수 있게 해주는 에뮬레이터 프로그램입니다. 뿐만 아니라, 멀티앱플레이어와 화면 캡쳐 및 녹화, apk 파일 설치, 키보드 등을 지원하여 다양한 기능을 제공합니다. 보통 모바일 게임을 PC에서 즐기기위해 많이 사용하는것으로 알고 있습니다만, 해당 포스팅에서는 안드로이드 어플리케이션 취약점 진단을 위해 사용합니다. 따로 진단용 단말기(안드로이드 폰)가 없을 경우나, PC로 모든 걸 해결할 수 있다는 점과 설정으로 손쉽게 루팅을 할 수 있다는 점에서 녹스는 그 활용도가 높기 때문입니다. 

 

 

https://kr.bignox.com/

 

녹스 앱플레이어 - 윈도우 컴퓨터,맥북과 호환성이 뛰어난 가장 빠르고 안정적인 무료 안드로이

지금까지 써본 앱플레이어중엔 녹스가 제일 좋은것 같아서 몇년 전부터 계속 애용중입니다. 앞으로도 유저 의견 많이 받아들이고 번창하시길 바랍니다 :)

kr.bignox.com

 

 

녹스는 32비트와 64비트 버전을 선택하여 다운로드 할 수 있으며, 메모리 덤프를 위하여 frida를 설치할 때, 안드로이드 운영체제와 비트를 통일하여 설치해야하므로 녹스가 설치된 파일 위치로 이동하여, 아래 명령어로 버전을 다시 확인합시다(x86 : 32비트, x64 : 64비트)

 

cd C:\Program Files (x86)\Nox\bin
adb shell getprop ro.product.cpu.abi

 

 

 

설치된 안드로이드 에뮬레이터(nox)의 비트 수를 확인 후, 녹스 시스템 설정에서 "ROOT켜기" 항목을 체크한 후, 녹스를 재시작합니다.

 

 

 

adb shell id

 

루트 권한 확인

 

 

Python 설치

 

 

프리다는 파이썬 기반으로 만들어진 툴이기에 파이썬 설치가 필요합니다. 

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

환경변수 설정은 귀찮으니, 설치 시에 "Add Python 3.X to PATH"를 꼭 체크해주고 Install Now를 눌러설치 진행합니다.

 

 

 

 

설치 확인을 위해 명령어 입력하여 정상적으로 결과값 출력되는지 확인합니다. 파이썬의 버전과 설치경로가 출력됩니다. 그 다음, frida 설치를 위해 pip 업그레이드를 미리 해줍시다.

 

 

python -v
where python

python -m pip install --upgrade pip

 

 

 

프리다 서버 설치

 

 

파이썬을 설치하여 환경을 구성했으니, 본격적으로 프리다를 설치합니다. 우선, 프리다는 파이썬을 기반으로 만들어진 툴이며, 파이썬 라이브러리를 주로 사용합니다. 연결된 단말기에 대한 분석을 수행하기 위해서는 분석을 진행할 장치에 frida 서버를 구축해야 정상적인 사용이 가능합니다.

 

 

프리다는 디버깅, 함수 후킹, 트래픽 스니핑, 메모리 덤프 등의 기능을 이용하기 위하여 사용합니다.

 

 

아래 적어놓은 주소로 이동하여 frida server를 설치합니다. 서버를 돌릴 운영체제 맞는 파일을 선택하여 진행합시다

(파일명 : frida-server-15.1.17-android-x86.xz)

 

 

https://github.com/frida/frida/releases

 

Releases · frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

 

 

다운받은 파일을 드래그 해주어 녹스플레이어에 옮겨주면 아래와 같은 경로로 파일이 업로드가 됩니다.

 

 

 

 

윈도우로 다시 돌아와서 녹스가 설치되어있는 경로의 bin 폴더로 이동하여, shell에 접속하고 녹스에 설치되어 있는 파일을 /data/local/tmp 아래의 경로로 옮겨줍니다.

 

명령어 순서대로 입력

adb ahell
cd storage/emulated/0/Pictures
mv frida-server-15.1.17-android-x86.xz /data/local/tmp

 

 

 

 

xz 파일은 bzip, gzip과 같이 리눅스의 대표적인 압축파일의 형식 중 하나입니다. 그러므로 파일을 압축 해제합니다.

 

unxz frida-server-15.1.17-android-x86.xz

 

 

파일이 정상적으로 압축 해제가 되었으니, 백그라운드에서 프리다 서버를 실행시켜주고, 정상적으로 동작하는지 확인합니다. 

 

./frida-server-15.1.17-android-x86 &
ps | grep frida-server-15.1.17-android-x86

 

 

 

fridump 설치

 

 

Fridump란 오픈 소스 메모리 덤핑 도구이며 주로 침투 테스터와 개발자를 대상으로 사용되는 프로그램입니다. Fridump는 Frida 프레임워크를 사용하여 지원되는 플랫폼에서 접근 가능한 메모리 주소를 덤프하고 있습니다. 윈도우, 리눅스, 맥 OS X 시스템에서 iOS, 안드로이드, 윈도우 응용 프로그램의 메모리를 덤프하는 데 폭넓게 사용됩니다.

 

아래 주소에서 fridump3를 다운받아 줍시다.

(파일명 : fridump3-master.zip)

 

https://github.com/rootbsd/fridump3

 

GitHub - rootbsd/fridump3: A universal memory dumper using Frida for Python 3

A universal memory dumper using Frida for Python 3 - GitHub - rootbsd/fridump3: A universal memory dumper using Frida for Python 3

github.com

 

 

압축파일 내에는 아래와 같이 4개의 파일이 있으며, 해당 파일들을 [파이썬이 설치되어 있는 폴더]\Scripts로 붙여넣기 합니다. 

 

작성자 기준 : C:\Users\CDM\AppData\Local\Programs\Python\Python310\Scripts

 

 

fridump3.py를 미리 수정해주어야 합니다. 메모리 덤프를 실행 할 때 "device not found"라는 문구가 출력되며, 프리다 에러가 발생하니 덤프가 안되는 상황을 미리 방지해줍시다. 79번 line을 수정해주세요.

 

session = frida.get_usb_device().attach(APP_NAME)
-> session = frida.get_usb_device(1).attach(APP_NAME)

 

 

 

frida 설치

 

 

fridump와 frida server 환경구성이 되었으니, frida를 설치합니다. 버전은 설치한 프리다 서버와 동일한 버전으로 사용하는 게 좋습니다.

 

설치 명령어(순서대로 입력)
pip install frida==15.1.17
pip install frida-tools

※삭제 명령어
pip uninstall frida==15.1.17
pip uninstall frida-tools

 

 

 

프리다 정상 설치 및 버전 확인

 

frida --version

 

 

 

어플리케이션 메모리 덤프

 

 

프리다 관련 환경구성이 끝났으니, 안드로이드 앱을 설치하고 메모리 덤프를 해봅시다. 아래 주소에서 어플리케이션을 다운받고, 녹스로 파일을 옮겨주세요.

 

https://github.com/OWASP/owasp-mstg/tree/master/Crackmes

 

GitHub - OWASP/owasp-mstg: The Mobile Security Testing Guide (MSTG) is a comprehensive manual for mobile app security testing an

The Mobile Security Testing Guide (MSTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes the technical processes for verifying the controls listed in...

github.com

 

 

Uncrackable이란? 

OWASP(Open Web Application Security project)에서 제작한 취약점 테스트용 앱이며, 본문에서는 안드로이드만 사용하지만 IOS 버전도 존재합니다.

 

 

uncrackable1 다운로드

 

 

다운로드 받은 uncrackable을 실행시켜주면, 루팅이 탐지되었다는 메시지가 출력되며, OK 버튼을 누르면 어플이 종료되니 우선 실행시켜주고 그대로 둡시다.

 

 

 

 

자 이제 녹스는 위에 있는 상태로 가만히 내버려두고, 메모리 덤프를 하기 위하여 커맨드라인(CMD)으로 돌아와서 명령어를 이용해 디바이스에 설치되어 있는 어플리케이션들의 PID를 확인합니다.

 

frida-ps  -U

 

 

PID를 확인하였으니(패키지명으로도 사용가능), 프리덤프를 이용하여 메모리 덤프를 해봅시다. fridump 명령어는 아래와 같이 사용하며, 메모리 덤프를 실행하면 아래와 같이 프로세스가 진행됩니다.

 

fridump3.py -u -r [PID] -s
fridump3.py -u -s [패키지 명]

 

 

 

메모리 덤프가 완료되었고, 메모리 덤프 파일은 명령을 실행한 경로 내에 dump 라는 폴더로 저장됩니다.

 

C:\Users\CDM\AppData\Local\Programs\Python\Python310\Scripts\dump

 

 

 

※메모리 덤프를 완료한 후, 찾고자하는 문자열 및 데이터는 AstroGrep(툴)을 이용하여 찾고, HxD(툴)를 이용하여 최종적으로 파일을 열람하여 분석을 마무리합시다. 하지만, 현재 상태로는 루팅 탐지로 인해 추가적으로 다른 정보를 파악하기는 어려우니, 이 점 참고하고 진행합시다!

 

http://astrogrep.sourceforge.net/download/

 

Downloads - AstroGrep

Translation You can customize the language used in AstroGrep by placing a language xml file in the directory %appdata%\AstroGrep\Language or if using the portable version in the local directory under \Language. Note: The file(s) you place under that direct

astrogrep.sourceforge.net

 

https://mh-nexus.de/en/downloads.php?product=HxD20 

 

Downloads | mh-nexus

Downloads I am looking for new translators, if you want to help, here is a list of unmaintained translations. Note: Starting with HxD 2.3, the portable edition is available as separate setup program, and can be run with minimal privileges (no admin rights

mh-nexus.de

 

 

댓글

Designed by JB FACTORY