[해킹보안] 창과 방패 끝없는 전쟁

clicker.apk
0.23MB

 

Jadx decompile툴을 사용해서 찾기 기능으로 flag 찾아 봤습니다.

flag 검색 소스코드로 직접 접근해서 확인해 보니 flag 획득하면 “Conguraturations!” The flag is ... TMCTF{ …………………} 이런 형식으로 flag 나올 거라는 예상을 봤습니다.

flag로 의심되는 소스코드

 

 

또한, NOX프로그램에서 clicker.apk 실행 시키면 아래와 같은 화면이 실행 되었습니다. 클릭을 1 때마다 1 증가하게 되고, 1000만번을 클릭 경우 flag 획득할 것으로 예상이 되었습니다.

앱 실행 시 화면

 

 

 

디컴파일 툴에 있는 찾기 기능을 통해 SCORE 찾아 봤습니다. 화면 창을 클릭 또는 터치하게 되면 this.g++; 값이 1 증가하게 되고, this.g값이 3769, 10007, 59239, 100003, 495221, 1000003, 9999999 일치하게 되면 브로드캐스트 메시지를 송신하게 됩니다.

Broadcast 메시지 송신 소스코드

 

 

화면을 클릭 경우, 브로드캐스트 메시지가 송신될 있도록 this.g값을 3768, 10006, 59238, 100002, 495220, 1000002, 9999998 되게 스크립트 코드를 작성하였습니다. 그런데 Frida 스크립트를 통해 명령을 실행한 , 9999998 자동 클릭 상태에서 마지막 한번을 클릭해도 flag 나오지 않았고, NOX프로그램의 clicker.apk 앱이 강제 종료 되었습니다.

자동 클릭 스크립트 작성 및 frida실행

 

 

문제는 CongraturationsActivity onCreate 메소드에서 com.tm.ctf.clicker.a.a.c() 메소드를 호출

앱 강제종료 원인 분석 -1

 

SharedPreferences 저장 COUNT 값이 10000000 아니면(if(10000000 !=a.c()) 강제종료(finish();) 되는 문제였습니다.

앱 강제종료 원인 분석 -2

 

 

 소스코드를 수정하기 위해 Apktool 사용하여 디컴파일을 하고

Apktool 로   디컴파일

 

 

smali 파일을 문서 편집기를 사용하여 변조했습니다.

(COUNT값이 10000000 아니어도 앱이 종료되지 않게, if-eq값을 if-ne 변경)

Smali 파일을 수정

 

 

 

Smali  파일을   문서   편지기로   수정

 

 

 

소스코드를 수정한 ,  Apktool 사용하여 리패키징을 했습니다.

 

Apktool 로   리패키징

 

 

그리고 Uber(keytool 종류) 사용하여 서명을 줬습니다.

 

예시) C:\>java -jar uber-apk-signer-1.2.1.jar -a repack_clicker.apk --allowResign –overwrite

 

마지막 단계로 frida 사용해서 후킹을 하고 앱 화면을 1 클릭하자 flag 획득 할 있었습니다.

Frida 로   후킹을   한   후   flag  획득

 

The end!

[참고]

안드로이드CTF - VirusClicker 프리다 활용 :: HACKCATML (tistory.com)