课程:《密码与安全新技术专题》
班级: 1892班
姓名: 李炀
学号:20189215
上课教师:谢四江
上课日期:2019年5月7日
必修/选修: 选修php
1.本次讲座的学习总结
讲座主题:漏洞挖掘及攻防技术
安全漏洞介绍
- 安全漏洞:指信息系统在设计、实现或者运行管理过程当中存在的缺陷或不足,从而使攻击者可以在未受权的状况下利用这些缺陷破坏系统的安全策略。
- 安全漏洞是网络攻击和防护的关键点。
- 攻击:根据目标存在的漏洞,编写攻击程序(exploit)。
- 防护:提早挖掘出漏洞,并修复。
- 安全漏洞威胁极大,影响范围极广。
- 安全漏洞危害等级划分以10.0为最高级,表示最具备危害性。
- 安全事件举例
- HeartBlood漏洞
- 2014年9月,Bash软件被曝出存在一系列漏洞,能够致使远程攻击者在有漏洞的系统中执行任意代码。
- 各类脱库事件
- 棱镜门
漏洞挖掘技术
常见漏洞挖掘技术以下:css
手工测试
补丁比对
程序分析
二进制审核
模糊测试html
- 手工测试:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。
- 优势:人的主观能动性,能够根据经验找到不少不明显、复杂不易见的漏洞。
- 缺点:无规律可循、不可大规模进行等。
- 补丁对比:一种经过对比补丁之间的差别来挖掘漏洞的技术。
- 优势:发现速度快。
- 缺点:只能发现已知漏洞,没法发现新漏洞。
- 常见工具:PatchDiff二、 bindiff。
- 程序分析:分为静态和动态。
- 静态程序分析:是指在不运行计算机程序的条件下,经过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否知足规范性、安全性等指标的一种代码分析技术。
- 优势:覆盖率100%,自动化程度高
- 缺点:漏报和误报
工具:mysql
- 数据流分析: Fortify SCA、 Coverity Prevent、FindBugs等
- 污点分析: Pixy、 TAJ(基于WALA)
- 符号执行: Clang、 KLEE
- 模型检测: BLAST、 MAGIC、 MOPS
- 动态程序分析:在运行计算机程序的条件下,验证代码是否知足规范性、安全性等指标的一种代码分析技术。
- 通常经过插桩技术分析程序的异常行为。插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,而后执行插桩后的程序,经过“桩”的执行获取程序的控制流和数据流信息,进而分析程序的异常行为。
- 优势:自动化程度高、覆盖率较高
- 缺点:漏报和误报、冗余代码致使时间开销增大
- 工具: Android——Xposed
- 二进制审核:源代码不可得,经过逆向获取二进制代码,在二进制代码层次上进行安全评估。
- 缺点:逆向致使信息丢失,理解困难,甚至引入逻辑错误。
- 二进制查看及编辑工具:IDA Pro、 Ollydbg、 UltraEdit、Hex Workshop以及WinHex。
- 模糊测试:经过向被测目标输入大量的畸形数据并监测其异常来发现漏洞。
- 关键点在于测试用例构造,自动化
- 优势:无须源码、误报低、自动化程度高。
- 缺点:覆盖率低
- 工具:Peach、 Sulley、 Autodafe、 SPIKE等。
- 流程以下:
漏洞挖掘技术研究进展
漏洞挖掘技术进展方向向着AI、机器学习、深度学习发展。android
- 二进制程序函数识别
二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都相当重要。因为二进制代码缺乏高级语言程序中的信息,函数的识别每每比较困难,现有的反汇编分析工具具备识别正确率低的缺陷。
- 使用循环神经网络算法RNN进行二进制程序函数识别的模型训练。
- 函数类似性检测
- 测试用例生成
- 在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提升漏洞挖掘的效率和针对性。
- 可使用机器学习来指导生成更高质量的测试输入样本
- 测试用例帅选
- 路径约束求解。
漏洞挖掘示例
- 路由器协议漏洞挖掘
- 系统架构以下
- 结果以下
- 当远程向路由器的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。
- NFC漏洞挖掘
- 目标选择:NFC手机系统和应用
- 系统架构以下:
- 结果
- 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结构图
- RNN层级结构较之于CNN来讲比较简单, 它主要有输入层,Hidden Layer, 输出层组成。在Hidden Layer 有一个箭头表示数据的循环更新, 这个就是实现时间记忆功能的方法。
- RNN的实质:上一个时刻的网络状态信息将会做用于下一个时刻的网络状态。RNN网络还可以以时间序列展开成以下形式:
- 等号右边是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
研究进展:
监控和数据采集(SCADA)系统旨在容许人工操做员监督,维护和控制关键基础设施。近年来,SCADA系统与互联网的链接性有所增长。虽然这种链接提供了更高的便利性,但也增长了它们对网络攻击的敏感性。这篇论文研究的目的是利用被动和主动漏洞评估技术来识别支持Internet的SCADA系统的漏洞。
论文收集了物联网搜索引擎Shodan的大型SCADA设备测试平台,并使用Nessus和国家漏洞数据库(NVD)评估其漏洞。sql
- 被动评估(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
会议名称:2017 International Conference on Current Trends in Computer, Electrical, Electronics and Communication (CTCEEC)
研究进展:
论文提出了Bug Terminating Bot(BTB)是一种开发为Web应用程序的漏洞扫描程序,用于查找和修复目标Web应用程序中的漏洞。BTB发现了Web应用程序中的漏洞,并提出了有助于消除漏洞的潜在修复程序。BTB使用支持向量机学习算法来分析结果。
论文实现了BTB程序,使用c#做为编程语言,使用visual studio 2015集成开发环境(IDE)将BTB原型实现为Web应用程序,使用SQLserver做为后端数据库。
论文根据扫描的时间跨度计算了性能因子。
后端
机器学习有助于提升算法的效率。考虑具备相同版本的内容管理系统(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)
研究进展:
论文经过考虑漏洞的缘由和特征,提出了一种新的漏洞模型构建方法。首先分析了软件漏洞的成因和特色,并创建了正式的漏洞模型。根据软件漏洞的缘由和特色,创建了漏洞模型,并经过形式化方法推导出软件漏洞。使用软件漏洞数据集验证了所提模型的有效性和效率。此外,还设计并实现了原型系统。实验结果代表,该模型在检测软件漏洞方面比其余方法更有效。
漏洞模型:
原型系统操做流程:
原型系统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探测器。
参考资料