碳基体

奋斗在产品安全第一线的安全妹子

Android环境安装(windows xp/Ubuntu/Mac OS X)及常见操作

为了研究Android APP安全,首先应该学会Android渗透测试环境的搭建,而环境搭建的第一步就是安装Android开发环境。这篇博客分别介绍了windows xp,Ubuntu,和Mac OS X三种操作系统下的android 环境搭建,及模拟器/真机调试android APP的准备方法,算是Android渗透测试环境搭建的第一步。


一、windows xp 下配置android环境


1.安装JDK

第一步:下载JDK,安装

第二步:设置环境变量

右键 我的电脑 选择属性选项,选择高级选项卡,单击环境变量。

(1)在系统变量中,新建变量JAVA_HOME,编辑之为C:\Program Files\Java\jdk1.7.0_03\

(1)编辑系统变量Path,添加C:\Program Files\Java\jdk1.7.0_03\bin(本文以安装jdk1.7.0_03为例)

(2)在系统变量中,新建变量CLASSPATH,编辑值为; C:\Program Files\Java\jdk1.7.0_03\lib\tools.jar;C:\Program Files\Java\jdk1.7.0_03\lib\dt.jar


2.安装Android SDK

第一步:下载Android SDK,解压缩到任意路径下

第二步:双击运行SDK Manager.exe,选择合适的安装包,为了方便以后的测试,我会选择安装Tools,Extras,Android 2.2,Android 2.3.3

第三步:设置环境变量

编辑系统变量Path,添加E:\android-sdk-windows\tools;E:\android-sdk-windows\platform-tools;E:\android-sdk-windows\apache-ant-1.8.3\bin;


3.安装Eclipse和ADT

Eclipse是Android集成开发环境

第一步:下载Eclipse,解压缩到任意路径下

第二步:下载ADT

第三步:安装ADT,双击运行eclipse.exe,单击主菜单上的help---Install New Software菜单项,单击弹出窗口的add按钮,通过archive按钮选择下载的ADT插件的Location,选中Developer Tools(ADT插件),然后单击Next,接受协议,单击Finish按钮

第四步:配置Eclipse的Android SDK环境变量,单击Eclipse主菜单Windows---Preferences,填写Android SDK安装目录


注意:Android官方网站提供了Android SDK,Eclipse,ADT的集成安装包,可以直接下载使用


4.安装Apache Ant

第一步:下载Apache Ant,解压缩

第二步:配置Ant

编辑系统变量Path,添加F:\android-sdk-windows\apache-ant-1.8.3\bin


5.安装Android NDK

第一步:下载cygwin,安装基本的工具包,下载安装速度会非常慢,要有耐心


第二步:配置NDK路径

修改cygwin安装包下的home\dani(用户名)\.bashrc文件

增加export NDK=/cygdrive/e/android-ndk-r8

重启cygwin


第三步:测试是否安装成功

打开cygwin Terminal

dani@dani ~
cd $NDK

dani@dani /cygdrive/e/android-ndk-r8
ndk-build -C samples/hello-jni/
make: 进入目录“/cygdrive/e/android-ndk-r8/samples/hello-jni”
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Cygwin         : Generating dependency file converter script
Compile thumb  : hello-jni <= hello-jni.c
SharedLibrary  : libhello-jni.so
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so
make: 离开目录“/cygdrive/e/android-ndk-r8/samples/hello-jni”

正常编译后,会在项目libs/armeabi目录下生成对应的.so文件

dani@dani /cygdrive/e/android-ndk-r8
ls -l samples/hello-jni/libs/armeabi/
总用量 137
-rw-r--r-- 1 dani Domain Users    160 二月 25 15:21 gdb.setup
-rwxr-xr-x 1 dani Domain Users 125208 四月 24 2012 gdbserver
-rwxr-xr-x 1 dani Domain Users  10124 二月 25 15:21 libhello-jni.so


二、Ubuntu下配置Android环境

