CN107330332A - 一种针对安卓手机app的漏洞检测方法 - Google Patents

一种针对安卓手机app的漏洞检测方法 Download PDF

Info

Publication number
CN107330332A
CN107330332A CN201710369224.3A CN201710369224A CN107330332A CN 107330332 A CN107330332 A CN 107330332A CN 201710369224 A CN201710369224 A CN 201710369224A CN 107330332 A CN107330332 A CN 107330332A
Authority
CN
China
Prior art keywords
detection
app
android
static
dynamic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710369224.3A
Other languages
English (en)
Inventor
甘刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Union Cloud Security Technology Co Ltd
Original Assignee
Chengdu Union Cloud Security Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Union Cloud Security Technology Co Ltd filed Critical Chengdu Union Cloud Security Technology Co Ltd
Priority to CN201710369224.3A priority Critical patent/CN107330332A/zh
Publication of CN107330332A publication Critical patent/CN107330332A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种针对安卓手机APP的漏洞检测方法,包括以下步骤:在数据库中预置已检测过安卓APP的指纹信息记录及其静态检测报告和动态监测报告;用户通过检测程序的web界面提交待检测安卓APP;检测程序通过任务管理者生成和提交待检测安卓APP的指纹信息;检测程序逐一将该指纹信息与数据库中安卓APP的指纹信息记录作比对,如果找到记录,则直接返回该安卓APP的静态检测报告及动态检查报告,本次检测结束;如果未找到记录,继续下步工作;任务管理者依次启动静态检测引擎和动态检测引擎;根据报告模板分别生成静态和动态检测报告,并向用户展示;任务管理者将上步生成的静态和动态检测报告存档,至此,一次完整的检测任务完成。

Description

