android 디버깅 방법론

Penetration Test 수행 시 각종 정보 및 팁 공유

Moderator: amesianx

Post Reply
swoo1013
Posts: 31
Joined: Tue Sep 20, 2016 4:25 pm

android 디버깅 방법론

Post by swoo1013 » Tue Nov 01, 2016 2:06 pm

실장비(갤럭시 노트2)를 이용해 모바일 앱 분석하는 방법론을 작성하겠습니다.

1. 갤럭시 노트2 실장비를 이용해 우선 단말기 루트 권한을 가지고 있어야 효율적으로 실습을 할 수 있습니다.
갤럭시노트2 루팅
http://aggapple.tistory.com/35


루팅에 성공했으면 추가적으로 ubuntu 서버에 adb (android debug briged)라고 해서 디버깅 다리와 같은 역할을 해주는 도구를
설치합니다.

sudo apt-get install adb
adb.PNG
adb.PNG (46.97 KiB) Viewed 864 times
성공적으로 adb를 설치했으면 USB와 실 단말기를 우분투에서 연결을 하면 adb 명령어를 이용해서 검색할 수 있습니다.
(참고로 USB 디버깅 설정도 되있어야 하는데 구글에 USB 디버깅이라고 찾아보시면 방법론 정말 많습니다)
본인의 단말기에 맞게 검색해도 되고 SDK를 이용해 에뮬레이션 시켜서 사용하셔도 무방합니다.

http://adbshell.com/commands / adb shell 명령어 모음 공식 Document입니다. 참조하시면 됩니다

우선 저는 adb devices를 이용해서 현재 우분투에서 연결된 디바이스를 확인합니다.
adb_devices.PNG
adb_devices.PNG (6.16 KiB) Viewed 863 times
위와 같이 42f6d605dd0b115f가 제가 루팅한 갤럭시 노트2의 devices입니다.
adb_devices2.PNG
adb_devices2.PNG (10.97 KiB) Viewed 863 times
adb -s [DEVICE_Serial] shell이라는 명령어를 입력하면 해당 단말기의 시스템을 리눅스에서 다룰 수 있습니다.
이때 su 명령어를 입력한 것은 디바이스 루팅을 했기 때문에 가능하며 슈퍼유저로 루팅되지 않은 상태에선
su 명령어가 먹히지 않습니다. 일반유저로는 할 수 있는 작업이 제한적이기 때문에 루팅을 했습니다.

추가로 adb 명령어를 이용해 특정 사이트에 다운로드 받은 apk를 해당 단말기에 install 해보겠습니다.
adb_install.PNG
adb_install.PNG (26.8 KiB) Viewed 863 times
위의 그림과 같이 apk를 install하면 정상적으로 단말기에 apk가 설치된 모습을 확인할 수 있습니다.
adb_install2.PNG
adb_install2.PNG (225.68 KiB) Viewed 863 times
어플리케이션이 정상적으로 설치가 됬으면 해당 APK를 분석을 해야 합니다.
분석방법론에는 정적분석과 동적분석 방식이 존재하며, 정적분석 먼저 설명을 드리도록 하겠습니다.
header.PNG
header.PNG (9.39 KiB) Viewed 863 times
APK를 HexEditor로 올려서 확인해보면 50 4b 03 04로 나옵니다.
우리가 알고 있는 일반 ZIP 파일과 확장 형식이 동일한 것을 의미합니다.
apk2zip.PNG
apk2zip.PNG (13.32 KiB) Viewed 863 times
이 파일을 우리는 Zip 확장자명을 변경해서 확인해볼 수 있을 것으로 보입니다.
변경한 뒤 확인해보면 META-INF, org, res, AndroidManifest.xml, classes.dex, resources.arsc라는 파일이 존재합니다.
물론 모든 APK가 저 3개 폴더만을 가지고 있진 않습니다. 우선 저 파일들이 어떤 역할을 하는지 확인해봐야겠죠?
manifest.PNG
manifest.PNG (24.92 KiB) Viewed 863 times
AndroidManifest.xml : 전반적인 APK의 속성을 나타냅니다. APK가 패킹질 될 때 어떠한 권한을 가지고 있는지, 어떤 레이아웃을 가지고 있는지,
APK가 설치 시 요구하는 Permission도 정해져 있습니다. .이 Manifest는 APK를 분석할 때 초기에 확인해야할 만큼 중요한 파일입니다.XML 파일이기 때문에 바로 열어보면 될 것으로 보이지만 해당 파일은 APK에서 인식할 수 있도록 Compile된 상태이기 때문에 열어보면 제대로 출력을 안해줍니다.
즉 Decompile이 필요하다는 의미겠죠. 디컴파일은 조금 있다가 알아보도록 하고 지금은 어떤 파일이 존재하는지부터 차근차근 알아보도록 합시다.

