网络与信息安全 网络安全 (四 )

69
网网网网网网网 网网网网 (网)

Upload: lilah-alvarez

Post on 30-Dec-2015

113 views

Category:

Documents


2 download

DESCRIPTION

网络与信息安全 网络安全 (四 ). 内 容. 欺骗 IP 欺骗 邮件欺骗 Web 欺骗 会话劫持 拒绝服务. 你将会发现, TCP/IP 协议是多么脆弱、不安全. 复 习. DNS 收集信息 DNS & nslookup Ping & traceroute 端口扫描 暴露网络上潜在的脆弱性 操作系统辨识 为系统相关的攻击打好基础. 复习:关于端口扫描. 有助于加强系统的安全性 常用技术 基本的 TCP connect() 扫描 TCP SYN 扫描(半开连接扫描, half open) TCP Fin 扫描(秘密扫描, stealth) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 网络与信息安全 网络安全  (四 )

网络与信息安全网络安全 ( 四 )

Page 2: 网络与信息安全 网络安全  (四 )

内 容欺骗

IP 欺骗邮件欺骗Web 欺骗

会话劫持拒绝服务 你将会发现, TCP/IP

协议是多么脆弱、不安全

Page 3: 网络与信息安全 网络安全  (四 )

复 习DNS 收集信息

DNS & nslookup

Ping & traceroute端口扫描

暴露网络上潜在的脆弱性操作系统辨识

为系统相关的攻击打好基础

Page 4: 网络与信息安全 网络安全  (四 )

复习:关于端口扫描有助于加强系统的安全性常用技术

基本的 TCP connect() 扫描TCP SYN 扫描 ( 半开连接扫描 , half open)TCP Fin 扫描 ( 秘密扫描, stealth)TCP ftp proxy 扫描 (bounce attack)用 IP 分片进行 SYN/FIN 扫描 ( 躲开包过滤防火墙 )UDP recvfrom 扫描UDP ICMP 端口不可达扫描Reverse-ident 扫描

Page 5: 网络与信息安全 网络安全  (四 )

端口扫描对策入侵检测系统 (IDS)防火墙

阻止对内部系统的扫描,禁止探测包进入个人防火墙

Page 6: 网络与信息安全 网络安全  (四 )

复习:关于操作系统辨识从操作系统或者应用系统的具体实现中发掘出来的攻击手段 ( 或漏洞 ) 都需要辨识系统常用技术

一些端口服务的提示信息DNS 泄漏出 OS 系统TCP/IP 栈指纹

寻找不同操作系统之间在处理网络数据包上的差异,并且把足够多的差异组合起来,以便精确地识别出一个系统的OS 版本

Page 7: 网络与信息安全 网络安全  (四 )

操作系统辨识对策IDS

针对探测包的特征,可以检测到有人在扫描防火墙

隐藏了内部的系统中 IP 协议栈的行为个人防火墙

改变对网络数据包的处理方式

Page 8: 网络与信息安全 网络安全  (四 )

欺骗技术IP 欺骗

假冒他人的 IP 地址发送信息邮件欺骗

假冒他人的 email 地址发送信息Web 欺骗

你能相信你所看到的信息吗?其他欺骗术

DNS 欺骗非技术性欺骗

Page 9: 网络与信息安全 网络安全  (四 )

IP 欺骗IP 欺骗的动机

隐藏自己的 IP 地址,防止被跟踪以 IP 地址作为授权依据穿越防火墙

IP 欺骗的形式单向 IP 欺骗:不考虑回传的数据包双向 IP 欺骗:要求看到回传的数据包更高级的欺骗: TCP 会话劫持

IP 欺骗成功的要诀IP 数据包路由原则:根据目标地址进行路由

Page 10: 网络与信息安全 网络安全  (四 )

IP 欺骗:改变自己的地址用网络配置工具改变机器的 IP 地址注意:

只能发送数据包收不到回包防火墙可能阻挡

在 Linux 平台上用 ifconfig

Page 11: 网络与信息安全 网络安全  (四 )