一种针对安卓手机APP的漏洞检测方法
技术领域
本发明属于安卓应用安全防护领域,尤其涉及一种漏洞检测方法。
背景技术
安卓(Android)***作为自由及开放源代码的操作***,近几年大量使用在智能设备,如智能手机和平板电脑上。随之而来的是各种针对安卓应用的漏洞也如雨后春笋般膨胀起来,应用程序存在漏洞可能会被各种病毒木马利用,从而遭受网银被盗、被监听监视、无端扣费、隐私泄露、成为病毒传播源等诸多损害。因此,及早发现安卓APP的漏洞对安卓设备的整体安全非常重要。另一方面,目前安卓APP的种类数量非常巨大,如果使用人工手动检测,必然耗费大量人力物力,几乎是不可完成的任务,因此,自动化检测十分必要。
幸运的是,目前完成安卓APP漏洞检测的基础技术已经成熟。Python并行分布式框架Celery已广泛使用在各种分布式应用中,并经受了实践考验,可以稳定的承担检测任务管理的重任;Golang语言原生支持并行化,并具有垃圾回收功能,部署依赖少,***兼容性好,执行效率高,可轻松解决某些检测环节,检测时间长的难题;Virtualbox、Docker等开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口,这些特性可以方便的实现安卓动态检测虚拟机的管理维护;自动测试技术可以自动化的遍历被测试应用的各个界面,并可自动执行点击按钮等操作,这为安卓APP动态检测中自动化测试提供了有力工具;Django Web应用快速开发框架具有友好的人机交互界面,为二次开发提供了优秀便捷的开发工具。
现有技术中,针对安卓应用的漏洞检测只要有以下几种:a.仅仅基于安卓应用静态特征的检测;b.仅仅基于安卓应用动态行为的检测;c.静态特征检测和动态行为检测的简单组合。
现有技术仅仅基于安卓应用静态特征的检测方案中,静态检测使用串行操作完成,检测速度慢,多任务成本高,无动态行为检测的缺点。现有技术仅仅基于安卓应用动态行为的检测方案中,缺少静态特征检测,对APP的漏洞检测不够全面。现有技术静态特征检测和动态行为检测的简单组合的方案中,存在静态检测速度慢,多任务检测资源占用大,用户操作体验不佳,部署方式单一等缺点。
发明内容
本发明的目的在于:提供一种针对安卓手机APP的漏洞检测方法,以解决现有技术中静态检测效率低、检测内容不全面和用户操作体验不佳的技术问题,弥补了现有方案的不足。
本发明采用的技术方案如下:
一种针对安卓手机APP的漏洞检测方法,其特征在于,包括以下步骤:
步骤一:在数据库中预置已检测过安卓APP的指纹信息记录及其静态检测报告和动态监测报告;
步骤二:用户通过检测程序的web界面提交待检测安卓APP;
步骤三:检测程序通过任务管理者生成和提交待检测安卓APP的指纹信息;
步骤四:检测程序逐一将该指纹信息与数据库中安卓APP的指纹信息记录作比对,如果找到记录(说明已经检测过),则直接返回该安卓APP的静态检测报告及动态检查报告(即直接从数据库中匹配、提取),本次检测结束;如果未找到记录,继续下步工作;
步骤五:任务管理者启动静态检测引擎,静态检测引擎将静态检测子任务分配给并行分布式运行的检测任务单元;由并行分布式运行的静态检测子任务执行单元执行各个检测任务单元的静态检测子任务,将检测结果报告静态检测引擎;静态检测引擎根据报告模板生成该安卓APP的静态检测报告,并向用户展示该静态检测报告,静态检测完成;
步骤六:任务管理者将静态检测报告存档,并启动动态检测引擎;
步骤七:动态检测引擎分配并启动检测容器,待检测容器启动成功后,自动将待检测安卓APP安装到检测容器内的安卓***上;
步骤八:动态检测引擎启动待检测的安卓APP,检测容器自动遍历该安卓APP的各个界面,自动执行各种输入,驱动程序执行,检测其执行过程和结果,发现和记录安卓APP的漏洞,并向动态检测引擎报告结果;
步骤九:动态检测引擎关闭检测容器的安卓***,回收检测容器,根据报告模板生成动态检测报告,并向用户展示该动态检测报告,动态检测完成;
步骤十:任务管理者将动态检测报告存档,至此,一次完整的检测任务完成。
进一步的,静态检测子任务包括APP脱壳、反编译APP、权限检测、广播检测、敏感数据检测、Internet通信检测、危险API调用检测和弱加密检测。
进一步的,静态检测子任务还包括压力测试。
进一步的,反编译APP采用的方式包括:
(1).获取apk包的包名和类名,反编译出Java源代码;
(2).以及将apk包反编译后加在自己前面,并修改参数。
进一步的,广播检测的实现流程包括:
A.广播接收者通过Binder机制向AMS进行注册;
B.广播发送者通过Binder机制向AMS发送广播;
C.AMS查找符合相应条件的广播接收者,将广播发送到广播接收者相应的消息循环队列中;
D.消息循环执行拿到此广播,回调广播接收者中的onReceive()方法。
进一步的,检测容器为VirtalBox或Docker。
进一步的,步骤四中,采用静态检测技术将待检测安卓APP的指纹信息与数据库中安卓APP的指纹信息记录作比对。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明在数据库中预置已检测过安卓APP的指纹信息记录方法,再通过检测程序提交待检测安卓APP的指纹信息,并将之逐一与预置的安卓APP的指纹信息进行比对,这样一来,若该待检测安卓APP的指纹信息已经存在,则可立即调出该安卓APP的静态检测报告和动态监测报告,解决了不能快速地检测APP漏洞情况的问题;而本发明采用将静态检测子任务分配给并行分布式运行的检测任务单元,由并行分布式运行的静态检测子任务执行单元执行各个检测任务单元的静态检测子任务,将检测结果报告静态检测引擎,最后生成静态检测报告,这一系列的静态检测方式有别于一般的静态检测,加快了静态检测效率,解决了现有技术中静态检测效率低的技术问题;而且本发明同时结合了静态检测和动态检测,能够从不同角度对安卓APP进行检测,解决了现有技术中检测内容不全面的技术问题;通过快速检测,加快静态检测效率和提升检测的全面性等方式,解决了用户操作体验不佳的技术问题,弥补了现有方案的不足。
本发明使用静态检测技术,把数据库中的安卓APP指纹信息与待检测的安卓APP进行匹配,使用的时候数据匹配技术,主要是通过获取到待检测安卓APP唯一的签名信息后与数据库的中已经存在的指纹信息即签名信息进行逐一匹配,如果匹配到则说明待检测的安卓APP在我们的数据库中,可以直接提取该安卓APP的信息生成报告,解决了检测APP耗时过快的问题。
附图说明
图1一种针对安卓手机APP的漏洞检测方法流程图;
图2一种针对安卓APP漏洞检测方法的模块图。
具体实施方式
本说明书中公开的所有特征,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
下面结合图1~图2对本发明作详细说明。
本发明提供的方法具有操作***兼容性好、检测效率高、稳定性强、检测内容全面、二次开发门槛低、***维护工作量少,以及可方便地应用于APP漏洞检测平台建设或独立检测终端集成等优点。
一种针对安卓手机APP的漏洞检测方法,包括以下步骤:
步骤一:在数据库中预置已检测过安卓APP的指纹信息记录及其静态检测报告和动态监测报告;
步骤二:用户通过检测程序的web界面提交待检测安卓APP;
步骤三:检测程序通过任务管理者生成和提交待检测安卓APP的指纹信息;
步骤四:检测程序逐一将该指纹信息(即待检测安卓APP的指纹信息)与数据库中安卓APP的指纹信息记录作比对(匹配),如果找到记录,则直接返回该安卓APP的静态检测报告及动态检查报告,本次检测结束;如果未找到记录,继续下步工作;
步骤五:任务管理者启动静态检测引擎,静态检测引擎生成具体的静态检测子任务;同时,静态检测引擎生成并行分布式运行的检测任务单元,并将静态检测子任务分配给检测任务单元;静态检测引擎生成并行分布式运行的静态检测子任务执行单元,静态检测子任务执行单元将静态检测子任务的检测结果报告静态检测引擎;静态检测引擎收集整合各个静态检测子任务的检测结果,根据报告模板生成该安卓APP的静态检测报告,并向用户展示该静态检测报告,静态检测完成;
步骤六:任务管理者将静态检测报告存档,并启动动态检测引擎;
步骤七:动态检测引擎分配并启动检测容器,待检测容器启动成功后,自动将待检测安卓APP安装到检测容器内的安卓***上;
步骤八:动态检测引擎启动待检测的安卓APP,检测容器自动遍历该安卓APP的各个界面,自动执行输入、驱动程序,检测其执行过程和结果,发现并记录安卓APP的漏洞,并向动态检测引擎报告结果;
步骤九:动态检测引擎关闭检测容器的安卓***,回收检测容器等虚拟资源,根据报告模板生成动态检测报告,并向用户展示该动态检测报告,动态检测完成;
步骤十:任务管理者将上步生成的动态检测报告存档,至此,一次完整的检测任务完成。
静态检测子任务包括脱壳、反编译、权限分析检测、Activity事件检测、Receiver事件检测、intent事件监测、sql注入事件检测、敏感数据泄漏检测。
静态检测引擎使用Celery进行并行分布式的检测任务管理,每个静态检测子任务为Celery的一个独立worker,各个worker并发执行,协同合作,共同完成整个静态检测子任务。
动态检测引擎使用VirtalBox或Docker等虚拟化容器(检测容器)完成动态检测沙盒的部署,使用自动化测试技术实现APP UI的自动遍历各个界面、自动执行输入,从而自动地完成APP的动态漏洞检测任务。
本发明中的安卓APP,主要指运行于安卓操作***上的各类应用程序。运行安卓操作***的设备包括智能手机、平板、智能手表等等。
本发明具有以下特点:
所述方法中,检测对象只适用于安卓APP,不适用于windows、ios等应用的漏洞检查;
所述方法中,检测生成的报告既包含静态检测报告,又包含动态检测报告,并且报告的样式支持定制。
所述方法中,在数据库中预置安卓APP的指纹信息记录方法,安卓APP的指纹信息是指APP程序的签名,也就相当于APP程序的身份识别代码。APP程序签名用于程序编译打包后,手机在运行APP程序之前就会先去验证程序的签名(也可以看作是MD5)是否合法,只有通过了验证的文件才会被运行,所以签名的作用是让文件通过手机的验证合法,不同干的手机、***是对应不同的签名的。在此处由于每个APP有唯一识别的签名,可以通过签名来识别每个APP的身份因此相当于人类的指纹信息,把APP的签名信息存入数据库中便于在后面对APP检测时进行匹配。
所述的上传待检测APP的web界面,其特征在于可以提供一个上传待检测APP的界面。
所述的把数据库中的APP指纹信息与待检测的APP进行匹配,使用的时候数据匹配技术,主要是通过获取到待检测APP唯一的签名信息后与数据库的中已经存在的指纹信息即签名信息进行逐一匹配,如果匹配到则说明待检测的APP在我们的数据库中,可以直接提取该APP的信息生成报告。
所述如果没有在数据库中找到可以匹配的APP指纹,则进行静态检测。静态检测过程主要为:
(1)APP脱壳,采用Dalvik解释器实现,并分析DexHunter实现。解释器是Dalvik虚拟机的执行引擎,主要负责执行Dalvik字节编码。在字节码加载完毕后,Dalvik虚拟机挑用解释器开始取指解释字节码,解释器跳转到解释程序处执行。
在外部函数调用解释器以后,解释器执行的主要流程有以下几个步骤。
A.初始化解释器执行环境;
B.根据***参数,选择使用portable解释器;
C.跳转到相应解释器执行;
D.取指及指令检查;
E.执行字节码对应程序段。
(2)反编译APP,主要是使用两个工具来完成对待检测APP进行反编译,来完成后面的静态检测过程。一个是获取apk包的包名和类名的工具,反编译出Java源代码,一个是将一个apk包反编译然后加入自己的前面,修改一些参数便于更好的用于自动化测试的APPtools。
A.获取到apk后在程序中把后缀名改为zip;
B.打开文件夹找到classes.dex文件,并把他复制到dex2jar文件夹下面,在cmd命令中执行dex2jar.bat classes.dex命令,得到classes_dex2jar文件;
C.打开jd-gui,选择open file找到反编译文件classes_dex2jar.jar,就可以得到包名和类名;
D.反编译命令:APPtool.bat-d-o E:/test/test.apk。反编译test.apk文件到E:test目录下。回编译命令:APPtool.bat-b-o E:/test/test1.apk回编译E:/test目录下文件为test1.apk;
反编译完之后是根据smaile修改底层源码。res是apk相关资源,重新打包之后签名还是原来的,对于自动化来说是不可以的,所以还需要重新签名。
E.重新签名:用eclipse生成一个签名文件debug.keystore。也可以自己生成一个签名,命令如下:keytool-genkey-v-keystore debug.keystore-alias androiddebugkey-keyalg RSA-validity 10000。按照上面步骤中,然后删除MANIFEST文件夹;
查看精简信息apkhelper;
查看签名信息keytool-list-v-keystore apkname。
(3)权限检测,在反编译后判断该应用是否具有被深入检测的各项权限。首先是获取该APP的权限清单,得到相应的PackageInfo,所有的权限就在requestPermission。
(4)广播检测,检测该APP发送了哪些广播。采用Android技术自定义广播接收器,其中需要继承基类BroadcastReceiver。具体的实现流程为:
A.广播接收者BroadcastReceiver通过Binder机制向AMS(Activity ManagerService)进行注册;
B.广播发送者通过binder机制向AMS发送广播;
C.AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中;
D.消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。
(5)敏感数据检测,根据安卓的漏洞检测方法,通过查看APP是否通过安卓的漏洞获取本地敏感数据。对于数字证书和https通信代码的相关原理,漏洞形式主要存在以下三种:
A.自定义X509TrustManager。使用HttpsURLConnection发起HTTPS请求的时候,提供一个自定义的X509TrustManager,实现安全校验逻辑。通过使用以上方法来提供自定义的X509TrustManager。
B.自定义HostnameVerifier。在握手期间,如果URL的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。如果回调内实现不恰当,默认接受所有域名,则有安全风险。
C.信任所有主机名。
针对这些问题我们采用以下方法进行检测:
A.首先不论是权威机构颁发的证书还是自签名的,打包一份到应用内部,比如存放在资产里面,通过这份内置的证书初始化一个KeyStore,然后用这个KeyStore去引导生成的TrustManager来提供验证。
B.如果用上述同样的代码访问https://www.taobao.com/或者https://www.***.com/,则会抛出那个SSLHandshakeException异常,也就是说对于特定证书生成的TrustManager,只能验证与特定服务器建立安全链接,这样就提高了安全性。如此之前提到的,对于非浏览器APP来说,这是可以接受的。
C.打包一份到证书到应用程序内部,不但通过KeyStore去引导生成的TrustManager,而是干脆直接自定义一个TrustManager,自己实现校验逻辑;校验逻辑主要包括:服务器证书是否过期、证书签名是否合法。
D.连接失败自定义HostnameVerifier,简单的话就是根据域名进行字符串匹配校验;业务复杂的话,还可以结合配置中心,白名单,黑名单,正等匹配等多级别动态校验;总体来说逻辑还是比较简单的,反正只要正确地实现那个方法。主机名验证策略改成严格模式。
(6)Internet通信检测,通常Android网络通信有六种方法,在检测APP漏洞是通常会检测该APP是否会改变网络的通信方式。
A.针对TCP/IP socket、SeverSocket的形式。
B.针对UDP的DatagramSocket、DatagramPackage。对于UDP服务端,首先启动侦听服务,然后得到数据包进行处理,组后根据获得数据包进行反馈。
(7)危险API调用检测。如果在APP中检测到有潜在危险的Request.Path时的解决方案:
A.如果仅仅只是转换页面,传参时出现的问题,可对数据加密。
B.如果是对数据库数据进行操作时出现此问题,第一、可以在存入数据库中之前加入字符过滤功能(具体实现方法百度一下,你就知道)。第二、也可以用JS加判断:
C.如果不是前两种问题那么最直接简单的方法就是取消微软对其特殊字符的验证了。
D.出现这个问题,一般是由于.Net Framework使用了4.0版本造成的。从.NetFramework 4.0开始,ASP.NET开始强制检测Request参数安全。
(8)弱加密检测:安卓APP中造成弱加密的原因有很多,主要是使用了弱加密算法,因此加密算法中存在漏洞。使用弱密码算法实现加解密。
上述过程的进一步说明如下:
(1)采用构造控制流图技术,另外结合一些静态污点分析或数据流分析的技术以提高检测的准确率。检测程序通过对Android应用程序反编译后的Dalvik字节码建立控制流图来确定可能的执行路径,然后采用数据流分析技术对以上结果作进一步精简得到可能触发权限泄露的路径集。
(2)检测程序反编译后的Java源代码静态分析,从Manifest文件中提取疑似权限泄露的Android组件列表,然后从每个组件对应的Java程序入口开始构造CFG,同时结合静态污点分析技术,定位导致权限泄露的***调用点。
(3)通过安卓APP中的隐私泄露与数据污染漏洞,对反编译后的Java源代码进行静态分析,生成函数调用图和程序控制流图,SQLite数据库操作函数的程序执行流,确定出存在漏洞的应用。
(4)通过分析待检测安卓APP的Content Provider接口特征,判断其是否可能存在隐私泄露漏洞;如果可能存在,针对可能存在隐私泄露漏洞的待检测安卓APP,通过对Android***中相关API函数的监控,对待检测安卓APP的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据泄露安全风险。
动态检测的进一步描述:
(1)网络包嗅探:使用tcpdump来实现抓取APP上的数据包再进行分析。
(2)解密HTTPS流量:
A.Man-in-the-middle(中间人,简称为MITM),能够与网络通讯两端分别创建连接,交换其收到的数据,使得通讯两端都认为自己直接与对方对话,事实上整个会话都被中间人所控制。简而言之,在真正的服务端看来,中间人是客户端;而真正的客户端会认为中间人是服务端。
B.Wireshark的抓包原理是直接读取并分析网卡数据。TLS握手阶段需要进行密钥交换和服务端认证这两个重要的操作,密钥交换是为了在不安全数据通道中产生一个只有通信双方知道的共享密钥Premaster Secret,进而生成Master Secret以及后续对称加密Session Key和MAC Key。而客户端进行服务端认证的目的是确保连接到拥有网站私钥的合法服务器。
这种方式合并了密钥交换和服务端认证两个步骤,如果服务端能解密PremasterSecret,也就意味着服务端拥有正确的私钥。中间人没有私钥,无法得到PremasterSecret,也就无法解密后续流量。
所述方法中,任务管理者负责检测任务的接收和执行,以及检测结果的展示入库等管理工作,同时支持检测任务的历史存档,可以方便的达到“秒检”效果。
所述方法中,静态检测中将一个APP按照检测环节,分解为多个子任务,各个子任务可分布式并发执行;
所述方法中,动态检测中支持虚拟化容器管理,自动分配、启动、停止检测容器,支持APP界面的自动遍历,自动点击等操作;
所述方法中,支持检测报告入库存档。
所述方法中,提供了友好的人机界面,大大降低了使用者的操作难度。
本发明方法提供了一种针对安卓手机APP的漏洞检测方法,该方法操作***兼容性好,检测效率高,稳定性强,检测内容全面,二次开发门槛低,***维护工作量少,可方便地应用于APP漏洞检测平台建设或独立检测终端的集成。
通过以上实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可以借助Celery,Golang,Virtalbox等成熟技术通过二次开发的方式来实现。虽然通过实施例描述了本发明,但本领域的技术人员知道,本发明有很多变形或变化而不能脱离本发明的精神,一样受本发明的权利要求保护。本发明未详细阐述的部分属于本领域公知技术,本领域技术人员根据已有的描述已能够在不付出创造性劳动的前提下进行实施,因此,不再赘述。

