HDCON 2011 예선 Stage 1 - 아이폰 위치 추적

2011/06/28 09:30

어느덧 돌아온 제8회 해킹방어대회, 2011 HDCON 예선의 첫 번째 문제입니다.

Question

1번 문제 : 후후대학 CC인 '몽'양과 '휘'군, 평소 바람기가 넘치는 바람둥이 '몽'양은
평소 남자친구 '휘'군의 노트북을 통해 스마트 폰을 동기화 한다. 
SIS 시험을 위해 열공 하던 '휘'군은 시험전날 저녁에 '몽'양과 연락이 
되지 않았다. 이번 기회에 '휘'씨를 도와 여자 친구인 '몽'양의 바람기를 잡자.
(2011년 1회 SIS 필기시험 전날 21:00~21:10의 '몽'양이 있었던 건물의 이름(대문자)입니다.)

ID: stage1 , PASSWORD: kisa_hdcon_8th

Analysis

압축 파일 하나를 던져 주고 여자친구의 바람기를 잡아달라는 의뢰입니다. 해당 압축 파일을 해제하면 안에 많은 파일들이 있습니다. 대부분 파일 이름이 해시 값으로 되어 있는데, 몇몇 파일이 본래의 파일 이름으로 있습니다. 그 중에서 Info.plist 파일의 내용을 확인하면 문제에서 주어진 파일이 아이폰이 동기화할 때 생성되는 백업파일이라는 것을 알 수 있습니다.

사용자 삽입 이미지
[그림1] Info.plist

아하! 이 문제는 아이폰의 위치 정보를 추적하는 문제군요.

Solution

아이폰의 위치 정보는 다음의 경로에 SQLite 파일로 저장됩니다.

Library/Caches/locationd/consolidated.db1

그런데 주어진 파일들의 이름이 해시값으로 되어 있기 때문에 db 파일을 찾는 게 쉽지 않습니다.

그러나 다행히 Manifest.mbdb와 Manifest.mbdx 이 두 개의 파일은 iOS 장치가 동기화할 때 생성되는 백업 파일들의 본래의 파일 이름들에 대한 정보를 가지고 있습니다. 그리고 iphonels.py2 스크립트를 이용하여서 쉽게 파일들의 본래의 이름들을 찾을 수 있죠.

사용자 삽입 이미지
[그림2] iphonels.py로 consolidated.db를 쉽게 찾을 수 있다.

아이폰의 위치 정보가 저장된 db 파일을 찾았으니 이제는 Database 내용을 분석할 차례입니다.

아이폰이나 안드로이드는 내부 시스템의 db를 SQLite로 관리합니다. 실제로 consolidated.db를 file 명령어로 확인하면 SQLite 라고 나오지요.

SQLite db 파일을 보는 소프트웨어는 많이 있습니다. 그 중에서 전 SQLite Database Browser를 사용하겠습니다. 이 툴은 Windows, Linux, Mac을 모두 지원되는 유용한 툴이죠.

consolidated.db를 열면 참 많은 테이블들이 존재합니다. 이 중에서 위치 정보는 CellLocation 테이블에 저장되어 있습니다. 그리고 테이블을 보면 Timestamp와 GPS 좌표 정보를 볼 수 있습니다.

사용자 삽입 이미지
[그림3] CellLocation 테이블 안의 Timestamp와 GPS 좌표들

아이폰의 위치 정보들을 볼 수 있게 되었으니 문제에서 주어진 정보들을 이용하여 몽양의 위치를 확인할 차례입니다.

문제에서는 "2011년 1회 SIS 필기시험 전날 21:00~21:10" 이라고 적혀 있습니다. 이 정보는 정확한 시각 정보이고, Timestamp와 비교하여 위치를 알 수 있습니다. 그런데 Unix의 Timestamp가 1970년 1월 1일 0시부터 지나간 초수인데 반해, 아이폰의 Timestamp는 2001년 1월 1일 0시부터입니다.

그러므로 다음과 같은 쿼리문을 작성해야 합니다.

select datetime(Timestamp+978307200, 'unixepoch'), Latitude, Longitude from CellLocation3


978307200은 2001년 1월 1일 0시 0분의 Unix Timestamp입니다.

SQLite Database Browser에서 방금 작성한 쿼리문을 실행하면 Timestamp가 아닌 실제 시각 정보별로 GPS 좌표들을 볼 수 있습니다. 물론, "2011년 1회 SIS 필기시험 전날 21:00~21:10" 일 때의 위치도 보이죠.

사용자 삽입 이미지
[그림4] 실제 시각 정보 별 GPS 좌표들

2011년 1회 SIS 필기시험 전날은 5월 27일입니다. 해당 시각의 GPS 좌표는 단 하나만 존재하는군요. 이 좌표를 구글신께 물어보면 "2011년 1회 SIS 필기시험 전날 21:00~21:10" 일 때의 몽양의 위치를 확인할 수 있습니다.

사용자 삽입 이미지
[그림5] 몽양! 그 시각에 거긴 왜 갔었어? 누구랑?

그래서 패스워드는? "N SEOUL TOWER"입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 0x06 Other RCE , , , ,

Trackback Address:http://hisjournal.net/blog/trackback/360