用程序实现 IP 欺骗发送 IP 包, IP 包头填上假冒的源 IP 地址

在 Unix/Linux 平台上,直接用 socket 就可以发送,但是需要 root 权限在 Windows 平台上,不能使用 Winsock

可以使用 winpcap

可以用 libnet 构造 IP 包代码示例

在 Linux 平台上,打开一个 raw socket ,自己填写 IP 头和传输层数据,然后发送出去

Page 12: 网络与信息安全 网络安全  (四 )

用程序实现 IP 欺骗代码示例sockfd = socket(AF_INET, SOCK_RAW, 255);setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));

struct ip *ip;struct tcphdr *tcp;struct pseudohdr pseudoheader;

ip->ip_src.s_addr = xxx;// 填充 IP 和 TCP 头的其他字段,并计算校验和pseudoheader.saddr.s_addr = ip->ip_src.s_addr;tcp->check = tcpchksum((u_short *)&pseudoheader,

12+sizeof(struct tcphdr)); //计算校验和

sendto(sockfd, buf, len, 0, (const sockaddr *)addr, sizeof(struct sockaddr_in));

Page 13: 网络与信息安全 网络安全  (四 )

IP 欺骗:双向欺骗欺骗的过程

攻击者 H被假冒者 A 目标机器B

假冒包: A -> B

回应包: B -> A

H 能看到这个包吗?

让回应包经过HH和A在同一个子网内部使用源路由选项

Page 14: 网络与信息安全 网络安全  (四 )

如何避免 IP 欺骗主机保护,两种考虑保护自己的机器不被用来实施 IP 欺骗物理防护、登录口令权限控制,不允许修改配置信息

保护自己的机器不被成为假冒的对象无能为力

网络防护路由器上设置欺骗过滤器

入口过滤,外来的包带有内部 IP 地址出口过滤,内部的包带有外部 IP 地址

保护免受源路由攻击路由器上禁止这样的数据包

Page 15: 网络与信息安全 网络安全  (四 )

电子邮件欺骗电子邮件欺骗的动机

隐藏发信人的身份,匿名信挑拨离间,唯恐世界不乱骗取敏感信息……

欺骗的形式使用类似的电子邮件地址修改邮件客户软件的账号配置直接连到 smtp 服务器上发信

电子邮件欺骗成功的要诀与邮局的运作模式比较

基本的电子邮件协议不包括签名机制发信可以要求认证

Page 16: 网络与信息安全 网络安全  (四 )

电子邮件欺骗:使用类似的地址发信人使用被假冒者的名字注册一个账号,然后给目标发送一封正常的信

我是你的上司 XX ,

请把 XXX 发送给我

我在外面度假,请送

到我的个人信箱

他 ( 她 ) 能识别吗?

Page 17: 网络与信息安全 网络安全  (四 )

修改邮件客户软件的帐户配置邮件帐户配置姓名 (Name)属性,会出现在“ From” 和“ Reply-To”字段中,然后显示在“发件人”信息中电子邮件地址,会出现在“ From” 字段中回复地址,会出现在“ Reply-To”字段中,可以不填

发送服务器设置

Page 18: 网络与信息安全 网络安全  (四 )

接收邮件看到什么?在客户端,点击回复

看邮件头能得到所有的详细信息,包括:这封信的回复将会送给谁,以及邮件传递路径

Page 19: 网络与信息安全 网络安全  (四 )

邮件欺骗:直接连接 smtp 服务器

直接连接 smtp 服务器的 25 端口,然后发送命令,常见命令为

Helo(or EHLO)Mail from:Rcpt to:DataQuit

Page 20: 网络与信息安全 网络安全  (四 )

收件人接收到的邮件为

Page 21: 网络与信息安全 网络安全  (四 )

邮件欺骗的保护邮件服务器的验证

Smtp 服务器验证发送者的身份,以及发送的邮件地址是否与邮件服务器属于相同的域验证接收方的域名与邮件服务器的域名是否相同有的也验证发送者的域名是否有效,通过反向 DNS解析攻击者可以运行自己的 smtp 邮件服务器

