注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

安卓Hacking Part 13:使用Drozer进行安全测试  

2015-07-26 16:13:25|  分类: Android开发与逆 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在前面的文章中,我们已经介绍了Android的多种安全漏洞,在继续学习其他漏洞之前,我们先来学习一个非常NB的工具:Drozer.

DrozerMWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一。

其官方文档说道:“Drozer允许你一一个普通android应用的身份与其他应用和操作系统交互。”

Web世界已经有了许多安全测试工具了,我们只需要给出一个目标,这些工具就会自动为我们安全测试报告。但Drozer与这样的自动化扫描器不同,Drozer是一种交互式的安全测试工具。使用Drozer进行安全测试,用户在自己的工作站上输入命令,Drozer会将命令发送到Android设备上的代理程序执行。

实验准备

实验器材

1.工作站(本文使用Ubuntu),并安装软件:

a)JRE 或者JDK

b)Android SDK

2.运行Android2.1以后版本的Android设备或者模拟器

下载DrozerAgent.apk

https://www.mwrinfosecurity.com/products/drozer/community-edition/

这个链接也可以下载到MWR Labs 提供的一份用户手册,但本文只对Drozer的安装和使用做简单介绍,以后涉及其他漏洞的时候再详细介绍Drozer的用户手册。

本文假设读者使用的是与我类似的环境,其他用户请下载对应版本的Drozer安装。

在安装Drozer之前,记得需要安装依赖。

Windows用户直接像安全其他软件一样安装就好了。

检查安全是否成功,在终端中输入命令:”drozer”:

t01537b5782b0bc6169.png

现在在设备或者模拟器上安装先前下载的agetn.apk

可以使用adb安装,命令如下:

1
#adb install agent.apk


t016a3db00955edc1e2.png

然后我们需要链接工作站上的Drozer控制台和设备上的代理程序。

首先运行设备上的Drozer代理并启动守护服务,然后运行下面的命令做端口转发:

1
#adb forward tcp:31415 tcp:31415


t014c9ecc05a50fadce.png

使用下面的命令建立链接:

#drozer console connect

如下图:

t01a2943bfb8c5160d5.png

使用Drozer 进行安全测试

下面来见识下Drozer的魔力,使用Drozer 对应用进行安全测试。

本系列的第一篇文章中介绍过如何攻击暴露的Activity,现在我们把当时用的的测试应用安装到设备上,当然,像本文一样使用模拟器也是可以的。

t013d7ed8b345cdef42.png

在正式开始之前,先来熟悉下Drozer的命令。

列出所有模块

1
#dz>list


该命令列出了当前可用的所有模块:

t01450134eb3137a34e.png

获取包信息

使用下面的命令列出安装的所有应用包名:

1
#dz> run app.package.list


t017e5e53822a255fe2.png

上图中中有两个高亮的应用,都是我们之前用过的。

使用”-f”选项搜索特定的包名:

1
#dz> run app.package.list –f (string to be searched)


t017fc7c1edb22d6f75.png

输出如下:

com.isi.testapp

使用以下命令查看制定包的信息:

1
#dz> run app.package.info –a (package name)


比如:

1
#dz> run app.package.info –a com.isi.testapp


t01bc32d6b6de261d50.png

输出了应用数据目录,apk的路径,是否有Shared User ID等。

识别攻击面

这一节是Drozer中比较有趣的部分,我们只用一条命令就可用识别出应用的攻击面,Drozer会告诉我们应用是否有暴露的组件,是否可调试等。

我们使用Drozer来检查testapp.apk的攻击面,下面是一条典型的命令:

1
dz>run app.package.attacksurface (package name)


我们的包名是testapp.apk

1
dz>run app.package.attacksurface com.isi.testapp


t014ae6f3751b4df604.png

如上图,testapp中有两个暴露的activity。现在我们需要找出暴露activity的名字并检查是否有敏感信息,如果有的话就可以用Drozer的其他模块进行攻击。如果应用可调试,我们就可以用调试器附加到进程单步执行指令或执行特定的代码,关于调试我们在之前的两篇文章有过讨论。

使用Drozer攻击App漏洞

基于上一节的结果发起攻击。

