제목 그대로 ARE 환경을 소개 하려는 글이다. 현재 Android 악성 App을 분석할 수 있게 도와주는 여러 도구들은 꽤 많이 배포되고 업데이트 되고 있다. 하지만 이 대부분의 도구들을 하나의 환경에서 설치하고 실행하기란 여간 귀찮고 까다로운일이 아닐 수 없다. 이러한 작업들을 Honeynet에서 대신해주었다. 바로 지금부터 소개할 ARE 프로젝트이다. ARE 프로젝트는 여러가지의 Android 악성 App 분석 도구들을 하나의 OS, 즉 ubuntu에 모아 설치하여 분석가에게 편의를 제공하는 프로젝트이다.
이러한 환경은 오라클에서 개발하고 배포하는 무료 가상 소프트웨어 Virtual Box 이미지로 배포되고 있다.
프로젝트 및 다운로드 주소 : http://redmine.honeynet.org/projects/are/wiki
해당 환경에 설치 된 도구들은 다음과 같다.
일단 ARE 환경은 tar로 압축되어 배포 되고 있는데 압축을 해제 한 후 로딩하여 보면(로그인 패스워드는 android) 다음과 같이 Main 화면을 볼 수 있다.
[그림 1 - ARE Main]
처음에 환경을 로딩하고 나서 수정해주어야 할 점이 있다. 바로 adb 명령 path 설정이다. 왜 설정이 안되어 있는지는 모르겠지만 일단 adb 설정이 안되어 있으면 DroidBox 등을 실행 할 경우 굉장히 귀찮아진다.(소스 수정까지 해야 한다.)
그렇기 때문에 아래와 같이 수정을 해주어야 한다.
터미널을 Open 한 후
#vi .bashrc
/home/android/tools/android/android-sdk-linux_x86/tools/
/home/android/tools/android/android-sdk-linux_x86/platform-tools/
위 두가지를 PATH에 추가한다. 아래 처럼!
[그림 2 - 환경변수 PATH 수정]
export 명령을 사용해도 되지만 부팅 시 export 명령으로 한 설정은 사라지기 때문에 이렇게 설정하는 것이다.
그리고 sdk를 업데이트 해주어야 한다. 아무래도 프로젝트가 현재 진행이 되질 않다보니 환경에 있는 안드로이드 에뮬레이터 또한 최신 버전등이 없다.
#/home/android/tools/android/android-sdk-linux_x86/tools/android update sdk
위 명령을 실행하게 되면 다음과 같이 SDK Manager 대화상자가 나오고 업데이트 해야 할 목록들이 나오게 된다.
[그림 3 - SDK Manager]
업데이트 할 목록들을 선택하여 Accept를 해주어도 되고 모두 설치하려면 Accept All을 클릭해주고 Install 버튼을 누르면 된다.
이제 분석할 환경설정이 모두 끝이 났다. 간단하게 DroidBox를 통해 동적분석을 수행해 보자.
* 참고 : 사용자 홈 디렉토리의 하위 디렉토리인 tools 디렉토리에 분석 도구들이 설치되어 있다.
DroidBox는 Apk 파일을 Sandbox 환경에서 실행시켜 어떤 동작을 하는지 모니터링 한 후 그 결과를 사용자에게 출력하여 준다. 정적분석을 할 때 만약 암호화 되어 있는 주소나 포트등이 있다고 하더라도 결국 동적 분석에서 모두 알 수 있다. DroidBox는 기본적으로 다음과 같은 행동들을 모니터링 한다.
- Incoming/outgoing network data
- File read and write operations
- Started services and loaded classes through DexClassLoader
- Information leaks via the network, file and SMS
- Circumvented permissions
- Cryptography operations performed using Android API
- Listing broadcast receivers
- Sent SMS and phone calls
[그림 4 - startemu.sh]
[그림 5 - DroidBox 분석화면]
분석결과가 실시간으로 출력되지는 않는다. Collected~ 문자열에서 숫자는 모니터링 한 로그 수를 의미하는데 이 로그가 높으면 높을 수록 조금 더 정확한 결과와 많은 결과를 얻을 수 있다. 필자가 테스트 해 본 결과 80~85 로그수가 제일 적당하다. 100이상을 넘어가면 터미널 창에서 모든 결과가 보이지 않아 다시 실행해야 하는 낭패를 볼 수 있다. 아니면 > 를 이용하여 출력화면을 저장해도 좋다.
아래는 잠깐의 분석을 통해 나온 결과이다.
[Info]
------
File name: sample.apk
MD5: c3a0f5d584cc2c3221bbd79486578208
SHA1: 81781c90e79bf19ea0acb67df6b9bf636a520367
SHA256: c6eb43f2b7071bbfe893fc78419286c3cb7c83ce56517bd281db5e7478caf995
Duration: 578.77789402s
[File activities]
-----------------
[Read operations]
-----------------
[149.832055092] Path: /data/data/com.android.calendar/shared_prefs/_has_set_default_values.xml(
Data: <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="_has_set_default_values" value="true" />
</map>
[Write operations]
------------------
[Crypto API activities]
-----------------------
[Network activity]
------------------
[Opened connections]
--------------------
[43.371598959] Destination: incorporateapps.com Port: 80
[Outgoing traffic]
------------------
[43.7593550682] Destination: incorporateapps.com Port: 80
Data: POST /wat.php HTTP/1.1
Content-Length: 284
Content-Type: application/x-www-form-urlencoded
Host: incorporateapps.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Expect: 100-Continue
[Incoming traffic]
------------------
[DexClassLoader]
-----------------
[Broadcast receivers]
---------------------
[Started services]
------------------
[Enforced permissions]
----------------------
[Permissions bypassed]
----------------------
[Information leakage]
---------------------
[56.98290205] Sink: Network
Destination: incorporateapps.com
Port: 80
Tag: TAINT_IMEI
Data: SECOND_TABLE=0&imei=357242043237517×tamp=1336213509&phoneinfo=System+-+generic%2Fgeneric%2Fgeneric%2F%3A2.1-update1%2FEPE54B%2Feng.pjlantz.20110606.044729%3Aeng%2Ftest-keys%0AModel%3A+unknown-GT-I9000-Samsung+GT-I9000%0A+Brand%3ASamsung+%0AOSVers%3A2.1-update1+Locale%3Aen_US+%0A
[Sent SMS]
----------
[Phone calls]
-------------
'[+] Information > [-] RCE' 카테고리의 다른 글
소소한 Unpacking TIP (8) | 2013.01.09 |
---|---|
Oter : Android Revese Engineering Tool (8) | 2012.01.30 |
PE 구조 (8) (0) | 2012.01.01 |
PE 구조 (7) (0) | 2012.01.01 |