不能防止一个内部用户假冒另一个内部用户发送邮件审核制度,所有的邮件都有记录

隐私?

Page 22: 网络与信息安全 网络安全  (四 )

Web 欺骗Web 是应用层上提供的服务,直接面向 Internet 用户,欺骗的根源在于

由于 Internet 的开放性,任何人都可以建立自己的 Web站点Web站点名字 (DNS域名 ) 可以自由注册,按先后顺序并不是每个用户都清楚Web 的运行规则

Web 欺骗的动机商业利益,商业竞争政治目的

Web 欺骗的形式使用相似的域名改写 URL劫持 Web 会话

Page 23: 网络与信息安全 网络安全  (四 )

使用类似的域名注册一个与目标公司或组织相似的域名,然后建立一个欺骗网站,骗取该公司的用户的信任,以便得到这些用户的信息

例如,针对 ABC公司,用 abc.net 来混淆abc.com如果客户提供了敏感信息,那么这种欺骗可能会造成进一步的危害,例如:

用户在假冒的网站上订购了一些商品,然后出示支付信息,假冒的网站把这些信息记录下来 ( 并分配一个 cookie) ,然后提示:现在网站出现故障,请重试一次。当用户重试的时候,假冒网站发现这个用户带有 cookie ,就把它的请求转到真正的网站上。用这种方法,假冒网站可以收集到用户的敏感信息。

对于从事商业活动的用户,应对这种欺骗提高警惕

Page 24: 网络与信息安全 网络安全  (四 )

改写 URL一个 HTTP页面从 Web 服务器到浏览器的传输过程中,如果其中的内容被修改了的话,则欺骗就会发生,其中最重要的是 URL 改写

URL 改写可以把用户带到不该去的地方,例如:<a href=www.hackersite> Welcom to Hollywood-Movie site.</a>

有一些更为隐蔽的做法直接指向一些恶意的代码把 url定向放到 script 代码中,难以发现

改写页面的做法入侵 Web 服务器,修改页面设置中间 http 代理在传输路径上截获页面并改写在客户端装载后门程序……

Page 25: 网络与信息安全 网络安全  (四 )

Web 会话劫持HTTP 协议不支持会话 (无状态 ) , Web 会话如何实现?

Cookie用 url记录会话用表单中的隐藏元素记录会话

Web 会话劫持的要点在于,如何获得或者猜测出会话 ID

Page 26: 网络与信息安全 网络安全  (四 )

防止 Web 欺骗使用类似的域名

注意观察 URL 地址栏的变化不要信任不可靠的 URL 信息

改写 URL查看页面的源文本可以发现使用 SSL

Web 会话劫持养成显式注销的习惯使用长的会话 ID

Web 的安全问题很多,我们需要更多的手段来保证Web 安全

Page 27: 网络与信息安全 网络安全  (四 )

关于欺骗技术从这些欺骗技术,我们可以看到

IP 协议的脆弱性应用层上也缺乏有效的安全措施在网络攻击技术中,欺骗术是比较初级的,技术含量并不高,它是针对 Internet 中各种不完善的机制而发展起来的

非技术性的欺骗比如,实施社会工程毕竟网络世界与现实世界是紧密相关的

避免被欺骗最好的办法是教育、教育、再教育增强每一个 Internet 用户的安全意识,网络管理人员以及软件开发人员的安全意识更加重要

Page 28: 网络与信息安全 网络安全  (四 )

会话 (交易 ) 劫持在现实环境中,比如对于银行一笔交易如果营业员检查了顾客的身份证和账户卡抬起头来,发现不再是刚才的顾客他会把钱交给外面的顾客吗?

在网络上没有人知道你是一条狗

Page 29: 网络与信息安全 网络安全  (四 )

TCP 会话劫持 (session hijacking)

欺骗和劫持欺骗是伪装成合法用户,以获得一定的利益劫持是积极主动地使一个在线的用户下线,或者冒充这个用户发送消息,以便达到自己的目的