1. 安装Android SDK

第一步:下载Android SDK

wget https://dl.google.com/android/android-sdk_r21.1-linux.tgz

tar zxvf android-sdk_r21.1-linux.tgz

cd ~/android-sdk-linux/tools

./android

选择合适的安装包,为了方便以后的测试,我会选择安装Tools,Extras,Android 2.2,Android 2.3.3

第二步:配置环境变量

编辑.bashrc文件,增加如下语句

vim .bashrc 

增加如下语句

export ANDROID_SDK_HOME=/pentest/reverse-engineering/android/android-sdk
export PATH=$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$PATH

source .bashrc


2. 安装Eclipse和ADT

第一步:下载Eclipse,解压缩到任意路径下

第二步:下载ADT

第三步:启动Eclipse,单击主菜单上的help---Install New Software菜单项,单击弹出窗口的add按钮,通过archive按钮选择下载的ADT插件的Location,选中Developer Tools(ADT插件),然后单击Next,接受协议,单击Finish按钮。

第四步:配置Eclipse的Android SDK环境变量,单击Eclipse主菜单Windows---Preferences,填写Android SDK安装目录


3.安装Apache Ant(命令行编辑工具)

第一步:下载Apache Ant

wget https://labs.mop.com/apache-mirror//ant/binaries/apache-ant-1.8.4-bin.tar.bz2

tar zxvf apache-ant-1.8.4-bin.tar.bz2

第二步:配置Ant

编辑.bashrc文件,增加如下语句

vim .bashrc 

增加如下语句

export ANT_HOME=/pentest/reverse-engineering/android/android-sdk/apache-ant-1.8.4
export PATH=$ANT_HOME/bin:$PATH

source .bashrc

注意:Android官方网站提供了Android SDK,Eclipse,ADT的集成安装包,可以直接下载使用


4.安装Android NDK

第一步:下载Android NDK

wget https://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.tar.bz2

tar jxvf android-ndk-r8d-linux-x86.tar.bz2

第二步:配置环境变量

编辑.bashrc文件,增加如下语句

vim .bashrc

增加如下语句

export NDK_HOME=/pentest/reverse-engineering/android/android-ndk-r8d
export PATH=$NDK_HOME:$PATH

source .bashrc


第三步:测试是否安装成功

root@bt:/pentest/reverse-engineering/android/android-ndk-r8d/samples# ndk-build  -C hello-jni/
make: Entering directory `/pentest/reverse-engineering/android/android-ndk-r8d/samples/hello-jni'
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile thumb  : hello-jni <= hello-jni.c
SharedLibrary  : libhello-jni.so
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so
make: Leaving directory `/pentest/reverse-engineering/android/android-ndk-r8d/samples/hello-jni'

正常编译后,会在项目libs/armeabi目录下生成对应的.so文件

 


5.配置Ubuntu(Linux)环境下的USB驱动

当Android设备开启USB Debug模式连接到Ubuntu系统下时,系统默认状态下是识别不了的,这时候需要对系统进行配置,让其正确识别Android设备

vim  /etc/udev/rules.d/51-android.rules

增加如下语句,以samsung设备为例

#Samsung

SUBSYSTEM=="usb",

ATTR{idVendor}=="04e8", MODE="0666",
GROUP="plugdev"


sudo chmod a+r /etc/udev/rules.d/51-android.rules

sudo restart udev


三、Mac OS X下配置Android环境

Mac OS X下android环境配置与Ubuntu下完全相同,只需要在下载Android SDK,Eclipse,Android NDK时,选择对应的Mac版本即可


如果要做android APP的渗透测试,最好在Ubuntu下搭建,因为windows上android虚拟设备的运行速度比较慢,终端操作也比较别扭;而mac上,虚拟设备的显示会有一些小瑕疵,同样的终端操作也非常别扭。


四、模拟器调试Android应用

第一步:列出当前安装的android API包,查看对应的id号

