본문 바로가기
4. 모바일 앱 취약점 진단/Android

Apktool을 활용 안드로이드 앱에 수동으로 악성코드 넣기

by Robert8478 2023. 12. 26.

1.msfvenom의 android/meterpreter/reverse_tcp 를 이용 payload.apk를 생성한다.

2.폴더 안에 악성코드 넣을 앱 파일과 payload.apk를 넣고 apktool d payload.apk 와 apktool d 앱파일.apk 를 하여 디코딩 해준다. (apk는 압축파일과 비슷하므로 디코딩으로 풀어준다.

3.디코딩후 만들어진 폴더의 payload 폴더로 가서 smali/com/ 안의 metasploit 폴더를 복사해서 앱파일 폴더의 smali/com 안에 cp -r metasploit경로 .  명령어로 넣어준다.

4.두 개의 폴더 안의 Android 매니페스트 파일을 leafpad 등으로 열어주고 payload의 uses permission 에서 feature 까지 복사해서 앱파일의 같은 부분 안에 붙여넣어 준다.(덮어쓰기 아님)
-안드로이드 매니페스트는 앱이 할수있는 동작들이 명시되어있는 파일

5.ctrl+f 에서 launcher 검색시 main과 launcher가 붙어있는 부분이 가장 처음에 시작되는 부분에 해당되는 com. 안드로이드 smali 파일을 경로를 찾아서 들어간뒤 leafpad로 열어준다.

6.onCreate를 ctrl+f로 검색해서 바로 밑에 payload 시작 라인을 추가해준다.
추가해줄것은 아까 옮겨줬던 metasploit 안 stage 안에서 cat MainService.smali를 사용 끝의 invoke-static 부분(페이로드 트리거 역할)을 복사후 onCreate 밑 line 밑에 붙여넣기 해준다.
(앱이 시작될때 db가 생성되는 라인) - 앱이 시작되면서 payload도 같이 실행됨

7.apktool b 앱폴더명  을 사용해서 build를 해준다.

8.키에 대한 싸인이 필요한 앱은 키를 생성하고 싸이닝을 해주어야한다.
#키생성 - keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -validity 9999  (home 폴더에서 mkdir .android 생성 필수)
#키 싸인 - Jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android -sigalg SHA1withDSA 앱명.apk androiddebugkey

9.나머지는 핸들러를 실행시켜두고 apk를 피해자의 폰으로 옮겨서 설치후 실행하면 끝