动机Sniffer 对于一次性密钥并没有用认证协议使得口令不在网络上传输

会话劫持分两种被动劫持,实际上就是藏在后面监听所有的会话流量。常常用来发现密码或者其他敏感信息主动劫持,找到当前活动的会话,并且把会话接管过来。迫使一方下线,由劫持者取而代之,危害更大,因为攻击者接管了一个合法的会话之后,可以做许多危害性更大的事情

Page 30: 网络与信息安全 网络安全  (四 )

会话劫持示意图

被劫持者 A 服务器 B

1 A远程登录,建立会话,完成认证过程

攻击者 H

2 监听流量3 劫持会话

4 迫使A下

线

Page 31: 网络与信息安全 网络安全  (四 )

会话劫持的原理TCP 协议三次握手建立 TCP 连接 (即一个TCP 会话 )终止一个会话,正常情况需要 4条消息如何标识一个会话:状态:源 IP: 端口 +SN <> 目标IP: 端口 +SN

从 TCP 会话的状态入手要了解每一个方向上的 SN( 数据序列号 )两个方向上的序列号是相互独立的TCP 数据包,除了第一个 SYN 包之外,都有一个 ack 标志,给出了期待对方发送数据的序列号

所以,猜测序列号是成功劫持TCP 会话的关键

Page 32: 网络与信息安全 网络安全  (四 )

关于 TCP 协议的序列号在每一个 ACK 包中,有两个序列号第一个 (SEG_SEQ) 是当前包中数据第一个字节的序号第二个 (SEG_ACK) 是期望收到对方数据包中第一个字节的序号

假设客户 (CLT) 向服务器 (SVR) 发起一个连接,我们用以下的表示SVR_SEQ: 服务器将要发送的下一个字节的序号SVR_ACK: 服务器将要接收的下一个字节的序号 (已经收到的最后一个字节的序号加 1)SVR_WIND: 服务器的接收窗口CLT_SEQ: 客户将要发送的下一个字节的序号CLT_ACK: 客户将要接收的下一个字节的序号CLT_WIND: 客户的接收窗口

关系CLT_ACK <= SVR_SEQ <= CLT_ACK + CLT_WINDSVR_ACK <= CLT_SEQ <= SVR_ACK + SVR_WIND只有满足这样条件的包,对方才会接收否则,该包被丢掉,并且送回一个 ACK 包 (含有期望的序列号 )

Page 33: 网络与信息安全 网络安全  (四 )

关于 TCP 协议的序列号 ( 续 )同步状态

SVR_SEQ = CLT_ACKCLT_SEQ = SVR_ACK

不同步状态SVR_SEQ != CLT_ACKCLT_SEQ != SVR_ACK

如果 TCP 连接进入到一种不同步的状态客户发送一个包SEG_SEQ = CLT_SEQSEG_ACK = CLT_ACK这个包不会被接收,因为 CLT_SEQ != SVR_ACK相反,如果第三方 ( 攻击者 ) 发送一个包SEG_SEQ = SVR_ACKSEG_ACK = SVR_SEQ这个包可以被服务器接收如果攻击者能够伪造两边的包的话,还可以恢复客户和服务器之间的会话,使得回到同步状态

Page 34: 网络与信息安全 网络安全  (四 )

TCP ACK Storm当一个主机接收到一个不期望的数据包的时候,它会用自己的序列号发送 ACK ,而这个包本身也是不可被接受的。于是,两边不停地发送ACK 包,形成 ACK 包的循环,是为 ACK风暴。如果有一个 ACK 包丢掉,则风暴停止在不同步的情况下,当服务器发送数据给客户如果攻击者不对这份数据响应 ACK 的话,这份数据会被重传,因为服务器收不到 ACK ,并且会形成 ACK风暴,最终,连接会被终止如果攻击者对这份数据作出响应,则只有一个 ACK风暴

Page 35: 网络与信息安全 网络安全  (四 )