攻击暴露的Activity

本节深入testapp.apk的漏洞比进行攻击。

上一节中我们已经发现testapp.apk中存在暴露的activity,使用以下命令查看appactivity

1
      Dz> run app.activity.info –a (package name)


比如我们的包名是com.isi.testapp

1
dz>run app.activity.info –a com.isi.testapp


t015a03801247fd0d2a.png

上图中列出了应用中暴露的activity

com.isi.testapp.MainActivity很显然是主界面,需要能启动,所有是暴露的。

Com.isi.testapp.Welcome看名字像是登录后的界面。使用如下命令启动。

1
dz> run app.activity.start --component (package name) (component name)


比如我们我们的testapp

1
dz> run app.activity.start –component com.isi.testapp com.isi.testapp.Welcome


t01ae835b51600e8eb9.png

该命令会生成一个合适的intent来启动activity,其实更我们之前见到过的使用activity 管理工具(am)来启动activity一样。

t019f75b912aca99479.png

如上图,我们成功绕过了登录认证。

这是什么原因造成的呢?

这其实在我们第一篇文章中提到过,是因为AndroidManifest.xml中,activity”android:exported”属性被设置为”true”

t018d546db6f924fbe9.png

总结

本文对DrozerAndroid应用渗透测试做了简要介绍。以后的文章中会介绍其他的漏洞及其利用,还会介绍怎样对Drozer进行扩展。

  评论这张
 
阅读(182)| 评论(0)
6: 6: <-all> 6: <0px class="prem ! rem !opef6debar rem !opef6debar-new"> 6: <: 14pclass="f-myLikeImpns&qukebtn pntaprem !" id="$_: 14Like">喜欢 <: 14pclass="f-myLikeImpns&r71bmmendbtn pntaprem !" id="$_: 14R71bmmend">推荐 <: 14p5px 8p"display:.png" id="$_: 14ShowR71bmmend" class="pleft rdct phide"> <: 14pclass="pleft ul fc03"><: 14pid="$_: 14R71bmmendCount">0<: 14pclass="pleft iblock icn0 icn0-722 nbw-tgl1 nas-icn0fix">&t; pa<: 14pclass="pleft iblock icn0 icn0-621 nbw-tgl0 nas-icn0fix">&t; pa<: 14pclass="fc07">|&t; pa 6: <: 14pclass="f-myLikeImpns&reblogbtn pntaprem !" id="$_: 14Cite">转载 6: <-all> 6: <-all> 6: <-all> 6: <-all> 6: <0px class="snl"> 6: <0px 5px 8p"display:.png" class="phide bdwb bds2 bdc0 rdcnt" id="$_0pxR71bmmendContot;"> 6: <0px id="yodaoad" class="bdwb bds2 bdc0".qhimg."display:.png;_zoom:1;">&t; pa 6: <0px id="$_newOldBlogLinkBottomDiv" class='a S fc03 clearfix'> <0px class="://6deblog phide">

历史上: H裉

6: <0px class="cnt ztag clearfix"> 6: <0px 5px 8p"display:.png;e-height: 2hiduot;b(70, 0;reak-al0;x-sizing:hiduot;" class="author">

最近读者

<0px class="cnt ztag clearfix"> <0px 5px 8p"display:.png;e-height: 2hiduot;b(70, 0;reak-al0;x-sizing:hiduot;" id="hopngea" class="hopngea author ">

热度

<0px id="hoplist" class="cnt clearfix"> <0px class="phide" id="yodaoad_1".qhimg."_zoom:1;"> <0px class="m-lmidulead" 5px 8p"display:.png"> <0px>

在LOFTER的更多font

<: 14p5px 8p";positrem !;reak-al2ak: quot;t015a032ak: ft: auto1ak: 16k: 1ak: 0iim !im#d7854e;curs!impointor7">关闭 玩LOFTER,免费冲印20张照片,人人有奖!&t; pa&t; pa&t; pa&t; pa&t; pa我要抢 'Hi

评论

