안드로이드 해킹대회 어플 문제 1

2014. 10. 14. 13:08Security ★ Development/안드로이드 모바일 보안

반응형

* 틀린 내용이 있을 시 지적 부탁드립니다.


http://codeengn.com/challenges/smartapp/01

이걸 풀어보겠습니다.  파일을 다운받아 설치하려고하면 설치가 안됩니다.  

dex2jar로 jar를 만들어 jd-gui로 소스를 보려고했으나 jd-gui가 jar를 열지 못합니다.

apk를 zip파일로 바꾸어 압축을 풀어줍니다.  이름이 비정상적인 파일이 3가지 있습니다.  

AndroidManlfests.xml  class.dex  resource.arsc

또한 어플리케이션을 서명한 후 생기는 META-INF 폴더가 없습니다.


파일명들을 수정하고 서명을 해줍니다.

서명을 하기위해서 signapk.jar를 이용할건데 개인 키로 서명된 인증서가 필요합니다.  

openssl을 이용하여 인증서를 생성하기위해 우분투 환경에서 sudo apt-get install openssl 명령으로 openssl을 설치합니다.

그리고 rsa 1024비트 인증서를 생성합니다.

openssl genrsa -out temp.pem 1024


키를 생성합니다.

openssl req -new -key temp.pem -out temp2.pem

몇가지를 입력해야하는데 적당히 써줍니다.


openssl x509 -req -days 999 -in temp2.pem -signkey temp.pem -out ssos.pem

x509인증서를 쓰며 유효기간은 999일인 인증서를 생성합니다.


ssosj.pk8이라는 이름으로 개인 키를 생성해줍니다.

openssl pkcs8 -topk8 -outform DER -in temp.pem inform PEM -out ssosj.pk8 -nocrypt


ssignapk.jar를 다운받습니다.

http://goo.gl/r7xadP


java -jar signapk.jar ssos.pem ssosj.pk8 SmartAppL01.apk SmartApp-signed.apk

를 실행하면 서명된 apk가 생성됩니다.

이를 설치하고 실행하면 키를 확인할 수 있습니다.


AndroidManifest.xml을 열어서 권한을 보려고 하면 암호화가 된 것처럼 글씨가 깨져서 나옵니다.  이는 AXMLPrinter2.jar를 이용해서 확인할 수 있습니다.

https://cod.google.com/p/android4me  다운로드

java -jar AXMLPrinter2.jar AndroidManifest.xml을 이용해 알아볼 수 없었던 매니피스트 파일을 볼 수 있습니다.