《密码安全新技术专题》 第十一周做业

20182918 2018-2019-2 《密码与安全新技术专题》第13周做业

课程:《密码与安全新技术专题》html

班级: 1892
姓名: 冯乾
学号: 20189218
上课教师:王志超
上课日期:2019年5月6日
必修/选修: 选修android

1.本次讲座的学习总结

安全漏洞

在计算机领域中,漏洞就是指计算机在硬件或协议上存在的缺陷。这些缺陷的存在会致使网络的攻击者在不经受权的状况下对计算机网络进行侵入,从而窃取储存在计算机当中的信息,甚至对整个网络系统进行破坏。在计算机的全部设备中,硬件设备是最容易受到网络漏洞的攻击和破坏的,例如防火墙、路由器等。不一样的设备所产生的漏洞类型有所不一样,产生漏洞的缘由也有较大的差别。计算机网络安全漏洞还有一个显著的特色,就是具备必定的时效性,从计算机开始运行起,网络中就会不断产生新的漏洞,所以在平常的使用过程当中要不断更新补丁或对系统进行升级,只有这样才能有效的增强对漏洞的防范。与此同时,一些已经进行修补的漏洞有可能会发生新的变化,所以也须要引发注意。对计算机安全漏洞的防范是一个长期持续的过程,防范的措施也要随着时间的变化和技术的发展进行不断的创新。只有根据网络安全漏洞的类型和特色有针对性的制定防范措施,才能有效的填补漏洞。shell

安全漏洞的分类

网络中的协议漏洞

就拿最咱们应用最普遍的TCP/IP协议组来讲吧,它是置于可信的环境之下设计的,只考虑到网络互连和开放性问题,而没有过多的考虑安全性。形成了TCP/IP协议组自己在应用方面并不安全,所以致使基于TCP/IP协议的一系列网络服务安全性及其脆弱。浏览器

应用软件系统的漏洞

任何一款软件因为设计上的缺陷都或多或少存在必定的漏洞,这种漏洞能够形成系统自己的脆弱。一般该漏洞分为两种:一是因为操做系统自己设计缺陷形成的安全漏洞,并影响到运行在该系统上的应用程序;二是应用程序自己设计漏洞。缓存

配置不当引发的漏洞

因为安全策略设置的不完整,系统有时候会在安全策略未发挥做用的时候运行,而管理人员很难发现,直到系统出现问题才有所觉察。安全

管理方面引发的漏洞

管理制度的缺失,管理人员失误等会形成漏洞的发生。网络

常见的安全漏洞

(一)IP地址的盗用IP地址的盗用是计算机使用过程当中最多见的网络安全漏洞之一。一般,被盗的IP地址都具备较高的权限,所以在被盗后会对计算机的正常运行产生极大的干扰,甚至对泄露用户的我的信息,形成不可挽回的经济财产损失。IP地址的盗用通常是网络黑客经过未经受权的地址篡改自身的登陆身份,从而对网络用户的信息进行窃取或篡改。IP地址被盗用的现象发生的十分频繁,这不但对用户的我的权益形成了极大的侵犯,还会对整个网络系统的环境形成严重的破坏。session