如何到达不同步的状态 ( 一 )在建立连接的时候劫持会话当攻击者听到握手过程第二步的时候,它给服务器发送一个 RST 包,然后发送用同样的 TCP 和端口号构造的一个 SYN 包,但是序列号与前面的 SYN 包不同服务器关闭第一个连接,打开第二个连接,并且送回第二个 SYN/ACK给客户,攻击者听到这个包之后,给服务器送出一个 ACK 包至此,客户、服务器、攻击者都进入到 TCP ESTABLISHED状态,但是攻击者和服务器之间是同步的,而客户和服务器之间是不同步的注意,攻击者选择的序列号与客户的序列号一定要不同,否则不能成功

Page 36: 网络与信息安全 网络安全  (四 )

如何到达不同步的状态 ( 二 )给一方发送空数据

攻击者首先观察会话然后,给服务器发送一些无关紧要的数据,这些数据会导致服务器的序列号发生变化攻击者给客户也可以发送数据这种手段成功的要点在于

可以发送一些无关紧要的数据,并且能够把握发送的时机

Page 37: 网络与信息安全 网络安全  (四 )

不在一个子网中的劫持 ( 欺骗 ) 手法

有时候也称作“ Blind spoofing”攻击者发送一个 SYN 包然后猜测服务器的 ISN (初始序列号 )只要能够猜得到,就可以建立连接但是攻击者收不到服务器给客户的包条件:真正的客户不能发送 RST 包攻击者能够猜测服务器每个包的大小

Page 38: 网络与信息安全 网络安全  (四 )

实施会话劫持的一般性过程发现目标

找到什么样的目标,以及可以有什么样的探查手段,取决于劫持的动机和环境

探查远程机器的 ISN(初始序列号 )规律可以用 nmap ,或者手工发起多个连接

等待或者监听会话最好在流量高峰期间进行,不容易被发现,而且可以有比较多可供选择的会话

猜测序列号这是最为关键的一步,如果不在一个子网中,难度将非常大

使被劫持方下线ACK风暴,拒绝服务

接管会话如果在同一个子网中,则可以收到响应,否则要猜测服务器的动作

Page 39: 网络与信息安全 网络安全  (四 )

Kill a connection

攻击者发送一个 RST 包给 B,并且假冒 A 的 IP 地址观察 A 和 B之间的数据往来,算出 A 和 B的序列号,在适当的时机插入一个 RST 包,只要在插入点上,序列号正确,则RST 包就会被接受,从而达到目的

攻击者发送一个 FIN 包给 B,并且假冒 A 的 IP 地址同样地,在适当的时机给 B发送一个 FIN 包

AB攻击者

Page 40: 网络与信息安全 网络安全  (四 )

会话劫持过程详解 (1)

看到一个 A->B 包TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EA ACK (hex): C34A67F6 FLAGS: -AP--- Window: 7C00 ,包长为 1

A 攻击者B

B回应一个包, B->ATCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A67F6 ACK (hex): 5C8223EB FLAGS: -AP--- Window: 2238 ,包长为 1

A回应一个包, A->BTCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F7 FLAGS: -A---- Window: 7C00 ,包长为 0

Page 41: 网络与信息安全 网络安全  (四 )

会话劫持过程详解 (2)

攻击者模仿 A插入一个包给 B,假设这个包正常跟在第一个包之后TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F6 FLAGS: -AP--- Window: 7C00 ,包长为 10( 一定的长度 )

A 攻击者B

B回应一个包, B->ATCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A67F7 ACK (hex): 5C8223F5 FLAGS: -AP--- Window: 2238 ,包长不定 (比如 20)

此时,A会按照它所理解的 SEQ/ACK 发送包TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223EB ACK (hex): C34A67F7 FLAGS: -A---- Window: 7C00一阵广播风暴

Page 42: 网络与信息安全 网络安全  (四 )

会话劫持过程详解 (3)

攻击者已经劫持了会话,它可以与 B正常通讯 ( 用 A 的地址 )TCP Packet ID (from_IP.port-to_IP.port): IP_A.PortA-IP_B.PortB SEQ (hex): 5C8223F5 ACK (hex): C34A680B FLAGS: -AP--- Window: 7C00 ,包长不定 (比如 37)