Claims (7)

1.一种针对安卓手机APP的漏洞检测方法,其特征在于,包括以下步骤:
步骤一:在数据库中预置已检测过安卓APP的指纹信息记录及其静态检测报告和动态监测报告;
步骤二:用户通过检测程序的web界面提交待检测安卓APP;
步骤三:检测程序通过任务管理者生成和提交待检测安卓APP的指纹信息;
步骤四:检测程序逐一将该指纹信息与数据库中安卓APP的指纹信息记录作比对,如果找到记录,则直接返回该安卓APP的静态检测报告及动态检查报告,本次检测结束;如果未找到记录,继续下步工作;
步骤五:任务管理者启动静态检测引擎,静态检测引擎将静态检测子任务分配给并行分布式运行的检测任务单元;由并行分布式运行的静态检测子任务执行单元执行各个检测任务单元的静态检测子任务,将检测结果报告静态检测引擎;静态检测引擎根据报告模板生成该安卓APP的静态检测报告,并向用户展示该静态检测报告,静态检测完成;
步骤六:任务管理者将静态检测报告存档,并启动动态检测引擎;
步骤七:动态检测引擎分配并启动检测容器,待检测容器启动成功后,自动将待检测安卓APP安装到检测容器内的安卓***上;
步骤八:动态检测引擎启动待检测的安卓APP,检测容器自动遍历该安卓APP的各个界面,自动执行各种输入,驱动程序执行,检测其执行过程和结果,发现和记录安卓APP的漏洞,并向动态检测引擎报告结果;
步骤九:动态检测引擎关闭检测容器的安卓***,回收检测容器,根据报告模板生成动态检测报告,并向用户展示该动态检测报告,动态检测完成;
步骤十:任务管理者将动态检测报告存档,至此,一次完整的检测任务完成。
2.如权利要求1所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,静态检测子任务包括APP脱壳、反编译APP、权限检测、广播检测、敏感数据检测、Internet通信检测、危险API调用检测和弱加密检测。
3.如权利要求2所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,静态检测子任务还包括压力测试。
4.如权利要求2所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,反编译APP采用的方式包括:
(1).获取apk包的包名和类名,反编译出Java源代码;
(2).以及将apk包反编译后加在自己前面,并修改参数。
5.如权利要求2所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,广播检测的实现流程包括:
A.广播接收者通过Binder机制向AMS进行注册;
B.广播发送者通过Binder机制向AMS发送广播;
C.AMS查找符合相应条件的广播接收者,将广播发送到广播接收者相应的消息循环队列中;
D.消息循环执行拿到此广播,回调广播接收者中的onReceive()方法。
6.如权利要求1所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,检测容器为VirtalBox或Docker。
7.如权利要求1所述的一种针对安卓手机APP的漏洞检测方法,其特征在于,步骤四中,采用静态检测技术将待检测安卓APP的指纹信息与数据库中安卓APP的指纹信息记录作比对。
CN201710369224.3A 2017-05-23 2017-05-23 一种针对安卓手机app的漏洞检测方法 Pending CN107330332A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710369224.3A CN107330332A (zh) 2017-05-23 2017-05-23 一种针对安卓手机app的漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710369224.3A CN107330332A (zh) 2017-05-23 2017-05-23 一种针对安卓手机app的漏洞检测方法