<0px class="ztag"> <0px class="phide" id="yodaoad_3" 5px 8p"_zoom:1;"> <1a57ngea name="js"> this.p={ m:2, 6: b:2, 6: loftPermaluok:'', 6: id:'fks_087069087083085075082095081065072087086069092;87081065084095', 6: blogTitle:'安卓Huoting Pngtl; :App&调试我-fam安全测试', 6: blogAbstruct:'<: 14p5px 8p\"or: rgb(51, 5t;/span>\t;</span&gHei\'7 or: rmporta14247\" \>在前面: font中,e=&q已经介绍了Android的多种安全漏洞,在继续学习其他漏洞reak,e=&q先来学习一个非常NB的工具:调试我.<: 14p5px 8p\"or: rgb(51, 5t;/span>\t;</span&gHei\'7 or: rmporta14247\" \>调试我<: 14p5px 8p\"or: rgb(51, 579, 8\" \>是MWR Labs<: 14p5px 8p\"or: rgb(51, 579, 8\" \>开发的一款Android<: 14p5px 8p\"or: rgb(51, 579, 8\" \>安全测试框架。是目前最好的Android', 6: blogTag:'android开发与逆向', 6: blogUrl:'blog/spntic/1768172092; 62641325563', 6: isPublished:1, 6: isa Safalse, 6: type:0, 6: modifyTime:0, 6: publishTime:1437898405563, 6: pefmaluok:'blog/spntic/1768172092; 62641325563', 6: 1bmmentCount:0, 6: m, 7CbmmentCount:0, 6: r71bmmendCount:0, 6: bsrk:-100, 6: publisherId:0, 6: r71bmBlogHx;eafalse, 6: curgentR71bmBlogafalse, 6: position: sFileIds:[], 6: vote:{}, 6: groupInfo:{}, 6: friendspntus:'.png', 6: com/t0spntus:'unFom/t0', 6: pubSucc:'', 6: e-hetorProvintrt'', 6: e-hetorCityt'', 6: e-hetorNewUserafalse, 6: r: tAddInfo:{}, 6: mset:'000', 6: m1bnt'', 6: srk:-100, 6: rerigdgoodnem !blogafalse, 6: isB=&ckV-hetorafalse, 6: isShowYodaoAdafalse, 6: h: tIntro:'一个混迹于某娱乐圈uot嶙┕', 6: hm1bnt'1', 6: seqfR71bmBlogCount:'0', 6: lofter_single:'' 6: } 6: <1a57ngea name="jst" id="m-3-jst-1"> {list a as x} 6: {if !!x} 6: <0px class="iblock nbw-fce nbw-f40"> {if x.e-hetorName==e-hetor.userName} 6: 6: {else} 6: 6: {nif} 6: {if x.mx-sFrom=='wap'} 6: <: 14pility:"来自网易手机博客" class="iblock wapImpn">&t; pa {elseif x.mx-sFrom=='iphpng'} 6: <: 14pility:"来自iPhpng客户端" class="iblock iphpngImpn">&t; pa {elseif x.mx-sFrom=='android'} 6: <: 14pility:"来自Android客户端" class="iblock androidImpn">&t; pa {elseif x.mx-sFrom=='mobile'} 6: <: 14pility:"来自网易短信写博" class="iblock wapImpn">&t; pa {nif} 6: ${fn(x.e-hetorNickname,8)|escape} 6: {nif} 6: {/list} 6: <1a57ngea name="jst" id="m-3-jst-2"> {if !!a} 6: ${fn(a.nickname,8)|escape} ${a.seqfIntro|escape}{if ggeat260}${suplement}{nif} 6: &t; pa 6: 6: {nif} 6: <#--最新日志,群博日志--> <1a57ngea name="jst" id="m-3-jst-3"> 6: {list a as x} 6: {if !!x} 6:
  • ${fn(x.ility,26)|escape} 6: {nif} 6: {/list} 6: <#--推荐日志--> <1a57ngea name="jst" id="m-3-jst-4"> 6: 推荐过这篇日志的人:

    6: 6: {list a as x} 6: {if !!x} 6: 6: ${fn(x.r71bmmenderNickname,6)|escape} 6: 6: 6: {nif} 6: {/list} 6: 6: {if !!b&&b.length>0} 6:

    他们还推荐了:

    6: 6: {/if} 6: <#--引用记录--> <1a57ngea name="jst" id="m-3-jst-5"> 6: <: 14pclass="pleft fc07">转载记录: 6: 6: <#--博主推荐--> <1a57ngea name="jst" id="m-3-jst-6"> 6: {list a as x} 6: {if !!x} 6:
  • ${x.ility|default:""|escape} 6: {/if} 6: {/list} 6: <#--随机阅读--> <1a57ngea name="jst" id="m-3-jst-7"> 6: {list a as x} 6: {if !!x} 6:
  • ${x.ility|default:""|escape} 6: {/if} 6: {/list} 6: <#--首页推荐--> <1a57ngea name="jst" id="m-3-jst-8"> 6: {list a as x} 6: {if !!x} 6:
  • ${x.blogTile|default:""|escape} 6: {/if} 6: {/list} 6: <#--历史上: H裉--> <1a57ngea name="jst" id="m-3-jst-10">
      6: {list a as x} 6: {if x_&quox>4}{bgeak}{nif} 6: {if !!x} 6:
    • 6: ${fn1(x.ility,60)|escape}<: 14 class="fc07">${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')} 6:
    • 6: {/if} 6: {/list} 6:
    6: <#--被推荐日志--> <1a57ngea name="jst" id="m-3-jst-11"> {list a as x} 6: {if !!x} 6:
  • ${fn(x.ility,26)|escape} 6: {nif} 6: {/list} 6: <#--上一; ,下一; --> <1a57ngea name="jst" id="m-3-jst-12"> {if !!(blogDetail.prcBlogPermaluok)} 6: <: 14pclass="ilft iblock icn0 icn0-620">&t; pa 6: ${blogDetail.prcBlogTitle|escape} 6: {/if} 6: {if !!(blogDetail.na57BlogPermaluok)} 6: <: 14pclass="irgt iblock icn0 icn0-619">&t; pa 6: ${blogDetail.na57BlogTitle|escape} 6: {/if} 6: <#-- 热度 --> <1a57ngea name="jst" id="m-3-jst-13"> 6: {list a as x} 6: {if !!x} 6: {if x.publisherUsername==e-hetor.userName} 6: 6: {else} 6: 6: {nif} 6: ${fn(x.publisherNickname,8)|escape} 6: &t; pa 6: {/if} 6: {/list} 6: <#-- 网易新闻广告 --> <1a57ngea name="jst" id="m-3-jst-14"> 6: 网易新闻 6: <: 14 class="icx-si"> <: 14 class="info"><: 14pclass="imgdesc thide">${headquots.ility|escape} 下载网易新闻客户端 'Hi 6: 6: <#--右边模块结构--> <1a57ngea name="txt" id="m-3-txt-0">

    被推荐日志

      6:

      最新日志

        6:

        该作者的其他font

          6:

          博主推荐

            6:

            随机阅读

              6:

              首页推荐

                6: 更多 'Hir'Hi

                6: 6: <#--评论模块结构--> <1a57ngea name="txt" id="m-3-txt-1"> 6: 6: 6: <#--引用模块结构--> <1a57ngea name="jst"rid="m-3-txt-2"> 6: <: 14 class="ztag iblock icn0 icn0-57">&t; pa 6: <#--博主发起的投票--> <1a57ngea name="jst"rid="m-3-txt-3"> 6: {list a as x} 6: {if !!x} 6:
              • 6: ${x.nickName|escape}&t; pa&t; pa投票给 6: {var first_opd0dc = true;} 6: {list x.eoteDetailList as eoteToOpd0dc} 6: {if eoteToOpd0dc==1} 6: {if first_opd0dc==false},{/if}&t; pa&t; pa“${b[eoteToOpd0dc_&quox]}”at; paat; pa 6: {/if} 6: {/list} 6: {if (x.rpoe!="-1") },“我是${c[x.rpoe]}”at; paat; pa{/if} 6: at; paat; paat; paat; pa<: 14pclass="fc07">&t; paat; paat; paat; pa${fn1(x.eoteTime)} 6: {if x.userName==''}{nif} 6: {/if} 6: {/list} 6: