20179212 2017-2018-2 《密码与安全新技术》第5周作业
20179212 2017-2018-2 《密码与安全新技术》第5周作业
课程:《密码与安全新技术》
班级: 1792
姓名: 郭永健
学号: 20179212
上课教师:谢四江
上课日期:2018年5月10日
必修/选修: 必修
学习内容总结
本次课程是由王老师为我们介绍的基于模糊测试的漏洞挖掘及攻防技术,老师在漏洞挖掘和攻防两个方面介绍了许多知识,让我们受益匪浅。
1、常见漏洞挖掘技术
1.1 手工测试
定义:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。
(凭经验依次检验每个可能产生漏洞的脆弱点)
优点:人-主观能动性-显而易见和复杂不易见;明显没有、没有明显
缺点:人-无规律可循、不可大规模等
1.2 补丁比对
定义:一种通过对比补丁之间的差异来挖掘漏洞的技术。
文本(难定位,输出难理解)
汇编指令(易理解,输出范围大,难定位)
结构化(迅速直观,流行)
优点:发现速度快
缺点:已知漏洞
常见工具:PatchDiff2、bindiff
1.3 程序分析
包括静态和动态
定义:是指在不运行计算机程序的条件下,通过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
优点:覆盖率100%,自动化程度高
缺点:漏报和误报(RICE,程序分析问题不可判定)
静态分析
工具:
数据流分析:Fortify SCA、Coverity Prevent、FindBugs等
污点分析:Pixy、TAJ(基于WALA)
符号执行:Clang、KLEE
模型检测:BLAST、MAGIC、MOPS
动态分析
定义:在运行计算机程序的条件下,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
一般通过插桩技术分析程序的异常行为。
插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,然后执行插桩后的程序,通过“桩”的执行获取程序的控制流和数据流信息,进而分析程序的异常行为。
优点:自动化程度高、覆盖率较高
缺点:漏报和误报(RICE,程序分析问题不可判定)
冗余代码 时间开销 ↑
工具:Android:Xposed
1.4 二进制审核
定义:源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估
优点:缺点: 同静态审核
逆向导致信息丢失,理解困难,甚至引入逻辑错误。
二进制及编辑工具:IDA Pro、Ollydbg、UltraEdit、Hex Workshop以及WinHex
1.5 模糊测试
定义:通过向被测目标输入大量的畸形数据并监测其异常来发现漏洞
关键:测试用例构造,自动化。
优点:无须源码、误报低、自动化程度高
缺点:覆盖率低
工具:Peach、Sulley、Autodafe、SPIKE等
2、漏洞挖掘示例
2.1 路由器协议漏洞挖掘
2.2 NFC漏洞挖掘
目标选择
从数据可以看出,NFC手机逐渐开始流行和推广。
NFC(Near Field Communication)技术是一种近距离的双向高频无线通信技术,能够在移动终端、智能标签(Tag)等设备间进行非接触式数据交换。
NFC技术具有通信距离短、一次只和一台设备连接(1V1)、硬件安全模块加密等特点,具有较好的保密性和安全性
目标选择:NFC手机系统和应用!
学习中的问题和解决过程
- 问题1:对于老师课上讲的NFC漏洞饶有兴趣,网上查了一些东西
- 问题1解决方案:黑帽技术大会(Black Hat)上,来自安全咨询公司 Accuvant 的首席顾问 Charlie Miller 通过六个月的潜心研究,终于发现了如何利用 NFC 技术以及智能手机上相应了漏洞,完成对智能手机的入侵攻击。
第一个躺枪的是 Android。Miller 通过使用一个定制的 NFC 标签,然后在 Android 手机与该标签连接之后,便会像手机发送一段恶意代码。这段恶意代码会让手机打开恶意的文件或者恶意的网页,从而让黑客完全控制手机。
Miller 解释,目前大部分的 Android 手机上都有部分的 NFC 漏洞,并且在Android 4.0系统中,Google 还为具有 NFC 功能的手机添加了一项 Android Beam 功能。利用 NFC 漏洞以及 Android Beam 功能在接触或者靠近 NFC 标签时可以自动下载文件或者打开网页链接 。
利用这一漏洞,黑客便可以使用特制的 NFC 标签,在没有用户进行任何操作以及未经用户许可的情况下,打开手机浏览器,并且访问恶意网页。Miller 称这种攻击不是入侵 NFC 的协议栈,而是攻击手机中的 Web 浏览器,并让 Web 浏览器做一切他想做的事。 可以想象一下,在你未知的情况下,你的手机已经完全暴露在网络另一端的面前。