Fork me on GitHub

20189215 2018-2019-2 《密码与安全新技术专题》第11周作业

课程:《密码与安全新技术专题》
班级: 1892班
姓名: 李炀
学号:20189215
上课教师:谢四江
上课日期:2019年5月7日
必修/选修: 选修

1.本次讲座的学习总结

讲座主题:漏洞挖掘及攻防技术

安全漏洞介绍

  1. 安全漏洞:指信息系统在设计、实现或者运行管理过程中存在的缺陷或不足,从而使攻击者能够在未授权的情况下利用这些缺陷破坏系统的安全策略。
  2. 安全漏洞是网络攻击和防御的关键点。
    • 攻击:根据目标存在的漏洞,编写攻击程序(exploit)。
    • 防御:提前挖掘出漏洞,并修复。
  3. 安全漏洞威胁极大,影响范围极广。
  4. 安全漏洞危害等级划分以10.0为最高级,表示最具有危害性。
  5. 安全事件举例
    • HeartBlood漏洞
    • 2014年9月,Bash软件被曝出存在一系列漏洞,可以导致远程攻击者在有漏洞的系统中执行任意代码。
    • 各种脱库事件
    • 棱镜门

漏洞挖掘技术

  1. 常见漏洞挖掘技术如下:

手工测试
补丁比对
程序分析
二进制审核
模糊测试

  1. 手工测试:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。
    • 优点:人的主观能动性,可以根据经验找到很多不明显、复杂不易见的漏洞。
    • 缺点:无规律可循、不可大规模进行等。
  2. 补丁对比:一种通过对比补丁之间的差异来挖掘漏洞的技术。
    • 优点:发现速度快。
    • 缺点:只能发现已知漏洞,无法发现新漏洞。
    • 常见工具:PatchDiff2、 bindiff。
  3. 程序分析:分为静态和动态。
    • 静态程序分析:是指在不运行计算机程序的条件下,通过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134224117-1163040530.png)
+ 优点:覆盖率100%,自动化程度高 + 缺点:漏报和误报 + 工具: > - 数据流分析: Fortify SCA、 Coverity Prevent、FindBugs等 > - 污点分析: Pixy、 TAJ(基于WALA) > - 符号执行: Clang、 KLEE > - 模型检测: BLAST、 MAGIC、 MOPS - 动态程序分析:在运行计算机程序的条件下,验证代码是否满足规范性、安全性等指标的一种代码分析技术。 + 一般通过插桩技术分析程序的异常行为。插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,然后执行插桩后的程序,通过“桩”的执行获取程序的控制流和数据流信息,进而分析程序的异常行为。 + 优点:自动化程度高、覆盖率较高 + 缺点:漏报和误报、冗余代码导致时间开销增大 + 工具: Android——Xposed 5. 二进制审核:源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估。 - 缺点:逆向导致信息丢失,理解困难,甚至引入逻辑错误。 - 二进制查看及编辑工具:IDA Pro、 Ollydbg、 UltraEdit、Hex Workshop以及WinHex。 6. 模糊测试:通过向被测目标输入大量的畸形数据并监测其异常来发现漏洞。 - 关键点在于测试用例构造,自动化 - 优点:无须源码、误报低、自动化程度高。 - 缺点:覆盖率低 - 工具:Peach、 Sulley、 Autodafe、 SPIKE等。 - 流程如下:
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134235236-207985309.png)

漏洞挖掘技术研究进展

漏洞挖掘技术进展方向向着AI、机器学习、深度学习发展。

  1. 二进制程序函数识别
    二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都至关重要。由于二进制代码缺少高级语言程序中的信息,函数的识别往往比较困难,现有的反汇编分析工具具有识别正确率低的缺陷。
    • 使用循环神经网络算法RNN进行二进制程序函数识别的模型训练。
  2. 函数相似性检测
  3. 测试用例生成
    • 在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提高漏洞挖掘的效率和针对性。
    • 可以使用机器学习来指导生成更高质量的测试输入样本
  4. 测试用例帅选
  5. 路径约束求解。

漏洞挖掘示例

  1. 路由器协议漏洞挖掘
    • 系统架构如下
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134245040-2098386626.png)
- 结果如下 + 当远程向路由器的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。 2. NFC漏洞挖掘 - 目标选择:NFC手机系统和应用 - 系统架构如下:
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134252501-1076869873.png)
- 结果 + NFC服务拒绝服务,Google原生漏洞,影响Android4.4以下支持NFC的所有版本,此外,包含三星、华为、小米、联想等定制系统。 + 打开手电筒,华为、小米等定制系统设计缺陷,在启动com.android.systemui的包时,可导致MIUI系统在触碰该标签时自动打开系统手电筒。 + 打开蓝牙,逻辑漏洞,使用系统版本为Android4.1.3以下等多个版本的NFC手机触碰蓝牙配对标签,导致蓝牙被自动打开。 + 打开wifi,逻辑漏洞,受影响的系统是MIUI系统5.30等多个版本。使用手机触碰包含wifi连接报文的标签后,系统wifi会被自动打开。 + 应用程序拒绝服务漏洞,报文解析错误 + 屏幕亮度漏洞,设计缺陷,使用NFC手机触碰标签可以将屏幕亮度设置在0-255的任意值,突破应用程序的亮度值限制(5-100)。

