CN115766231A - 一种线性可分的安全脆弱点检测方法 - Google Patents
一种线性可分的安全脆弱点检测方法 Download PDFInfo
- Publication number
- CN115766231A CN115766231A CN202211438835.6A CN202211438835A CN115766231A CN 115766231 A CN115766231 A CN 115766231A CN 202211438835 A CN202211438835 A CN 202211438835A CN 115766231 A CN115766231 A CN 115766231A
- Authority
- CN
- China
- Prior art keywords
- class
- classification
- feature
- samples
- detection
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000004458 analytical method Methods 0.000 claims description 20
- 241000700605 Viruses Species 0.000 claims description 14
- 230000014509 gene expression Effects 0.000 claims description 13
- 238000012549 training Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 5
- 239000013598 vector Substances 0.000 claims description 5
- 238000013459 approach Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 2
- 230000006399 behavior Effects 0.000 abstract description 14
- 238000000605 extraction Methods 0.000 abstract description 6
- 230000005856 abnormality Effects 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000009517 secondary packaging Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种线性可分的安全脆弱点检测方法。在分析系统对象的数据流依赖关系的基础上,提出了一种将程序配置的异常度与相似性结合的恶意代码检测方法。该方法通过针对性的特征提取,可以保证在少量已知样本下得到较理想的准确率,并通过对系统对象间访问行为的数据流依赖关系进行归一化,再通过N类分类的匹配方法将恶意代码和程序配置按线性可分性重构,从而得到移动应用程序脆弱点。
Description
技术领域
本发明涉及信息安全测试技术领域,尤其涉及一种线性可分的安全脆弱点检测方法。
背景技术
随着数字化的快速发展,移动应用大幅度非法黑客组织也试图通过攻击移动应用程序,控制业务系统服务器达到不可告人的目的。黑客攻击行为会在不知不觉的情况下窃取私密信息或者造成服务器宕机、网络瘫痪、信息丢失等损失。
移动应用的配置安全,包括配置文件的安全、应用程序的权限配置安全、程序敏感词、程序代码配置安全、程序发布配置安全等。
移动应用程序配置文件是标准的XML文件,XML标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。
配置文件的按需更改即为开发人员提供了便利,同时也产生了安全隐患,由于配置问题而导致的安全漏洞层出不穷。
程序代码的配置安全多种多样,最常见的是组件安全问题。安卓有四大原生的组建,第一个是Activity,首先是访问权限控制,组建处理不好会导致你的应用被恶意程序进行恶意的页面调用。私有的Activity不应该被其他应用启动,且应该确保相对是安全的,Intent携带的信息尽量不发送敏感信息,并进行数据校验。
程序发布时,还可能出现敏感词和敏感信息未删除、二次打包、测试信息残留、数据任意备份、APK资源可下载任意、明文证书等安全配置问题。
目前国内外的移动应用程序安全检测,主要技术手段是建立在充分的已知样本基础上,通过分析新型样本的行为、指令序列,创建用于标识新型恶意代码的行为规则、特征码。这类方法往往依赖于充分的已知样本集合,即已经确定正常或恶意的程序样本。对于新型恶意代码样本标签的确定,往往首先需要人工手动分析以保证准确性。人工分析耗时长,很难保证短时间内得到所需的充分已知样本集合。面对多种多样的恶意代码和层出不穷的安全漏洞,如何应对当前新型恶意代码快速增长形势是安全检测关键问题。
发明内容
本发明的目的在于提供一种线性可分的安全脆弱点检测方法,在分析系统对象的数据流依赖关系的基础上,提出了一种将程序配置的异常度与相似性结合的恶意代码检测方法。该方法通过针对性的特征提取,可以保证在少量已知样本下得到较理想的准确率,并通过对系统对象间访问行为的数据流依赖关系进行归一化,再通过N类分类的匹配方法将恶意代码和程序配置按线性可分性重构,从而得到移动应用程序脆弱点。
为实现上述目的,本发明的技术方案是:一种线性可分的安全脆弱点检测方法,包括如下步骤:
S1、收集线性可分性安全特征;
S2、基于步骤S1收集的特征进行归一化,采用N类分类的匹配方法进行分类;
S3、基于步骤S2的分类结果,得到移动应用程序安全脆弱点。
在本发明一实施例中,所述线性可分,即:对给定的训练集D,集合中为原始样本的特征向量,为相关联的类标号;在二分类中,每个取二值之一即{+c,—c},表示是否属于这个类。
在本发明一实施例中,所述线性可分性安全特征包括病毒特征、黑白名单、恶意网址库。
在本发明一实施例中,所述步骤S2具体实现如下:
假设线性可分型安全特征集合N(N1,N2,……Nn)有n类,采用N类分类过程,将n类特征分解重构为多个二类特征,然后重构分类器实现多个类别分类;
在训练阶段,从n种类别中任意取出两个构造成二类分类器,共有n(n—1)/2个分类器;
在分类阶段,将数据样本通过这n(n—1)/2个分类器进行分类,定义:
F1:表示精确率和召回率的调和平均,即:n/F1=n(n—1)/2P+n(n—1)/2T;其中,P为精确率,T为召回率;
将样本总体设为N,当前训练集设为T,预测集设为P,预测结果集为P’,则
P′={(a1′,b1′),(a2′,b2′),...,(aN′,bN′)}∈(A×B)N,bi∈B′={+l,-l},i=1,2,...,N
其中,(A×B)是指笛卡尔积运算:设A,B为一个集合,将A中的元素作为第一个元素,B中的元素作为第二个元素,形成有序对;所有这些有序对都由一个称为A和B的笛卡尔积的集合组成,并被记录为A×B;笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X×Y;
假设集合A={a1,a2,...an},集合B={b1,b2,...bn},则两个集合的笛卡尔积为{(a1,b1),(a2,b2),...,(an,bn)};
定义预测错误的样本集合
T′={(a1,b1),(a2,b2),...,(am,bm)},bi≠bi′
m表示的是预测错误的样本,即在样本总体N里面定义预测错误的样本集合;
每次将样本按线性可分性分析判断为某一类,最终得到的判决次数最多的那一类为样本数据的最终分类结果。
在本发明一实施例中,步骤S2中,特征的归一化方式为:
特征数据分为两类:第一类表示某种特征是否出现,第二类的特征值属于连续变量;
对于第一类特征,此类特征特征值为{0,1},其0表示该特征在应用中没有出现,1则表示在应用文件中出现;
对于第二类特征,此类特征值采取的方法是将它们统一缩放变换到区间[0,1]上。
在本发明一实施例中,步骤S3中,移动应用程序指的是Android应用程序,该方法将Android应用程序中AndroidManifest.xml文件和Classes.dex文件作为特征分析对象,基于包括基于MD5校验的检测技术、基于Android数字签名的检测技术、基于正则表达式匹配的检测技术、基于权限分析的检测技术来得到移动应用程序脆弱点。
相较于现有技术,本发明具有以下有益效果:本发明基于线性可分的安全脆弱点检测技术,在分析系统对象的数据流依赖关系的基础上,提出了一种将程序配置的异常度与相似性结合的恶意代码检测方法。该方法通过针对性的特征提取,可以保证在少量已知样本下得到较理想的准确率,并通过对系统对象间访问行为的数据流依赖关系进行归一化,再通过N类分类的匹配方法将恶意代码和程序配置按线性可分性重构,从而得到移动应用程序脆弱点。
具体实施方式
下面,对本发明的技术方案进行具体说明。
本发明一种线性可分的安全脆弱点检测方法,包括如下步骤:
S1、收集线性可分性安全特征;
S2、基于步骤S1收集的特征进行归一化,采用N类分类的匹配方法进行分类;
S3、基于步骤S2的分类结果,得到移动应用程序安全脆弱点。
以下为本发明方法具体实现过程。
1、线性可分的安全脆弱点
1.1、线性可分是指:给定的训练集D,集合中为原始样本的特征向量,为相关联的类标号;在二分类中,每个取二值之一(即{+c,—c}),表示是否属于这个类。那么,我们可以假定这两条直线方程分别是wx+b=c,wx+b=-c。
对于一个待分类类别,为了自己的类别能准确地分类,都希望分类直线到自己的距离大些,当有两类的时候,就会形成相互竞争,最后的竞争结果就是让这条分类直线,满足到中间分类直线的距离相等。
用两条平行直线的距离计算公式如下
那么两个类别集合到分类直线的最近距离如下
这个公式和上面点到直线的距离公式是一样的.对于一条直线,wx+b=c,我们相应的成比例的缩小他们的系数,如变成,这条直线和原来的直线还是同一条直线。现在把它变成,新的直线还是和以前直线是同一条直线,也就是说,对于直线wx+b=c,我们总可以找到另外的一条新的w1=w/c,b1=b/c,使w1*x+b1=1,
1.2、检测方法
线性可分的安全脆弱点的检测方法,根据检测特征的不同,分为以下4种
1)基于MD5校验的检测技术
MD5是一种提取数字指纹的算法标准,对于任意长度的输入都会得到一个长度128bit的输出,MD5具有以下几个特征:
压缩性:任意长度的数据,算出的MD5值长度都是固定的。
容易计算:从原数据计算出MD5值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
所以通过对用户上传的安装包来计算其MD5值,计算结果在恶意软件指纹库中匹配。如果MD5值相同说明这个待测软件就是恶意软件,可以直接从恶意软件库中给出相应的信息及判定结果,不需要再进行后续的检测。
MD5值比对方法是有局限性的,一旦恶意程序做了变形,MD5值就会发生改变,这种方法就失效了。因此MD5值校验的检测方法不是一个适用性很广的检测方法。
2)基于Android数字签名的检测技术
Android中数字签名机制是一种唯一性校验机制,通过数字签名可以获知应用程序开发者信息,也可以判断这个安装程序是否被篡改过。Android数字签名证书格式采用X509标准的版本3。
通过解压安装包可以得到签名文件。通过解析签名文件可以得到数字证书信息,将数字证书信息与恶意样本库进行对比,如果匹配到则认为此待测应用程序为恶意软件。
3)基于正则表达式匹配的检测技术
正则表达式监测技术是通过预设的字符逻辑规则对输入字符串进行逻辑过滤,从而得到符合要求的字符串。通过此方法可以判断某一个字符串是否符合我们的过滤规则,也可通过正则表达式获得特定部分的字符串。
正则表达式有以下这些特点:
灵活性、逻辑性和功能性非常强;
可以用很简单的正则表达式表示复杂的逻辑。
表1是正则表达式的元字符的相关描述。
表1
元字符 | 描述 |
开始位置 | |
S | 结束位置 |
* | 0次或是多次匹配 |
+ | 1次或是多次匹配 |
? | 0次或是1次匹配 |
{n} | 匹配n次 |
{n<sub>f</sub>} | 至少匹配n次 |
{n,m} | 匹配至少n次,至多m次 |
\d | 表示0到9的数字 |
\D | 表示不是数字字符 |
\n | 换行符 |
\t | 制表符 |
\w | 匹配任意字符 |
\W | 匹配任意非单词字符 |
对于隐私的个人信息,如电话号码、邮箱地址、网络域名等,我们可以通过正则表达式进行过滤从而得到这些信息。将正则表达式匹配技术和一些匹配策略结合可以快速准确地判断待测软件的恶意性。
4)基于权限分析的检测技术
Android安全机制中的核心机制是权限机制,Android应用程序都需要在AndroidManifest.xml配置文件中声明自己在运行过程中所需要的权限信息。这些权限信息在一定程度上反映了应用程序的行为模式。通过不同的权限组合可以反映应用程序的一些特定行为。
权限按照其危险程度分为两种不同的类型
4.1)普通权限,这类权限一般不涉及用户隐私,比如手机震动、访问网络等;
4.2)危险权限,一般是涉及到用户隐私的,比如读取SD卡、访问通讯录等。
权限细致划分可以分为4类:normal、dangerous、signature、signatureorSystem。
Android官方文档共定义了130多个权限信息,正常软件和恶意软件在对权限的使用上具有非常明显的区别。应用程序常用的权限有对网络访问和读写文件,恶意程序的一般特征为涉及隐私及危险程度较高的权限,如读取联系人、短信、后台运行、开机自启动、更改wifi等权限。
综上所述权限不仅能够反映软件的行为特征,根据权限特征信息去检测一个软件的恶意性也是监测的一种方法。
2、N类分类的特征关联
本项目采用了N类分类过程,将N类特征分解重构为多个二类特征,然后按一定的策略重构分类器实现多个类别分类。在训练阶段,从这N种类别中任意取出两个构造成二类分类器,共有n(n—1)/2个组合方法。
例如,特征集合有n类:N(N1,N2,……Nn),对特征信息进行相应映射形成特征向量后,还需要根据需要对特征向量中的每一个维度的数值进行标准化处理。本例中的特征数据大致可以分为两类:第一类表示某种特征是否出现。
例如所关注的特征“android.permission.RECEIVE_SMS”权限是否在应用文件中出现,该类特征假定特征值为{0,1},其0表示该特征在应用中没有出现,1则表示在应用文件中出现。第二类的特征值属于连续变量,此类特征值本文采取的方法是将它们统一缩放变换到区间[0,1]上。
定义:
(0,1):FN=0,FP=0,表示所有样本都正确分类;
(1,0):TN=0,TP=0,表示所有样本都分类错误;
(0,0):FP=0,TP=0,表示所有样本都分类为负;
(1,1):TN=0,FN=0,表示左右样本都分类为正;
精确率:P=TP/(TP+FP)
召回率:T=TP/(TP+FN)
其中,精确率表示我现在有了这么的预测为正的样本,那么这些样本中有多少是真的为正。召回率表示我现在预测为正的这些值中,占了所有的正的为正的样本的多大比例。
在分类阶段,将数据样本通过这n(n—1)/2个分类器进行分类,定义
F1:表示精确率和召回率的调和平均。即:N/F1=n(n—1)/2P+n(n—1)/2T
将样本总体设为N,当前训练集设为T,预测集设为P,预测结果集为P’,则
P′={(a1′,b1′),(a2′,b2′),...,(aN′,bN′)}∈(A×B)N,bi∈B′={+l,-l},i=1,2,...,N
定义预测错误的样本集合
T′={(a1,b1),(a2,b2),...,(am,bm)},bi≠bi′
每次将样本按线性可分性分析判断为某一类,最终得到的判决次数最多的那一类为样本数据的最终分类结果。
针对各线性脆弱点,本发明通过对AndroidManifest.xml文件和Classes.dex文件作为特征分析对象。AndroidManifest.xml作为Android应用程序的配置文件,包含了应用程序在运行阶段所用到的组件信息和运行所需要的权限信息。Dex文件作为源文件,包含了所有的代码和API方法等信息。
(1)AndroidManifest.xml文件的特征提取
AndroidManifest相当于Android应用程序的一个配置文件,主要用于定义Android应用程序的组件信息和权限信息,这些信息为判断该应用是否为恶意软件提供依据。下面,我们将对AndroidManifest配置文件进行简单介绍。
<manifes>:由于对命名空间、主程序包名、设备版本号等的定义。
<application>:作用在于声明这个应用程序所包含的组件信息以及其他一些属性。主要的组件有:Activity、Service、Receiver、Intent、Brocast等。其他一些属性包括:应用程序的主题风格,是否允许调试,是否可以切换多任务等。
<uses-permission>:主要用来声明这个应用程序需要声明的一些权限信息。除此之外还有其他一些常用标签。
Acticvity组件的属性信息则通过<activity>描述。一个Activity的属性配置如下所示,第一步定义Activity的名字,也就是实现这个Activity的类名,同时还有一个Activity的label(即软件运行时显示在屏幕右上角的名字)需要定义。除此之外,还有android:excludeFromRecents是否显示在最近打开的应用列表,android:alwaysRetainTaskState是否保留状态不变,android:launchMode指定Activity的加载模式。
Activity有四种加载模式:standard、singleTop、singleTask、singlelnstance。standard模式表示每次跳转都会生成新的activity实例;singleTop表示只有当前Activity在桟顶时才不用生成新的实例;singleTask表示只要当前Activity在栈里就不用生成新的实例;singlelnstance表示这个Activity单独享有一个栈。
Service是四大组件之一,其属性和Activity类似的。虽然两者属于同一级别,但是,service属于后台程序,没有界面,适合运行一些不需要和用户进行交互的程序。
<intent-filter>*priority表示优先级别,范围为-1000~1000,优先级别越高数越大。Action需要制定一个名字属性,经常可以看到名字属性为android.intent.action.MAIN,这表示为这个activity为整个应用程序的入口。category只有android:name属性。如果需要把它指定为第一个启动的activity需要把name属性赋值为:android.intent.category.LAUNCHER。
(2)Classes.dex文件的特征提取
Classes.dex文件格式较难理解,通过Google公司提供的工具可以把dex文件反汇编为Smali文件,更易于做Android的线性特征分析。
Smali语法包含9种基本类型及两种引用类型,9种基本类型如表2所示。
表2 Smali语法的9种基本类型
Smali类型 | 描述 |
V | Void类型,且只能用于返回值 |
Z | Boolean布尔型变量 |
I | Int整型变量 |
D | Double浮点型变量 |
S | Short短整型变量 |
C | 字符型变量 |
J | 长整型变量 |
F | 浮点型变量 |
B | 字节型变量 |
除了类型表示外,方法、字段、数组和对象的表示如表3所示。
表3 Smali基本语法
3、线性检测模块设计
3.1、模块框架
(1)模块包括以下部分:
样本和数据采集部分:收集线性可分型安全特征,包括病毒特征、黑白名单、恶意网址库等。
线性扫描部分:基于特征的核心检测引擎。
(2)线性扫描部分
引擎扫描技术架构
(2.1)核心引擎
此模块是主体模块,负责所有通用功能的实现,启动文件监控模块,记录日志信息,并根据用户的设置启动文件扫描和病毒处理。
核心引擎模块主要包含ForegroundScan以及BackgroundScan两个子类,分别实现前台扫描(用户主动触发)和后台扫描(根据用户设定的时间间隔自动触发)的功能。它们都会调用扫描引擎模块来进行扫描操作。
(2.2)匹配引擎
此模块是实现特征扫描的主要功能模块。此模块由核心引擎触发后将遍历整个运行环境中的文件,并将每个文件交给定位引擎来进行判断,可根据线性特征信誉度和信任文件列表来提高扫描效率。
匹配引擎模块可以继承ScanObserver类,并且通过创建ScanEngine来触发N类分类匹配操作。这样,ScanEngine就可以通过ScanObserver来通知核心引擎匹配结束,发送发现恶意代码、扫描出错等消息。ScanEngine类并不执行具体的扫描操作,它仅是提供给其它模块一个接口。具体的扫描操作由ScanEngine启动的单独的可执行文件Scanner来执行。
(2.3)安全脆弱性定位
此模块负责根据线性特征,N类分类方法等对文件进行判断、匹配确认是否为安全脆弱性。
(2.4)结果处理
此模块提供对扫描后的文件及程序的处理操作,可配置自己需要的处理方式,将可疑文件存入可疑文件库中。
(2.5)处理日志
此模块负责记录扫描结果的日志信息,将此信息存放在数据库中,以待后续处理。
(3)日志处理部分
该模块负责记录日志信息。日志内容包含但不限于发现病毒,对特征库升级,第三方程序访问通讯录,第三方程序发送短信,第三方程序拨打电话,第三方程序获得手机位置信息,第三方程序访问网络等等。
(4)人工分析部分
人工分析部分主要针对可疑文件进行手动分析处理,全面捕捉恶意特征信息,最终判断检测程序是否为恶意软件。如果是恶意软件,则提取恶意特征,进行特征入库和样本归档;如果是安全应用,则提取特征进入白名单库。分析方法包括基于虚拟机的行为监控,并设置相应的触发条件,系统状态监控。
(5)检测管理部分
(5.1)获取检测样本
接收外部服务器提交检测信息或apk文件,接收方式包括单个和批量。下载apk分为自动,手动下载。支持的平台有Symbian、Android、Iphone、BlackBerry、WindowsMobile。
(5.2)扫描任务管理、扫描结果管理
扫描结果报告展示可以按条件及类别查询,条件查询可以按时间,文件名,软件名等查询;类别查询可以按病毒类,恶意代码类,敏感信息、图片类,恶意行为(吸费、窃取隐私、恶意破坏等)等查询。点击相应查询页面后,系统按顺序自动列出top10列表。在正常软件列表里,列出的是检测后未发现可疑问题的软件清单。在异常软件列表里,列出的是检测后发现问题的软件清单。在软件列表里可以查看单个文件的检测报告。扫描结果报告分为统计型报告和技术型报告,统计型报告可以按各种统计指标进行统计。技术型报告是详尽的报告,列出所有发现问题,包括静态分析结果和动态分析结果,并根据其行为作出分析。
(5.3)用户管理
用户管理是系统管理员对操作员进行管理,增加、删除、及操作员权限的管理。内置分为两个组,包括管理员组和普通用户组。管理员可以增加/删除一个用户,可以赋予某个用户为管理员或普通用户。每个用户可以修改自己的基本信息,修改自己的密码。管理员可修改其它用户的信息,普通用户只能修改自己的信息。
(5.4)日志管理
日志管理可以进行日志查询和下载。在日志里记录了操作员进行的各项工作。
(5.5)报告生成
最终报告包括检测结果和详细行为报告。其中检测结果包括病毒(并提供病毒名称和描述),安全和风险。风险应用会被存放在可疑应用程序库,以待后续处理。
(5.6)云响应核心知识平台
包括可疑应用程序库、病毒特征库、黑白名单库、恶意网址库等。可疑应用程序库作为临时处理数据库,在经过人工分析处理后,根据结果进行归档。结果为病毒则提取病毒特征,列入黑名单,并提取其他拥有的相关恶意信息,如恶意网址等。
(5.7)系统部署
(5.8)安检系统的物理结构
(5.8.1)由前端主控服务器以及集群节点组成。
(5.8.2)前端主控服务器的功能有:
web服务器:提供一个交互的界面给用户
集群的任务调度器:负责根据测试人员提交的测试文件,生成检测任务,并分发到多个集群节点上。
与集群的节点Agent通信模块:分发任务,获得每节点的负载平衡信息,获得每节点上当前任务的状态,获得每节点上的详细任务日志及报告信息。
负责收集每节点的任务日志及报告信息,存放到全局文件系统中,供将来的查询。
负责用户权限的管理。
负责收集每个用户的操作日志,如谁上传了哪些应用程序,什么时候检测的,每个任务的执行时间等。
(5.8.3)每个集群节点
包括两个模块:检测引擎和节点的agent。
检测引擎包括静态和动态扫描引擎。
节点agent负责与主控节点通信,并负责管理检测引擎。
(5.8.4)启动/暂停引擎
(5.8.5)关闭引擎
(5.9)检测引擎和节点agent的通信通过节点上的共享文件系统来交换检测日志,引擎运行状态以及检测报告。
(5.10)节点Agent负责记录操作的日志
3.2、移动终端恶意检测平台线性扫描系统框架
(1)移动应用病毒查杀动态扫描解决方案技术构架核心模块主要包括:
扫描系统:是技术构架中的核心模块,主要负责对应用程序进行检测和分析,并生成相应的检测报告,同时提供调用接口,供其他第三方程序调用。包括:MD5、数字签名、权限分析、源码API、正则表达式的特征提取技术和扫描算法,能够有效识别已知危险代码的变种;基于黑白名单等知识库的扫描引擎;权限和行为分析、函数调用序列分析、开发者识别、程序信息变化检测等引擎。
信息查询模块:主要功能是响应安全管理平台的日志查询、读取等与日志相关的工作。
日志、报告处理模块:生成相应的日志,并响应安全管理控制台针对扫描日志、报告的读取、删除和更改等请求。
知识库:包括危险特征库、黑白名单库、安全开发者库、应用程序库、恶意网址库等。
(2)扫描检测过程
应用程序提交到安检平台后,首先进行安全脆弱性定位检测。具体包括以下步骤:
基于MD5、特征码、正则表达式的扫描,可直接定位代码是否为危险代码;基于数字签名、权限分析、API的匹配扫描,可以定位应用是否为可疑代码。
上述过程基于MD5、特征码、正则表达式的扫描未检测到恶意代码后,则需要通过基于数字签名、权限分析、API的匹配扫描对行为特征进行综合分析评判,对风险应用进行筛选,包括软件开发者身份识别、插件、API、配置文件的扫描,软件权限和函数调用序列扫描,程序变动特征分析等,根据检测的综合权值对有恶意特征风险的应用进行筛选。检测到有危险代码风险的应用后,进行最终定位,得出准确结论。
几个脆弱点检测项实例如表4-表9所示:
表4配置文件风险
表5权限检测
表6敏感词检测
表7 Webview密码配置文件风险
表8 Intent Scheme URL攻击漏洞
表9 Fragment注入攻击漏洞
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (6)
1.一种线性可分的安全脆弱点检测方法,其特征在于,包括如下步骤:
S1、收集线性可分性安全特征;
S2、基于步骤S1收集的特征进行归一化,采用N类分类的匹配方法进行分类;
S3、基于步骤S2的分类结果,得到移动应用程序安全脆弱点。
2.根据权利要求1所述的一种线性可分的安全脆弱点检测方法,其特征在于,所述线性可分,即:对给定的训练集D,集合中为原始样本的特征向量,为相关联的类标号;在二分类中,每个取二值之一即{+c,—c},表示是否属于这个类。
3.根据权利要求1所述的一种线性可分的安全脆弱点检测方法,其特征在于,所述线性可分性安全特征包括病毒特征、黑白名单、恶意网址库。
4.根据权利要求1所述的一种线性可分的安全脆弱点检测方法,其特征在于,所述步骤S2具体实现如下:
假设线性可分型安全特征集合N(N1,N2,.......Nn)有n类,采用N类分类过程,将n类特征分解重构为多个二类特征,然后重构分类器实现多个类别分类;
在训练阶段,从n种类别中任意取出两个构造成二类分类器,共有n(n—1)/2个分类器;
在分类阶段,将数据样本通过这n(n—1)/2个分类器进行分类,定义:
F1:表示精确率和召回率的调和平均,即:n/F1=n(n—1)/2P+n(n—1)/2T;其中,P为精确率,T为召回率;
将样本总体设为N,当前训练集设为T,预测集设为P,预测结果集为P’,则
P′={(a1′,b1′),(a2′,b2′),...,(aN′,bN′)}∈(A×B)N,bi∈B′={+l,-l},i=1,2,...,N
其中,(A×B)是指笛卡尔积运算:设A,B为一个集合,将A中的元素作为第一个元素,B中的元素作为第二个元素,形成有序对;所有这些有序对都由一个称为A和B的笛卡尔积的集合组成,并被记录为A×B;笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X×Y;
假设集合A={a1,a2,...an},集合B={b1,b2,...bn},则两个集合的笛卡尔积为{(a1,b1),(a2,b2),...,(an,bn)};
定义预测错误的样本集合
T′={(a1,b1),(a2,b2),...,(am,bm)},bi≠bi′
m表示的是预测错误的样本,即在样本总体N里面定义预测错误的样本集合;
每次将样本按线性可分性分析判断为某一类,最终得到的判决次数最多的那一类为样本数据的最终分类结果。
5.根据权利要求1所述的一种线性可分的安全脆弱点检测方法,其特征在于,步骤S2中,特征的归一化方式为:
特征数据分为两类:第一类表示某种特征是否出现,第二类的特征值属于连续变量;
对于第一类特征,此类特征特征值为{0,1},其0表示该特征在应用中没有出现,1则表示在应用文件中出现;
对于第二类特征,此类特征值采取的方法是将它们统一缩放变换到区间[0,1]上。
6.根据权利要求1所述的一种线性可分的安全脆弱点检测方法,其特征在于,步骤S3中,移动应用程序指的是Android应用程序,该方法将Android应用程序中AndroidManifest.xml文件和Classes.dex文件作为特征分析对象,基于包括基于MD5校验的检测技术、基于Android数字签名的检测技术、基于正则表达式匹配的检测技术、基于权限分析的检测技术来得到移动应用程序脆弱点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211438835.6A CN115766231A (zh) | 2022-11-17 | 2022-11-17 | 一种线性可分的安全脆弱点检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211438835.6A CN115766231A (zh) | 2022-11-17 | 2022-11-17 | 一种线性可分的安全脆弱点检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115766231A true CN115766231A (zh) | 2023-03-07 |
Family
ID=85372442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211438835.6A Pending CN115766231A (zh) | 2022-11-17 | 2022-11-17 | 一种线性可分的安全脆弱点检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115766231A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150150131A1 (en) * | 2013-02-10 | 2015-05-28 | Cyactive Sercurity Ltd. | Method and Product for Providing a Predictive Security Product and Evaluating Existing Security Products |
US20210176258A1 (en) * | 2019-12-10 | 2021-06-10 | Shanghai Jiaotong University | Large-scale malware classification system |
CN113159264A (zh) * | 2020-11-12 | 2021-07-23 | 江西理工大学 | 一种入侵检测方法、系统、设备及可读存储介质 |
CN115033432A (zh) * | 2022-05-16 | 2022-09-09 | 浙江大学 | 一种基于时空网络的触摸屏虚假触摸点检测与防御方法 |
-
2022
- 2022-11-17 CN CN202211438835.6A patent/CN115766231A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150150131A1 (en) * | 2013-02-10 | 2015-05-28 | Cyactive Sercurity Ltd. | Method and Product for Providing a Predictive Security Product and Evaluating Existing Security Products |
US20210176258A1 (en) * | 2019-12-10 | 2021-06-10 | Shanghai Jiaotong University | Large-scale malware classification system |
CN113159264A (zh) * | 2020-11-12 | 2021-07-23 | 江西理工大学 | 一种入侵检测方法、系统、设备及可读存储介质 |
CN115033432A (zh) * | 2022-05-16 | 2022-09-09 | 浙江大学 | 一种基于时空网络的触摸屏虚假触摸点检测与防御方法 |
Non-Patent Citations (1)
Title |
---|
胡文君;赵双;陶敬;马小博;陈亮;: "一种针对Android平台恶意代码的检测方法及系统实现", 西安交通大学学报, no. 10, 3 July 2013 (2013-07-03) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11089046B2 (en) | Systems and methods for identifying and mapping sensitive data on an enterprise | |
Crussell et al. | Andarwin: Scalable detection of android application clones based on semantics | |
US10437996B1 (en) | Classifying software modules utilizing similarity-based queries | |
US8365286B2 (en) | Method and system for classification of software using characteristics and combinations of such characteristics | |
US8683216B2 (en) | Identifying polymorphic malware | |
Alsoghyer et al. | On the effectiveness of application permissions for Android ransomware detection | |
US20160057159A1 (en) | Semantics-aware android malware classification | |
CN113489713B (zh) | 网络攻击的检测方法、装置、设备及存储介质 | |
US20150207811A1 (en) | Vulnerability vector information analysis | |
US20200193031A1 (en) | System and Method for an Automated Analysis of Operating System Samples, Crashes and Vulnerability Reproduction | |
US20200012793A1 (en) | System and Method for An Automated Analysis of Operating System Samples | |
Tang et al. | A large-scale empirical study on industrial fake apps | |
US20160094574A1 (en) | Determining malware based on signal tokens | |
CN108694319B (zh) | 一种恶意代码家族判定方法及装置 | |
CN101345751A (zh) | 确定作为数据库活动的起源的应用程序用户 | |
CN105229661A (zh) | 基于信号标记确定恶意软件 | |
Atzeni et al. | Countering android malware: A scalable semi-supervised approach for family-signature generation | |
WO2014103115A1 (ja) | 不正侵入検知装置、不正侵入検知方法、不正侵入検知プログラム及び記録媒体 | |
Huang et al. | Android malware development on public malware scanning platforms: A large-scale data-driven study | |
Scalco et al. | On the feasibility of detecting injections in malicious npm packages | |
CN113139192A (zh) | 基于知识图谱的第三方库安全风险分析方法及系统 | |
CN109800569A (zh) | 程序鉴别方法及装置 | |
Yuan et al. | Towards {Large-Scale} Hunting for Android {Negative-Day} Malware | |
Huang et al. | A large-scale study of android malware development phenomenon on public malware submission and scanning platform | |
CN103093147A (zh) | 一种识别信息的方法和电子装置 |
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 |