基于模拟器的安卓应用服务端Web漏洞检测方法与流程

文档序号:12752785阅读:981来源:国知局

本发明涉及采用安卓模拟器对安卓应用的模拟操作、ADB命令操作、漏洞检测等领域,具体涉及一种基于模拟器的安卓应用服务端Web漏洞检测方法。



背景技术:

不同的安卓APP提供不同的功能,促进移动互联网的发展,让我们生活更便捷,但APP的广泛使用及它本身存在的漏洞同样对我们移动生活、隐私安全带来了威胁。APP替代网站以客户端的方式实现我们日常通过访问Web应用的方式获取的服务,实际它的后端也与服务端进行通信,以进行数据的传输。

在传统的对APP服务端请求的安全检测中,多数采用静态分析的方式,通过逆向APP进行以获取APP的源码,主要包含APP的脱壳、逆向,然后通过正则匹配、代码静态分析跟踪等方式发现APP里做的不同请求,提取请求的URL进行单独的检测。传统的静态检测需要先对APP进行逆向以获取APP源码才能进行下一步,而大多重要的APP都会对APP进行加固、加壳,这就导致了APP有时无法逆向而得到源码,或者是逆向难度太高,如果因为技术不到位等情况,就无法获取源码,也就无从进行下一步的检测。逆向成功后,需要进行静态的代码审核和分析,提取APP中所有对服务端的请求,这需要大量的经验和精力投入,耗时耗力。

除此之外,在很多APP里,对于服务端的请求的URL都是通过参数的拼接的方式,需要跟踪代码的走向去获取对应参数的值才能完成对URL的拼接,甚至于一些参数是根据实际运行环境而进行动态读取的,无法通过跟踪代码而获取,这就导致了提取的请求可能是不完整的,造成检测效果有问题。有些APP会包含一些无效URL,实际这些URL并没有被APP请求,采用传统的方式可能也会提取到这些服务端URL,而花费检测资源去检测,造成检测资源的浪费。

安卓模拟器:是一个可以运行在电脑上的虚拟设备。Android模拟器可以不需使用物理设备即可预览、开发和测试Android应用程序。

ADB:全称为Android Debug Bridge,起到调试桥的作用。通过ADB,可以在Eclipse中方便通过DDMS来调试Android程序。

APK:APK是AndroidPackage的缩写,即Android安装包(apk)。



技术实现要素:

本发明所要解决的技术问题是提供一种基于模拟器的安卓应用服务端Web漏洞检测方法,通过模拟器触发模拟操作,以及通过脚本自动化调用ADB进行相关操作,避免人工参与,也能实现漏洞检测。

为解决上述技术问题,本发明采用的技术方案是:

一种基于模拟器的安卓应用服务端Web漏洞检测方法,包括以下步骤:

步骤1:启动漏洞检测代理模块,启动安卓模拟器并配置网络;

步骤2:编写APK Monitor模块,连接安卓模拟器并监控目录,所述APK Monitor模块使用Python脚本,对指定目录进行新增文件监控;

步骤3:通过Python脚本将批量或单个的安卓应用安装文件,即APK文件下载到指定目录;

步骤4:APK Monitor监控到目录下的APK文件,自动通过ADB命令进行安装,并且遍历触发APP的Activity来执行APP的功能;

步骤5:通过漏洞检测代理模块的代理捕获APP对服务端的所有请求;

步骤6:漏洞检测代理模块对捕获的请求进行漏洞检测;

步骤7:APK Monitor在执行完成后卸载APP,再继续监控指定目录;

步骤8:漏洞检测代理模块输出漏洞检测结果。

进一步的,在步骤4中所述的遍历Activity来触发APP的所有功能,具体为:解压APK文件,获得AndroidManifest.xml文件,通过读取该XML文件里节点的内容获取所有的Activity,然后通过ADB执行命令语句进行触发。

进一步的,所述步骤5具体为:先root安卓模拟器,安装具有代理功能的APP,再触发每个Activity过程,如果所触发的Activity对应的功能包含有对服务端的请求,那么都将被代理捕获到。

进一步的,所述安装具有代理功能的APP具体为:采用ProxyDroid或者通过设置WIFI代理设置模拟器的全局网络代理。

进一步的,所述步骤6具体为:采用Burpsuite将捕获的完整的对服务端的网络请求导入扫描器进行漏洞检测。

与现有技术相比,本发明的有益效果是:

1、本发明通过一种简单的方式实现全自动化地检测对安卓APP服务端Web漏洞,同时支持批量检测而无需人工干预,支持自动化地检测某个安卓APP市场的所有APP,从而得出分析统计结果。

2、本发明部署简单,不需要实际购买安卓设备,单台电脑即可实现大批量的检测,成本低廉、部署简单。

3、本发明扬长避短,通过巧妙的架构实现避免了传统APP检测中需要克服的脱壳等技术手段要求极高的处理方式,上手简单。

附图说明

图1是本发明基于模拟器的安卓应用服务端Web漏洞检测方法过程示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。如图1所示,处理流程包括:1)启动漏洞检测代理模块,启动安卓模拟器并配置网络;2)编写APK Monitor模块,连接安卓模拟器并监控目录,所述APK Monitor模块使用Python脚本,对指定目录进行新增文件监控;3)通过Python脚本将批量或单个的安卓应用安装文件,即APK文件下载到指定目录;4)APK Monitor监控到目录下的APK文件,自动通过ADB命令进行安装,并且遍历触发APP的Activity来执行APP的功能;5)通过漏洞检测代理模块的代理捕获APP对服务端的所有请求;6)漏洞检测代理模块对捕获的请求进行漏洞检测;7)APK Monitor在执行完成后卸载APP,再继续监控指定目录;8)漏洞检测代理模块输出漏洞检测结果。

实现APP的安装和卸载

具体是通过ADB命令先Connect模拟器,如“adb connect模拟器ip”,再安装APP,如“adb wait-for-device install apk文件”,再卸载APP,如“adb wait-for-device uninstall pkg包名(pkg包名可以读取AndroidManifest.xml文件获得)”。

遍历Activity来触发APP的所有功能

每个APK文件其实就是一个压缩包,可以直接解压,获得AndroidManifest.xml文件,通过读取该XML文件里节点的内容,获取所有的Activity,通过ADB执行命令语句进行触发(安卓APP开发规范里要求每个APP必须包含该文件,也必须在该文件里注册所有Activity)。如adb wait-for-device shell am start–n pkg_name/activity。

通过设置代理捕获APP所有的服务端请求

先root安卓模拟器,安装相关APP或者通过设置WIFI代理等方式设置模拟器的全局网络代理,然后再触发每个Activity的过程,如果对应的功能包含有对服务端的请求,那么都将被代理捕获到。

实现漏洞检测

采用Burpsuite或者其他扫描器,直接将捕获的完整的对服务端的网络请求导入扫描器进行漏洞检测,其中以支持命令调用执行任务的扫描器为佳,可以实现全自动无人工参与的漏洞检测。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1