root@bt:~# android list target
Available Android targets:
----------
id: 1 or "android-8"
     Name: Android 2.2
     Type: Platform
     API level: 8
     Revision: 3
     Skins: WVGA800 (default), WVGA854, WQVGA400, HVGA, WQVGA432, QVGA
     ABIs : armeabi
----------

第二步:创建android虚拟设备

root@bt:~#android create avd –n test2(avd名字)  -t 12(对应的id号)

注意:如果apk包的lib文件夹中so文件是armeabi-v7a版本的,那么模拟器上就只能安装2.3及其以上的android系统,否则会报错“Failure[INSTALL_FAILED_INVALID_APK]

第三步:查看已有的android虚拟设备

root@bt:~# android list avd
Available Android Virtual Devices:
    Name: test
    Path: /pentest/reverse-engineering/android/android-sdk/.android/avd/test.avd
  Target: Android 4.1.2 (API level 16)
     ABI: armeabi-v7a
    Skin: WVGA800
---------
    Name: test2
    Path: /pentest/reverse-engineering/android/android-sdk/.android/avd/test2.avd
  Target: Android 2.3.3 (API level 10)
     ABI: armeabi
    Skin: WVGA800

第四步:创建SD卡

这步可以省略,对有些应用而言,需要

root@bt: mksdcard 64M ~/dani(存放路径)

第五步:使用模拟器打开第二步创建的设备

root@bt:~# emulator -avd test2(avd名称)  -sdcrad ~/dani(SD卡存放路径) -partition-size 256 -memory 512

注意:为了避免size限制出错,最好提前指定较大的分区与内存,不然,安装大size的apk包时会报错“Failure INSTALL_FAILED_MEDIA_UNAVAILABLE

第六步:下载安装android应用(以qq为例)

root@bt:adb install mobileqq_2012_android_build0130.apk


使用模拟器调试android应用还是存在局限性的,例如对于游戏类应用,特别是3D游戏,基本启动不起来,或者及时启动起来画面质量也很差,所以在有条件的情况下,最好采用真机进行调试。




五、真机调试Android应用

第一步:将android设备设置为USB调试模式


第二步:使用USB线,将android设备与PC机连接起来,对windows系统,需要安装android设备的官方驱动,对于Ubuntu需要配置UDEV规则(方法详见5.配置Ubuntu(Linux)环境下的USB驱动)


第三步:测试设备是否连接成功

C:\Documents and Settings\dani>adb devices
List of devices attached
42890C3429FD117 device

第三步:打开eclipse,导入项目File-import-Existing Projects into Workspace

选中需要运行的Android项目,单击鼠标右键,在弹出的菜单中单击“Run AS—> Android Application”菜单项即可。


与Android相比,iOS APP要在真机上不花钱调试就比较麻烦了,首先真机设备要越狱去除应用程序签名验证,其次xcode工具要破解使之不做签名检查,具体方法详见xcode 4.4.1 for Mountain Lion破解及真机调试


总的来说,对与android APP的安全检查,一般会关注文件系统存储网络通信安装包逆向这三个方面,除了anroid可执行的分析方式与传统的PC富客户端应用不同,例如是dex格式,是基于arm体系的,其他均与传统的富客户端应用安全研究方法相同。而目前比较成熟一点的都是android安装包审计,包括静态分析二进制文件、逆向源码,动态分析APP API调用,基本都是传统的恶意软件/病毒分析公司或研究机构推动着这些技术的发展。试用过一些开源的审计工具,其实能检测出准确安全问题的还非常有限,这一块还在发展中,是机会也是挑战。


 

上面两幅图,左边的图显示了目前android应用安全的关注领域,右边的图显示了android应用安全研究的一些方向,当然只是我个人的一些想法,其中android逆向防护常见于游戏等需要软件保护的行业,android自动化审计与渗透则不区分行业了,不同的是厂商做安全工具,个人用安全工具。反正每一块都有待发展,加油。

来源:碳基体

评论