2.学习中遇到的问题及解决

  • 问题1:循环神经网络RNN的结构
  • 问题1解决方案:
    • RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
    • RNN结构图
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134302382-987576012.png)
+ RNN层级结构较之于CNN来说比较简单, 它主要有输入层,Hidden Layer, 输出层组成。在Hidden Layer 有一个箭头表示数据的循环更新, 这个就是实现时间记忆功能的方法。 + RNN的实质:上一个时刻的网络状态信息将会作用于下一个时刻的网络状态。RNN网络还能够以时间序列展开成如下形式:
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134310481-1367567372.png)
+ 等号右边是RNN的展开形式。等号右边的等价RNN网络中最初始的输入是x0,输出是h0,这代表着0时刻RNN网络的输入为x0,输出为h0,网络神经元在0时刻的状态保存在A中。当下一个时刻1到来时,此时网络神经元的状态不仅仅由1时刻的输入x1决定,也由0时刻的神经元状态决定。以后的情况都以此类推,直到时间序列的末尾t时刻。 - 问题2:脱库方法 - 问题2解决方案:当发现sql注入之后,脱库的方法,有以下几种。 + 当目标主机支持外部连接时,使用Navicat 进行连接,当使用Navicat连接上数据库之后,选择需要脱库的表,右击导出即可。 + 当拥有权限时,可以上传脚本脱库,Navicat也提供了脚本。Navicat的安装目录下有ntunnel_mysql.php、ntunnel_pgsql.php 和 ntunnel_sqlite.php, 这三个文件分别支持对Mysql,PostreSQL 和SQLite数据库使用HTTP通道连接,具体使用过程为:将ntunnel_mysql.php上传到目标机器的根目录,然后打开Navicate,单击“新建连接”——》“mysql”,选择HTTP选项卡,勾选“使用HTTP通道”,在“通道地址”栏写入ntunnel_mysql.php的URL,其他保持默认,然后返回常规选项卡,填写链接名,用户及密码,这里需要的注意的是,连接的IP地址需要写“Localhost”或者“127.0.0.1”。 + 无法远程连接时,sql注入,首先使用sqlmap进行注入,并使用适当的输入命令如 --current_db 得出当前数据库名,使用--databases 得出当前数据库中的表 --columns得出当前数据库中的列名。使用--dump参数将所选的数据下载到本地。当使用mysql --dump操作失败时,我们可以使用sqlmap配合burpsuit进行注入。

3.本次讲座的学习感悟、思考等

这次讲座为我们介绍了漏洞挖掘技术,对于漏洞挖掘我一直都比较有兴趣,但是一直感觉没有入门,这次讲座让我对漏洞挖掘的技术和发展方向都有了很多的了解,漏洞挖掘本身也是一项比较有趣味性的工作。安卓平台的Xposed框架我之前也有用过,但应该是系统版本的原因,基本上模块都用不了,以后有机会还是要在自己感兴趣的地方花一些时间。

4.最新研究现状

论文1:Identifying SCADA vulnerabilities using passive and active vulnerability assessment techniques点此查看

作者:Sagar Samtani ; Shuo Yu ; Hongyi Zhu ; Mark Patton ; Hsinchun Chen

会议名称:2016 IEEE Conference on Intelligence and Security Informatics (ISI)

研究进展:

监控和数据采集(SCADA)系统旨在允许人工操作员监督,维护和控制关键基础设施。近年来,SCADA系统与互联网的连接性有所增加。虽然这种连接提供了更高的便利性,但也增加了它们对网络攻击的敏感性。这篇论文研究的目的是利用被动和主动漏洞评估技术来识别支持Internet的SCADA系统的漏洞。
论文收集了物联网搜索引擎Shodan的大型SCADA设备测试平台,并使用Nessus和国家漏洞数据库(NVD)评估其漏洞。

  • 被动评估(NVD)显示,1,707/20,461(8.34%)设备包含在NVD中列出的漏洞信息。主动评估(nessus)
  • 主动评估结果显示,论文收集的SCADA设备中有4,009/20,461(19.59%)具有“严重”,“高”,“中等”或“低”风险。具体而言,182个设备具有“严重”风险,189个具有“高”风险,2,77个具有“中等”风险,901个具有“低”风险。另外5,101台设备返回了对扫描的信息响应。然而,应该注意的是,Nessus是内部网络扫描工具,由于所扫描的SCADA设备可以在开放的互联网上访问,与这些漏洞相关的风险可能明显高于Nessus所表明的严重程度。

论文能够识别出众多漏洞,包括使用默认用户名和密码以及PLC和HMI等SCADA组件上的过时软件。未来有很多能够扩展的方向,比如在通过在Shodan的设备横幅数据上使用文本和数据挖掘技术,可以从Shodan数据库中识别出超出API提供的附加SCADA设备;还可以进行纵向分析,以了解SCADA漏洞如何随着时间的推移而发生变化和演变。所有这些扩展将有助于更深入地了解物联网上的SCADA漏洞。