Publications (1)

Publication Number Publication Date
CN107330332A true CN107330332A (zh) 2017-11-07

Family

ID=60192656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710369224.3A Pending CN107330332A (zh) 2017-05-23 2017-05-23 一种针对安卓手机app的漏洞检测方法

Country Status (1)

Country Link
CN (1) CN107330332A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108154035A (zh) * 2017-12-21 2018-06-12 杭州安恒信息技术有限公司 大规模网站漏洞扫描方法、装置及电子设备
CN109063490A (zh) * 2018-08-31 2018-12-21 北京梆梆安全科技有限公司 一种检测主机名漏洞的方法、装置及设备
CN109740351A (zh) * 2018-12-28 2019-05-10 广东电网有限责任公司 一种嵌入式固件的漏洞检测方法、装置及设备
CN109784060A (zh) * 2018-12-12 2019-05-21 平安科技(深圳)有限公司 漏洞管理报告生成方法、装置及存储介质、服务器
CN110096380A (zh) * 2019-05-08 2019-08-06 苏州浪潮智能科技有限公司 Android内部通讯方法、***、装置及存储介质
CN111177715A (zh) * 2018-11-12 2020-05-19 中移(杭州)信息技术有限公司 一种移动App漏洞检测方法及装置
CN111984963A (zh) * 2020-07-31 2020-11-24 厦门安胜网络科技有限公司 绕过自签证书校验的方法和装置
CN112733138A (zh) * 2020-12-25 2021-04-30 北京中微云安信息科技有限公司 视听app安全及业务合规自动检测***、方法及介质
CN116418518A (zh) * 2023-04-11 2023-07-11 沈阳云盛互联网服务有限公司 一种基于云计算的数据入侵防护方法及***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930210A (zh) * 2012-10-14 2013-02-13 江苏金陵科技集团公司 恶意程序行为自动化分析、检测与分类***及方法
CN103685251A (zh) * 2013-12-04 2014-03-26 电子科技大学 一种面向移动互联网的Android恶意软件检测平台
US20150163237A1 (en) * 2013-12-11 2015-06-11 International Business Machines Corporation Testing web applications for security vulnerabilities with metarequests
CN105187394A (zh) * 2015-08-10 2015-12-23 济南大学 具有移动终端恶意软件行为检测能力的代理服务器及方法
CN105791250A (zh) * 2014-12-26 2016-07-20 北京奇虎科技有限公司 应用程序检测方法及装置
CN106155880A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种基于策略的自动化程序分析***和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930210A (zh) * 2012-10-14 2013-02-13 江苏金陵科技集团公司 恶意程序行为自动化分析、检测与分类***及方法
CN103685251A (zh) * 2013-12-04 2014-03-26 电子科技大学 一种面向移动互联网的Android恶意软件检测平台
US20150163237A1 (en) * 2013-12-11 2015-06-11 International Business Machines Corporation Testing web applications for security vulnerabilities with metarequests
CN105791250A (zh) * 2014-12-26 2016-07-20 北京奇虎科技有限公司 应用程序检测方法及装置
CN106155880A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种基于策略的自动化程序分析***和方法
CN105187394A (zh) * 2015-08-10 2015-12-23 济南大学 具有移动终端恶意软件行为检测能力的代理服务器及方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108154035A (zh) * 2017-12-21 2018-06-12 杭州安恒信息技术有限公司 大规模网站漏洞扫描方法、装置及电子设备
CN108154035B (zh) * 2017-12-21 2021-01-26 杭州安恒信息技术股份有限公司 大规模网站漏洞扫描方法、装置及电子设备
CN109063490A (zh) * 2018-08-31 2018-12-21 北京梆梆安全科技有限公司 一种检测主机名漏洞的方法、装置及设备
CN111177715A (zh) * 2018-11-12 2020-05-19 中移(杭州)信息技术有限公司 一种移动App漏洞检测方法及装置
CN109784060A (zh) * 2018-12-12 2019-05-21 平安科技(深圳)有限公司 漏洞管理报告生成方法、装置及存储介质、服务器
CN109740351A (zh) * 2018-12-28 2019-05-10 广东电网有限责任公司 一种嵌入式固件的漏洞检测方法、装置及设备
CN110096380A (zh) * 2019-05-08 2019-08-06 苏州浪潮智能科技有限公司 Android内部通讯方法、***、装置及存储介质
CN111984963A (zh) * 2020-07-31 2020-11-24 厦门安胜网络科技有限公司 绕过自签证书校验的方法和装置
CN111984963B (zh) * 2020-07-31 2022-05-20 厦门安胜网络科技有限公司 绕过自签证书校验的方法和装置
CN112733138A (zh) * 2020-12-25 2021-04-30 北京中微云安信息科技有限公司 视听app安全及业务合规自动检测***、方法及介质
CN116418518A (zh) * 2023-04-11 2023-07-11 沈阳云盛互联网服务有限公司 一种基于云计算的数据入侵防护方法及***
CN116418518B (zh) * 2023-04-11 2024-01-19 上海瑞玑计算机科技有限公司 一种基于云计算的数据入侵防护方法及***