(二)计算机病毒计算机病毒是危害性较大的一种网络安全病毒之一,它是经过必定的程序对网络进行入侵。计算机病毒具备必定的传染性和隐蔽性,对计算机系统的破坏性也较强,计算机在受到病毒攻击后很难被发觉。一旦病毒入侵了计算机后,就会在系统内进行自我复制,从而使整个计算机系统陷入瘫痪。计算机病毒的载体十分的多样,而且传播的速率很快,但最多见的形式仍是黑客入侵。黑客的入侵会对计算机中存储的数据形成极大的破坏。而因为计算机病毒具备必定的假装性,一般较难辨认,要预防这种安全漏洞是较为困难的,所以,它的危害性也是最强的。计算机病毒具备四大特色。首先是巨大的破坏性。计算机在受到病毒攻击后一般会遭受严重的破坏,不只计算机的运行速度明显减慢,并且一些重要的文件和数据会丢失,一些文件则被移动了位置,键盘会失效,磁盘会被格式化甚至受到难以修复的损伤。其次是隐蔽性。计算机病毒的类型十分的多样,能够以文档的形式,也能够以程序的形式出现,有时甚至会以游戏的形式侵入计算机当中。这些形式的病毒与通常的应用程序十分的类似,不少病毒查杀的软件甚至都没法对这些病毒进行有效的识别,病毒在入侵计算机后还会不定时的显现,表现形式十分的多样,难以进行清除。第三是传染性,这也是计算机病毒名称的来源。它具备像生物病毒那样的自我复制能力,而且可以从一个程序传染到另外一个程序,传播的速度十分的快速。计算机病毒不只会对计算机的文件、程序等进行破坏,甚至会从一个终端传播到另外一个终端,从而形成整个计算机网络的瘫痪。最后是潜伏性。计算机病毒具备必定的潜伏期,在入侵计算机后不会立刻显现出来,而是当达到必定的条件和环境后忽然爆发,而后便开始迅速的繁殖和破坏活动。典型的病毒就是“黑色星期五”,这一病毒在刚入侵计算机时没有任何的表现,但一旦达到病毒运行的条件后,就会产生指数式的爆发,在短短的时间内就会删除破坏文件、格式化磁盘、封锁键盘、破坏程序等。除了上述的几个主要特征外,计算机病毒还具备强大的复制能力和可触发行,可以对计算机形成极大的破坏。多线程

(三)操做系统和网络协议方面的漏洞操做系统是计算机得以正常运行的基础,但任何的操做系统都存在自身的缺陷,在进行操做系统的更新时,也会产生新的系统漏洞。常见的操做系统漏洞主要有四个方面的内容,分别是访问控制的错误、不彻底中介、非法访问、操做系统陷门等。网络协议的漏洞主要指IP漏洞。IP是确保计算机信息传递准确性和效率的基础,当IP出现漏洞时,就会致使计算机没法有效的识别外部传入的信息,难以鉴别真实的地址,从而给黑客的入侵创造了条件。黑客能够利用IP上的漏洞,对网络中的数据进行阻拦,并计算出用户的网络地址,从而截取各类信息,甚至还能够经过修改用户的IP而对用户的我的数据进行篡改。架构

(四)拒绝服务攻击拒绝服务攻击是指网络攻击者对计算机进行攻击后,会致使计算机的正常服务被拒绝的现象。在这种状况下,用户的计算机失去了基本的操做功能,计算机中包含的数据也没法读取,极大的影响了用户的正常工做和生活。拒绝服务的做用原理是攻击者经过对用户的终端发送大量的虚假服务信息,从而阻挡了用户须要的真实信息,使计算机网络系统没法为用户提供正常的服务,计算机就会产生拒绝服务的现象。形成拒绝服务问题的根本缘由是系统软件中存在必定的漏洞,或者操做系统和网络协议的功能不完善。拒绝服务的内容通常包括服务程序的相应、CPU、路由设备等。(五)网络结构安全计算机网络是一种网间结构,是由多个局域网组成的庞大的网络系统,可以为用户提供丰富的网络资源。在这个网络系统中,每一台计算机都是与系统中的其余计算机相互链接的,所以信息能够经过这个网络进行层层的传输,最终送达目的地。在这一过程当中,信息不只仅是在两台计算机终端之间传输,还要输送到网卡中,有时信息也会在传输的过程当中被以太网上任何一个节点所截取。黑客就是利用这一原理,对计算机进行了入侵,从而获取了大量的数据包,在经过计算不一样节点之间的关系,对数据包进行解码,最终获取重要的用户信息。

漏洞挖掘技术

1.人工分析

人工分析是一种灰盒分析技术。针对被分析目标程序,手工构造特殊输入条件,观察输出、目标状态变化等,得到漏洞的分析技术。输入包括有效的和无效的输入,输出包括正常输出和非正常输出。非正常输出是漏洞出现的前提,或者就是目标程序的漏洞。非正常目标状态的变化也是发现漏洞的预兆,是深刻挖掘的方向。人工分析高度依赖于分析人员的经验和技巧。人工分析多用于有人机交互界面的目标程序,Web漏洞挖掘中多使用人工分析的方法。

