CTF/포렌식

[zer0ptsCTF] Locked KitKat - 포렌식 / 안드로이드

SecurityMan 2022. 3. 5. 15:48

Locked KitKat 문제

여기서 킷캣은 안드로이드 버전 중 하나이다.

 
용의자의 안드로이드 장치를 압수해서 디스크를 추출했다고 한다.
추출한 파일들에서 안드로이드 잠금 패턴을 찾아내면 되는 문제이다.



img 파일이 주어진다.
이 파일이 용의자의 안드로이드 장치를 이미징한 파일이다.


binwalk를 이용해서 해당 이미지 파일을 보니
파일시스템은 ext4를 사용하고 있는것을 볼 수 있다.

sudo mount android.4.4.x86.img ctf -t ext4 명령어를 이용해서 ctf 폴더에 마운트 시킨다.

안드로이드 패턴도 분명히 이 파일시스템 안에 저장되어있을 것이다.

 


구글을 열심히 검색해보니 한가지 힌트를 찾을 수 있었다.
https://resources.infosecinstitute.com/topic/android-forensics-cracking-the-pattern-lock-protection/

해당 블로그의 글을 보면 안드로이드 패턴 정보는 /system/gesture.key에 저장이 된다고 한다.

문제에서 제공한 이미지 파일에도 역시 /system 경로에 gesture.key 라는 파일이 있는것을 볼 수 있었다.

 


해당 gesture.key을 hxd를 이용해서 열어보면 hex 값을 확인할 수 있는데
이 값이 바로 안드로이드 패턴을 sha1로 암호화한 값이라고 한다.
이걸 어떻게 풀어야하나.. 하고 고민하는 와중에
github에서 아주 유용한 도구를 발견했다.
 
파이썬으로 제작된 안드로이드 패턴을 크랙해주는 도구이다.
사용법은 간단하다. python aplc.py gesture.key 를 해주면 지정된 key 파일에서
값을 추출하여 패턴을 찾아준다.
 
이 툴이 패턴을 어떻게 찾아주는지 봤더니
gesture.key 파일에서 추출한 해시값(이 문제의 경우 179e58178a7c5195110e0a26d91c71926af01349)과
패턴(3x3 행렬)의 순서를 hex값으로 표현한 것의 sha1 해시값 레인보우 테이블을 비교하여
패턴을 찾는 방식이다.
 

예를들어 이번문제처럼 321564 인 경우

\x03\x02\x01\x05\x06\x04 처럼 hex값으로 바꾼 뒤, 이 값을 sha1 해시로 만들어주면

179e58178a7c5195110e0a26d91c71926af01349가 나온다.

반응형