Android设备如何安装完整的shell工具BusyBox
由于工作需要,经常要连接手机并用adb进行一些操作,发现shell功能很好用,但是处于阉割状态,最明显的一条是,执行了一些命令之后,目录下出现了一些 -p 、 -l 、 755 之类的文件,让人很是蛋疼。更明显的是,一些linux好用的第三方工具,挪到android下根本无法执行。。于是就想办法让android设备支持全功能的shell。这里最直接的就是安装BusyBox了。
什么是BusyBox
BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
如何安装busybox
1、root手机,安装adb
这是必须的!上网搜一下,会有很多对应版本的root教程。adb随意下载并配置一个,命令行敲adb有反应即可。
2、下载最新版的BusyBox
去这里 :busybox.net
最下面有latest,下载一个busybox-armv6l或者busybox-armv7l就可以了
3、安装
如果像我一样,是在windows下安装的,那么可以win+R打开cmd,输入adb。
adb root
adb remount
这样进入了root模式,然后把BusyBox的二进制文件push到手机端
adb push busybox /data/busybox
接着进入shell模式,并安装busybox
adb shell
#cd data/busybox
#./busybox –install
最后一步添加环境变量
#export PATH=/data/busybox:$PATH
ok,这时候再输入一遍ls看看,是不是跟之前完全不一样了?
通常,在安装并配置完android SDK的环境变量之后,成功在命令行(Terminal)输入adb devices之后,并不会立刻看到自己的设备。这里排除掉设备本身驱动的问题,最常见的就是在用户目录下的.android文件夹内没有adb_usb.ini的文件存在。windows和linux环境均如此。
Windows环境
进入C:Users目录,找到自己名字的文件夹,会看到一个.android命名的文件夹(没有则新建一个)。打开之后里面是一些adbkey之类的信息,查找是否存在adb_usb.ini的文件存在,没有则新建。内容是设备的地址,通常为0x1782。
adb_usb.ini文件格式如:
0x1792
0x119a
输入并保存即可。
Ubuntu环境
与win类似,只要在当前用户目录下创建创建文件”.android/adb_usb.ini” ,内容为lsusb看到的设备的idVendor。
adb_usb.ini中即每一行加入一个idVendor。
之后执行命令行:
sudo adb kill-server
sudo adb devices
即可看到设备。
这个是一个脚本集,可以帮助分析者分析app的安全性,用perl语言开发。由于只是一些脚本,所以用起来可能没那么智能,没有GUI界面,也不会有“优雅”的分析结果。所以基本上,就是类似“aapt加强版”的脚本。由于加入了分析android和分析iphone app的功能,所以用处的话还是有一些的。
项目地址 [GoogleCode] https://code.google.com/p/smartphonesdumbapps/
如何打不开就翻墙吧,唉
主要功能
Android
解包apk;
解码manifest.xml(用axml2lxml);
获取app需要的权限;
获取app的截屏(根据 Android manifest);
反编译DEX,通过解析DEX来检查文件权限等;
查找URL,主机名以及一些网络路径。
Iphone App
解包iPhone IPA file或者破解XYZ.app/文件夹;
把.plist转成XML以供浏览;
通过查看.plist XMLs来查找app定义的一些URL;
查找URLs,主机名和一些网络路径。
相关内容
Smart Phones Dumb Apps这个脚本集的初衷在于“智能手机意外丢失,‘别有用心’的人通过你的app都能获取到什么信息”这个假设来的(想必是有类似惨痛经历),所以内容是在分析AndroidManifest.xml、res/文件夹中的其他XML文件、classes.dex 这个DEX的二进制文件,通过这些文件,都能看到什么信息,或者有什么隐含的攻击点。
在解码xml文件的时候,用到了 axml2xml,在解DEX的时候,用的是 dedexer,都是比较常用的工具。之后,通过 dex2jar 转换成可读的java代码。
通过以上几步,攻击者甚至可以看到许多程序的数据流程、调用方式、调取的第三方服务等敏感信息,通过一些分析,就能得到程序的薄弱点并加以攻击。
当然,这个只提供了前面解析的部分,攻击的事还是得交给metasploit之类的来……
最近接到任务,让了解一下几款Android安全测试相关的软件,首先是Drozer。Drozer是一款综合的安全评估和攻击的android框架,据 产品介绍 里说,Drozer可以全面评估app的安全性,并帮助团队把app的安全风险保持在可控范围内。
使用方法
1、在 mwrinfosecurity 公司的这个网页上,提供了社区版本的下载(没错,还有收费的高级版),下载并安装之。并保证android的adb环境已经配置好,即cmd中输入adb devices不会报错。并在手机端安装下载包中的Agent.apk的包。
2、在PC端开启转发
adb forward tcp:31415 tcp:31415
adb forward tcp:31415 tcp:31415
3、在手机端打开安装好的apk程序。
4、在PC上开启Drozer console
drozer console connect
drozer console connect
这样,就进入了 dz> 的console界面,后面就参照说明书一步一步进行测试。
功能介绍
dz> run app.package.list -f example
dz> run app.package.list -f example
list命令用以列出所有包含“example”的手机中已安装package名称,记住目标应用的完整名称。
dz> run app.package.info -a com.example
dz> run app.package.info -a com.example
info命令用以通过完整名称,获取该package的详细信息,比如data路径、apk路径、声明的权限等等。
dz> run app.package.attacksurface com.example
dz> run app.package.attacksurface com.example
attacksurface即攻击面分析,分析Activity/Broadcast Receiver/Content Provider/Service的权限,即是否能被其他的的应用程序调用。会像下列示例一样列出数量:
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
dz> run app.provider.info -a com.example
dz> run app.provider.info -a com.example
获取provider的信息,比如是否需要额外权限来读写app的数据库,等等。如果找到相关漏洞,就可以通过
dz> run scanner.provider.finduris -a com.example
dz> run scanner.provider.finduris -a com.example
来扫描一些可用的uri,比如userName、password、ID之类的,甚至可以修改值(如SQL注入什么的):
dz> run app.provider.query content://xxxxxx --preinjection "xxx"
dz> run app.provider.query content://xxxxxx --preinjection "xxx"
dz> run scanner.provider.injection -a com.example
dz> run scanner.provider.injection -a com.example
进行简单的SQL注入检查、文件遍历检查之类的。
其他:
service相关
查询service
dz> run app.service.info -a com.example
dz> run app.service.info -a com.example
shell.start
在设备上启动一个可交互的linux shell
tools.file.upload / tools.file.download
在android设备上上传/下载文件
tools.setup.busybox / tools.setup.minimalsu
往设备上安装busybox和minimalsu
其他功能
在收费版本中,Drozer还提供了攻击面的可视化界面,并在多设备支持、模拟传感器输入等方面进行了探索,但是介于收费功能,没有继续看下去。
总结
在测试app的安全性上,Drozer确实可以发挥一些作用,不过关键问题还是要了解Android app的整体结构和安全策略,才能游刃有余,而不是见招拆招,被动的很。
作为日常工作,常常要使用Android SDK附带的hierarchyviewer、uiautomatorviewer、ddms等工具,刚好碰上Android L发布,并且更新了Android Stutio 1.0,SDK也伴随着进行了大幅度更新,包括uiautomatorviewer等在内的工具都有了新版本。于是昨天下了新版本过来,安装上去,接着重新设置了环境变量等一系列东西,然后打开uiautomatorviewer,竟然提示出错:
‘-v’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
无效路径
ERROR: SWT folder ” does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
莫非是我环境配置有问题?Google了一下,发现大部分答案都是让设置ANDROID_SWT的环境变量,或者吧jdk移动到PATH的第一个云云的奇怪办法,所以试了半天放弃了,还是安心调试调试看看咋回事。
把uiautomatorviewer.bat的第一行@echo off加冒号”:”注释掉,然后运新一下,看输出:
C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project ...... C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path. C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe= C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat SWT folder '' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
C:Usersxxx.xxx>rem Copyright (C) 2012 The Android Open Source Project
......
C:Usersxxx.xxxAppDataLocalAndroidsdktools>rem Check we have a valid Java.exe in the path.
C:Usersxxx.xxxAppDataLocalAndroidsdktools>set java_exe=
C:Usersxxx.xxxAppDataLocalAndroidsdktools>call libfind_java.bat
SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
运行到call libfind_java.bat这一行出问题鸟~~
接着摸出来find_java.bat,注释掉第一行的 @echo off,看输出:
...... for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a ......
......
for /F "delims=" %a in ('"C:Usersxxx.xxxAppDataLocalAndroidsdktoolslibfind_java32 .exe" -s') do set java_exe=%a
......
find_java32 .exe是什么鬼……
打开find_java.bat的代码,可以看到27行这里
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
就是本尊了,往上翻到arch_ext:
find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64
find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64
那个空格应该是这里了,可能是工程师们java写多了,bat里手也瓢了,把前后的空格去掉试试~~
find /i "x86" > NUL && set arch_ext=32||set arch_ext=64
find /i "x86" > NUL && set arch_ext=32||set arch_ext=64
关掉cmd,重新打开,新版的uiautomatorviewer出现鸟~~接着测试一下其他需要用到call libfind_java.bat的工具(tools里的几乎都要用吧),都没问题了。
相关文章
- 编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- 这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
- 夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
- 为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
Elasticsearch工具cerebro的安装与使用教程
这篇文章主要介绍了Elasticsearch工具cerebro的安装与使用教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-08- 如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24Linux安装Pytorch1.8GPU(CUDA11.1)的实现
这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25- 深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
- 这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
- 下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
- java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
- TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
- 这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
- 现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。 JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
Centos中彻底删除Mysql(rpm、yum安装的情况)
我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15