2.Fuzzing技术

Fuzzing技术是一种基于缺陷注入的自动软件测试技术,它利用黑盒分析技术方法,使用大量半有效的数据做为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞。半有效数据是指被测目标程序的必要标识部分和大部分数据是有效的,有意构造的数据部分是无效的,应用程序在处理该数据时就有可能发生错误,可能致使应用程序的崩溃或者触发相应的安全漏洞。

根据分析目标的特色,Fuzzing能够分为三类:

  1. 动态Web页面Fuzzing,针对ASP、PHP、Java、Perl等编写的网页程序,也包括使用这类技术构建的B/S架构应用程序,典型应用软件为HTTP Fuzz;

  2. 文件格式Fuzzing,针对各类文档格式,典型应用软件为PDF Fuzz;

  3. 协议Fuzzing,针对网络协议,典型应用软件为针对微软RPC(远程过程调用)的Fuzz。

Fuzzer软件输入的构造方法与黑盒测试软件的构造类似,边界值、字符串、文件头、文件尾的附加字符串等都可以做为基本的构造条件。Fuzzer软件能够用于检测多种安全漏洞,包括缓冲区溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、竞争条件和死锁漏洞、SQL注入、跨站脚本、RPC漏洞攻击、文件系统攻击、信息泄露等。

与其它技术相比,Fuzzing技术具备思想简单,容易理解、从发现漏洞到漏洞重现容易、不存在误报的优势。同时它也存在黑盒分析的所有缺点,并且具备不通用、构造测试周期长等问题。

经常使用的Fuzzer软件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。

3.补丁比对技术

补丁比对技术主要用于黑客或竞争对手找出软件发布者已修正但未尚公开的漏洞,是黑客利用漏洞前常用的技术手段。

安全公告或补丁发布说明书中通常不指明漏洞的准确位置和缘由,黑客很难仅根据该声明利用漏洞。黑客能够经过比较打补丁先后的二进制文件,肯定漏洞的位置,再结合其余漏洞挖掘技术,便可了解漏洞的细节,最后能够获得漏洞利用的攻击代码。

简单的比较方法有二进制字节和字符串比较、对目标程序逆向工程后的比较两种。第一种方法适用于补丁先后有少许变化的比较,经常使用的于字符串变化、边界值变化等致使漏洞的分析。第二种方法适用于程序可被反编译,且可根据反编译找到函数参数变化致使漏洞的分析。这两种方法都不适合文件修改较多的状况。

复杂的比较方法有Tobb Sabin提出的基于指令类似性的图形化比较和Halvar Flake提出的结构化二进制比较,能够发现文件中一些非结构化的变化,如缓冲区大小的改变,且以图形化的方式进行显示。

经常使用的补丁比对工具备Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高级文字编辑工具也有类似的功能,如Ultra Edit、HexEdit等。这些补丁比对工具软件基于字符串比较或二进制比较技术。

4.静态分析技术

静态分析技术是对被分析目标的源程序进行分析检测,发现程序中存在的安全漏洞或隐患,是一种典型的白盒分析技术。它的方法主要包括静态字符串搜索、上下文搜索。静态分析过程主要是找到不正确的函数调用及返回状态,特别是可能未进行边界检查或边界检查不正确的函数调用,可能形成缓冲区溢出的函数、外部调用函数、共享内存函数以及函数指针等。

对开放源代码的程序,经过检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针能够发现程序中存在的安全缺陷。被分析目标没有附带源程序时,就须要对程序进行逆向工程,获取相似于源代码的逆向工程代码,而后再进行搜索。使用与源代码类似的方法,也能够发现程序中的漏洞,这类静态分析方法叫作反汇编扫描。因为采用了底层的汇编语言进行漏洞分析,在理论上能够发现全部计算机可运行的漏洞,对于不公开源代码的程序来讲每每是最有效的发现安全漏洞的办法。