作者:Thanapon Bhuddtham ; Pirawat Watanapongse

会议名称:2016 13th International Joint Conference on Computer Science and Software Engineering (JCSSE)

研究进展:

论文介绍了四种类型的信息,如过时的平台日期,签名版本的过期,系统运行时间,以及与时间相关的软件到期日的漏洞,并扩展了主动的漏洞趋势分析,可以通过CVE标准引用,但有更多的细节或扩展,称为与时间相关的CVE扩展漏洞(T-CVE)。
为了评估T-CVE的严重性,论文提出了基于通用漏洞评分系统(CVSS)实现的与时间相关的漏洞评分系统(TVSS)。TVSS提供了一个评分T-CVE的框架,包括以与时间相关的方式衡量影响水平的指标,该指标与组织的业务或任务依赖于每种类型的T-CVE的风险密切相关。对于评分计算,系统应具有表VII中的准备情况信息,以支持执行漏洞扫描。最后论文对T-CVE进行了趋势分析。
本篇论文的工作不是要取代CVE,而是对CVE进行扩展。未来的工作将包括其他组件实现,以补充T-CVE,如TVSS评分方程和映射到定性评级量表等。

论文3:Automatic Detection and Correction of Vulnerabilities using Machine Learning点此查看

作者:Robin Tommy ; Gullapudi Sundeep ; Hima Jose

研究进展:

论文提出了Bug Terminating Bot(BTB)是一种开发为Web应用程序的漏洞扫描程序,用于查找和修复目标Web应用程序中的漏洞。BTB发现了Web应用程序中的漏洞,并提出了有助于消除漏洞的潜在修复程序。BTB使用支持向量机学习算法来分析结果。
论文实现了BTB程序,使用c#作为编程语言,使用visual studio 2015集成开发环境(IDE)将BTB原型实现为Web应用程序,使用SQLserver作为后端数据库。
论文根据扫描的时间跨度计算了性能因子。

![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134323924-732080749.gif)
机器学习有助于提高算法的效率。考虑具有相同版本的内容管理系统(CMS)的3个客户端应用程序的场景。BTB扫描第一个CMS客户端应用程序并查找漏洞。由于CMS版本也相同,BTB将搜索在第一个CMS中找到的漏洞,以便用户可以快速获取报告,并且客户端可以针对该漏洞采取适当的修复。 因此,第二次扫描的效率将增加,并且这是使用机器学习来执行的。

论文4:A new method to construct the software vulnerability model点此查看

作者:Xiang Li ; Jinfu Chen ; Zhechao Lin ; Lin Zhang ; Zibin Wang ; Minmin Zhou ; Wanggen Xie

会议名称:2017 2nd IEEE International Conference on Computational Intelligence and Applications (ICCIA)

研究进展:

论文通过考虑漏洞的原因和特征,提出了一种新的漏洞模型构建方法。首先分析了软件漏洞的成因和特点,并建立了正式的漏洞模型。根据软件漏洞的原因和特点,建立了漏洞模型,并通过形式化方法推导出软件漏洞。使用软件漏洞数据集验证了所提模型的有效性和效率。此外,还设计并实现了原型系统。实验结果表明,该模型在检测软件漏洞方面比其他方法更有效。
漏洞模型:

![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134331881-813835359.gif)
原型系统操作流程:
![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190519134338212-969082695.gif)
原型系统CHAM-VMAS是一个用Java语言设计的Windows窗体应用程序。它由三部分组成:1)系统管理、2)模型构建、3)模型验证。 论文所提出的漏洞模型可以通过使用化学抽象机的相关概念来描述和推断软件漏洞。随后分析实际例子。实例表明,本文建立的漏洞模型能够有效地表达漏洞机制,有助于人们进一步了解漏洞的本质。此外,还设计并实现了一个原型系统,用于基于CHAM自动生成漏洞模型,并进行了一些实验。实验结果表明,基于该模型的系统在检测软件漏洞方面比其他方法更有效。

论文5:Secure Mobile IPC Software Development with Vulnerability Detectors in Android Studio点此查看

作者:Xianyong Meng;Kai Qian;Dan Lo;Hossain Shahriar;Md Arabin Islam Talukder;Prabir Bhattacharya

会议名称:2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC)

研究进展:

移动应用程序的安全威胁正在爆炸式增长。移动应用程序漏洞和安全缺陷可能为黑客轻松攻击移动应用程序敞开大门。必须在开发生命周期的早期解决安全软件开发问题,而不是在攻击后修复安全漏洞,尽早消除可能的安全漏洞将保护我们的软件,并通过潜在的恶意攻击来缓解安全风险威胁。论文重点关注意图IPC静态代码分析和意图IPC漏洞检测器开发与FindSecurityBugs Android Studio插件,用于Android移动软件开发,基于OWASP 2017十大移动风险,增加安全漏洞检查覆盖率。
本文探讨了Android常见的IPC漏洞,并在Android Studio IDE中展示开发的带有开源FindSecurityBugs插件的IPC探测器。

参考资料

posted @ 2019-05-19 13:46  20189215李炀  阅读(342)  评论(0编辑  收藏