A 攻击者B

B回应这个包, B->ATCP Packet ID (from_IP.port-to_IP.port): IP_B.PortB-IP_A.PortA SEQ (hex): C34A680B ACK (hex): 5C82241A FLAGS: -AP--- Window: 2238 ,包长不定

……

Page 43: 网络与信息安全 网络安全  (四 )

关于会话劫持的参考三篇文章

Simple Active Attack Against TCP, http://www.insecure.org/stf/iphijack.txtA short overview of IP spoofing: PART I, http://staff.washington.edu/dittrich/papers/IP-spoof-1.txtA short overview of IP spoofing: PART II , http://staff.washington.edu/dittrich/papers/IP-spoof-2.txt

“ Hackers Beware”,中文版《黑客——攻击透析与防范》,第五章“会话劫持”

Page 44: 网络与信息安全 网络安全  (四 )

进行会话劫持的工具前页后两篇文章带了一些源码Juggernaut

可以进行 TCP 会话攻击的网络 sniffer 程序Hunt

功能与 Juggernaut类似TTY Watcher免费程序,针对单一主机上的连接

IP Watcher商用的会话劫持工具

Page 45: 网络与信息安全 网络安全  (四 )

Hunt 工具介绍源码开放的自由软件,可运行在 Linux 平台上功能特点监听当前网络上的会话重置会话 (reset a session)劫持会话

在劫持之后,使连接继续同步确定哪些主机在线四个守护进程

自动 resetArp 欺骗包的转发收集 MAC 地址具有搜索功能的 sniffer

Page 46: 网络与信息安全 网络安全  (四 )

Hunt主菜单l/w/r) list/watch/reset connectionsu) host up testsa) arp/simple hijack (avoids ack storm if arp used)s) simple hijackd) daemons rst/arp/sniff/maco) optionsx) exit->

Page 47: 网络与信息安全 网络安全  (四 )

用 hunt 接管会话

Page 48: 网络与信息安全 网络安全  (四 )

用 hunt 接管并重置

会话

Page 49: 网络与信息安全 网络安全  (四 )

Hunt 劫持会话时听到的 ACK风暴

Page 50: 网络与信息安全 网络安全  (四 )

如何防止会话劫持部署共享式网络,用交换机代替集线器TCP 会话加密防火墙配置

限制尽可能少量的外部许可连接的 IP 地址检测

ACK 包的数量明显增加

Page 51: 网络与信息安全 网络安全  (四 )

拒绝服务 (Denial of Service)回顾信息安全的三个主要需求:保密性、完整性、可用性 (availability)DoS 是针对可用性发起的攻击

关于 DoS定义:通过某些手段使得目标系统或者网络不能提供正常的服务技术和原理都非常简单,并且已经工具化难以防范,有些 DoS 可以通过管理的手段防止

DoS 的动机受挫折,无法攻入目标系统,最后一招 : DOS强行对方重启机器恶意的破坏、或者报复网络恐怖主义……

Page 52: 网络与信息安全 网络安全  (四 )

DoS 的危害使得正常的服务不能提供案例: 1996 年 9月,一家 ISP(Public Access Networks)公司遭受拒绝服务达一周一上,拒绝对约 6000多人和 1000 家公司提供 Internet 服务

政府网站美国白宫的网站曾经遭受拒绝服务攻击

分布式拒绝服务2000年 2月,一批商业性质的 Web站点收到了DDoS 的攻击

Page 53: 网络与信息安全 网络安全  (四 )

DoS 的形式粗略来看,分为三种形式消耗有限的物理资源

网络连接带宽资源其他资源,如磁盘空间、进程数

合法用户可登录尝试的次数有限,攻击者可以用掉这些尝试次数

修改配置信息造成 DoS比如,修改路由器信息,造成不能访问网络;修改 NT 注册表,也可以关掉某些功能

物理部件的移除,或破坏

Page 54: 网络与信息安全 网络安全  (四 )