Similar Documents

Publication Publication Date Title
CN107330332A (zh) 一种针对安卓手机app的漏洞检测方法
Wang et al. Looking from the mirror: Evaluating {IoT} device security through mobile companion apps
Potharaju et al. Plagiarizing smartphone applications: attack strategies and defense techniques
He et al. Vetting SSL usage in applications with SSLINT
Schmidt et al. Enhancing security of linux-based android devices
Lee et al. A sealant for inter-app security holes in android
CN104221024B (zh) 统一扫描引擎
CN103716785B (zh) 一种移动互联网安全服务***
Liu et al. On manually reverse engineering communication protocols of linux-based iot systems
CN108769071A (zh) 攻击信息处理方法、装置和物联网蜜罐***
Casola et al. Security monitoring in the cloud: an SLA-based approach
Johari et al. Penetration testing in IoT network
LaBarge et al. Cloud penetration testing
Aldribi et al. Data sources and datasets for cloud intrusion detection modeling and evaluation
Li et al. Securing serverless computing: Challenges, solutions, and opportunities
Dalezios et al. Digital forensics cloud log unification: Implementing CADF in Apache CloudStack
Tang et al. Ssldetecter: detecting SSL security vulnerabilities of android applications based on a novel automatic traversal method
Pistoia et al. Labyrinth: Visually configurable data-leakage detection in mobile applications
Larrucea et al. Assessing source code vulnerabilities in a cloud‐based system for health systems: OpenNCP
Putra et al. Infrastructure as code for security automation and network infrastructure monitoring
Wen et al. An empirical study of sdk credential misuse in ios apps
GLAVAN et al. Multi-access edge computing analysis of risks and security measures
Londoño et al. SafeCandy: System for security, analysis and validation in Android
Horcas et al. An approach for deploying and monitoring dynamic security policies
Park et al. A-pot: a comprehensive android analysis platform based on container technology

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171107