课程:《密码与安全新技术专题》
班级: 1892
姓名: 张鸿羽 学号:20189217 上课教师:王志强 上课日期:2019年5月7日 必修/选修: 选修一.本次讲座的学习总结
1.引言
安全事件层出不穷,危害大,范围广。
- 网络安全事件的根本原因(排除政治因素)在于:安全漏洞
- 安全漏洞:是指信息系统在设计、实现或者运行管理过程中存在的缺陷或不足,从而使攻击者能够在未授权的情况下利用这些缺陷破坏系统的安全策略。
- 安全漏洞是网络攻击和防御的关键点。
- 攻击:根据目标存在的漏洞,编写攻击程序。
- 防御:提前挖掘出漏洞,并修复。
- 漏洞挖掘:找漏洞(攻防核心竞争力)
- 漏洞利用:楚大漏洞(攻,证)
- 漏洞防御:修复、提前防御
2.常见漏洞挖掘技术
2.1 手工测试
定义:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。【凭经验依次检验每个可能产生漏洞的脆弱点】
- 优点:人-主观能动性-显而易见和复杂不易见
缺点:人-无规律可循、不可大规模等
2.2 补丁比对
- 定义:一种通过对比补丁之间的差异来挖掘漏洞的技术。
- 文本(难定位,难出难理解)
- 汇编指令(易理解,输出范围大,难定位)
- 结构化(迅速直观,流行)
- 优点:发现速度快
- 缺点:已知漏洞
- 常见工具:PatchDiff2、bindiff
2.3 程序分析
程序分析包括静态和动态
2.3.1 静态程序分析
- 定义:是指在不运行计算机程序的条件下,通过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
- 优点:覆盖率100%,自动化程度高
- 缺点:漏报和误报(RICE,程序分析问题不可判定)
- 工具:
- 数据流分析:Fortify SCA、Coverity Prevent、FindBugs等
- 污点分析:Pixy、TAJ(基于WALA)
- 符号执行:Clang、KLEE
- 模型检测:BLAST、MAGIC、MOPS
2.3.2 动态程序分析
- 定义:在运行计算机程序的条件下,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
- 一般通过插桩技术分析程序的异常行为。
插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,然后执行插桩后的程序,通过“桩”的执行获取程序的控制流和数据流信息,进而分析程序的异常行为。
- 优点:自动化程度高、覆盖率较高
- 缺点:漏报和误报(RICE,程序分析问题不可判定)、冗余代码时间开销 ↑
- 工具:Android:Xposed
2.4 二进制审核
定义:源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估
- 优点:缺点: 同静态审核
- 逆向导致信息丢失,理解困难,甚至引入逻辑错误。
二进制及编辑工具:IDA Pro、Ollydbg、UltraEdit、Hex Workshop以及WinHex
2.5 模糊测试
- 定义:通过向被测目标输入大量的畸形数据并监测其异常来发现漏洞
关键:测试用例构造,自动化
- 优点:无须源码、误报低、自动化程度高
- 缺点:覆盖率低
工具:Peach、Sulley、Autodafe、SPIKE等
3.漏洞挖掘技术研究进展
3.1 二进制程序函数识别
二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都至关重要。由于二进制代码缺少高级语言程序中的信息,函数的识别往往比较困难,现有的反汇编分析工具具有识别正确率低的缺陷。
Shin等用循环神经网络算法(RNN)改进了ByteWeight方案的性能,在模型训练时间上有了数量级上的提升,并取得了更高的准确率。3.2 测试用例生成
- 在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提高漏洞挖掘的效率和针对性。
- 机器学习→指导生成更高质量的测试输入样本
- Godefroid等首次把模糊测试中的高结构化样本生成问题转换成了NLP领域的文本生成问题,采用了Char-RNN(recurrentneural network)模型实现对PDF文件格式中的obj语法的学习,并用训练好的模型生成具有多样性的obj对象和PDF文件。
3.3 路径约束求解
- 模糊测试,特别是代码覆盖率制导的模糊测试(如AFL),侧重于筛选可以覆盖新路径的样本为种子文件,但对种子文件变异时并没有充分利用程序数据流等信息指导变异,这使得变异盲目低效,生成样本冗余。
- 具备路径约束求解能力是符号执行比模糊测试等漏洞挖掘技术更先进的体现,也使得符号执行在理论上具备了系统性探索程序执行路径的能力。
- 约束求解→问题:路径爆炸,效率较低
- Chen等提出了Angora,采用污点追踪测试输入中影响条件分支的字节,然后使用梯度下降的方式对变异后生成的路径约束进行求解(目标函数不可导将有问题)
4.漏洞挖掘示例
4.1 路由器协议漏洞挖掘
系统架构如下:
实验结果如下:
- 当远程向路由器的161端口发送大量畸形SNMP Get/Set请求报文时,畸形的数据包中包含长格式化字符串“%s…”的SNMPv1 GetRequest报文,Cisco路由器和华为路由器的进程Agent出现CPU使用率异常,分别为98%和100%。
- 当远程发送SNMP空数据包时,Cisco路由器和华为路由器的CPU使 用率出现异常,但远小于100%,发生“轻度拒绝服务”。该异常并不 会造成路由器拒绝服务,但会导致路由器产生一定的丢包和网络的不稳 定,并对网络的性能造成影响。
- 当远程发送一个畸形ASN.1/BER编码(超长字符串)的SNMP数据包时,wireshark捕获并解析数据包,导致wireshark 1.4等多个版本栈溢出,导致空指针引用并崩溃。此漏洞是由国家计算机网络入侵防范中心渗透测试小组使用PROTOS工具发现(CVE-2010-3445),在本次实验中,使用生成的畸形数据包重现了该漏洞,使用Ollydbg调试发现ESP空指针异常。
- 当向SNMP协议端口(161)远程发送一个使用“\x”等字符构造的畸形UDP数据包,科来网络分析系统7.2.1及以前版本均会因边界条件检查不严导致崩溃,该漏洞的bugtraq ID为49621,CNNVD编号为CNNVD-201109-233。
4.2 NFC漏洞挖掘
目标选择:
- NFC手机逐渐开始流行和推广。
- NFC(Near Field Communication)技术是一种近距离的双向高频无线通信技术,能够在移动终端、智能标签(Tag)等设备间进行非接触式数据交换。
- NFC技术具有通信距离短、一次只和一台设备连接(1V1)、硬件安全模块加密等特点,具有较好的保密性和安全性
- 目标选择:NFC手机系统和应用!
系统架构:
实验结果:
- NFC服务拒绝服务 漏洞:Google原生漏洞,影响Android4.4以下支持NFC的所有版本,此外,包含三星、华为、小米、联想等定制系统。
- 打开手电筒 漏洞:华为、小米等定制系统设计缺陷,在启动com.androi d.systemui的包时,可导致MIUI系统在触碰该标签时自动打开系统手电筒。
- 打开蓝牙 漏洞:逻辑漏洞,使用系统版本为Android4.1.3以下等多个版本的NFC手机触碰蓝牙配对标签,导致蓝牙被自动打开。
- 打开wifi 漏洞:逻辑漏洞,受影响的系统是MIUI系统5.30等多个版本。使用手机触碰包含wifi连接报文的标签后,系统wifi会被自动打开。(正常的连接报文)
- 应用程序拒绝服务 漏洞:拒绝服务漏洞,报文解析错误。
- 屏幕亮度漏洞 漏洞:设计缺陷,使用NFC手机触碰标签可以将屏幕亮度设置在0-255的任意值,突破应用程序的亮度值限制(5-100)。
二.学习中遇到的问题及解决
问题1:
什么是“脱库”?
问题1解决方案:
“脱库”是一种黑客术语,是指黑客入侵有价值的网络站点,把注册用户的资料数据库全部盗走的行为。
“脱库”的通常步骤为: 1、黑客对目标网站进行扫描,查找其存在的漏洞,常见漏洞包括SQL注入、文件上传漏洞等。 2、通过该漏洞在网站服务器上建立“后门(webshell)”,通过该后门获取服务器操作系统的权限。 3、利用系统权限直接下载备份数据库,或查找数据库链接,将其导出到本地。三.本次讲座的学习感悟和思考
本次讲座我了解到了许多种类的漏洞,以及多种漏洞挖掘技术方法。通过本次讲座,我认识到只要是影响业务点、危害系统和用户信息安全的都是漏洞,并且很多时候,我们的系统、程序离高危只有一步之遥。漏洞挖掘是一把双刃剑,它可以被黑客利用,也可以被第三方机构、漏洞挖掘爱好者用来提高软件的安全性,利用漏洞挖掘技术寻找到各种软件漏洞后及时发布给大众,可大大提高信息安全整体水平。总之,漏洞挖掘技术的发展前景是广阔的,随着信息安全越来越被重视,软件开发技术越来越先进,新的分析手段也一定会随之出现。
四.最新研究现状
论文1
跨越注意:Android生态系统中AT命令的全面漏洞分析
- 期刊/会议名称: USENIX Security 2018
- 作者信息: Dave (Jing) Tian, Grant Hernandez, Joseph I. Choi, Vanessa Frost, Christie Ruales, Patrick Traynor, Hayawardh Vijayakumar, Lee Harrison, Amir Rahmati, Michael Grace, and Kevin R. B. Butler
研究进展
AT命令最初设计于80年代初,用于控制调制解调器,目前仍在大多数现代智能手机中使用,以支持电话功能。AT命令在这些设备中的作用已经通过特定于供应商的定制进行了广泛的扩展,但是它们的功能范围还不清楚,而且文档记录也不完整。本文系统地从11个供应商的2000多个Android智能手机固件图像中检索和提取3500个AT命令,通过四个不同供应商的USB接口对八个Android设备系统地测试了AT命令集,并描述了所暴露的强大功能,包括重写设备固件、绕过Android安全机制、过滤敏感设备信息、执行屏幕解锁和注入仅通过使用AT命令触摸事件。本文证明AT命令界面包含大量未受约束的功能,并且在Android设备上表现出广泛的攻击面。
论文2
魅力:促进移动系统设备驱动程序的动态分析
- 期刊/会议名称: USENIX Security 2018
- 作者信息:Seyed Mohammadjavad Seyed Talebi, Hamid Tavakoli, Hang Zhang, Zheng Zhang, Ardalan Amiri Sani, Zhiyun Qian
研究进展
背景:移动系统(如智能手机和平板电脑)包含多种I / O设备,如摄像头,音频设备,GPU和传感器。这会导致在移动系统的操作系统内核中运行大量不同的和定制的设备驱动程序。这些设备驱动程序包含各种错误和漏洞,使其成为内核攻击的首选目标。不幸的是,安全分析师为了查找、理解和修补漏洞而分析这些设备驱动程序时面临着很大挑战。即使使用最先进的动态分析技术(例如交互式调试,模糊测试和记录和重放)来分析这些驱动程序也是很困难的,低效的,甚至是完全无法访问的。
本文介绍了Charm,一种便于动态分析移动系统设备驱动程序的系统解决方案。Charm的关键技术是远程设备驱动程序执行,它使设备驱动程序能够在工作站上的虚拟机中执行。Charm通过使用实际的移动系统仅通过低延迟和定制的USB通道为低级别和不频繁的I / O操作提供服务,从而实现了这一目标。Charm不需要任何专门的硬件,并且可立即供分析师使用。本文展示了将Charm应用于各种设备驱动程序是可行的,包括相机,音频,GPU和IMU传感器驱动程序,在不同的移动系统中,包括LG Nexus 5X,华为Nexus 6P和三星Galaxy S7。本文展示了Charm增强了设备驱动程序模糊测试的可用性,支持记录和重放驱动程序的执行,并促进详细的漏洞分析。这些功能使本文的方法能够在设备驱动程序中找到25个错误,分析3个现有错误,甚至使用其中一个构建任意代码执行内核漏洞。
论文3
VulDeePecker:基于深度学习的漏洞检测系统
- 期刊/会议名称: NDSS2018
- 作者信息: Zhen Li, Deqing Zou, Shouhuai Xu, Xinyu Ou, Hai Jin, Sujuan Wang, Zhijun Deng, Yuyi Zhong
研究进展
软件漏洞的自动检测是一个重要的研究课题。然而,这个问题的现有解决方案依赖于人类专家来定义特性,并且常常漏掉许多漏洞。本文首先对基于深度学习的脆弱性检测技术进行了研究,以减轻专家手工定义特征的繁琐和主观任务。由于深度学习的目的是解决与脆弱性检测非常不同的问题,因此我们需要一些指导原则来将深度学习应用于脆弱性检测。特别是,我们需要找到适合深入学习的软件程序的表示。为此,我们建议使用代码小工具来表示程序,然后将它们转换为向量,其中代码小工具是一些(不一定是连续的)语义相关的代码行。这导致了一个基于深度学习的漏洞检测系统的设计和实现,称为漏洞深度啄木鸟(Vuldeepecker)。为了评估Vuldeepicker,本文提出了第一个深度学习方法的脆弱性数据集。实验结果表明,与其他方法相比,啄木鸟能获得更少的假阴性(有合理的假阳性)。本文进一步将Vuldeepicker应用于3个软件产品(即Xen、SeaMonkey和Libav),并检测到4个漏洞,这些漏洞未在国家漏洞数据库中报告,但在发布这些产品的后续版本时被供应商“悄悄”修补。而本文试验过的其他漏洞检测系统几乎完全忽略了这些漏洞。
论文4
冻结Web:基于JavaScript的Web服务器中的ReDoS漏洞研究
- 期刊/会议名称: USENIX Security 2018
- 作者信息: TU Darmstadt,Cristian-Alexandru Staicu,Michael Pradel
研究进展
正则表达式拒绝服务(REDoS)是一类算法复杂性攻击,在这种攻击中,将正则表达式与攻击者提供的输入匹配起来需要花费意外的时间。单曲 JavaScript的读取执行模型使得基于JavaScript的Web服务器特别容易受到redos攻击。尽管存在这种风险,而且服务器端Node.js平台越来越受欢迎, 目前鲜有报告说,在实际情况下,对后遗症问题的严重性知之甚少。本文对真实世界网站中的redos漏洞进行了大规模的研究。我们研究的基础是一种分析部署服务器可利用性的新方法。基本思想是在流行的库中搜索以前未知的漏洞,假设服务器可以使用这些库,然后创建目标攻击。在 这项研究发现,我们在流行模块中发现了25个以前未知的漏洞,并测试了2846个最受欢迎的网站。我们发现,这些网站339中至少有339个受到了至少一个REDoS漏洞的影响。由于一个请求可以阻止一个易受攻击的站点几秒钟,有时甚至更长,因此待办事项对这些站点的可用性构成严重威胁。本文的结果 是开发技术以检测和减轻JavaScript中的REDoS漏洞的一种调用。
论文5
黑客与测试人员:软件漏洞发现过程的比较
- 期刊/会议名称: S&P 2018
- 作者信息: Daniel Votipka, Rock Stevens, Elissa M. Redmiles, Jeremy Hu, and Michelle L. Mazurek
研究进展
识别软件中的安全漏洞是一项需要大量人工工作的关键任务。目前,漏洞发现通常是软件测试人员在发布之前的责任,然后是白帽黑客(通常在Bug赏金计划内)。这种安排可能是临时性的,而且远非理想;例如,如果测试人员能够识别更多的漏洞,那么软件在发布时就会更加安全。然而,到目前为止,每个群体所使用的过程-以及它们如何相互比较和相互作用-还没有得到很好的研究。本文为更好地理解并最终改善这个生态系统迈出了第一步:我们报告了一项与测试人员和黑客进行的半结构化访谈研究(n=25),重点是每个小组如何发现漏洞、如何发展他们的技能以及他们面临的挑战。结果表明,黑客和测试人员遵循类似的过程,但由于经验不同,因此获得不同的结果。基于这些结果,我们提供了一些建议,以支持改进测试人员的安全培训,更好地在黑客和开发人员之间进行交流,以及更聪明的bug奖励策略来激励。 黑客参与。