정보공간_1

[4기 수원 전낙현] 안드로이드 기반 디바이스의 디지털 포렌식 #2 본문

IT 놀이터/Elite Member Tech & Talk

[4기 수원 전낙현] 안드로이드 기반 디바이스의 디지털 포렌식 #2

알 수 없는 사용자 2013. 12. 2. 17:24

이번 포스팅에서는 안드로이드의 잠금기능중 하나인 패턴을 이용한 잠금을 Crack하는것에 대하여 알아보겠습니다.

저번 포스팅에서 말씀드렸지만 디지털 포렌식은 양면성이 존재하기 때문에-실제로 악용할 수 있는 부분이 있기때문에 테스트용 안드로이드 기기를 직접 이용하지 않고 이미 공개된 내용과 B10S & WiseGuys 분들이 개최한 JFF(Just For Fun) Season2에 출제된 문제의 파일을 가지고 포스팅 하겠습니다.

※패턴락이란?

Android에서 제공하는 Lock 기능중의 하나로 

아래 사진과 같이 9개의 점중의 3개 이상의 점을 연결하여 잠금을 푸는 방법입니다.

해당 패턴은 Android 시스템 상의 /data/gesture.key파일에 SHA-1으로 해쉬되어 저장됩니다.


출제된 문제는 AVD(Android Virtual Device)파일로 실제로 에뮬레이팅을 해야하지만 그런한 과정은 생략하고 AVD파일 안에 추출된 gesture.key 파일만을 살펴보겠습니다.


추출된 gesture.key파일에 보면 SHA-1으로 저장된 값이 보입니다.

하지만 SHA-1은 단방향 Hash 알고리즘 이기때문에 복호화가 불가능해서 값만 가지고는 패턴을 알 수 없습니다. 그렇지만 생각해보면 경우의 수가 그리 크지 않아서 레인보우테이블을 만들어서 충분히 복호화 할 수 있습니다. 

https://barney.0x539.se/android/ 과같이 레인보우 테이블을 이용해서 해쉬를 입력하면 패턴을 알려주는 싸이트도 있습니다. 추출된 해쉬값을 싸이트에 넣으면 아래와 같이 패턴이 출력됩니다.


이 싸이트에서는 레인보우테이블을 제공하고 있는데 해당 레인보우 테이블을 받아서 받아서 테스트를 해보았습니다.


위의 사진은 레인보우 테이블에 저장되어있는 내용인데요.

패턴 0 -> 1 -> 2를 SHA-1으로 해쉬한 값이

0c7a623fd2bbc05b06423be359e4021d36e721ad와 같다는 겁니다.

패턴은 왼쪽위부터 시작해서 0~8까지 각각의 점에 매칭됩니다.

실제로 패턴 0 -> 1 -> 2를 SHA-1해쉬하면 0c7a623fd2bbc05b06423be359e4021d36e721ad값이 나오는지 살펴보았습니다.



이것은 안드로이드 자체에서 기본적으로 제공하는 패턴방법입니다. 최근에 출시되는 스마트폰들은 좀더 기능이 추가된(암호화방식이 향상된) 방법을 사용하고 있다고 하네요. 이러한 시도들이 어떻게보면 해킹으로 볼 수 있지만 디지털 포렌식에서는 상당히 중요한 연구자료로도 사용될 수 있습니다.


참고문헌

1. Android Forensics: Lock Protection / Posquit0 / http://forensicinsight.org/wp-content/uploads/2012/01/INSIGHT-Android-Forensics-Lock-Protection.pdf

2. [JFF Season 2] android_lock_pattern (1200) Write-up / RExVuz /  http://rexvuz.tistory.com/104