다운받은 apk을 분석하기 전에 일단 설치를 해봤다.
근데 apkmanager로 디컴파일 후 리패키징할 때 자꾸 이상한에러가떴다.
그래서그냥 apktool.jar랑 sign.jar을 이용해서 직접 리패키징 및 사이닝을 한 후에 설치를 해봤다.
디컴파일
여기서 바로 리패키징 하려했더니 에러가 터졌다.
에러를 보니 abc_screen_toolbarxml파일에서 Keyboard어쩌고 속성때매 에러가 났길래 해당 파일에가서 이 부분을 삭제시켜버렸다.
이후 다시 리패키징을 하면 정상적으로 apk파일이 만들어진다.
이제 signing을 해준 후 파일을 설치해봤다.
근데 위의 에러가 터지면서 앱 설치가 안됬다. 뭐지하면서 여기저기 뒤져보다가 Manifast.xml에서 요런걸 발견했다.
testonly란 옵션이 뭔진 잘몰랐지만 에러구문이랑 상당히 유사해 일단 false로 바꾸고 다시 설치를 해봤더니 정상적으로 설치가 됬다.
이제 분석좀 시작해봐야겠다하고 일단 앱을 켜봤는데 앱이 실행이 안됬다. ㅋㅋ
여기서 멘탈이 나갈뻔 했는데 일단 코드라도 분석해보자하고 앱 코드를 좀 봤다.
일단 앱 자체는 상당히 작은편이었고 앱 실행 시 가장먼저 실행되는 MainActivity코드를 확인해봤더니 k라는 메소드가 false로 리턴값을 떨궈서 앱이 꺼지는걸 확인할 수 있었다.
smali코드에서 k메소드의 리턴값이 무조건 true로 떨어지도록 수정한 후 다시 설치해보니 앱이 정상적으로 실행되었다.
이제부터 실직적인 앱 분석을 시작해봤다.
앱자체가 매우 작고 코드가 간단해 분석이 어렵지는 않았다.
먼저 맨 처음 화면인 MainActivity에서는 다음과 같이 아이디값에 대한 길이 검증을 한 후 MainActivity2로 아이디값을 포함해 넘어간다.
다음으로 Main2activity를 보면 어떠한 랜덤값과 내가 입력한 패스워드가 같은지 검증한 후 일치하면 아이디와 패스워드 값을 담아 MainActivity3으로 넘어간다.
다음으로 Main3activity도 위와 같이 어떠한 랜덤한 시리얼키값과 내가 입력한 값을 비교한다. 일치하면 Main4Activity로 넘어간다.
마지막으로 Main4activity를 보면 해당 Activity가 호출되면 JNI를 통해 native-lib 라이브러리를 로드해 stringFromJNI라는 네이티브 메소드의 결과값을을 뿌려준다.
즉 여러개의 입력값 검증을 모두 우회해서 Main4Activity만 띄우면 된다.
패스워드입력값 검증 부분과 시리얼키값 검증부분을 변조하거나 아니면 앱실행시 메인 엑티비티를 Main4Activity로 만들어서 앱실행과 동시에 Main4Activity가 실행되도록 하는 두가지 방법이 있었다.
위의 두가지 방법중 입력값 검증부분들을 우회하는 식으로 코드를 패치했다.
'CTF > Writeup' 카테고리의 다른 글
nullcon CTF 2018 web2 (0) | 2018.02.12 |
---|---|
Easy CTF 2018 Nosource, Jr. (0) | 2018.02.11 |
Codegate 2018 Simple Cms Write up (0) | 2018.02.04 |
AceBear Security Contest 2018 BearShare2 Write up (0) | 2018.01.29 |
AceBear Security Contest 2018 BearShare Write up (0) | 2018.01.29 |