DoS 的技术分类从表现形式来看带宽消耗

用足够的资源消耗掉有限的资源利用网络上的其他资源 (恶意利用 Internet共享资源 ) ,达到消耗目标系统或网络的目的

系统资源消耗,针对操作系统中有限的资源,如进程数、磁盘、 CPU 、内存、文件句柄,等等程序实现上的缺陷,异常行为处理不正确,比如 Ping of Death修改 (篡改 ) 系统策略,使得它不能提供正常的服务

从攻击原理来看通用类型的 DoS 攻击,这类攻击往往是与具体系统无关的,比如针对协议设计上的缺陷的攻击系统相关的攻击,这类攻击往往与具体的实现有关说明:最终,所有的攻击都是系统相关的,因为有些系统可以针对协议的缺陷提供一些补救措施,从而免受此类攻击

Page 55: 网络与信息安全 网络安全  (四 )

DoS 的技术历史早期的 Internet蠕虫病毒消耗网络资源

分片装配,非法的 TCP 标志, SYN Flood ,等利用系统实现上的缺陷,点对点形式

Ping of Death, IP 分片重叠分布式 DoS(DDoS) 攻击最著名的 smurf 攻击

Page 56: 网络与信息安全 网络安全  (四 )

一些典型的 DoS 攻击Ping of Death

发送异常的 (长度超过 IP 包的最大值 )Land

程序发送一个 TCP SYN 包,源地址与目的地址相同,源端口与目的端口相同,从而产生DoS 攻击

SYN Flood快速发送多个 SYN 包

UDP FloodTeardrop

IP 包的分片装配Smurf给广播地址发送 ICMP Echo 包,造成网络阻塞

……

Page 57: 网络与信息安全 网络安全  (四 )

Ping of Death原理:直接利用 ping 包,即 ICMP Echo 包,有些系统在收到大量比最大包还要长的数据包,会挂起或者死机受影响的系统:许多操作系统受影响攻击做法

直接利用 ping 工具,发送超大的 ping 数据包防止措施

打补丁防火墙阻止这样的 ping 包

Page 58: 网络与信息安全 网络安全  (四 )

Teardrop原理:利用 IP 包的分片装配过程中,由于分片重叠,计算过程中出现长度为负值,在执行 memcpy 的时候导致系统崩溃受影响的系统: Linux/Windows NT/95 , 97年发现攻击特征

攻击非常简单,发送一些 IP 分片异常的数据包防止措施

加入条件判断,对这种异常的包特殊处理打补丁

参考: http://www.attrition.org/security/denial/w/teardrop.dos.html

Page 59: 网络与信息安全 网络安全  (四 )

SYN Flood原理:利用 TCP 连接三次握手过程,打开大量的半开TCP 连接,使得目标机器不能进一步接受 TCP 连接。每个机器都需要为这种半开连接分配一定的资源,并且,这种半开连接的数量是有限制的,达到最大数量时,机器就不再接受进来的连接请求。受影响的系统:大多数操作系统攻击细节

连接请求是正常的,但是,源 IP 地址往往是伪造的,并且是一台不可达的机器的 IP 地址,否则,被伪造地址的机器会重置这些半开连接一般,半开连接超时之后,会自动被清除,所以,攻击者的系统发出 SYN 包的速度要比目标机器清除半开连接的速度要快任何连接到 Internet 上并提供基于 TCP 的网络服务,都有可能成为攻击的目标这样的攻击很难跟踪,因为源地址往往不可信,而且不在线

Page 60: 网络与信息安全 网络安全  (四 )

SYN Flood(续 )攻击特征

目标主机的网络上出现大量的 SYN 包,而没有相应的应答包SYN 包的源地址可能是伪造的,甚至无规律可循

防止措施针对网络

防火墙或者路由器可以在给定时间内只允许有限数量的半开连接入侵检测,可以发现这样的 DoS 攻击行为

打补丁Linux 和 Solaris 使用了一种被称为 SYN cookie 的技术来解决SYN Flood 攻击:在半开连接队列之外另设置了一套机制,使得合法连接得以正常继续

