system: [SYSTEM]

user: 3. 基于攻击的Android应用安全检测评估方案设计 3.1. Android应用安全检测和评估指标 针对安卓应用，从攻击者的角度出发，通常从以下6个方向来进行检测：反编译检测(Against-Compiling)，反篡改检测(Against-Tamper)，漏洞检测(Vulnerability)，组件安全检测(Components-Security)，数据安全检测(Data-Security)和敏感操作检测(Sensitive-Operations)，后文中为便捷使用，将AC表示为反编译检测，将AT表示为反篡改检测，将VB表示为漏洞检测，将CS表示为组件安全检测，将DS表示为数据安全检测，将SO表示为敏感操作检测。 反编译检测主要针对安卓应用加固方面的检测，检测内容如表1所示。 Table 1 Decompile the checkpoint list of detection indicator 反编译检测指标项 主要检测点 dex文件加固(AC1) dex文件是否加密 so文件加固和安全检测(AC2) so文件加密或隐藏 混淆率检测(AC3) 代码混淆率 反编译检测指标项 主要检测点 表1. 反编译检测指标检测点表 反篡改检测主要检测是否有攻击者能够利用破解工具或其他技术将安卓应用的代码或资源文件篡改，检测manifset文件中的设置是否安全。检测内容如表2所示。 Table 2 Anti-tamper detection index detection points lis 反篡改检测指标项 主要检测点 资源文件加固检测(AT1) 资源文件是否加密 文件信息检测(AT2) 文件信息是否容易篡改 证书检测(AT3) 证书是否安全且一致 manifest文件检测(AT4) PermissionGroup项检测 系统权限使用检测 sharedUserId检测 allowBackup标志检测 Debuggable配置检测 非必要权限检测 最低支持版本检测 表2. 反篡改检测指标检测点表 漏洞检测一方面检测常见的系统漏洞，另一方面在服务端，分为http协议和tcp/udp协议来检测容易出现的漏洞。如表3所示。 Table 3 List of detection points of vulnerability detection indicator 漏洞检测指标项 主要检测点 系统漏洞检测(VB1) fragment注入漏洞检测 sqlite数据库日志泄露漏洞检测 随机数生成漏洞检测 服务端漏洞检测(VB2) http协议 水平权限风险检测 垂直权限风险检测 SQL注入漏洞检测 XSS漏洞检测 敏感信息检测 tcp/udp协议 敏感信息检测 Html5漏洞检测 provider注入漏洞检测(VB3) provider注入漏洞检测 表3. 漏洞检测指标检测点表 组件安全分四方面，一是检测第三方库和SDK库是否安全。二是检测安卓应用本身所带的组件，扫描各种漏洞，检测组件信息等。三是针对Webview组件检测各类漏洞。最后是对SQlite组件检测加密情况和安全性。如表4所示。 Table 4 List of component safety detection index detection point 反编译检测指标项 主要检测点 第三方库和SDK组件检测(CS1) 第三方组件和SDK库安全检测 组件安全检测指标(CS2) 4大组件导出检测 ContentProvider目录遍历漏洞检测 Implicit Service漏洞检测 grant-uri-permission属性检测 Intent-Based攻击检测 Intent Scheme URI漏洞攻击检测 应用本地拒绝服务漏洞检测 manifest中定义组件未实现检测 Debug或Test敏感测试组件泄露检测 Intent不安全反射风险检测 webview组件安全检测(CS3) 远程执行漏洞检测 潜在XSS攻击检测 本地文件访问漏洞检测 密码明文存储漏洞检测 主机名弱校验检测 证书弱校验检测 中间人攻击漏洞检测 不校验证书漏洞检测 组件系统隐藏接口未移除漏洞 sqlite安全检测(CS4) SQLite数据库加密(SQLCipher)检测 SQLite数据库(SQLite Encryption Extension (SEE))检测 SQLite数据库的对称密钥(PRAGMA key)检测 SQLiteDatabase Transaction Deprecated检测 Databases任意读写漏洞检测 表4. 组件安全检测指标检测点表 数据安全检测项从数据安全的角度出发，分为网络通信安全，弱加密风险，一般数据安全和Hook技术检测。网络通信安全检测网络通信中可能出现的风险及漏洞。弱加密风险检测各处运用加密的部分是否正常使用了加密或是否使用了弱加密。一般数据安全检测针对可能出现数据泄露的地方检测泄露风险。Hook安全主要检测各信息接收或发送部件的数据信息是否正常。如表5所示。 Table 5 Table of data security detection index detection point 数据安全检测指标项 主要检测点 网络通信安全检测(DS1) SSL连接检测 SSL组件安全检测 Host检测 HttpURLConnection漏洞检测 网络端口开放威胁检测 弱加密风险检测(DS2) 弱加密算法风险检测 不安全密钥长度检测 ECB弱加密风险检测 不安全初始化向量检测 RSA中Padding风险检测 是否使用密码保护检测 数据安全检测(DS3) 敏感数据检测 剪切板敏感信息泄露风险检测 Intent组件数据泄露风险检测 PendingIntent误用风险检测 密钥硬编码风险检测 程序和数据加载检测 BASE64安全检测 全局文件读写漏洞检测 日志泄露风险检测 数据安全检测(DS3) 外部加载Dex检测 外部存储路径检测 明文证书风险检测 第三方oAuth风险检测 hook技术检测(DS4) SQlite存储信息检测 SharePreferences存储信息检测 Contert Provider存储信息检测 File存储信息检测 Intent数据内容检测 Log日志打印检测 System.print*输出检测 剪贴板敏感信息检测 表5. 数据安全检测指标检测点表 最后敏感操作检测，主要是从静态代码检测和DDOS攻击两方面检测。静态代码主要检测应用的权限信息，代码中各类敏感函数的使用情况，在这个方面并没有使用现在常用的机器学习方式进行检测，只是检测了常见的敏感函数类型。详情如表6所示。 Table 6 List of sensitive operation detection indicator 敏感操作检测指标项 主要检测点 权限信息检测(SO1) 应用权限检测 敏感函数调用检测(SO2) 安全相关函数检测 安全相关类检测 运行命令检测 Native Library加载检测 外部动态加载Dex检测 Root代码检测 获取IMEI 和Device ID敏感信息代码检测 获取Android ID敏感信息代码检测 发送SMS敏感代码检测 文件删除代码检测 signature代码检测 DDOS攻击检测(SO3) 组件DDOS攻击检测 Native crash检测 Java crash检测 表6. 敏感操作检测指标检测点表 3.2. Android应用安全评估模型权重 在安全检测指标的基础上，通过层次分析法，利用当前常用的安卓安全检测权值进行定量计算，所有评估指标权值加起来为结果为1，最终检测得到的结构越接近1说明这个安卓应用的安全性能越高。根据主流安全检测权重指标和实验总结后，得出Android应用安全检测评估模型指标权重。如表7所示： Table 7 Attack-based Android application security detection evaluation index comprehensive weight tabl 主准则 权重 次准则 综合权重 反编译检测(AC) 0.1052 dex文件加固(AC1) 0.0496 so文件加固和安全检测(AC2) 0.0233 混淆率检测(AC3) 0.0323 反篡改检测(AT) 0.3074 资源文件加固检测(AT1) 0.0354 文件信息检测(AT2) 0.0542 证书检测(AT3) 0.0719 manifest文件检测(AT4) 0.1459 漏洞检测(VB) 0.2188 系统漏洞检测(VB1) 0.1118 服务端漏洞检测(VB2) 0.0759 provider注入漏洞检测(VB3) 0.0311 组件安全检测(CS) 0.1052 第三方库和SDK组件检测(CS1) 0.0171 组件安全检测指标(CS2) 0.0386 webview组件安全检测(CS3) 0.0329 sqlite安全检测(CS4) 0.0166 数据安全检测(DS) 0.1582 网络通信安全检测(DS1) 0.0389 弱加密风险检测(DS2) 0.0206 数据安全检测(DS3) 0.0683 hook技术检测(DS4) 0.0304 敏感操作检测(SO) 0.1052 权限信息检测(SO1) 0.0618 敏感函数调用检测(SO2) 0.0301 DDOS攻击检测(SO3) 0.0133 表7. 基于攻击的安卓应用安全检测评估指标综合权重表