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'
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
----------
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
选中需要运行的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自动化审计与渗透则不区分行业了,不同的是厂商做安全工具,个人用安全工具。反正每一块都有待发展,加油。
来源:碳基体
评论