META-INF : 앱은 패키징 될 때 특수한 권한을 필요로 하는데, 바로 인증서를 요구합니다. 해당 앱이 정상적인 경로르 통해서 패키징 되었다는 것을 증명하기 위한 용도로 사용이 됩니다. 이 인증서는 개발자나 패키징하는 사람이 직접 생성해서 등록이 가능하므로, 위변조는 생각외로 간단하게 할 수 있습니다. <추가예정>
res.PNG
res.PNG (13.25 KiB) Viewed 863 times
res : res 폴더는 resource의 약자로 APK가 내부에 가지고 있는 여러가지 resource의 정보들을 포함하고 있습니다.
즉 내부 리소스를 포함하고 있기 때문에 앱을 구동하는데 있어서 중요한 폴더임을 보여줍니다.

resources.arsc : 별도로 컴파일된 리소스 파일을 뜻합니다.

마지막으로 APK를 Decompile할 때 가장 중요한 classes.dex 파일입니다.
해당 파일은 Dalvik Machine 즉 자바 바이트 코드를 실행할 수 있도록 도와주는 역할을 합니다.
클래스들의 정보를 함축적으로 가지고 있는 파일을 의미합니다.
APK는 전체적인 구조를 간단하게 설명하자면
JAVA, XML
-> CLASS
-> DEX
-> DEX + XML
-> APK
이런식의 구조트리를 가지고 있습니다. APK는 DEX + XML로 이루어져있고 DEX+XML 파일은 classes.dex 파일에 존재하고,
classes.dex는 자바 CLASS 코드를 포함하고 있습니다. 즉 이런 구조에 의해서 우리는 APK를 ZIP으로 바꿔도 DEX + XML로 된 파일밖에 확인하지
못하고, XML 파일조차 컴파일된 상태이기 때문에 볼 수가 없었던 것입니다.

구조도 설명했으니 이제 디컴파일 하는 방법론에 대해서 설명 드리겠습니다.

시중에는 다양하게 APK 파일에 존재하는 classes.dex 파일을 디컴파일 해주는 DEX2JAR나 APKTOOL등 다양한 도구들이 존재합니다.
해당 도구들을 사용해서 디컴파일을 해도 되지만 저는 JADX라는 도구를 이용해 DEX2JAR -> JD-GUI를 통한 디컴파일 과정을 거치지 않고
한번에 디컴파일을 하도록 하겠습니다.
https://sourceforge.net/projects/jadx/files/ ( JADX 설치 경로 )
jadx.PNG
jadx.PNG (77.76 KiB) Viewed 863 times
JADX를 실행하면 위의 그림과 같이 디컴파일 할 파일을 Open하라는 창이 뜹니다.

<업데이트 예정>

gee8195
Posts: 34
Joined: Thu Jul 21, 2016 5:12 pm

Re: android 디버깅 방법론

Post by gee8195 » Wed Nov 02, 2016 3:34 pm

와우... 엄청 이해하기 쉽게정리해주셔서 감사합니다.ㅎ 좋은 공부됬습니다.

h0n9t3n
Posts: 48
Joined: Tue Oct 13, 2015 11:14 am

Re: android 디버깅 방법론

Post by h0n9t3n » Thu Nov 03, 2016 3:34 pm

긋 잘하고 잇오

User avatar
SinJiRu
Posts: 84
Joined: Wed Oct 14, 2015 2:54 pm

Re: android 디버깅 방법론

Post by SinJiRu » Thu Nov 10, 2016 9:04 am

우분트 버전에따라
apt-get install android-tools-adb android-tools-fastboot
로 설치해야하는 경우도 있는듯 합니다 ( 제가 그랬음.. )

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest