用户您好!请先登录!

网络安全的常见攻击手段

网络安全的常见攻击手段

网络攻击(Cyber Attacks,也称赛博攻击)是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的,任何类型的进攻动作。对于计算机和计算机网络来说,破坏、揭露、修改、使软件或服务失去功能、在没有得到授权的情况下偷取或访问任何一计算机的数据,都会被视为于计算机和计算机网络中的攻击。

1. 暴力破解

暴力破解是一种针对于密码或身份认证的破译方法,即穷举尝试各种可能,找到突破身份认证的一种攻击方法。

暴力破解是一把双刃剑,一方面能够被恶意者使用,另一方面在计算机安全性方面却非常重要,它用于检查系统、网络或应用程序中使用的弱密码。

暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞大,枚举总是能够成功的!

但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包,所以在实施暴力破解之前,我们只需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。

1.1 常用的暴力破解工具

  • Hydra

Hydra工具是著名黑客组织Thc的一款开源的暴力破解工具。可以 破解多种密码。主要支持:Telnet、Ftp、Http、Https、Http-proxy、 Mssql、Mysql等。唯一不方便的就是破解时须要的字典须我们自己制作。

Hydra,这款工具可以应用在Windows环境和Linux环境下,Windows 环境下是没有图形界面的,在Linux环境下是有图形界面的。

  • Burp Suite

Burp Suite是用于攻击web应用程序的集成平台。它包含了许多工 具,并为这些工具设计了接口。主要可以应用Burp Suite来进行抓 包、改包、截断上传、扫描、爆破等功能。

  • DUBrute

DUBrute工具主要是一款用于批量暴破3389密码的工具,也可以进 行指定目标的暴破。

  • Oraburte

Oraburte 是一款专门针对于Oracle数据库用户名密码登录暴破的工 具,此工具使用简单,但暴破速度较慢。

  • X-Scan扫描器

X-Scan扫描器是国内的一款综合性漏洞扫描和口令扫描工具。可以 针对大量的服务进行认证,如:Ftp、Ssh、Telnet、Sql-Server等。

  • Apache Tomcat弱口令扫描器

ApacheTomcat弱口令扫描器,是一款专门针对Tomcat后台登录猜 解的工具。

2. 拒绝服务攻击DOS

拒绝服务攻击(Denial-of-Service Attack)亦称洪水攻击,是一种网络攻击手法,英文缩写为DOS。使用网络上两个或两个以上被攻陷的电脑作为 “僵尸” 向特定的目标发动 “拒绝服务” 式攻击,通常称为分布式拒绝服务攻击(Distributed Denial-of-Service Attack)。

拒绝服务攻击目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。比如:

  • 试图FLOOD服务器,阻止合法的网络通讯
  • 破坏两个机器间的连接,阻止访问服务
  • 阻止特殊用户访问服务
  • 破坏服务器的服务或者导致服务器死机

2.1 拒绝服务攻击本质及现象

  • 拒绝服务攻击本质

要对服务器实施拒绝服务攻击,本质上的方式只有两个:

  1. 迫使服务器的缓冲区满,不接收新的请求。
  2. 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接,这就是DOS攻击实施的基本思想。
  • 拒绝服务攻击现象
  1. 被攻击主机上有大量等待的TCP连接 。
  2. 网络中充斥着大量的无用的数据包,源地址为假 。
  3. 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯 。
  4. 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求 。
  5. 严重时会造成系统死机。

2.2 拒绝服务攻击的原理

「网络安全」常见攻击篇(2)——拒绝服务攻击DOS

如图所示,一个比较完善的DDoS攻击体系分成四大部分,先来看一下最重要的第2和第3部分:它们分别用做控制和实际发起攻击。请注意控制机与攻击机的区别,对第4部分的受害者来说,DDoS的实际攻击包是从第3部分攻击傀儡机上发出的,第2部分的控制机只发布命令而不参与实际的攻击。对第2和第3部分计算机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。

有的朋友也许会问道:”为什么黑客不直接去控制攻击傀儡机,而要从控制傀儡机上转一下呢?”。这就是导致DDoS攻击难以追查的原因之一了。做为攻击者的角度来说,肯定不愿意被捉到,而攻击者使用的傀儡机越多,他实际上提供给受害者的分析依据就越多。在占领一台机器后,高水平的攻击者会首先做两件事:1. 考虑如何留好后门。2. 如何清理日志。这就是擦掉脚印,不让自己做的事被别人查觉到。比较不敬业的黑客会不管三七二十一把日志全都删掉,但这样的话网管员发现日志都没了就会知道有人干了坏事了,顶多无法再从日志发现是谁干的而已。相反,真正的好手会挑有关自己的日志项目删掉,让人看不到异常的情况。这样可以长时间地利用傀儡机。

2.3 常见的拒绝服务攻击手段

常见的拒绝服务攻击主要如下:

  • ping of death (死亡之ping)
  • Teardrop(泪滴)
  • UDP flood(UDP洪水)
  • SYN flood(SYN 洪水)
  • IP欺骗攻击
  • ACK FLOOD攻击
  • CC攻击
  • 反射DDOS
  • Websocket
  • 临时透镜
  • 慢速DDOS
  • ReDoS
  • Fraggle攻击等

上述任何一种攻击都可以被运用于DDOS攻击,即分布式拒绝服务攻击,从多个平台发起。

3. 跨站脚本攻击XSS

跨站脚本攻击XSS(Cross Site Script Execution的缩写),是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

3.1 XSS分类

XSS根据效果的不同,可以分为以下几类:

  • 反射型XSS

给用户发送页面或者链接,让用户点击来进行攻击,也叫做“非持久型XSS”。

  • 存储型XSS

把攻击存放在服务端,可能造成传播(比如博客系统,每个访问该页面的人都有可能被攻击),主动性更强。

比较常见的一种场景就是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的Javascript代码。黑客把恶意的脚本保存到服务器端,所以这种XSS攻击叫做“存储型XSS”。也叫做“持久型XSS”,因为从效果上来说,它存在的时间是比较长的。

  • DOM型

本质上是反射型,但是是通过用户点击,修改原本dom元素的属性,构造攻击动作。

反射型和dom型区别:反射型是构造好了攻击动作,然后就等你打开那个页面;dom型也是等你点击,但是不是页面,通过用户动作,把原来的动作注释掉,然后加上自己修改的动作。

3.2 XSS原理

「网络安全」常见攻击篇(3)——跨站脚本攻击XSS

主要是依靠一切可能的手段,将浏览器中可以执行的脚本(javascript)植入到页面代码中,从而对用户客户端实施攻击。这才是我认为在目前这个“大前端时代”xss攻击的定义。

实际上黑客攻击这种行为从本质上讲,就是想尽一切手段在别人的代码环境中执行自己的代码。

这件事情又可以分为两部分进行研究,一是如何把代码植入到对方的系统中去,二是植入进去的代码能不能被对方的系统执行。

xss漏洞是对web客户端(浏览器)的攻击,所以说植入的代码基本上以javascript和html标签(有时也有结合css样式的xss向量)为主。

实施XSS攻击需要具备两个条件:1、需要向web页面注入恶意html代码;2、这些恶意代码能够被浏览器成功的执行。

3.3 XSS破坏方式

  • 破坏页面结构

用户输入的内容包含了html的标签,与前面的标签等闭合,导致页面的DIV结构发生变化,页面错乱。

  • 破坏显示内容

用户输入的内容包含了单引号或双引号,与前面的单引号或双引号匹配,导致后面的内容丢失,显示不出来。

  • 破坏JS

用户产生的内容直接输出到js片断中,但仅转义少数字符不能保证排除攻击,所以容易导致JS被破坏。

4. SQL注入攻击

SQL注入攻击是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。

SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

4.1 SQL注入的原理

「网络安全」常见攻击篇(4)——SQL注入攻击

当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。

在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程 的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序 存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况,需要构造巧妙的SQL语句,从而成功获取想要的数据。

下面我们举例说明SQL注入的原理:

假设有一个users表,里面有两个字段username和password。在java代码中初学者都习惯用SQL拼接的方式进行用户验证。比如:“select id from users where username = ‘”+username +“’ and password = ‘” + password +“’” 这里的username和password都是我们存取从web表单获得的数据。

如果我们在表单中username的输入框中输入‘or 1=1 ‘,password的表单中随便输入一些东西,假如这里输入123,此时所要执行的sql语句就变成了select id from users where username = ’‘ or 1=1 and password = ’123‘,这个sql中因为1=1是true,后面 and password = ’123‘被注释掉了。所以这里完全跳过了sql验证,构成了一次SQL注入攻击,SQL注入的方式还有很多。

4.2 SQL注入攻击的类型

「网络安全」常见攻击篇(4)——SQL注入攻击
  • 带内注入

这是典型的攻击,攻击者可以通过相同的通信通道发起攻击并获得结果。这是通过两种带内技术完成的:

  1. 基于错误的SQL注入:从显示的错误消息中获取有关数据库的信息
  2. 基于联合的SQL注入:依赖于攻击者能够将UNION ALL被盗信息的结果与合法结果连接起来。

这两种技术都依赖于攻击者修改应用程序发送的SQL,以及浏览器中显示的错误和返回的信息。如果应用程序开发人员或数据库开发人员无法正确地参数化他们在查询中使用的值,那么它会成功。两者都是试错法,可以检测到错误。

  • 盲注入

也称为推理SQL注入,盲注入攻击不会直接从目标数据库中显示数据;相反,攻击者会仔细检查行为中的间接线索。HTTP响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间,这些都可以是线索,具体取决于攻击者的目标。他们还可以指向攻击者尝试的另一个SQLi攻击途径。

  • 带外注入

这种攻击有点复杂,当攻击者无法在单个直接查询 – 响应攻击中实现其目标时,攻击者可能会使用此攻击。通常,攻击者会制作SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

二阶注入就是一种带外注入攻击。在这种情况下,攻击者将提供SQL注入,该注入将由数据库系统的单独行为存储和执行。当二级系统行为发生时(它可能类似于基于时间的作业或由其他典型管理员或用户使用数据库触发的某些事情)并且执行攻击者的SQL注入,那就是当“伸出”到系统时攻击者控制发生了。

4.3 SQL注入的危害

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  • 破坏硬盘数据,瘫痪全系统。

5. 口令攻击

口令是网络系统的第一道防线。当前的网络系统都是通过口令来验证用户身份、实施访问控制的。

口令攻击是指黑客以口令为攻击目标,破解合法用户的口令,或避开口令验证过程,然后冒充合法用户潜入目标网络系统,夺取目标系统控制权的过程。

如果口令攻击成功黑客进入了目标网络系统,就能够随心所欲地窃取、破坏和篡改被侵入方的信息,直至完全控制被侵入方。所以,口令攻击是黑客实施网络攻击的最基本、最重要、最有效的方法之一。

5.1 常见口令攻击方法

「网络安全」常见攻击篇(5)——口令攻击

口令认证的过程是用户在本地输入账号和口令,经传输线路到达远端系统进行认证。常见的口令攻击方法如下:

  • 社会工程学(Social Engineering)

通过人际交往这一非技术手段以欺骗、套取的方式来获得口令。避免此类攻击的对策是加强用户意识。

  • 从用户主机中获取口令

攻击者对用户主机的使用权限一般可分为两种情况: 一是具有使用主机的一般权限; 二是不具有使用主机的任何权限。前者多见于一些特定场合,如企业内部,大学校园的计算中心,机房等。所使用的工具多为可从网上下载的专用软件,对于攻击者来说不需要有太高的技术平,只要能使用某些软件就可以进行破解。对于后者一般要与一些黑客技术配合使用,如特洛伊马、后门程序等,这样可使攻击者非法获得对用户机器的完全控制权,然后再在目标主机上安装木马、键盘记录器等工具软件来窃取被攻击主机用户输入的口令字符串。

  • 通过网络监听来截获用户口令

网络监听的目的是截获通信的内容,然后分析数据包,从而获得一些敏感信息。它本是提供给网络安全管理人员进行管理的工具,利用它来监视网络的状态、数据流动情况以及网络上传输的信息等。而目前,诸多协议本身没有采用任何加密或身份认证技术,如在Telnet、FTP、HTTP、SMTP 等传输协议中,用户账户和密码信息都是以明文方式传输的,此时攻击者只要将网络接口设置成混杂模式,然后利用数据包截取工具(如监听器Sniffer)便可很容易收集到一个网段内的所有用户账号和密码。

  • 远端系统破解用户口令

远端系统是指Web服务器或攻击者要入侵的其他服务器。攻击者入侵系统时,常常把破解系统中普通用户口令作为攻击的开始 因为只要取得系统中一般的访问权限,就很容易利用系统的本地漏洞来取得系统的控制权。下面是几种常见的攻击方式:

  1. 利用Web 页面欺骗:攻击者将用户所要浏览的网页URL地址改写成指向自己的服务器,当用户浏览目标网页的时候,实际上是一个伪造的页面,如果用户在这个伪造页面中填写有关的登录信息,如账户名称、密码等,这些信息就会被传送到攻击者的Web 服务器,从而达到骗取口令的目的。如网络钓鱼就是采用这种方法获取用户的账号与密码等信息的。
  2. 强行破解用户口令:当攻击者知道用户的账号( 如电子邮件@前面的部分) 后,就可以利用一些专门的密码破解工具进行破解,例如采用字典法、穷举法,破解工具会自动从定义的字典中取出一个单词,作为用户的口令尝试登录,如果口令错误,就按序取出下一个单词再进行尝试,直到找到正确的口令或者字典的单词测试完成为止。
  3. 想方设法获取服务器上的用户口令文件( 此文件成为Shadow文件) 后,用暴力破解程序破解用户口令。这种方法在所有方法中危害最大,因为它不需要像第二种方法那样一遍又一遍地尝试登录服务器,而是在本地将加密后的口令与Shadow 文件中的口令相比较就能非常容易地破获用户密码,尤其对那些安全系数极低的口令更是在短短的一两分钟内,甚至几十秒内就可以将其破解。

6. 木马攻击

木马指的是隐藏在正常程序中的一段具有特殊功能的代码,实质上是一种远程控制软件,是一种未经授权,利用网络欺骗或者攻击的手段装入目标计算机中。木马用表面的有趣的、有用的功能来吸引人,但实际上暗含一些不为人知的功能,如复制文件、删除文件、修改计算机配置、浏览文件等。

木马通常有两个可执行的程序:一个是客户端,一个是服务端。黑客电脑上安装客户端,目标对象电脑上安装服务端,黑客在远端操作目标对象电脑,可以做各种操作。服务器端程序和控制器程序共同组成了完整的木马,其与病毒有着本质的区别,不具备传染性,不以破坏为主要目的,而是攻击者有目的地将其植入目标计算机进而通过网络对个人信息进行相关操作,危害存储在计算机中的文件、数据、程序等的安全,但是木马和病毒有着一些相同点,它十分隐蔽不易被人们发现,极具危害性,在短时间内可以使大片计算机系统瘫痪,也被人称为黑客病毒。

6.1 木马的工作原理

「网络安全」常见攻击篇(6)——木马攻击

木马基于客户和服务器的远程控制黑客程序,控制者在服务器端通过有趣的应用骗取用户执行相应程序,将木马程序植入计算机系统内部,而在客户端黑客可以利用网络进行远程监控或者操作,获取计算机系统内部的信息。

典型的木马原理就是当服务器端在目标计算机上被执行后,木马打开一个默认的端口进行监听,当客户机向服务器提出连接要求,服务器上的相关程序就会自动运行来应答客户机的请求,服务器端程序与客户端建立连接后,由客户端发出指令,服务器在计算机中执行这些指令,将数据传递给客户端,进而就能够控制主机。

6.2 木马的分类

常见的木马主要可以分为以下几大类:

  • 破坏型

这种木马唯一的功能就是破坏并且删除文件,它们非常简单,很容易使用。能自动删除目标机上的dll、exe文件,所以非常危险,一旦被放入就会严重威胁到电脑的安全。不过,一般黑客不会做这种无意义的纯粹破坏的事,除非你和他有仇。

  • 密码发送型

这种木马可以找到目标机的隐藏密码,并且在受害者不知道的情况下,把它们发送到指定的信箱。有人喜欢把自己的各种密码以文件的形式存放在计算机中,认为这样方便;还有人喜欢用Windows提供的密码记忆功能,这样就可以不必每次都输入密码了。这类木马恰恰是利用这一点获取目标机的密码,它们大多数会在每次启动Windows时重新运行,而且多使用25号端口上送E-mail。如果目标机有隐藏密码,这些木马是非常危险的。

  • 远程访问型

这种木马是现在使用最广泛的木马,它可以远程访问被攻击者的硬盘。只要有人运行了服务端程序,客户端通过扫描等手段知道了服务端的1P地址,就可以实现远程控制。当然,这种远程控制也可以用在正道上,比如教师监控学生在机器上的所有操作。远程访问型木马会在目标机上打开一个端口,而且有些木马还可以改变端口、设置连接密码等,为的是只有黑客自己来控制这个木马。因为一些常见木马的监听端口已经为大家熟知,改变了端口,才会有更大的隐蔽性。

  • 键盘记录木马

这种特洛伊木马非常简单。它们只做一件事情,就是记录受害者的键盘敲击并且在LQG文件里查找密码,并且随着Windows的启动而启动。它们有在线和离线记录这样的选项,可以分别记录你在线和离线状态下敲击键盘时的按键情况,也就是说你按过什么按键,黑客从记录中都可以知道,并且很容易从中得到你的密码等有用信息,甚至是你的信用卡账号哦!当然,对于这种类型的木马,很多都具有邮件发送功能,会自动将密码发送到黑客指定的邮箱。

  • DoS攻击木马

随着DoS攻击越来越广泛的应用,被用作DoS攻击的木马也越来越流行起来。当黑客入侵一台机器后,给他种上DoS攻击木马,那么日后这台计算机就成为黑客DoS攻击的最得力助手了。黑客控制的肉鸡数量越多,发动DoS攻击取得成功的机率就越大。 所以,这种木马的危害不是体现在被感染计算机上,而是体现在黑客利用它来攻击一台又一台计算机,给网络造成很大的伤害和带来损失。还有一种类似DoS的木马叫做邮件炸弹木马,一旦机器被感染,木马就会随机生成各种各样主题的信件,对特定的邮箱不停地发送邮件,一直到对方瘫痪、不能接受邮件为止。

  • FTP木马

这种木马可能是最简单和古老的木马了,它的惟一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进入对方计算机。

  • 反弹端口型木马

