drozer源码学习二:info+scanner

Information

    datetime    输出android中当前日期;time. setToNow()

 

       deviceinfo:   输出设备信息

       deviceinfo做了三件事:

1.  cat /proc/version;输出linux内核版本和gcc编译版本号

2.  cat /system/build.prop;输出android的全局属性:虚拟机参数、版本号、处理器、分辨率等等,很重要

3.  执行getprop;输出系统中prop文本的键值对(参考1)

 

    permissions:  输出package中拥有的权限及保护等级

       指定permission:setting.mpermissions.get(permission)返回PermissionInfo,其protectionLevel指定permission保护等级;其

descriptionRes是对permission的描述字符串的ID,利用

context. getResources.getString(ID)取得描述符。

 

 

Scanner:

    activity.browsable:  列出package中能被浏览器调用的activity

       根据packagInfo(不用再多说怎么得到吧,看app模块)得到manifest,再扫描出application便签下包含Category = android.intent.category.BROWSABLE的activity并列出其uri

 

    misc:

       native:       包含native文件的package,分application和system

           在application. publicSourceDir目录下找寻so文件,此功能与app.package.native模块一致(代码相同)

           得到application.sharedLibraryFiles,列出包含的native目录(为什么看到的都是jar包?)

          

 

       readablefiles:    列出目录下可读文件,利用busybox工具中的find指令:

find %s ( -type b -o -type c -o -type f -o -type s ) -perm-o=r -exec ls {} ;

 

       secretcodes:      列出secretcodes中的android:host,如下图:

 

    实现原理:通过packageName创建applicationContext来获取到apk的xml文本,遍历xml查找data属性为android_secret_code的记录。

关于什么是secretcode,请看链接:Android Secret Code

 

       sflagbinaries:    查找具有suid/sguid的二进制

find %s -type f ( -perm -04000 -o -perm -02000 ) -exec ls {};

那查找这个suid/sgid有什么用的,SUID,SGID,StickyBit详解。Suid/sgid在运行时以root来操作,android中用于手机root。

 

       writablefiles:    列出目录下可写的文件

find %s ( -type b -o -type c -o -type f -o -type s ) -perm-o=w -exec ls {} ;

   

    provider:

       finduris:     列出能被我们访问的provider uri

1.首先根据getpackages得到provideruri;2、构造contentResolver去尝试查询uri即可得到能被我们访问的uri。与app.provider.finduri不同之处在于,后者只得到provider的uri而没有去尝试访问,故不能分辨provider可否被injection。


       injection:     可被SQL injection的provider;实质是contentResolver.query

 

       sqltables:    列出provider中可被访问的表,并输出列名

在上面finduri的基础上,再去query “* from sqlite_master—“

 

       traversal:     遍历provider找出有Vulnerable;实质contentResolver.read

 

 

参考:

    1.Android getprop 读取的属性哪里来的?

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/vendanner/p/4784379.html