Home [Hackthebox] Investigator
Post
Cancel

[Hackthebox] Investigator

키워드: Mobile, Forensic

description

Crack password


문제 파일을 압축해제하면 backup.ab 파일과 system 폴더가 주어진다. 확장자 ab는 android backup file을 뜻한다. 이것에 대해서 조사를 해봤을 때 adb restore 명령어로 복구가 가능하다고 해서 폰을 연결하고 해봤더니 비밀번호가 걸려있는지 정상적으로 풀어지지 않았다.
restore

문제에서도 말했듯이 패스워드를 찾아 풀어야하는 것 같다. system 폴더에 들어가보면 .key 파일들이 보인다. key

여기이곳을 참고해서 분석해본 결과 아래와 같이 정리할 수 있다.
먼저 device_policies.xml 파일에서 어떤 유형의 패스워드를 사용하는지 찾을 수 있다. 아래와 같이 5글자의 소문자로 구성되어있는 것을 알 수 있다.

1
2
3
4
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<policies setup-complete="true">
<active-password quality="262144" length="5" uppercase="0" lowercase="5" letters="5" numeric="0" symbols="0" nonletter="0" />
</policies>


이렇게 되면 gesture.key 파일은 필요가 없다. gesture 파일 같은 경우는 패턴을 설정하면 생기는 key 파일로 현재는 패스워드를 사용하고 있기 떄문에 password.key 파일을 분석하면 된다.

password.key 파일은 총 36바이트로 구성되어있다. 첫 20바이트는 sha1으로 암호화되었고 마지막 16바이트는 md5로 암호화 되었다. 둘 중 원하는 것으로 이용하면 된다.

  • E135432C47718760B2FD7AF5CFF7A7608A926ED6B5515B7D0DB34FF62F5C388A88B1665C

그 다음은 locksettings.db 파일이다. 여기서 패스워드에 사용되는 salt 값을 확인할 수 있다. salt 값은 6675990079707233028 이다.
salt

위의 해시값과 salt 값을 설정하고 아래와 같이 hashcat을 이용하여 무차별 대입공격을 해준다. 이미 자리수와 포맷을 알기 때문에 어쩌면 사전공격보다 효과적일 수 있다.

1
2
3
4
5
## 110 -> sha1($pass.$salt)
## a3 -> Brute-force
## ?l -> abcdefghijklmnopqrstuvwxyz

hashcat -m 110 hash.txt -a3 "?l?l?l?l?l"


금방 크랙되었고 비밀번호는 dycpr 이다. crack

참고로 이렇게 핸드폰의 비밀번호를 얻는 크랙 과정은 android 4.4 이하의 버전에서만 가능하다.


Unpack backup.ab


비밀번호를 알았으니 backup 파일을 해제하기 위해서 abe.jar을 이용하였다.

1
java -jar abe.jar unpack <backup.ab> <output.tar> <password>


아래처럼 backup.tar 파일이 생성되고 이것을 압축을 풀어주면 된다. 그러면 apps, shared 디렉토리를 확인할 수 있다.
abe

WhatsApp msgstore


shared/0/을 보니 WhatsApp 부분만 용량이 달랐다.
whatsapp

WhatsApp의 Databases 디렉토리에서 msgstore.db.crypt14 이라는 파일을 발견할 수 있었고 구글링해보니 메시지들을 저장하는 db임을 알 수 있었다. 하지만 crypt14이라는 확장자가 붙어있어서 이 또한 암호화되어있음을 알았다.

이를 풀기위해서 key를 알아야했고 key 파일은 apps/com.whatsapp/files/key에 존재한다. 이 db파일을 복호화를 하는데 사용한 툴은 이곳을 이용했다. 추출된 msgstore.dbmessage 테이블에서 플레그를 얻을 수 있었다.
flag

전형적인 리버싱 문제가 아니라 포렌식이라 좀 힘들었지만 단서를 찾아가면서 푸는 재미는 있었다. 하지만 패스워드를 찾고 핸드폰 안에서 복구만 가능한줄 알아서 그렇게 시도하다가 계속 안돼서 엄청난 삽질을 하였다. 다시 생각해보면 안되는게 지극히 정상인데… 또한 마지막에 플레그를 찾는 과정에서 message 테이블이 아닌 다른 테이블에서도 플레그 와 비슷한 값을 포함하고 있었다. 그래서 플레그를 입력하는데 계속 틀려서 당황했다. 내 기준 상당히 복잡한 문제였다.
아무튼 몇 문제 되지 않지만 이것으로 핵더박스에 있는 모바일 챌린지를 다 풀어봤다. 나름 뿌듯 😁
allclear

Referece


[Hackthebox] SAW

[Tip] scrcpy

Comments powered by Disqus.