상세 컨텐츠

본문 제목

[Android Reversing] Application Patching

REVERSING/Android

by koharin 2021. 7. 6. 22:49

본문

728x90
반응형

Decompile

apktool d InsecureBankv2.apk

 

AndroidManifest.xml
strings.xml

Insecure Content Provider Access 취약점에서 위와 같이 AndroidManifest.xml 파일을 변경했었는데, 변경된 파일로 다시 빌드를 해보자. res/values/strings.xml 파일에서 is_admin이 no로 설정된 것을 yes로 바꾸고 다시 빌드해보자.

 

Rebuild

apktool b InsecureBankv2

apktool로 decompile 시 얻은 InsecureBankv2의 AndroidManifest.xml 파일을 변경 후, 해당 InsecureBankv2 파일에 대해 빌드를 진행한다.

dist 경로의 rebuild된 apk 파일

빌드된 apk 파일은 dist 경로에 있으며, sign을 하지 않아 안드로이드 디바이스에서 실행할 수 없다.

 

Sign

keystore 생성

Android Studio에서 InsecureBankv2 폴더를 열고, [Build]-[Generate Signed Bundle or APK]에서 APK를 선택한다.

그럼 지정된 경로에 key.jks 키가 생성된다.

 

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\AndroidReversing\key.jks InsecureBankv2.apk key

jarsigner 명령어를 사용하여 sign을 진행한다.

 

 

Install in Android Emulator (BlueStacks)

앱을 애뮬레이터에 재설치한다.

"이 앱은 현재 bluestacks 버전에 설치할 수 없습니다" 오류가 뜨면, [안드로이드 설정]-[애플리케이션]에서 InsecureBankv2 앱을 제거한 후 다시 apk 설치로 설치한다.

[Preferences]에서 server IP와 port를 설정한 후, adb shell로 앱의 쉘에 접속하여 다음의 명령어를 실행하면, Insecure Content Provider Access 취약점에서 테스트했을 때와 다르게 Permission Denial이 뜨는 것을 확인할 수 있다.

 

is_admin을 yes로 설정하여 "Create User" 버튼이 생성된 것을 확인할 수 있다.

버튼을 누르면 위와 같이 Toast 메시지가 뜬다.

 

대응 방안


apk를 아무나 사용할 수 있기 때문에, 완전히 patching을 방지할 수는 없지만, patch를 어렵게 할 수는 있다.

  1. Code obfuscation (코드 난독화)
  2. signature를 변조할 수 없도록 한다.(하지만 apk의 signature를 변조하지 않고 lucky patcher dalvik-cache dex 파일을 변경하여 patch할 수도 있어서 이 방법이 완전한 방법은 아니다.)
  3. 위변조 방지 솔루션을 적용한다.
728x90
반응형

관련글 더보기