[2021 DFC] 2021 디지털포렌식 챌린지 - 208 - iOS Fridump
1. Identify the device model by analyzing the Settings. (25 points)
Device의 모델명을 확인하기 위해서 주어진 setting 파일에서 strings 프로그램을 이용해 string을 모두 추출한다.
아이폰 메모리 포렌식에 관련된 아무런 정보를 찾을 수 없어 직접 메모리 덤프를 진행한다.
작성자의 환경은 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
Fridump usage와 optional arguments는 위 사진과 같다. 아이폰 메모리를 추출하기 위해서는 다음과 같은 커맨드라인을 사용한다.
$ python fridump3.py -U -r [PID] |
[ 표 4 | fridump3 사용 방법 ]
위 화면과 같이 Progress 게이지 바가 100%가 된다면 덤프가 정상적으로 작동한 것이다.
$ grep -r "iPhone7" * |
직접 만든 이미지 파일에 grep를 통해서 스트링 검색을 진행한다. 먼저 iPhone이라는 단어를 찾는다. (iPhone7 이라고 작성한 것은 제작한 이미지 파일은 iPhone7,2 를 사용하고 있기 때문이다.)
[ 표 5 | 모델을 확인 하기 위해서 grep 사용 구문 ]
위 사진과 같이 아이폰 기종, 버전이 나온후 com.apple.AppleAccount와 com.apple.AuthKit 이라는 값이 존재한다. 해당 키워드와 iPhone이라는 키워드를 통해서 문제에서 주어진 메모리 파일에서 똑같이 적용하여 검색을 한다.
해당 iPhone 키워드를 통해서 일치하는 행을 검색했다. 검색 결과의 일부는 아래와 같다.
검색 결과중 아래와 같은 일부 내용을 확인 할 수 있는데, com.apple.AppleAccount와 com.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 해당 사이트에서 확인 할 수 있다.
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을 나타내고 있다.
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]은 메모리 파일의 HIDDEN_NETWORK를 검색했을 때 나온 결과값이다.
[그림 9]는 SSID값이 정상적으로 확인되는 반면 [그림 10](주어진 문제)에서는 FF 로 SSID 가 나와야할 자리에 매핑이 되어 있는걸로 보아 더욱 자세한 분석이 필요하다.
GREP 명령어를 통해서 WIFI와 연관된 값을 찾기위해서 다음과 같이 실행한다.
$ grep -A 2 -B 2 "WiFi" * |
[ 표 7 | grep 을 이용한 WiFi SSID 확인 ]
위와 같은 방법을 통해서 와이파이 이름을 분석한 결과 여러 와이파이들을 찾을 수 있었고, 최근에 연결된 단서를 찾을 수 없어 제작한 이미지 파일 분석을 진행하였다.
제작한 이미지 파일을 통해서 현재 연결되어 있는 WIFI에 대한 정보를 얻을 수 있었다. 현재 연결되어 있는 WIFI의 경우 “80211W_ENABLED” 의 값과 그 외의 정보를 가지고 있는 것을 확인 하였고, 다음 [그림 12]에서 확인 할 수 있다.
먼저 HIDDEN_NETWORK를 통해서 와이파이를 찾음을 확인할 수 있었고, 80211W_ENABLED와 lastAutoJoined를 통해서 기존에 연결한 이력이 있어 자동으로 연결이 되었음을 확인 할 수 있다.
최근에 연결된 와이파이의 이름은 “KT_starbucks”이며 문제에서는 적어도 2개이상을 발견하라 했기에 KT_Starbucks 주위를 분석한다. 분석한 “10737418240_dump.data” 파일에서 [그림 12] 이후 부분을 분석해 보면, 다음과 같이 확인 할 수 있다.
빨간색 박스를 보면 “UserDisabled”를 확인 할 수 있는데, 사용자가 Wifi연결을 해제하고 “KT GiGA WiFi”를 선택한 것을 확인할 수 있다. 그후 다시 “UserDisabled”를 확인할 수 있으며, 다시한번 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 | 주소를 검색하기 위한 커맨드 라인 ]
String Search를 통해서 URL 주소들을 모두 뽑아 봤을 때 사용자가 직접 엑세스 하지 않고, 인증서 또는 통신을 위한 URL들을 제외시켜줘야한다.
[그림 16]과 같이 certs.apple.com, oscp.apple.com 등을 모두 제외해주고, 사용자 휴대폰에 있는 북마크를 제외해주어야 한다.
주어진 이미지와 비교를 하기 위해서 제작한 이미지 파일에서도 동일한 형태의 “Test_Favorites”의 형태를 발견할 수 있었다. (그림 18 참조.)
SearchEngine을 검색엔진으로 추정한 이유는, 직접 제작한 메모리 파일 [그림 20]을 통해 SerachEngine, 즉 검색엔진의 형태를 파악했다. 검색엔진의 형태는 [그림 19]과 같이 “SearchEngineID”와 “SearchURLTemplate”의 형태를 띄고 있다. 또한 “{searchTerms}”과 같이 인자 값을 넣어주는 URL들을 파악 할 수 있으며, 검색엔진의 URL들은 우선순위에 두지 않고 분석을 진행했다.
주어진 이미지 파일에서 확인되는 자체적으로 가지고 있는 주소로 Google, Yahoo, Bing, Baidu, Yandex, duckduckgo, sogou 등이 존재하는것으로 확인된다. 아래 [표 9] 는 각각의 URL이다.
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 ]
또한 사용자가 엑세스 하지 않고, 자동으로 url을 불러들이는 api와 ad 즉 광고들의 URL 또한 제외하고 분석을 진행했다.
정확한 북마크들의 위치와 형태를 파악하기 위해서 덤프를 진행후 분석을 진행했다.
다음 사진은 제작한 메모리에서 발견되는 북마크들의 흔적이다.
[그림 23]에서 볼수 있듯이 “postPageLoadMemoryUsage” 형태를 통해서 북마크를 저장하는 것을 확인 할 수 있었고, [그림 24] 에서도 똑같은 형태를 발견할수 있었다.
“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 |
'Forensics > DFC' 카테고리의 다른 글
[2021 DFC] 2021 디지털포렌식 챌린지 - 301 - What is the secret information (4) | 2021.10.29 |
---|---|
[2021 DFC] 2021 디지털포렌식 챌린지 - 204 - Slack Off (0) | 2021.10.29 |
[2020 DFC] 2020 디지털포렌식 챌린지 - 203 - Secrect message (1) | 2021.03.02 |
[2020 DFC] 2020 디지털포렌식 챌린지 - 104 - Event Log Analysis (0) | 2020.09.28 |
[2019 DFC] 2019 디지털포렌식 챌린지 - MOI 300 (3) | 2020.04.05 |
댓글
이 글 공유하기
다른 글
-
[2021 DFC] 2021 디지털포렌식 챌린지 - 301 - What is the secret information
[2021 DFC] 2021 디지털포렌식 챌린지 - 301 - What is the secret information
2021.10.29 -
[2021 DFC] 2021 디지털포렌식 챌린지 - 204 - Slack Off
[2021 DFC] 2021 디지털포렌식 챌린지 - 204 - Slack Off
2021.10.29 -
[2020 DFC] 2020 디지털포렌식 챌린지 - 203 - Secrect message
[2020 DFC] 2020 디지털포렌식 챌린지 - 203 - Secrect message
2021.03.02 -
[2020 DFC] 2020 디지털포렌식 챌린지 - 104 - Event Log Analysis
[2020 DFC] 2020 디지털포렌식 챌린지 - 104 - Event Log Analysis
2020.09.28