Page 61: 网络与信息安全 网络安全  (四 )

一次 SYN Flood 攻击的记录

Page 62: 网络与信息安全 网络安全  (四 )

Smurf原理:向广播地址发送伪造地址的 ICMP Echo 数据包。攻击者向一个广播地址发送 ICMP Echo请求,并且用受害者的 IP 地址作为源地址,于是,广播地址网络上的每台机器响应这些 Echo请求,同时向受害者主机发送 ICMP Echo-Reply 应答。于是,受害者主机会被这些大量的应答包淹没受影响的系统:大多数操作系统和路由器变种: fraggle ,使用 UDP 包,或称为 udpsmurf比如, 7号端口 (echo) ,如果目标机器的端口开着,则送回应答,否则,产生 ICM 端口不可达消息

技术细节两个主要的特点:使用伪造的数据包,使用广播地址。不仅被伪造地址的机器受害,目标网络本身也是受害者,它们要发送大量的应答数据包

Page 63: 网络与信息安全 网络安全  (四 )

Smurf 攻击示意图

Page 64: 网络与信息安全 网络安全  (四 )

Smurf 攻击攻击特征涉及到三方:攻击者,中间目标网络,受害者以较小的网络带宽资源,通过放大作用,吃掉较大带宽的受害者系统Smurf放大器

Smurf放大器网络:不仅允许 ICMP Echo请求发给网络的广播地址,并且允许 ICMP Echo-Reply 发送回去这样的公司越多,对 Internet 的危害就越大

实施 Smurf 攻击需要长期的准备,首先找到足够多的中间网络集中向这些中间网络发出 ICMP Echo 包

Page 65: 网络与信息安全 网络安全  (四 )

Smurf 攻击的防止措施针对最终受害者没有直接的方法可以阻止自己接收 ICMP Echo Reply消息在路由器上阻止这样的应答消息,但是,结果是,路由器本身遭受了 DoS 攻击与中间目标网络联系

针对中间网络关闭外来的 IP广播消息,但是,如果攻击者从内部机器发起攻击,仍然不能阻止 smurf 攻击配置操作系统,对于广播地址的 ICMP 包不响应

在每个路由节点上都记录 log ,以备查流量大的路由节点上能够记录所有的流量吗

Page 66: 网络与信息安全 网络安全  (四 )

一般性的分布式攻击 ( 如 DDoS)模型

Page 67: 网络与信息安全 网络安全  (四 )

DoS 工具每一种攻击被揭示出来的时候,都会有一些试验性的代码,例如 teardrop.c 、 synflood.c等,由于 DoS 攻击往往比较简单,所以这些代码也比较短小通常,要涉及到 IP 欺骗

一些现有的工具Targa :把几种 DoS 集中在一起Trinoo :分布式 DoS 工具TFN2K : Targa 的增强,可实施 DDoS 攻击stacheldraht

Page 68: 网络与信息安全 网络安全  (四 )

防止 DoS对于网络

路由器和防火墙配置得当,可以减少受DoS 攻击的危险比如,禁止 IP 欺骗可以避免许多 DoS 攻击

入侵检测系统,检测异常行为对于系统升级系统内核,打上必要的补丁,特别是一些简单的 DoS 攻击,例如 SYN Flooding关掉不必要的服务和网络组件如果有配额功能的话,正确地设置这些配额监视系统的运行,避免降低到基线以下检测系统配置信息的变化情况

保证物理安全建立备份和恢复机制

Page 69: 网络与信息安全 网络安全  (四 )

参考资料书“ Hackers Beware”,中文版《黑客——攻击透析与防范》,电子工业出版社

“黑客大曝光” (第二版 ),清华出版社文章

Simple Active Attack Against TCP A short overview of IP spoofing: PART I A short overview of IP spoofing: PART II

Web站点http://www.washington.edu/People/dad/DoS列表, http://www.attrition.org/security/denial/DoS程序代码, http://www.itsecurity.it/dos_2.htm