Forensics/DFC

[2021 DFC] 2021 디지털포렌식 챌린지 - 208 - iOS Fridump

pental 2021. 10. 29. 02:22

1. Identify the device model by analyzing the Settings. (25 points)

Device의 모델명을 확인하기 위해서 주어진 setting 파일에서 strings 프로그램을 이용해 string을 모두 추출한다.

[ 그림 1 string을 추출하기 위해서 작성한 소스코드 ]
[ 그림 2 strings를 통해 추출된 텍스트파일 중 일부 ]

아이폰 메모리 포렌식에 관련된 아무런 정보를 찾을 수 없어 직접 메모리 덤프를 진행한다.

작성자의 환경은 iPhone6 사용하고 있으며 문제 상황과 최대한 비슷하도록 덤프를 진행한다.

먼저 pip 명령어를 통해서 frida를 설치한다.

C:\Users\pental>pip install frida
C:\Users\pental>pip install frida-toosl

[ 1 | frida 설치를 위한 pip 설치 구문 ]

frida 설치를 마친후 아이폰에 프로세스를 확인하기 위해서 다음과 같이 입력한다.

C:\Users\pental>frida-ps -U

[ 2 | 작동 여부 확인을 위한 구문 ]

USB를 통해서 아이폰에 정상적으로 연결이 된다면 다음과 같이 결과를 볼 수 있다.

C:\Users\pental>frida-ps -U
Waiting for USB device to appear...
PID Name
---- -------------------------------------------------
2773 Mail
2793 메모
2807 설정
2777 AppleCredentialManagerDaemon
2769 AssetCacheLocatorService
2761 CMFSyncAgent
2735 CloudKeychainProxy
147 CommCenter
----- 이하생략 -----​

[ 3 | 프로세스 리스트 출력 ]

다음 아이폰 메모리를 정상적으로 추출하기 위해서 fridump3 [1]을 사용한다.


[1] 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

[ 그림 3 fridump 사용법 ]

Fridump usageoptional arguments는 위 사진과 같다. 아이폰 메모리를 추출하기 위해서는 다음과 같은 커맨드라인을 사용한다.

$ python fridump3.py -U -r [PID]

[ 4 | fridump3 사용 방법 ]

[ 그림 4 fridump3를 이용한 프로세스 덤프 화면 ]

위 화면과 같이 Progress 게이지 바가 100%가 된다면 덤프가 정상적으로 작동한 것이다.

$ grep -r "iPhone7" *

직접 만든 이미지 파일에 grep를 통해서 스트링 검색을 진행한다. 먼저 iPhone이라는 단어를 찾는다. (iPhone7 이라고 작성한 것은 제작한 이미지 파일은 iPhone7,2 를 사용하고 있기 때문이다.)

[ 5 | 모델을 확인 하기 위해서 grep 사용 구문 ]

[ 그림 5 grep –r “iPhone7” * 구문 실행 결과 ]

위 사진과 같이 아이폰 기종, 버전이 나온후 com.apple.AppleAccountcom.apple.AuthKit 이라는 값이 존재한다. 해당 키워드와 iPhone이라는 키워드를 통해서 문제에서 주어진 메모리 파일에서 똑같이 적용하여 검색을 한다.

해당 iPhone 키워드를 통해서 일치하는 행을 검색했다. 검색 결과의 일부는 아래와 같다.

[ 그림 6 검색 결과 ]

검색 결과중 아래와 같은 일부 내용을 확인 할 수 있는데, com.apple.AppleAccountcom.apple.AuthKit의 값으로 나오는걸로 보아 해당 iPhone7,2 Device Model로 추정할 수 있다.

<iPhone7,2> <iPhone OS;12.4.8;16G201> <com.apple.AppleAccount/1.0 (com.apple.Preferences/1.0)>
<iPhone7,2> <iPhone OS;12.4.8;16G201> <com.apple.AuthKit/1 (com.apple.Preferences/1.0)>

[ 6 | grep 결과 중 일부 내용 ]

iPhone7,2의 모델은 https://www.theiphonewiki.com/wiki/Models 해당 사이트에서 확인 할 수 있다.

[  그림  7 theiphonewiki  중  iPhone7,2 Device ]

Question 1
Answer iPhone 6

2.   Identify the iOS version by analyzing the Settings. (25 points)

2번 문제도 마찬가지로 [6] 값을 바탕으로 분석을 진행했다.