但这种方法也存在很大的局限性,不断扩充的特征库或词典将形成检测的结果集大、误报率高;同时此方法重点是分析代码的“特征”,而不关心程序的功能,不会有针对功能及程序结构的分析检查。

5.动态分析技术

动态分析技术起源于软件调试技术,是用调试器做为动态分析工具,但不一样于软件调试技术的是它每每处理的是没有源代码的被分析程序,或是被逆向工程过的被分析程序。

动态分析须要在调试器中运行目标程序,经过观察执行过程当中程序的运行状态、内存使用情况以及寄存器的值等以发现漏洞。通常分析过程分为代码流分析和数据流分析。代码流分析主要是经过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数。数据流分析是经过构造特殊数据触发潜在错误。

比较特殊的,在动态分析过程当中能够采用动态代码替换技术,破坏程序运行流程、替换函数入口、函数参数,至关于构造半有效数据,从而找到隐藏在系统中的缺陷。

常见的动态分析工具备SoftIce、OllyDbg、WinDbg等。 

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

  • 问题1:棱镜门事件中有哪些和安全漏洞有关的方面?
  • 问题1解决方案:查阅并推测得知,美国对其余国家的渗透应主要利用软件系统漏洞,而斯诺登对棱镜计划的披露,则应属于管理方面的问题。
  • 问题2:咱们如何作到免受安全漏洞的危害
  • 问题2解决方案:就目前来讲,彷佛只有安装可靠地操做系统和防御软件了。

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

各种计算机产品和技术不断深刻人们的生活,其可能的安全漏洞和安全风险也应获得相应的重视。计算机安全风险,小到危害我的隐私,大到危害国家安全,咱们不得不慎重对待。要想防范安全风险,首先要知道风险出如今什么地方,所以漏洞挖掘技术就体现出其应用价值。尤为是如今移动端设备与人们生活关系愈加紧密,

4.漏洞挖掘最新研究现状

Software Vulnerability Analysis and Discovery UsingMachine-Learning and Data-Mining Techniques: A Survey

本文收入ACM Computing Surveys (CSUR), Volume 50 Issue 4, November 2017
做者信息:

  • Seyed Mohammad Ghaffarian
    • Amirkabir University of Technology,
    • Tehran, Islamic Republic of Iran
  • Hamid Reza Shahriari
    • Amirkabir University of Technology,
    • Tehran, Islamic Republic of Iran

数据挖掘和机器学习技术已成功用于许多不一样的应用领域,包括计算机安全领域。 本文普遍从新审视了之前的工做,这些工做将数据挖掘和机器学习技术应用于软件漏洞分析和发现。 本文将之前的研究分为四大类。 对每一个类别,本文提供了每一个工做的简短但足够详细的摘要,使从新搜索者可以在短期内掌握每一个类别中的关键步骤,技术和评估方法。 此外,本文做者在每一个部分的末尾提供了一个表格,简要概述了各类工做的关键方面。 除了汇总表以外,本文还讨论了每一个类别的成就和限制,以及针对每一个类别的将来研究的开放领域。

Vulnerability Disclosure in the Age of Social Media: Exploiting Twitter for Predicting Real-World Exploits

本文收入24th USENIX Security Symposium,被引次数79.
做者信息:

  • Carl Sabottke, Octavian Suciu, and Tudor Dumitraş, University of Maryland

近年来,被发现的软件漏洞数量显著增长。 这须要经过评估可能被利用的漏洞并快速排除现实中未实际利用的漏洞来优先处理新披露的漏洞。 本文对Twitter上传播的与漏洞相关的信息进行定量和定性探索。 而后,本文描述了基于Twitter的漏洞检测器的设计,并介绍了一个特定于本文问题的威胁模型。 除了响应优先级以外,本文的检测技术还可用于网络保险的风险建模,并突出了攻击受害者提供的信息的价值。

Exploiting Trustzone on Android

本文收入 Black Hat USA, 2015。
做者:DI SHEN