木马开发者在分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。与一般的木马相反,反弹端口型木马的服务端(被控制端)使用主动端口,客户端(控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的被动端口;为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自已的端口时,发现类似 TCP User IP:1026 Controller IP:80 ESTABLISHED的情况,稍微疏忽一点,就会以为是自已在浏览网页,因为浏览网页都会打开80端口的。

  • 代理木马

黑客在入侵的同时掩盖自已的足迹,谨防别人发现自已的身份是非常重要的,因此,给被控制的肉鸡种上代理木马,让其变成攻击者发动攻击的跳板就是代理木马最重要的任务。通过代理木马,攻击者可以在匿名的情况下使用Telnet,ICQ,IRC等程序,从而隐蔽自已的踪迹。

  • 程序杀手木马

上面的木马功能虽然形形色色,不过到了对方机器上要发挥自已的作用,还要过防木马软件这一关才行。常见的防木马软件有Zone Alarm,Norton Anti-Virus等。程序杀手木马的功能就是关闭对方机器上运行的这类程序,让其他的木马更好地发挥作用。

代理木马和程序杀手木马实际上是其它类型的木马可能具有的功能,如很多远程访问型木马都可以使用代理服务器的方式连接肉机,而且连上肉机上首先检查对方不是开启了防火墙,如果有,则杀掉其进程,这样更有利于黑客隐藏身份,从而实现远程控制的目的。

7. 跨站请求伪造CSRF

「网络安全」常见攻击篇(7)——CSRF

CSRF是英语Cross-site request forgery的缩写,中文意思是“跨站请求伪造”, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

CSRF与跨站脚本攻击(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

7.1 CSRF攻击原理

「网络安全」常见攻击篇(7)——CSRF

CSRF攻击原理比较简单,如图所示。其中WebA为存在CSRF漏洞的网站,WebB为攻击者构建的恶意网站,UserC为WebA网站的合法用户。

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
  2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

7.2 CSRF检测方法

检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。

以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。

8. 恶意软件攻击

恶意软件是指在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马的程序,通过破坏软件进程来实施控制。

8.1 恶意软件分类

  • 病毒

计算机病毒是大多数媒体和用户调用恶意软件程序的起因,幸运的是大多数恶意软件程序都不是病毒。计算机病毒修改其他合法主机文件(或指向它们的指针),以便在执行受害者文件时也会执行病毒。

如今纯计算机病毒并不常见占所有恶意软件的不到10%,这是一件好事。病毒是唯一一种“感染”其他文件的恶意软件。这使得它们特别难以清理,因为必须从合法程序执行恶意软件。这一直是非常重要的。最好的防病毒程序很难正确地执行它,并且在许多(如果不是大多数)情况下,只能隔离或删除受感染的文件。

  • 蠕虫

蠕虫比计算机病毒存在的时间更长一直到大型机时代。电子邮件在20世纪90年代后期使它们流行起来,近十年来,计算机安全专业人员被作为消息附件到来的恶意蠕虫所包围。一个人会打开一封垃圾邮件整个公司都会在短时间内被感染。

蠕虫的独特特征在于它是自我复制的。以臭名昭着的Iloveyou蠕虫为例:当它攻击时,它几乎击中了世界上每一个电子邮件用户,超载的电话系统(带有欺诈性的文本发送),关闭了电视网络。其他几种蠕虫,包括SQL Slammer和MS Blaster,确保了蠕虫在计算机安全历史中的地位。

使有效蠕虫如此具有破坏性的原因在于它能够在没有最终用户操作的情况下进行传播。相比之下,病毒要求最终用户在尝试感染其他无辜文件和用户之前至少启动它。蠕虫利用其他文件和程序来完成传播的工作。例如SQL Slammer蠕虫使用Microsoft SQL中的一个(修补)漏洞,在大约10分钟内连接到互联网的几乎所有未修补的SQL服务器上都会出现缓冲区溢出,这个速度记录至今仍然存在。

  • 特洛伊木马

计算机蠕虫已被特洛伊木马恶意软件程序取代成为黑客的首选武器。特洛伊木马伪装成合法程序,但它们包含恶意指令。它们一直存在,甚至比计算机病毒还要长,但它比任何其他类型的恶意软件更能掌握当前的计算机。

特洛伊木马必须由其受害者执行才能完成其工作。特洛伊木马通常通过电子邮件到达,或在用户访问受感染的网站时被推送。最受欢迎的木马类型是假冒防病毒程序,弹出并声称您已被感染,然后指示您运行程序来清理您的PC。

特洛伊木马很难防范原因有两个:它们很容易编写(网络犯罪分子经常制作和狩猎木马建筑工具包)并通过欺骗最终用户进行传播 – 补丁,防火墙和其他传统防御无法阻止。恶意软件编写者每月将特洛伊木马数量增加数百万。反恶意软件厂商尽力打击特洛伊木马,但有太多的木马不能完全防御。

  • 木马和蠕虫组合

如今,大多数恶意软件都是传统恶意程序的组合,通常包括部分特洛伊木马和蠕虫,偶尔也会包含病毒。通常,恶意软件程序作为特洛伊木马对最终用户显示,但一旦执行,它就像蠕虫一样通过网络攻击其他受害者。今天的许多恶意软件程序都被认为是rootkit或隐形程序。从本质上讲,恶意软件程序试图修改底层操作系统,以实现最终控制并隐藏反恶意软件程序。要摆脱这些类型的程序,必须从反复选件扫描开始从内存中删除控制组件。

僵尸网络本质上是特洛伊木马/蠕虫组合,试图使被攻击的个人客户成为更大的恶意网络的一部分。Botmasters有一个或多个“命令和控制”服务器,僵尸网络客户端检查以接收更新的指令。僵尸网络的规模从几千台受到攻击的计算机到拥有数十万个系统的庞大网络,这些系统由一个僵尸网络主机控制。这些僵尸网络通常出租给其他犯罪分子,然后将其用于他们自己的邪恶目的。

  • 勒索软件

加密数据并将其作为人质等待加密货币支付的恶意软件程序在过去几年中占恶意软件的很大比例并且百分比仍在增长。勒索软件经常使公司,医院,警察局甚至整个城市陷入瘫痪。

大多数勒索软件程序都是特洛伊木马程序,这意味着它们必须通过某种社交工程进行传播。一旦执行,大多数人会在几分钟内查找并加密用户的文件,尽管有一些人正在采取“等待观察”的方法。通过在启动加密例程之前观察用户几个小时,恶意软件管理员可以确切地知道受害者可以承受多少赎金,并且还确保删除或加密其他所谓的安全备份。勒索软件可以像其他类型的恶意软件程序一样被阻止,但一旦执行,如果没有经过验证的良好备份,很难扭转损坏。根据一些研究,大约四分之一的受害者支付了赎金,其中约30%的人仍然没有解锁他们的文件。无论哪种方式,解锁加密文件,如果可能的话,需要特定的工具,解密密钥和更多的运气。最好的建议是确保您拥有所有关键文件的良好离线备份。

  • 无文件恶意软件
「网络安全」常见攻击篇(8)——恶意软件攻击

无文件恶意软件实际上并不是一种不同类型的恶意软件,而是更多关于它们如何利用和持久化的描述。传统恶意软件使用文件系统传播并感染新系统。无文件恶意软件现在占所有恶意软件的50%以上且不断增长,是不直接使用文件或文件系统的恶意软件。相反,它们仅在内存中利用和传播,或者使用其他“非文件”OS对象,例如注册表项,API或计划任务。

许多无文件攻击首先是利用现有的合法程序,成为新推出的“子流程”,或者使用内置于操作系统中的现有合法工具(如Microsoft的PowerShell)。最终结果是无文件攻击更难以检测和停止。如果您还不熟悉常见的无文件攻击技术和程序,那么如果您想从事计算机安全工作,那么您可能应该这样做。

  • 广告软件

如果您很幸运,您接触过的唯一恶意软件程序是广告软件,它会尝试将受感染的最终用户暴露给不受欢迎的潜在恶意广告。常见的广告软件程序可能会将用户的浏览器搜索重定向到包含其他产品促销的外观相似的网页。

  • 间谍软件

间谍软件最常被想要检查别人的计算机活动的人使用。当然,在有针对性的攻击中,犯罪分子可以使用间谍软件记录受害者的击键并获取密码或知识产权。

广告软件和间谍软件程序通常是最容易删除的,通常是因为它们的意图与其他类型的恶意软件一样危害不那么大。查找恶意可执行文件并防止其被执行 – 您已完成。

比实际广告软件或间谍软件更大的担忧是它用于利用计算机或用户的机制,无论是社交工程,未修补软件还是其他十几种根漏洞原因。这是因为虽然间谍软件或广告软件程序的意图并不像后门远程访问木马那样恶意,但它们都使用相同的方法来闯入。广告软件/间谍软件程序的存在应该作为设备的警告或者用户有一些需要纠正的弱点,在真正的不良来临之前。

9. 网络钓鱼攻击

钓鱼式攻击是一种企图从电子通讯中,通过伪装成信誉卓著的法人媒体以获得如用户名、密码和信用卡明细等个人敏感信息的犯罪诈骗过程。这些通信都声称(自己)来自社交网站拍卖网站\网络银行、电子支付网站\或网络管理者,以此来诱骗受害人的轻信。网钓通常是通过e-mail或者即时通讯进行。它常常导引用户到URL与界面外观与真正网站几无二致的假冒网站输入个人数据。就算使用强式加密的SSL服务器认证,要侦测网站是否仿冒实际上仍很困难。

9.1 网络钓鱼攻击的主要手段

网络钓鱼的主要伎俩在于仿冒某些公司的网站或电子邮件,然后对程序代码进行修改,如果使用者信以为真,按照其要求填写个人信息,资料将被传送到诈骗者手中。实际上,不法分子在诈骗过程中,经常采用几种手法配合使用,还有的通过手机短信、QQ、微信等进行各种各样的网络钓鱼不法活动。

  • 利用电子邮件发送虚假信息

诈骗分子以垃圾邮件的形式大量发送欺诈性邮件,以中奖、对账等内容引诱用户,登录设计好的网站,然后填写金融账号和密码,或是以核对信息等理由要求收件人登录某网页提交用户名、密码、身份证号、信用卡号等信息,继而盗窃用户重要信息甚至资金。

  • 利用假冒网上银行、网上证券网站骗取重要信息

诈骗分子建立域名和网页内容都与真正的网上银行网站、网上证券交易网站极为相似的网站。引用用户输入网银账号和密码等信息,然后通过真正的网上银行、网上证券交易网站盗窃资金,或者伪造银行储蓄卡、证券交易卡行窃。还有利用跨站脚本,在站点的网页中插入恶意代码,屏蔽住一些可以用来辨别网站真假的重要信息,利用cookies窃取用户信息。

  • 利用虚假的电子商务进行诈骗

诈骗分子通过建立电子商务网站或者在比较知名、大型的电子商务网站上发布虚假的商品销售信息,利用廉价的价格引诱用户汇款,当他们收到受害人的购物汇款后就销声匿迹。

  • 利用木马和黑客技术等手段窃取用户信息后实施盗窃活动

木马制作者通过发送邮件或在一些安全性差的网站中提交恶意代码,大肆传播木马程序,当感染木马的用户进行网上交易时,木马程序即以键盘记录的方式获取用户账号和密码,并发送给指定邮箱,用户资金将受到严重威胁。

  • 利用用户弱口令等漏洞盗取用户账户和密码

一些不法分子利用部分用户管理不当,贪图方便设置弱口令的漏洞,对银行卡密码进行猜测破解,从而获取用户的重要信息。

10. 缓冲区溢出攻击

  • 缓冲区

程序用来保存用户输入数据、程序临时数据的内存空间,本质为数组。

  • 缓冲区溢出攻击

攻击者利用程序漏洞,将自己的攻击代码植入有缓冲区溢出漏洞的程序执行体中,改变该程序的执行过程,来获取目标系统的控制权。

  • 缓冲区溢出攻击原理

程序员通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

10.1 缓冲溢出的攻击方式

「网络安全」常见攻击篇(10)——缓冲区溢出攻击
  • 栈溢出(stack smashing)

未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr, 当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序的执行流程指向我们的 shellcode.

  • 堆溢出(malloc/free heapcorruption)

一种是和传统的栈溢出一样, 当输入超出malloc()预先分配的空间大小,就会覆盖掉这段空间之后的一段存储区域,如果该存储区域有一个重要的变量比如euid,那么我就可以用它 来攻击。另一种是典型的double-free堆腐败,在内存回收操作中,合并相邻空闲块重新插入双向链表时会有一个写4字节内存的操作,如果弱点程序由 于编程错误free()一个不存在的块,我们就可以精心伪造这个块,从而覆盖任何我们想要的值:函数的返回地址、库函数的.plt地址等

  • 格式化字符窜漏洞(format stringvulnerability)

如果格式窜由用户定制,攻击者就可以任意伪造格式窜,利用*printf()系列函数的特性就可以窥探堆栈空间的内容,超常输入可以引发传统的缓冲区溢出,或是用”%n”覆盖指针、返回地址等。

  • 整形变量溢出(integer variableoverflow)

利用整数的范围、符号等问题触发安全漏洞,大多数整形溢出不能直接利用,但如果该整形变量决定内存分配等操作,我们就有可能间接利用该漏洞。

  • 其他的攻击手法(others)

只能算是手法,不能算是一种单独的类别。利用ELF文件格式的特性如:覆盖.plt(过程连接表)、.dtor(析构函数指针)、.got(全局偏移表)、return-to-libc(返回库函数)等的方式进行攻击。

11. CC攻击

CC攻击是目前应用层攻击的主要手段之一,借助代理服务器生成指向目标系统的合法请求,实现伪装和DDoS。

我们都有这样的体验,访问一个静态页面,即使人多也不需要太长时间,但如果在高峰期访问论坛、贴吧等,那就很慢了,因为服务器系统需要到数据库中判断访问者否有读帖、发言等权限。访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。

CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。

11.1 CC攻击分类

CC攻击的种类有四种,直接攻击,僵尸网络攻击,代理攻击,肉鸡攻击。

  • 直接攻击

主要针对有重要缺陷的 WEB 应用程序,一般说来是程序写的有问题的时候才会出现这种情况,比较少见。

  • 僵尸网络攻击

有点类似于 DDOS 攻击了,从 WEB 应用程序层面上已经无法防御。

  • 代理攻击

代理攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS和伪装。

  • 肉鸡攻击

一般指黑客使用CC攻击软件,控制大量肉鸡发动攻击,相比代理攻击更难防御,因为肉鸡可以模拟正常用户访问网站的请求,伪造成合法数据包。

11.2 CC攻击的确认方法

CC攻击具有一定的隐蔽性,所以确定属于CC攻击的办法一般有三种:

  • 命令行法

一般遭受CC攻击时,Web服务器会出现80端口对外关闭的现象, 因为这个端口已经被大量的垃圾数据堵塞了正常的连接被中止了。

  • 批处理法

建立一个批处理文件,通过该脚本代码确定是否存在CC攻击。

  • 查看系统日志

上面提及的两种方法有个弊端,只可以查看当前的CC攻击,对于确定Web服务器之前是否遭受CC攻击就无能为力了,此时可以通过Web日志来查,因为Web日志忠实地记录了所有IP访问Web资源的情况。

12. 协议欺骗攻击

协议欺骗攻击技术是针对网络协议的缺陷,采用某种欺骗的手段,以截取信息或取得特权的攻击方式。

12.1 常见协议欺骗攻击

  • IP欺骗攻击
「网络安全」常见攻击篇(13)——协议欺骗攻击

IP欺骗技术就是通过伪造某台主机的IP地址骗取特权从而进行攻击的技术。许多应用程序认为如果数据包能够使其自身沿着路由到达目的地,而且应答包也可以回到源地,那么源IP地址一定是有效的,而这正是使源IP地址欺骗攻击成为可能的前提。

假设同一网段内有两台主机A、B,另一网段内有主机X。B授予A某些特权。X为获得与A相同的特权,所做欺骗攻击如下:首先,X冒充A,向主机B发送一个带有随机序列号的SYN包。主机B响应,回送一个应答包给A,该应答号等于原序列号加1。然而,此时主机A已被主机X利用拒绝服务攻击“淹没”了,导致主机A服务失效。结果,主机A将B发来的包丢弃。为了完成三次握手,X还需要向B回送一个应答包,其应答号等于B向A发送数据包的序列号加1。此时主机X并不能检测到主机B的数据包(因为不在同一网段),只有利用TCP顺序号估算法来预测应答包的顺序号并将其发送给目标机B。如果猜测正确,B则认为收到的ACK是来自内部主机A。此时,X即获得了主机A在主机B上所享有的特权,并开始对这些服务实施攻击。

  • ARP欺骗攻击
「网络安全」常见攻击篇(13)——协议欺骗攻击

在局域网中,通信前必须通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)。ARP协议对网络安全具有重要的意义,但是当初ARP方式的设计没有考虑到过多的安全问题,给ARP留下很多的隐患,ARP欺骗就是其中一个例子。而ARP欺骗攻击就是利用该协议漏洞,通过伪造IP地址和MAC地址实现ARP欺骗的攻击技术。

假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据,于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C,这样就可以保证B,C的通信不被中断。

以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中,B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示:

B->A->C

B<A<–C

于是A就成功于截获到了它B发给C的数据。上面这就是一个简单的ARP欺骗的例子。

  • DNS欺骗攻击
「网络安全」常见攻击篇(13)——协议欺骗攻击

DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过以下几种方法进行DNS欺骗。

1、缓存感染

黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。

2、DNS信息劫持

入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。

3、DNS重定向

攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。

4、源路由欺骗攻击

通过指定路由,以假冒身份与其他主机进行合法通信或发送假报文,使受攻击主机出现错误动作,这就是源路由攻击。在通常情况下,信息包从起点到终点走过的路径是由位于此两点间的路由器决定的,数据包本身只知道去往何处,但不知道该如何去。源路由可使信息包的发送者将此数据包要经过的路径写在数据包里,使数据包循着一个对方不可预料的路径到达目的主机。下面仍以上述源IP欺骗中的例子给出这种攻击的形式:

主机A享有主机B的某些特权,主机X想冒充主机A从主机B(假设IP为aaa.bbb.ccc.ddd)获得某些服务。首先,攻击者修改距离X最近的路由器,使得到达此路由器且包含目的地址aaa.bbb.ccc.ddd的数据包以主机X所在的网络为目的地;然后,攻击者X利用IP欺骗向主机B发送源路由(指定最近的路由器)数据包。当B回送数据包时,就传送到被更改过的路由器。这就使一个入侵者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据。

13. 网页挂马攻击

黑客在自己网站的网页中,或攻陷正规网站的服务器后,在其网页中利用浏览器漏洞,植入木马或木马下载器的行为称之为“网页挂马”。网页挂马所采用的木马下载器(Trojan-downloader)危害十分严重,当用户访问挂马网页时,它就在后台偷偷下载病毒、木马或流氓软件。即使用户计算机只被一个木马下载器感染,就可能有上百个病毒、木马或流氓软件被下载到计算机中,让人防不胜防。

13.1 网页挂马攻击方式

「网络安全」常见攻击篇(14)——网页挂马

网页挂马攻击按照用户交互类型,可以分为主动攻击和被动攻击两种方式:

  • 主动攻击方式

黑客通过欺骗、引诱等手段,诱使用户访问挂马网页。这种攻击方式常见的场合有:黑客在各种社区、论坛、聊天室、博客、留言等用户集中的区域,发布各种色情内容的网页链接;在电子商务平台、在线游戏聊天频道等渠道,发布各种中奖抽奖信息的网页链接;使用各种即时通讯软件手动或通过被感染用户,自动向联系人发送带欺骗性质的网页链接,等等。

  • 被动攻击方式

黑客通过入侵互联网上访问量较大的正规大型网站的服务器后,在其页面中植入木马或木马下载器,所有访问该网站的用户都有可能被感染。这种借助正规大型网站的被动攻击方式欺骗性更大,影响面更广,也更加难于防范。

14. 洪水攻击

洪水攻击(FLOOD ATTACK)指的是利用计算机网络技术向目标机发送大量的无用数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常服务的网络行为。

洪水攻击是现在黑客比较常用的一种攻击技术,特点是实施简单,威力巨大,大多是无视防御的。攻击者想办法让目标机器停止提供服务或资源访问,是黑客常用的攻击手段之一。这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。其实对网络带宽进行的消耗性攻击只是洪水攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于洪水攻击攻击。

洪水攻击问题也一直得不到合理的解决,究其原因是因为这是由于网络协议本身的安全缺陷造成的,从而洪水攻击也成为了攻击者的终极手法。攻击者进行洪水攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。

14.1 洪水攻击的分类

「网络安全」常见攻击篇(15)——洪水攻击

常见的有DDoS(拒绝服务攻击),就是让你的服务器资源耗尽,无法提供正常的服务,间接地拒绝。可以这样理解。

  • DDOS只是洪水攻击的一个种类

从定义上说,攻击者对网络资源发送过量数据时就发生了洪水攻击,这个网络资源可以是router,switch,host,application等。

DDos发生在OSI第三、四层,攻击侵入许多因特网上的系统,将DDos控制软件安装进去,然后这些系统再去感染其它系统,通过这些代理,攻击者将攻击指令发送给DDos控制软件,然后这个系统就去控制下面的代理系统去对某个IP地址发送大量假冒的网络流量,然后受攻击者的网络将被这些假的流量所占据就无法为他们的正常用户提供服务了。

  • 常见的洪水攻击包含MAC泛洪

TCP SYN泛洪和应用程序泛洪。接下来简单的分别解释一下以上这些:MAC泛洪发生在OSI第二层,攻击者进入LAN内,将假冒源MAC地址和目的MAC地址将数据帧发送到以太网上导致交换机的内容可寻址存储器(CAM)满掉,然后交换机失去转发功能,导致攻击者可以像在共享式以太网上对某些帧进行嗅探,这种攻击可以通过端口安全技术方式,比如端口和MAC地址绑定。

TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

  • 网络泛洪

网络泛洪包括Smurf和DDos:smurf发生在OSI第三层,就是假冒ICMP广播ping,如果路由器没有关闭定向广播,那攻击者就可以在某个网络内对其它网络发送定向广播ping,哪个网络中的主机越是多,造成的结果越是严重,因为每个主机默认都会响应这个ping,导致链路流量过大而拒绝服务,所以属于增幅泛洪攻击,当然也可以对本网络发送广播ping。

  • 应用程序泛洪

应用程序泛洪发生在OSI第七层,目的是消耗应用程序或系统资源,比较常见的应用程序泛洪是什么呢?没错,就是垃圾邮件,但一般无法产生严重的结果。其它类型的应用程序泛洪可能是在服务器上持续运行高CPU消耗的程序或者用持续不断的认证请求对服务器进行泛洪攻击,意思就是当TCP连接完成后,在服务器提示输入密码的时候停止响应。

15. ICMP洪水攻击

ICMP是(Internet Control Message Protocol)Internet控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

15.1 ICMP报文格式

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文。

IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型 (Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。 ICMP报文格式,具体如下:

「网络安全」常见攻击篇(16)——ICMP洪水攻击

15.2 什么是ICMP flood?

「网络安全」常见攻击篇(16)——ICMP洪水攻击

 

  • ICMP flood的成因
    足够快的数据包速度+足够的带宽,这才是洪水。
    ping.exe和IcmpSendEcho速度慢的另一个原因是它们必须等待目标主机返回REPLY信息,这个过程需要花费大量时间,而Flood—— 洪水,顾名思义,是速度极快的,当一个程序发送数据包的速度达到了每秒1000个以上,它的性质就成了洪水产生器,洪水数据是从洪水产生器里出来的,但这样还不够,没有足够的带宽,再猛的洪水也只能像公路塞车那样慢慢移动,成了鸡肋。要做真正的洪水,就需要有一条足够宽的高速公路才可以,由于ping.exe无法提速,这就需要专门的工具来做洪水了。
  • 实现ICMP洪水的前提
    最大的前提是攻击者的速度,其次是你的机器运行速度和数据吞吐量,由于涉及IP校验和的计算,如果数据处理能力不够,在这步就慢了一个级别,效果当然大打折扣。最后就是目标机器的带宽!如果对方比你大很多那么任何Flood都是无病呻吟。还有许多人都忽略的问题:发送的速度与数据包大小成反比,而且太大的数据包会被路由器等设备过滤掉!找到一个合适的数据包大小,对提高Flood的效率有很大帮助!
  • 洪水——两败俱伤的攻击方式
    别以为洪水无所不能,实际上,你展开洪水攻击时,攻击程序在消耗对方带宽和资源时,也在消耗你的带宽和资源。这只是个看谁撑得住的攻击而已。实际上,有经验的攻击者都是用被控制的服务器(肉鸡)来代替自己的机器发动攻击的,不到万不得已或者你对自己的机器网速有自信,否则尽量少用自己的机器来拼搏!

 

15.3 ICMP洪水攻击分类

 

  • 直接Flood
    要做这个的首要条件是你的带宽够,然后就是要一个好用的ICMP Flooder。直接攻击会暴露自己IP(如果对方没有还击能力那还无所谓,固定IP用户不推荐使用这种Flood),如果可以伪造IP一般还是别用为妙。
    简单示意图:
    攻击者[IP=211.97.54.3]—— ICMP—–>受害者[截获攻击者IP=211.97.54.3]==>换IP回来反击,嘿嘿
  • 伪造IP的Flood
    如果你是Win2000/XP并且是Administrator权限,可以试试看FakePing,它能随意伪造一个IP来Flood,让对方摸不到头脑,属于比较隐蔽阴险的Flood。
    简单示意图:
    攻击者[IP=211.97.54.3]——伪造IP=1.1.1.1的ICMP——>受害者[截获攻击者IP=1.1.1.1]==>倒死
  • 反射
    这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通讯的服务器发出的!实现的原理也不算复杂,Smurf方式把源IP设置为受害者IP,然后向多台服务器发送ICMP报文(通常是ECHO请求),这些接收报文的服务器被报文欺骗,向受害者返回ECHO应答(Type=0),导致垃圾阻塞受害者的门口。从示意图可以看出,它比上面两种方法多了一级路径——受骗的主机(称为“反射源”),所以,一个反射源是否有效或者效率低下,都会对Flood效果造成影响!
    简单示意图:
    攻击者[IP=211.97.54.3]—-伪造受害者的ICMP—->正常的主机—-应答—>受害者[截获攻击者IP=网易?!]==>哭啊……

 

以上是几种常见的Flood方式,在测试中,我发现一个有趣的现象:一些防火墙(如天网)只能拦截ECHO请求(Ping)的ICMP报文,对于其他 ICMP报文一概睁只眼闭只眼,不知道其他防火墙有没有这个情况。所以想神不知鬼不觉对付你的敌人时,请尽量避开直接ECHO Flood,换用Type=0的ECHO应答或Type=14的时间戳应答最好,其他类型的ICMP报文没有详细测试过,大家可以试试看Type=3、 4、11的特殊报文会不会有更大效果。

15.4 被ICMP Flood攻击的特征

  1. 传输状态里,代表远程数据接收的计算机图标一直亮着,而你没有浏览网页或下载
  2. 防火墙一直提示有人试图ping你
  3. 网络速度奇慢无比
  4. 严重时系统几乎失去响应,鼠标呈跳跃状行走

16. SYN洪水攻击

SYN Flood 或称 SYN洪水、SYN洪泛是一种阻断服务攻击,起因于攻击者传送一系列的SYN请求到目标系统。

16.1 TCP连接三次握手

当一个客户端尝试和一个服务器建立TCP连接,客户端和服务端会交换一系列报文。 这种连接技术广泛的应用在各种TCP连接中,例如telnet,Web,email,等等。 SYN(synchronous)是TCP/IP建立连接时使用的握手信号,用户和服务器之间的正常连接需要正确执行3次握手,具体流程如下图所示:

「网络安全」常见攻击篇(17)——SYN洪水攻击

当客户端尝试与服务器建立TCP连接时,客户端和服务器在正常情况下交换一组信息,如下所示:

  1. 客户端将SYN同步信息发送到服务器并请求连接设置。
  2. 服务器响应客户端SYN-ACK响应请求。
  3. 客户端承诺ACK并建立连接。

这是在所谓的TCP 3次握手中使用TCP传输协议的每个连接的基础。

16.2 SYN洪水原理

「网络安全」常见攻击篇(17)——SYN洪水攻击

正常情况下,客户端发送一个SYN报文给服务端,服务端发送一个SYN-ACK包以回应客户端,接着,客户端就返回一个ACK包来实现一次完整的TCP连接。

然而,在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,他可能不会接到客户端回应的ACK包。这个也就是所谓的半开放连接,服务端需要耗费一定的数量的系统内存来等待这个未决的连接,虽然这个数量是受限的,但是恶意者可以通过创建很多的半开放式连接来发动SYN洪水攻击 。

通过ip欺骗可以很容易的实现半开放连接。攻击者发送SYN包给服务端系统,这个看起来是合法的,但事实上所谓的客户端根本不会回应这个 。SYN-ACK报文,这意味着服务端将永远不会接到ACK报文。 而此时,半开放连接将最终耗用受害者所有的系统资源,受害者将不能再接收任何其他的请求。通常等待ACK返回包有超时限制,所以半开放连接将最终超时,而受害者系统也会自动修复。虽然这样,但是在受害者系统修复之前,攻击者可以很容易的一直发送虚假的SYN请求包来持续攻击。

在大多数情况下,受害者几乎不能接受任何其他的请求,但是这种攻击不会影响到已经存在的进站或者是出站连接。虽然这样,受害者系统还是可能耗尽系统资源,以导致其他种种问题。 攻击系统的位置几乎是不可确认的,因为SYN包中的源地址多数都是虚假的。当SYN包到达受害者系统的时候,没有办法找到他的真实地址 ,因为在基于源地址的数据包传输中,源ip过滤是唯一可以验证数据包源的方法。

16.3 什么是SYN cookie?

SYN cookie是一个防止SYN洪水攻击技术。现在SYN cookie已经是linux内核的一部分了(默认的stat是no),但是在linux系统的执行过程中它只保护linux系统。如果创建一个linux防火墙,他可以为整个网络和所有的网络操作系统提供SYN COOKIE保护你可以用这个防火墙来阻断半开放式tcp连接,所以这个受保护的系统不会进入半开放状态(TCP_SYN_RECV)。当连接完全建立的时候,客户机到服务器的连接要通过防火墙来中转完成。

SYN cookie就是用一个cookie来响应TCP SYN请求的TCP实现,根据上面的描述,在正常的TCP实现中,当服务端接收到一个SYN数据包,他返回 一个SYN-ACK包来应答,然后进入TCP-SYN-RECV(半开放连接)状态来等待最后返回的ACK包。服务端用一个数据空间来描述所有未决的连接, 然而这个数据空间的大小是有限的,所以攻击者将塞满这个空间。 在TCP SYN COOKIE的执行过程中,当服务端接收到一个SYN包的时候,他返回一个SYN-ACK包,这个数据包的ACK序列号是经过加密的,也就 是说,它由源地址,端口源次序,目标地址,目标端口和一个加密种子计算得出。然后服务端释放所有的状态。如果一个ACK包从客户端返回, 服务端将重新计算它来判断它是不是上个SYN-ACK的返回包。如果这样,服务端就可以直接进入TCP连接状态并打开连接。从而使服务端避免守侯半开放连接。

16.4 什么是SYN COOKIE 防火墙 ?

SYN COOKIE 防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的一大特色,你可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。
下面是SYN cookie防火墙的原理:
client         firewall                server


  1. SYN———– – – – – – – – – – ->
  2. <————SYN-ACK(cookie)
  3. ACK———– – – – – – – – – – ->
              • -SYN—————>
  4. <- – – – – – – – – ————SYN-ACK
              • -ACK—————>
  5. ———–> relay the ——->
    <———– connection <——-
  1. 一个SYN包从客户端发送到服务端。
  2. 防火墙在这里扮演了服务端的角色来回应一个带SYN cookie的SYN-ACK包给客户端。
  3. 客户端发送ACK包,接着防火墙和客户端的连接就建立了。
  4. 防火墙这个时候再扮演客户端的角色发送一个SYN给服务端。
  5. 服务端返回一个SYN给客户端 。
  6. 防火墙扮演客户端发送一个ACK确认包给服务端,这个时候防火墙和服务端的连接也就建立了 。
  7. 防火墙转发客户端和服务端之间的数据 。

如果系统遭受SYN Flood,那么第三步就不会有,而且无论在防火墙还是服务端都不会收到相应在第一步的SYN包,所以我们就击退了这次SYN洪水攻击。

16.5 如何检测SYN攻击?

检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。我们使用系统自带的netstat 工具来检测SYN攻击:

# netstat -n -p TCP
tcp 0  0 10.11.11.11:23 124.173.152.8:25882  SYN_RECV
tcp 0  0 10.11.11.11:23 236.15.133.204:2577  SYN_RECV -
tcp 0  0 10.11.11.11:23 127.160.6.129:51748  SYN_RECV -
tcp 0  0 10.11.11.11:23 222.220.13.25:47393  SYN_RECV -
tcp 0  0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -
tcp 0  0 10.11.11.11:23 232.115.18.38:278  SYN_RECV -
tcp 0  0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -
tcp 0  0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -

上面是在LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),源IP地址都是随机的,表明这是一种带有IP欺骗的SYN攻击。

LINUX环境下查看某个端囗的未连接队列的条目数:

#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l

17. MAC Blood攻击

MAC Flood攻击是利用交换机的mac学习原理,通过发送大量伪造mac的数据包,导致交换机mac表满。

攻击者的目的:主要是让交换机瘫痪或抓取全网数据包。

攻击后特征:最明显的特征是网络变得缓慢。

17.1 攻击原理

如图所示,网络中有3个PC和一个交换机,在正常情况下,如果PC A向PC B发送信息,PC C是不会知道的,过程都通过中间的交换机进行透明的处理,并且会记录下源MAC地址和源端口的信息到交换机中,以便下次快速转发。

「网络安全」常见攻击篇(19)——MAC Flood攻击

当攻击者PC C利用MAC flood攻击对交换机发送很多非法的包含不同源MAC地址的封包时,交换机会把所有这些MAC地址记录到自己的CAM(Content Addressable Memory)表之中,当这些记录超过一定的数量,超过交换机所能承载的内存的时候,MAC flooding的效果就达成了。

「网络安全」常见攻击篇(19)——MAC Flood攻击

当MAC flood效果达成的时候,交换机就变成了集线器,对所有信息进行无定向广播,PC A 发送给PC B的信息PC C也可以收到了。这个时候PC C就可以捕获数据进行数据截取等操作。

「网络安全」常见攻击篇(19)——MAC Flood攻击

17.2 攻击的后果

  • 交换机忙于处理MAC表的更新,数据转发缓慢。
  • 交换机MAC表满后,所有到交换机的数据会转发到交换机的所有端口上。

18. 点击劫持

点击劫持 (Clickjacking) 技术又称为界面伪装攻击 (UI redress attack ),是一种视觉上的欺骗手段。通常有两种方式:

  1. 攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。
  2. 攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义; 简单的说,就是用户点击了一个按钮,但是触发的操作不是正常期待的事件,而是触发了别的非意愿操作。

点击劫持发生时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等;也可以与 XSS 和 CSRF 攻击相结合,突破传统的防御措施,提升漏洞的危害程度。

18.1 攻击原理

攻击者在点击劫持漏洞利用实现过程中使用 iframe 作为目标网页载体。iframe 是 HTML 标准中的一个标签,可以创建包含另外一个页面的内联框架,在点击劫持漏洞利用中主要用来载入目标网页。点击劫持典型的攻击原理如下图所示:

「网络安全」常见攻击篇(20)——点击劫持

攻击者实施攻击的一般步骤是:

  1. 黑客创建一个网页利用iframe包含目标网站;
  2. 隐藏目标网站,使用户无法察觉到目标网站存在;
  3. 构造网页,诱骗用户点击特定按钮 (示意图中的Add按钮);
  4. 用户在不知情的情况下点击按钮,触发执行恶意网页的命令。

18.2 点击劫持技术栈

比较重要的点击劫持漏洞利用技术包括目标网页隐藏、点击操作劫持、拖拽技术。
  • 目标网页隐藏技术

目标网页隐藏技术原理是攻击者在恶意网站上通过 iframe 载入目标网页,然并隐藏目标网页,欺骗用户点击隐藏的恶意链接。目前主要的网页隐藏技术有两种:CSS隐藏技术和双iframe隐藏技术。

  1. CSS 隐藏技术的原理是利用 CSS 技术控制网页内容显示的效果。其中opacity参数表示元素的透明度,取值范围为0~1,默认值为1表示不透明, 取值为0时元素在网页中完全透明显示。当设置目标 iframe 的opacity 属性小于或等于0.1,用户就无法看到含恶意代码的目标网页。
  2. 双iframe隐藏技术使用内联框架和外联框架。内联框架的主要功能是载入目标网页,并将目标网页定位到特定按钮或者链接。外联框架的主要功能是筛选,只显示内联框架中特定的按钮。
  • 点击操作劫持

在成功隐藏目标网页后,攻击者下一个目标是欺骗用户点击特定的按钮。

  1. 最简单实用的方法是使用社会工程学。例如,将攻击按钮外观设计成类似QQ消息的提示按钮,诱使用户点击从而触发攻击行为。
  2. 另外一种思路是使用脚本代码以及其他技术增加用户点击特定按钮的概率。主要方法如JavaScript实现鼠标跟随技术、按键劫持 (Stroke jacking) 技术等。
  • 拖拽(Drag and Drop)技术

主流的浏览器都有drag-and-drop API 接口,供网站开发人员创建交互式网页。但是,这些 API 接口在设计时没有考虑很多的安全性问题,导致通过拖拽就可以实现跨域操作。

  1. 攻击者欺骗用户选择输入框的内容,完成拖拽操作。
  2. 通过浏览器的 API 接口将 iframe 中的内容拖拽到目标网页的 text area 中,攻击者就可以获得用户网页中存在的敏感信息。

19. 路由协议攻击

网络设备之间为了交换路由信息,常常运行一些动态的路由协议,这些路由协议可以完成诸 如路由表的建立,路由信息的分发等功能。常见的路由协议有RIP ,OSPF,IS-IS ,BGP 等。 这些路由协议在方便路由信息管理和传递的同时,也存在一些缺陷,如果攻击者利用了路由 协议的这些权限, 对网络进行攻击, 可能造成网络设备路由表紊乱(这足可以导致网络中断), 网络设备资源大量消耗,甚至导致网络设备瘫痪。

19.1 常见攻击方式及原理

  • 针对 RIP 协议的攻击

RIP,即路由信息协议,是通过周期性(一般情况下为30S)的路由更新报文来维护路由表的,一台运行RIP 路由协议的路由器,如果从一个接口上接收到了一个路由更新报文,它就会分析其中包含的路由信息,并与自己的路由表作出比较,如果该路由器认为这些路由信 息比自己所掌握的要有效,它便把这些路由信息引入自己的路由表中。 这样如果一个攻击者向一台运行RIP 协议的路由器发送了人为构造的带破坏性的路由更新报文,就很容易的把路由器的路由表搞紊乱,从而导致网络中断。

如果运行RIP路由协议的路由器启用了路由更新信息的HMAC验证,则可从很大程度上避免这种攻击。

  • 针对 OSPF 路由协议的攻击

OSPF,即开放最短路径优先,是一种应用广泛的链路状态路由协议。该路由协议基于链路状态算法,具有收敛速度快,平稳,杜绝环路等优点,十分适合大型的计算机网络使用。

OSPF路由协议通过建立邻接关系,来交换路由器的本地链路信息,然后形成一个整网的链路状态数据库,针对该数据库,路由器就可以很容易的计算出路由表。

如果一个攻击者冒充一台合法路由器与网络中的一台路由器建立邻接关系,并向攻击路由器输入大量的链路状态广播(LSA ,组成链路状态数据库的数据单元),就会引导路由器形成错误的网络拓扑结构,从而导致整个网络的路由表紊乱,导致整个网络瘫痪。

当前版本的WINDOWS操作系统( WIN 2K/XP等)都实现了OSPF 路由协议功能,因此一个攻击者可以很容易的利用这些操作系统自带的路由功能模块进行攻击。

跟 RIP 类似,如果OSPF启用了报文验证功能(HMAC验证),则可以从很大程度上避免这种攻击。

  • 针对IS-IS路由协议的攻击

IS-IS路由协议,即中间系统到中间系统,是ISO提出来对ISO的CLNS网络服务进行路由的一种协议,这种协议也是基于链路状态的,原理与OSPF类似。IS-IS路由协议经过扩展,可以运行在IP网络中,对IP报文进行选路。这种路由协议也是通过建立邻居关系,收集路由器本地链路状态的手段来完成链路状态数据库同步的。该协议的邻居关系建立比OSPF简单,而且也省略了OSPF特有的一些特性,使该协议简单明了,伸缩性更强。

对该协议的攻击与OSPF 类似, 通过一种模拟软件与运行该协议的路由器建立邻居关系,然后传颂给攻击路由器大量的链路状态数据单元(LSP),可以导致整个网络路由器的链路状态数据库不一致(因为整个网络中所有路由器的链路状态数据库都需要同步到相同的状态),从而导致路由表与实际情况不符,致使网络中断。

与 OSPF 类似,如果运行该路由协议的路由器启用了IS-IS 协议单元( PDU )HMAC验证功能,则可以从很大程度上避免这种攻击。

 

 

行走的code
行走的code

要发表评论,您必须先登录