해당 [6]에서 시각적으로 OS를 확인 할 수 있다. <iPhone OS;12.4.8;16G201>

16G201번호는 15th July 2020에 릴리즈된 OS이며 iOS 12.4.8을 나타내고 있다.

[그림 8 https://ipsw.me/iPhone7,2 중 16G201 확인 ]

Question 2
Answer iOS 12.4.8

3.   Find WiFi names recently connected by analyzing the Settings. (at least 2 WiFi names) (50 points)

문제에서 주어진 환경과 똑같은 환경을 구축하고 Wifi 이름을 확인하기 위해서 직접 이미지 덤프를 떠보았다.

[ 그림 9 환경 구축 후 이미지 뜬 파일 일부 ]
[ 그림 10 주어진 메모리 덤프 파일 ]

[그림 9, 10]은 메모리 파일의 HIDDEN_NETWORK를 검색했을 때 나온 결과값이다.

[그림 9]SSID값이 정상적으로 확인되는 반면 [그림 10](주어진 문제)에서는 FF SSID 가 나와야할 자리에 매핑이 되어 있는걸로 보아 더욱 자세한 분석이 필요하다.

GREP 명령어를 통해서 WIFI와 연관된 값을 찾기위해서 다음과 같이 실행한다.

$ grep -A 2 -B 2 "WiFi" *

[ 7 | grep 을 이용한 WiFi SSID 확인 ]

[ 그림 11 grep 실행 결과 ]

위와 같은 방법을 통해서 와이파이 이름을 분석한 결과 여러 와이파이들을 찾을 수 있었고, 최근에 연결된 단서를 찾을 수 없어 제작한 이미지 파일 분석을 진행하였다.

제작한 이미지 파일을 통해서 현재 연결되어 있는 WIFI에 대한 정보를 얻을 수 있었다. 현재 연결되어 있는 WIFI의 경우 80211W_ENABLED의 값과 그 외의 정보를 가지고 있는 것을 확인 하였고, 다음 [그림 12]에서 확인 할 수 있다.

[ 그림 12 80211W_ENABLED 검색 결과 ]

먼저 HIDDEN_NETWORK를 통해서 와이파이를 찾음을 확인할 수 있었고, 80211W_ENABLEDlastAutoJoined를 통해서 기존에 연결한 이력이 있어 자동으로 연결이 되었음을 확인 할 수 있다.

최근에 연결된 와이파이의 이름은 KT_starbucks이며 문제에서는 적어도 2개이상을 발견하라 했기에 KT_Starbucks 주위를 분석한다. 분석한 10737418240_dump.data파일에서 [그림 12] 이후 부분을 분석해 보면, 다음과 같이 확인 할 수 있다.

[ 그림 13 발견된 또다른 Wifi의 흔적 ]

빨간색 박스를 보면 UserDisabled를 확인 할 수 있는데, 사용자가 Wifi연결을 해제하고 KT GiGA WiFi”를 선택한 것을 확인할 수 있다. 그후 다시 “UserDisabled”를 확인할 수 있으며, 다시한번 WiFi 연결을 해제한 것을 확인할 수 있다.

[ 그림 14 KT GiGA WiFi 연결 흔적 ]

그후 빨간 박스를 통해서 네트워크 연결이 이루어졌음을 확인 할 수 있으며, 파란 박스에 KT GiGA WiFi와이파이 이름을 확인 할 수 있다. 그 후 또 다른 와이파이의 연결의 흔적을 확인할 수는 없었다.

다음은 Question 3의 정답이다.

Question 3 Answer
1 KT_starbucks
2 KT GiGA WiFi

4.   The Safari memory dump contains the web site addresses accessed by the user. Find 10 or more, but exclude duplicates. (100 points)

grep 기능을 통해 url로 추정되는 결과 값들을 모두 뽑아 분석 후 정리한 결과는 다음과 같다.

grep –A 3 –B 3 “http” *

[ 8 | 주소를 검색하기 위한 커맨드 라인 ]

[ 그림 15 http string search 결과 중 일부 ]

String Search를 통해서 URL 주소들을 모두 뽑아 봤을 때 사용자가 직접 엑세스 하지 않고, 인증서 또는 통신을 위한 URL들을 제외시켜줘야한다.

[ 그림 16 사용자가 엑세스 하지 않은 URL 중 일부 ]

[그림 16]과 같이 certs.apple.com, oscp.apple.com 등을 모두 제외해주고, 사용자 휴대폰에 있는 북마크를 제외해주어야 한다.

[ 그림 17 주어진 이미지 파일에서 발견되는 기본 Test 북마크와 검색엔진 흔적 ]

주어진 이미지와 비교를 하기 위해서 제작한 이미지 파일에서도 동일한 형태의 Test_Favorites의 형태를 발견할 수 있었다. (그림 18 참조.)

[ 그림 18 제작한 이미지 파일에서 발견되는 기본 Test 북마크 ]
[ 그림 19 주어진 이미지 파일에서 발견되는 검색엔진 ]

SearchEngine을 검색엔진으로 추정한 이유는, 직접 제작한 메모리 파일 [그림 20]을 통해 SerachEngine, 즉 검색엔진의 형태를 파악했다. 검색엔진의 형태는 [그림 19]과 같이 SearchEngineIDSearchURLTemplate의 형태를 띄고 있다. 또한 {searchTerms}”과 같이 인자 값을 넣어주는 URL들을 파악 할 수 있으며, 검색엔진의 URL들은 우선순위에 두지 않고 분석을 진행했다.

[ 그림 20 제작한 이미지 파일에서 발견되는 검색엔진의 형태 ]
[  그림  21   아이폰 내 자체적으로 가지고 있는 주소  ]

주어진 이미지 파일에서 확인되는 자체적으로 가지고 있는 주소로 Google, Yahoo, Bing, Baidu, Yandex, duckduckgo, sogou 등이 존재하는것으로 확인된다. 아래 [ 9] 는 각각의 URL이다.

Google google.com
Yahoo search.yahoo.co.jp
Bing bing.com
Baidu m.baidu.com
baidu.com
Yandex yandex.ru
yandex.com
duckduckgo duckduckgo.com
sogou m.sogou.com

[ 9 | Default URL ]

[ 그림 22 광고 URL ]

또한 사용자가 엑세스 하지 않고, 자동으로 url을 불러들이는 apiad 즉 광고들의 URL 또한 제외하고 분석을 진행했다.

정확한 북마크들의 위치와 형태를 파악하기 위해서 덤프를 진행후 분석을 진행했다.

다음 사진은 제작한 메모리에서 발견되는 북마크들의 흔적이다.

[ 그림 23 자체 제작한 이미지의 북마크의 형태 ]

[그림 23]에서 볼수 있듯이 postPageLoadMemoryUsage형태를 통해서 북마크를 저장하는 것을 확인 할 수 있었고, [그림 24] 에서도 똑같은 형태를 발견할수 있었다.

[ 그림 24 주어진 이미지에서 발견되는 “postPageLoadMemoryUsage”]

postPageLoadMemoryUsage를 통해서 주어진 이미지에서 발견된 북마크들을 정리하면 다음 표와 같다.

1 cpuu.postype.com
2 221.145.28.98
3 www.whitehouse.gov
4 www.vertica.com
5 m.daum.net/?nil_top=mobile
6 github.com/pwn20wndstuff

[ 10 | 주어진 이미지에서 발견된 북마크 ]

위 주소들(북마크, test북마크, 검색엔진 등)을 우선순위에 두지 않고 사용자가 직접 엑세스한 URL들을 우선순위로 분석을 진행한 종합적인 결과는 아래 정답 표와 같다.

Question 4 Answer
Index Domain Sub Domain
1 www.youtube.com
1.1   www.youtube.com/embed/
zNxA2lFdhfo?feature=oembed
1.2   www.youtube.com/embed/
lzgIHTT95GI?feature=oembed
1.3   www.youtube.com/embed/
uoqe4XkHrUk?feature=oembed
1.4   www.youtube.com/embed/
nPenWkiMt5I?feature=oembedon
1.5   www.youtube.com/embed/
zNxA2lFdhfo?feature=oembedon
1.6   www.youtube.com/embed/
TXu78MDjXoo
2 m.youtube.com
2.1   m.youtube.com/results?search_query=
%EC%95%84%EC%B9%A8+%ED%81%B4%EB%9E%98%EC%8B%9D/q
2.2   m.youtube.com/results?search_query=
%EC%8B%A0%EC%83%9D%EC%95%84+%EB
%B0%B1%EC%83%89%EC%86%8C%EC%9D%8C
2.3   m.youtube.com/results?search_query=
%EC%8B%A0%EC%83%9D%EC%95%84+%EC
%9E%90%EC%9E%A5%EA%B0%804
2.4   m.youtube.com/results?search_query=
%23%EC%98%A4%EB%A5%B4%EA%B3%A8
%EC%97%B0%EC%A3%BC%EA%B3%A1%EC
%9E%90%EC%9E%A5%EA%B0%80
2.5   m.youtube.com/channel/UCxg5eEU-VK40hm5X4zkilKg
2.6   m.youtube.com/watch?v=69uu9As3Dt4
2.7   m.youtube.com/watch?v=2gzgtOqVdpg
3 accounts.google.com/signin/v2/identifier?
uilel=3&continue=https%3A%2F%2Fm.youtube.com
%2Fsignin%3Fnext%3D%252Fwatch%253Fv%253D69
uu9As3Dt4%26hl%3Dko%26noapp%3D1%26app%3D
m%26action_handle_signin
4 m.search.naver.com
4.1   m.search.naver.com/search.naver?where=m_video
&sm=mtb_jum&query=%EA%B9%80%EA%B1%B4%EB%
AA%A8+%ED%94%BC%EC%95%84%EB%85%B8G
4.2   m.search.naver.com/search.naver?sm=mtb_hty.top
&where=m&oquery=%ED%8F%AC%EC%BB%A4%EC%8A
%A4+%EC%9A%B0%EC%8B%B8%EB%AF%B8&tqi=hsTwd
sprv2Nsscr0%2BRdsssssspd-196477&query=
%EA%B9%80%EA%B1%B4%EB%AA%A8+%ED%94%BC%
EC%95%84%EB%85%B8F
4.3   m.search.naver.com/search.naver?sm=mtp_sug.top
&where=m&query=%ED%8F%AC%EC%BB%A4%EC%8A%A4
+%EC%9A%B0%EC%8B%B8%EB%AF%B8&acq=%ED%8F%AC
%EC%BB%A4%EC%8A%A4&acr=2&qdt=0A4
4.4   https://m.search.naver.com/search.naver?sm=mtp
_sly.hst&where=m&query=%ED%8F%AC%EC%BB%Az
4%EC%8A%A4+%EC%9A%B0%EC%8B%B8%EB%AF%B8&acr=1E
5 www.olympics.com/
5.1   www.olympics.com/tokyo-20
5.2   olympics.com/tokyo-2020/ko/paralympics/
6 www.nst.re.kr
7 nsr.recruiter.co.kr
7.1   nsr.recruiter.co.kr/appsite/company/index
8 www.journals.elsevier.com
8.1   www.journals.elsevier.com/journal-of-physiotherapy
8.2   www.journals.elsevier.com/digital-investigationed
8.3   www.journals.elsevier.com/digital-investigation
8.4   www.journals.elsevier.com/data-in-brief/
9 googleprojectzero.blogspot.com
10 cs155.stanford.edu/syllabus.html
11 daum.net/
12 tweak-box.com/chimera
13 github.com/
13.1   github.com/pwn20wndstuff
13.2   github.com/pwn20wndstuff/Undecimus
13.3   github.com/pwn20wndstuff/
Undecimus/releases/tag/v5.2.0
14 m.nate.com/
14.1   m.news.nate.com/view/
20210625n35289?issue_sq=7377
14.2   m.news.nate.com/view/20210625n35660
14.3   m.news.nate.com/view/20210509n02025
14.4   m.news.nate.com/view/20210509n08734
15 tc.gts3.org/cs6265/2020/cal.html
16 ttp://www.xn--o15b80v.com/ctionary
17 unc0ver.dev
18 www.google.co.kr/
18.1   www.google.co.kr/?client=safari&channel=iphone_bm
18.2   www.google.co.kr/search?q=%EB%82%98%EB%AC%B4%EC%9C
%84%ED%82%A4&ie=UTF-8&oe=UTF-8&hl=ko-kr&client=safari
19 namu.wiki
19.1   namu.wiki/w/%EB%B6%88%EA%B0%80%EC%82%AC%
EB%A6%AC(%EC%A0%84%EC%84%A4%EC%9D%98%20%EB
%8F%99%EB%AC%BC)?from=%EB%B6%88%EA%B0%80%EC
%82%B4%EC%9D%B4
19.2   namu.wiki/w/%EB%82%98%EB%AC%B4%EC%9C%84
%ED%82%A4:%EB%8C%80%EB%AC%B8