다운받은 apk을 디컴파일해서 분석해보면 다음과 같은 핵심메소드를 쉽게 찾을 수 있다.

 

 

뒤부분이 살짝 잘리긴 했지만 isValidLicenceKey 메소드의 결과 값이 참이면 라이센스 등록이 성공하는 루틴이다. 이 때 isValidLicenceKey 메소드의 인자으로 내가입력한 값 , Key값 , IV값 이렇게 세가지 값이 들어간다.

 

일단 여기까지 분석하고 isValidLicenceKey 메소드를 분석해봤다.

 

 

메소드 자체는 간단하다. 입력받은 파라미터 값들을 차례대로 encrypt함수에 넣고 리턴된 암호화값이 29~와 같으면 된다.

 

그럼 이제 encrypt 함수를 분석하면 될 것 같다.

 

 

해당 함수는 AES/CBC 형태로 암호화되고 있는걸 확인할 수 있었다.

 

이제 문제는 입력값을 제외한 key값과 iv값을 알아내야 하는데 어디서 이 값이 세팅되는지 확인해봤다.

 

 

 

 

key값과 iv값이 세팅되는 메소드인데 보면 Sqlite Database 쿼리를 통해 값을 얻어오는 것을 확인할 수 있었다. database 파일은 /data/data/edu.sharif.ctf/databases/db.db 요 경로에 있었고 config 테이블에서 key와 iv를 뽑아오는걸 알 수 있었다.

이제 이 sqlite 데이터베이스 파일가져오기만 하면되는데 해당앱이 루팅탐지를 따로 하고있지 않아서 루팅폰에 앱을 설치한다음 해당 파일을 빼내올 수 있었다.

 

su -

cp /data/data/edu.sharif.ctf/databases/db.db /data/local/tmp/

chmod 777 /data/local/tmp/db.db

adb.exe pull /data/local/tmp/db.db

 

이제 가져온 db.db를 sqlite db browser로 열어서 key, iv값을 확인해봤다.

 

 

iv = a5efdbd57b84ca36

key = 37eaae0141f1a3adf8a1dee655853714

 

그럼 이제 복호화 할 때 필요한 재료가 모두 갖춰졌기 때문에 복호화 코드짜서 그대로 돌려주면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'CTF > Writeup' 카테고리의 다른 글

SECCON Online CTF 2016 Anti-Debugging  (0) 2018.02.26
Google CTF 2017 Food  (0) 2018.02.13
SECCON CTF 2015 reverse-engineering-android-apk-1  (0) 2018.02.12
nullcon CTF 2018 web2  (0) 2018.02.12
Easy CTF 2018 Nosource, Jr.  (0) 2018.02.11
블로그 이미지

JeonYoungSin

메모 기록용 공간

,