티스토리 뷰

반응형
사용자가 Keypad를 통해서 어떤 민감한 데이터(ID나 Password와 같은)를 Application에 입력하고 이 Data가 이후에도 Memory상에 존재하는 경우 취약점이 발생할 수 있다. 입력후 환경에서 Memory Dump를 통해 이를 확인할 수 있다.
그래서 이번 포스팅에서는 특정 시점에 Memory Dump를 하는법에 대해서 소개하고, 그 Memory Dump를 활용하는 정말 기초적인 수준의 내용을 소개한다.

 

Python2가 설치된 환경에서는 Fridump, Python3가 설치된 환경에서는 Fridump3를 사용하면 된다.

 

Fridump : https://github.com/Nightbringer21/fridump

 

Nightbringer21/fridump

A universal memory dumper using Frida. Contribute to Nightbringer21/fridump development by creating an account on GitHub.

github.com

Fridump3 : https://github.com/rootbsd/fridump3

 

rootbsd/fridump3

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

github.com

 

[ 설치순서 ]

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) 이 두개 기억하자 !!)

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함