论文部分内容阅读
网络安全脆弱性分析检测是发现系统内在安全缺陷的主要手段之一,是网络安全领域的研究热点,涵盖系统设计、编码、测试和发布等各个阶段。随着人工智能技术的发展,自动化地实施网络安全脆弱性检测,已成为领域新的研究重点,具有重要社会与经济价值。本文提出了自动化的网络安全脆弱性检测技术,利用遗传算法、免疫理论、组合核函数计算等方法,实现了自动化的漏洞挖掘、漏洞利用、风险评估和渗透测试,通过实验验证了方法的有效性,并构建了原型系统将研究理论工程化实现。具体内容如下:第一,自动化的漏洞挖掘方法。提出基于方向感知的模糊测试方法AFLPro和动静态分析相结合的逆符号执行方法Anti-Driller。AFLPro聚焦基于基本块聚合的种子选择策略,通过控制流信息实现基本代码块权重的计算,并在种子适应度模型的指引下进行种子选择,通过种子能量调度策略,加强对种子变异的引导。Anti-Driller构建系统控制流图,获取控制流走向,通过动态符号执行方法对执行路径进行约束求解与选择,保证单次只对一条执行路径进行分析,并在下一步进行模糊测试时可以绕过某些不关注的函数体,最后在每次选定的执行路径上进行模糊测试,以探测该路径上是否可能存在系统脆弱性,减缓“路径爆炸”问题。第二,自动化的漏洞利用方法。提出了一套自动化利用框架AutoE,五种系统脆弱性利用方法IPOV、AutoJS、AutoROP、AutoBase64、AutoXOR和一套自动化调度算法AutoS。AutoE将系统脆弱性利用的多种方法进行了融合,实现了对多种漏洞类型自适应匹配与调用,能够将脆弱性崩溃输入是否可利用进行自动评估。五种脆弱性利用方法中,最简化的脆弱性利用程序IPOV通过在返回地址直接填充shellcode实现脆弱性利用;面对随机地址的脆弱性利用程序AutoJS自动在返回地址后放置shellcode,并使用任意一个指令为“JMP ESP”的地址覆盖返回地址,引导控制流自动执行shellcode;面向栈保护的脆弱性利用程序AutoROP利用了面向返回的编程技术,通过程序内部的执行指令构建控制流回路实现脆弱性利用;面向Base64编码保护的脆弱性利用程序AutoBase64对Base64编码、转编、加密过的程序指令,寻找崩溃输入进行替换并获得指针寄存器Eip的地址,随后对shellcode进行编码操作,使之在程序中能够进行解码,并最终可在栈上执行;面向异或编码保护的脆弱性利用程序AutoXOR对异或操作过的程序指令,寻找崩溃输入进行替换并获得指针寄存器Eip的地址,随后对shellcode进行编码操作,使之在程序中能够进行解码,并最终可在栈上执行。AutoS辅助提升系统脆弱性挖掘、利用、分析的有效性。第三,自动化的风险评估方法。基于人工免疫的思想,将系统视为一个有机整体,针对性地提出了基于模糊分数阶常微分方程的系统静态风险评估模型。利用压缩算子原理,研究了在平方可积方程空间中解的唯一性,提出了第二类解。利用线性Fredholm积分方程的微分型分段泰勒级数展开法得到近似解的表达式,并进行收敛和误差估计。给出了基于时间序列自回归滑动平均模型的网络攻击检测过程、抗体浓度计算方法和风险预测过程,定量计算整个网络和主机所面临的总体风险以及某种攻击的风险。第四,自动化的渗透测试方法。提出了基于PE头文件的攻击流量选择和分类PE-Classifier和基于组合核函数的目标系统拟合度分析CKF-AI。通过将攻击流量收集并特征分类,对目标网络进行拟合度计算,然后将特征适用性拟合度最高的攻击流量在目标网络上回放的方式实现自动化渗透测试。PE-Classifier针对对海量攻击流量样本中的元数据,通过分布式计算平台进行数据抽取,基于随机森林的方法进行分类训练,提取攻击特征。CKF-AI构造了一类满足默瑟定理的、具有线性组合结构的组合核函数,能够对全局特征和局部特征进行拟合。通过组合核函数对目标系统进行分析,观察每一攻击步骤实施后的系统网络情况变化,和长期采集、训练的攻击流量适用环境进行拟合度分析,寻找最有效攻击流量进行回放,进而完成自动化渗透攻击检测。最后,介绍了自动化的系统网络安全脆弱性检测平台Sapiens。该平台具备自动化、智能化实施漏洞挖掘、漏洞利用、风险评估、渗透测试的能力,能够协助用户识别、评估和管理系统安全风险,帮助用户在日益复杂的网络环境中应对风险和问题。文中对Sapiens进行了需求分析、体系结构、拓扑结构、自动化检测框架、业务逻辑和数据规范进行了描述。最后对平台产品化情况进行了展示。