本文讲述了一步一步渗透TrustZone的真实故事。 做者的目标是华为HiSilicon使用的可信执行环境(TEE)的实现。 首先,做者发现了在正常世界中得到内核级权限的漏洞。 而后做者找到另外一个在TEE中任意执行代码的方法。 这是一个概念验证,任何本地应用程序都可以在HiSilicon的TEE中执行shellcode。 这些漏洞影响了华​​为HiSilicon SoC芯片组的全部华为设备。
利用这些漏洞,本地应用程序可以获取指纹图像或其余加密数据,禁用调制解调器图像和TA的签名验证,将任何模块加载到TEE并修改efuse数据。 即便TrustZone是为解决安全问题而设计的,但仍然能够利用具备安全性问题的实现。

Exploiting and Protecting Dynamic Code Generation

本文收入NDSS, 2015
做者信息:

  • Chengyu Song
    • Georgia Institute of Technology
    • csong84@gatech.edu
  • Chao Zhang
    • UC Berkeley
    • chaoz@berkeley.edu
  • Tielei Wang,
    • Wenke LeeGeorgia Institute of Technology
    • tielei.wang@gmail.com,wenke@cc.gatech.edu
  • David Melski
    • GrammaTech
    • melski@grammatech.com

目前已经提出并部署了许多机制来防止利用软件漏洞进行攻击。 其中,W⊕X是最有效和最有效的之一。 W⊕X防止内存页面同时可写和可执行,使得几十年前的shellcode注入技术变得不可行。本文证实了传统的shellcode injection攻击能够经过代码缓存注入技术来恢复。 具体而言,动态代码生成是一种普遍用于即时(JIT)编译和动态二进制翻译(DBT)的技术,能够动态生成和修改代码,以提升性能或安全性。 动态生成的代码片断存储在代码高速缓存中,代码高速缓存能够同时或交替地写入和执行,从而产生利用的机会。 当生成的代码是多线程的时,这种威胁是特别现实的,由于可写和可执行文件之间的切换留下了利用的时间窗口。 为了说明这种威胁,本文针对支持WebWorkers的现代浏览器制定了概念验证漏洞。为了缓解这种代码缓存注入威胁,本文提出了一种新的动态代码生成体系结构。 这个新架构将动态代码生成器定位到一个单独的进程,其中代码缓存是可写的。 在生成的代码执行的原始进程中,代码缓存仍然是只读的。 代码缓存在写入过程和执行过程当中经过共享内存进行同步。 代码生成器和生成的代码之间的交互经过远程过程调用(RPC)进行处理。 本文已将Google V8 JavaScript引擎和Strata DBT移植到这个新架构中。 本文的实施经验代表,移植到这个新架构的工程工做量很小。 对本文的原型实现的评估代表,这种新架构能够以较小的性能开销击败代码缓存注入攻击。

An Inference Attack Model for Flow Table Capacity and Usage: Exploiting the Vulnerability of Flow Table Overflow in Software-Defined Network

本文收入arXiv preprint arXiv:1504.03095, 2015
做者信息:

  • Junyuan Leng, Yadong Zhou, Junjie Zhang, Chengchen Hu
  • MOE Key Lab for Intelligent Networks and Network Security, Xi’an Jiaotong University‡Department of Computer Science and Engineering, Wright State University

做为下一代网络最具竞争力的解决方案,软件定义网络(SDN)及其主导实现OpenFlow正在吸引愈来愈多的兴趣。 但除了方便性和灵活性以外,SDN / OpenFlow还引入了新的限制和安全问题。 在这些限制中,最明显也多是最容易被忽视的限制是SDN / OpenFlow交换机的流表容量。

本文提出了一种针对SDN / OpenFlow网络的新型推理攻击,其受到SDN / OpenFlow交换机的有限流表容量以及因为数据平面和控制平面之间的频繁交互而致使的如下可测量的网络性能下降的推进当流表已满的时候。 这是SDN / OpenFlow首次提出的这种推理攻击模型。 本文还实现了推理攻击框架,并检查了它的效率和准确性。 仿真结果代表,本文的框架能够推导出80%或更高精度的网络参数(流表容量和流表使用状况)。 这些发现使咱们更深刻地了解SDN / OpenFlow限制,并做为将来SDN / OpenFlow改进的指导。

参考资料

相关文章
相关标签/搜索