티스토리 뷰
사용자가 Keypad를 통해서 어떤 민감한 데이터(ID나 Password와 같은)를 Application에 입력하고 이 Data가 이후에도 Memory상에 존재하는 경우 취약점이 발생할 수 있다. 입력후 환경에서 Memory Dump를 통해 이를 확인할 수 있다.
그래서 이번 포스팅에서는 특정 시점에 Memory Dump를 하는법에 대해서 소개하고, 그 Memory Dump를 활용하는 정말 기초적인 수준의 내용을 소개한다.
Python2가 설치된 환경에서는 Fridump, Python3가 설치된 환경에서는 Fridump3를 사용하면 된다.
Fridump : https://github.com/Nightbringer21/fridump
Fridump3 : https://github.com/rootbsd/fridump3
[ 설치순서 ]
1. 기본적으로 Frida가 설치되어 있어야한다. Frida를 설치하고 Iphone 기기를 USB로 연결한다.
2. git clone 을 통해서 위 두 링크중 한개를 다운로드 받는다.
3. frida-ps -Uai 를 통해 Memory Dump를 하고 싶은 PID를 확인한다.
Memory에 올라가 있어야 하니까 당연히 실행중이여야 한다.
4. python fridump3.py -u -r [PID]
(-u는 USB, -r은 ReadOnly 옵션이다.)
사용은 DVIA에서 제공되는 Sensitive information in memory 문제를 예제를 사용했습니다. 어플 설치 및 IPA 추출은 이 포스팅에서 설명하지 않습니다.
[ 사용법 ]
우선 실행중인 Process를 조회해 PID를 확인한다. (DVIA : 27980)
이후 앱에서 내가 Memory Dump를 하고 싶은 시점으로 이동한다.
이후 명령어를 입력하면 성공적으로 Memory Dump가 되는 것을 확인할 수 있다. 여기서 -s 옵션은 Dump 결과중에서 문자열을 모두 모아 strings.txt 파일로 생성해주도록 하는 명령어이다.
이렇게 dump.data 파일들이 무수히 많이 나오고 이 안에 포함된 모든 문자열을 strings.txt에 포함시켜 만들어준다. 여기서 내가 입력한 특정 문자열이 존재하는지 찾는 것은 쉽다.
1) Linux의 grep명령어를 이용해 일괄처리.
2) strings.txt 파일에서 Ctrl + F.
그러나 어떤 문자열을 찾아야하는지 모르는 경우에는 접근하기가 쉽지 않은 것 같다.
이전에 포스팅한 IOS Frida Cheat Sheet에서 Memory.scan을 이용하는 방법이 그나마 괜찮은 것 같다. 왜냐하면 와일드 카드를 이용할 수 있기 때문이다.
참고로 fridump 내부에서는 이와같은 Frida Script를 사용한다. fridump3.py의 길이는 200줄이 채 되지 않으니 직접 분석해보는 것도 도움이 될 것이라 생각한다.
(Process.enumerateRangeSync, Memory.readByteArray(ptr(address), size) 이 두개 기억하자 !!)
'IOS > FRIDA' 카테고리의 다른 글
[Frida-trace] Frida-trace 사용법. (1) | 2020.07.10 |
---|---|
[IOS] FRIDA를 이용한 JailBreaken 탐지 우회 실습. (DVIA) (0) | 2020.07.07 |