网络与信息安全网络安全四.ppt
网络与信息安全网络安全四 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望内 容欺骗IP欺骗邮件欺骗Web欺骗会话劫持拒绝服务你将会发现,TCP/IP协议是多么脆弱、不安全复 习DNS收集信息DNS&nslookupPing&traceroute端口扫描暴露网络上潜在的脆弱性操作系统辨识为系统相关的攻击打好基础复习:关于端口扫描有助于加强系统的安全性常用技术基本的TCP connect()扫描TCP SYN扫描(半开连接扫描,half open)TCP Fin扫描(秘密扫描,stealth)TCP ftp proxy扫描(bounce attack)用IP分片进行SYN/FIN扫描(躲开包过滤防火墙)UDP recvfrom扫描UDP ICMP端口不可达扫描Reverse-ident扫描端口扫描对策入侵检测系统(IDS)防火墙阻止对内部系统的扫描,禁止探测包进入个人防火墙复习:关于操作系统辨识从操作系统或者应用系统的具体实现中发掘出来的攻击手段(或漏洞)都需要辨识系统常用技术一些端口服务的提示信息DNS泄漏出OS系统TCP/IP栈指纹寻找不同操作系统之间在处理网络数据包上的差异,并且把足够多的差异组合起来,以便精确地识别出一个系统的OS版本操作系统辨识对策IDS针对探测包的特征,可以检测到有人在扫描防火墙隐藏了内部的系统中IP协议栈的行为个人防火墙改变对网络数据包的处理方式欺骗技术IP欺骗假冒他人的IP地址发送信息邮件欺骗假冒他人的email地址发送信息Web欺骗你能相信你所看到的信息吗?其他欺骗术DNS欺骗非技术性欺骗IP欺骗IP欺骗的动机隐藏自己的IP地址,防止被跟踪以IP地址作为授权依据穿越防火墙IP欺骗的形式单向IP欺骗:不考虑回传的数据包双向IP欺骗:要求看到回传的数据包更高级的欺骗:TCP会话劫持IP欺骗成功的要诀IP数据包路由原则:根据目标地址进行路由IP欺骗:改变自己的地址用网络配置工具改变机器的IP地址注意:只能发送数据包收不到回包防火墙可能阻挡在Linux平台上用ifconfig用程序实现IP欺骗发送IP包,IP包头填上假冒的源IP地址在Unix/Linux平台上,直接用socket就可以发送,但是需要root权限在Windows平台上,不能使用Winsock可以使用winpcap可以用libnet构造IP包代码示例在Linux平台上,打开一个raw socket,自己填写IP头和传输层数据,然后发送出去用程序实现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);IP欺骗:双向欺骗欺骗的过程攻击者H被假冒者A目标机器B假冒包:A-B回应包:B-AH能看到这个包吗?让回应包经过HH和A在同一个子网内部使用源路由选项如何避免IP欺骗主机保护,两种考虑保护自己的机器不被用来实施IP欺骗物理防护、登录口令权限控制,不允许修改配置信息保护自己的机器不被成为假冒的对象无能为力网络防护路由器上设置欺骗过滤器入口过滤,外来的包带有内部IP地址出口过滤,内部的包带有外部IP地址保护免受源路由攻击路由器上禁止这样的数据包电子邮件欺骗电子邮件欺骗的动机隐藏发信人的身份,匿名信挑拨离间,唯恐世界不乱骗取敏感信息欺骗的形式使用类似的电子邮件地址修改邮件客户软件的账号配置直接连到smtp服务器上发信电子邮件欺骗成功的要诀与邮局的运作模式比较基本的电子邮件协议不包括签名机制发信可以要求认证电子邮件欺骗:使用类似的地址发信人使用被假冒者的名字注册一个账号,然后给目标发送一封正常的信我是你的上司XX,请把XXX发送给我我在外面度假,请送到我的个人信箱他(她)能识别吗?修改邮件客户软件的帐户配置邮件帐户配置姓名(Name)属性,会出现在“From”和“Reply-To”字段中,然后显示在“发件人”信息中电子邮件地址,会出现在“From”字段中回复地址,会出现在“Reply-To”字段中,可以不填发送服务器设置接收邮件看到什么?在客户端,点击回复看邮件头能得到所有的详细信息,包括:这封信的回复将会送给谁,以及邮件传递路径邮件欺骗:直接连接smtp服务器直接连接smtp服务器的25端口,然后发送命令,常见命令为Helo(or EHLO)Mail from:Rcpt to:DataQuit收件人接收到的邮件为邮件欺骗的保护邮件服务器的验证Smtp服务器验证发送者的身份,以及发送的邮件地址是否与邮件服务器属于相同的域验证接收方的域名与邮件服务器的域名是否相同有的也验证发送者的域名是否有效,通过反向DNS解析攻击者可以运行自己的smtp邮件服务器不能防止一个内部用户假冒另一个内部用户发送邮件审核制度,所有的邮件都有记录隐私?Web欺骗Web是应用层上提供的服务,直接面向Internet用户,欺骗的根源在于由于Internet的开放性,任何人都可以建立自己的Web站点Web站点名字(DNS域名)可以自由注册,按先后顺序并不是每个用户都清楚Web的运行规则Web欺骗的动机商业利益,商业竞争政治目的Web欺骗的形式使用相似的域名改写URL劫持Web会话使用类似的域名注册一个与目标公司或组织相似的域名,然后建立一个欺骗网站,骗取该公司的用户的信任,以便得到这些用户的信息例如,针对ABC公司,用来混淆如果客户提供了敏感信息,那么这种欺骗可能会造成进一步的危害,例如:用户在假冒的网站上订购了一些商品,然后出示支付信息,假冒的网站把这些信息记录下来(并分配一个cookie),然后提示:现在网站出现故障,请重试一次。当用户重试的时候,假冒网站发现这个用户带有cookie,就把它的请求转到真正的网站上。用这种方法,假冒网站可以收集到用户的敏感信息。对于从事商业活动的用户,应对这种欺骗提高警惕改写URL一个HTTP页面从Web服务器到浏览器的传输过程中,如果其中的内容被修改了的话,则欺骗就会发生,其中最重要的是URL改写URL改写可以把用户带到不该去的地方,例如:Welcom to Hollywood-Movie site.有一些更为隐蔽的做法直接指向一些恶意的代码把url定向放到script代码中,难以发现改写页面的做法入侵Web服务器,修改页面设置中间http代理在传输路径上截获页面并改写在客户端装载后门程序Web会话劫持HTTP协议不支持会话(无状态),Web会话如何实现?Cookie用url记录会话用表单中的隐藏元素记录会话Web会话劫持的要点在于,如何获得或者猜测出会话ID防止Web欺骗使用类似的域名注意观察URL地址栏的变化不要信任不可靠的URL信息改写URL查看页面的源文本可以发现使用SSLWeb会话劫持养成显式注销的习惯使用长的会话IDWeb的安全问题很多,我们需要更多的手段来保证Web安全关于欺骗技术从这些欺骗技术,我们可以看到IP协议的脆弱性应用层上也缺乏有效的安全措施在网络攻击技术中,欺骗术是比较初级的,技术含量并不高,它是针对Internet中各种不完善的机制而发展起来的非技术性的欺骗比如,实施社会工程毕竟网络世界与现实世界是紧密相关的避免被欺骗最好的办法是教育、教育、再教育增强每一个Internet用户的安全意识,网络管理人员以及软件开发人员的安全意识更加重要会话(交易)劫持在现实环境中,比如对于银行一笔交易如果营业员检查了顾客的身份证和账户卡抬起头来,发现不再是刚才的顾客他会把钱交给外面的顾客吗?在网络上没有人知道你是一条狗TCP会话劫持(session hijacking)欺骗和劫持欺骗是伪装成合法用户,以获得一定的利益劫持是积极主动地使一个在线的用户下线,或者冒充这个用户发送消息,以便达到自己的目的动机Sniffer对于一次性密钥并没有用认证协议使得口令不在网络上传输会话劫持分两种被动劫持,实际上就是藏在后面监听所有的会话流量。常常用来发现密码或者其他敏感信息主动劫持,找到当前活动的会话,并且把会话接管过来。迫使一方下线,由劫持者取而代之,危害更大,因为攻击者接管了一个合法的会话之后,可以做许多危害性更大的事情会话劫持示意图被劫持者A服务器B1 A远程登录,建立会话,完成认证过程攻击者H2 监听流量3 劫持会话4 迫使A下线会话劫持的原理TCP协议三次握手建立TCP连接(即一个TCP会话)终止一个会话,正常情况需要4条消息如何标识一个会话:状态:源IP:端口+SN 目标IP:端口+SN从TCP会话的状态入手要了解每一个方向上的SN(数据序列号)两个方向上的序列号是相互独立的TCP数据包,除了第一个SYN包之外,都有一个ack标志,给出了期待对方发送数据的序列号所以,猜测序列号是成功劫持TCP会话的关键关于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 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,包长为1A攻击者BB回应一个包,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,包长为1A回应一个包,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会话劫持过程详解(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攻击者BB回应一个包,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一阵广播风暴会话劫持过程详解(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攻击者BB回应这个包,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,包长不定关于会话劫持的参考三篇文章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”,中文版黑客中文版黑客攻击透析与攻击透析与防范,第五章防范,第五章“会话劫持会话劫持”进行会话劫持的工具前页后两篇文章带了一些源码Juggernaut可以进行TCP会话攻击的网络sniffer程序Hunt功能与Juggernaut类似TTY Watcher免费程序,针对单一主机上的连接IP Watcher商用的会话劫持工具Hunt工具介绍源码开放的自由软件,可运行在Linux平台上功能特点监听当前网络上的会话重置会话(reset a session)劫持会话在劫持之后,使连接继续同步确定哪些主机在线四个守护进程自动resetArp欺骗包的转发收集MAC地址具有搜索功能的snifferHunt主菜单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-用hunt接管会话用hunt接管并重置会话Hunt劫持会话时听到的ACK风暴如何防止会话劫持部署共享式网络,用交换机代替集线器TCP会话加密防火墙配置限制尽可能少量的外部许可连接的IP地址检测ACK包的数量明显增加拒绝服务(Denial of Service)回顾信息安全的三个主要需求:保密性、完整性、可用性(availability)DoS是针对可用性发起的攻击关于DoS定义:通过某些手段使得目标系统或者网络不能提供正常的服务技术和原理都非常简单,并且已经工具化难以防范,有些DoS可以通过管理的手段防止DoS的动机受挫折,无法攻入目标系统,最后一招:DOS强行对方重启机器恶意的破坏、或者报复网络恐怖主义DoS的危害使得正常的服务不能提供案例:1996年9月,一家ISP(Public Access Networks)公司遭受拒绝服务达一周一上,拒绝对约6000多人和1000家公司提供Internet服务政府网站美国白宫的网站曾经遭受拒绝服务攻击分布式拒绝服务2000年2月,一批商业性质的Web站点收到了DDoS的攻击DoS的形式粗略来看,分为三种形式消耗有限的物理资源网络连接带宽资源其他资源,如磁盘空间、进程数合法用户可登录尝试的次数有限,攻击者可以用掉这些尝试次数修改配置信息造成DoS比如,修改路由器信息,造成不能访问网络;修改NT注册表,也可以关掉某些功能物理部件的移除,或破坏DoS的技术分类从表现形式来看带宽消耗用足够的资源消耗掉有限的资源利用网络上的其他资源(恶意利用Internet共享资源),达到消耗目标系统或网络的目的系统资源消耗,针对操作系统中有限的资源,如进程数、磁盘、CPU、内存、文件句柄,等等程序实现上的缺陷,异常行为处理不正确,比如Ping of Death修改(篡改)系统策略,使得它不能提供正常的服务从攻击原理来看通用类型的DoS攻击,这类攻击往往是与具体系统无关的,比如针对协议设计上的缺陷的攻击系统相关的攻击,这类攻击往往与具体的实现有关说明:最终,所有的攻击都是系统相关的,因为有些系统可以针对协议的缺陷提供一些补救措施,从而免受此类攻击DoS的技术历史早期的Internet蠕虫病毒消耗网络资源分片装配,非法的TCP标志,SYN Flood,等利用系统实现上的缺陷,点对点形式Ping of Death,IP分片重叠分布式DoS(DDoS)攻击最著名的smurf攻击一些典型的DoS攻击Ping of Death发送异常的(长度超过IP包的最大值)Land程序发送一个TCP SYN包,源地址与目的地址相同,源端口与目的端口相同,从而产生DoS攻击SYN Flood快速发送多个SYN包UDP FloodTeardropIP包的分片装配Smurf给广播地址发送ICMP Echo包,造成网络阻塞Ping of Death原理:直接利用ping包,即ICMP Echo包,有些系统在收到大量比最大包还要长的数据包,会挂起或者死机受影响的系统:许多操作系统受影响攻击做法直接利用ping工具,发送超大的ping数据包防止措施打补丁防火墙阻止这样的ping包Teardrop原理:利用IP包的分片装配过程中,由于分片重叠,计算过程中出现长度为负值,在执行memcpy的时候导致系统崩溃受影响的系统:Linux/Windows NT/95,97年发现攻击特征攻击非常简单,发送一些IP分片异常的数据包防止措施加入条件判断,对这种异常的包特殊处理打补丁参考:http:/www.attrition.org/security/denial/w/teardrop.dos.htmlSYN Flood原理:利用TCP连接三次握手过程,打开大量的半开TCP连接,使得目标机器不能进一步接受TCP连接。每个机器都需要为这种半开连接分配一定的资源,并且,这种半开连接的数量是有限制的,达到最大数量时,机器就不再接受进来的连接请求。受影响的系统:大多数操作系统攻击细节连接请求是正常的,但是,源IP地址往往是伪造的,并且是一台不可达的机器的IP地址,否则,被伪造地址的机器会重置这些半开连接一般,半开连接超时之后,会自动被清除,所以,攻击者的系统发出SYN包的速度要比目标机器清除半开连接的速度要快任何连接到Internet上并提供基于TCP的网络服务,都有可能成为攻击的目标这样的攻击很难跟踪,因为源地址往往不可信,而且不在线SYN Flood(续)攻击特征目标主机的网络上出现大量的SYN包,而没有相应的应答包SYN包的源地址可能是伪造的,甚至无规律可循防止措施针对网络防火墙或者路由器可以在给定时间内只允许有限数量的半开连接入侵检测,可以发现这样的DoS攻击行为打补丁Linux和Solaris使用了一种被称为SYN cookie的技术来解决SYN Flood攻击:在半开连接队列之外另设置了一套机制,使得合法连接得以正常继续一次SYN Flood攻击的记录Smurf原理:向广播地址发送伪造地址的ICMP Echo数据包。攻击者向一个广播地址发送ICMP Echo请求,并且用受害者的IP地址作为源地址,于是,广播地址网络上的每台机器响应这些Echo请求,同时向受害者主机发送ICMP Echo-Reply应答。于是,受害者主机会被这些大量的应答包淹没受影响的系统:大多数操作系统和路由器变种:fraggle,使用UDP包,或称为udpsmurf比如,7号端口(echo),如果目标机器的端口开着,则送回应答,否则,产生ICM端口不可达消息技术细节两个主要的特点:使用伪造的数据包,使用广播地址。不仅被伪造地址的机器受害,目标网络本身也是受害者,它们要发送大量的应答数据包Smurf攻击示意图Smurf攻击攻击特征涉及到三方:攻击者,中间目标网络,受害者以较小的网络带宽资源,通过放大作用,吃掉较大带宽的受害者系统Smurf放大器Smurf放大器网络:不仅允许ICMP Echo请求发给网络的广播地址,并且允许ICMP Echo-Reply发送回去这样的公司越多,对Internet的危害就越大实施Smurf攻击需要长期的准备,首先找到足够多的中间网络集中向这些中间网络发出ICMP Echo包Smurf攻击的防止措施针对最终受害者没有直接的方法可以阻止自己接收ICMP Echo Reply消息在路由器上阻止这样的应答消息,但是,结果是,路由器本身遭受了DoS攻击与中间目标网络联系针对中间网络关闭外来的IP广播消息,但是,如果攻击者从内部机器发起攻击,仍然不能阻止smurf攻击配置操作系统,对于广播地址的ICMP包不响应在每个路由节点上都记录log,以备查流量大的路由节点上能够记录所有的流量吗一般性的分布式攻击(如DDoS)模型DoS工具每一种攻击被揭示出来的时候,都会有一些试验性的代码,例如teardrop.c、synflood.c等,由于DoS攻击往往比较简单,所以这些代码也比较短小通常,要涉及到IP欺骗一些现有的工具Targa:把几种DoS集中在一起Trinoo:分布式DoS工具TFN2K:Targa的增强,可实施DDoS攻击stacheldraht防止DoS对于网络路由器和防火墙配置得当,可以减少受DoS攻击的危险比如,禁止IP欺骗可以避免许多DoS攻击入侵检测系统,检测异常行为对于系统升级系统内核,打上必要的补丁,特别是一些简单的DoS攻击,例如SYN Flooding关掉不必要的服务和网络组件如果有配额功能的话,正确地设置这些配额监视系统的运行,避免降低到基线以下检测系统配置信息的变化情况保证物理安全建立备份和恢复机制参考资料书“Hackers Beware”,中文版黑客中文版黑客攻击透析与防范,电子工业攻击透析与防范,电子工业出版社出版社“黑客大曝光黑客大曝光”(第二版第二版),清华出版社,清华出版社文章文章Simple Active Attack Against TCP Simple Active Attack Against TCP A short overview of IP spoofing:PART I A short overview of IP spoofing:PART I A short overview of IP spoofing:PART IIA short overview of IP spoofing:PART IIWeb站点站点http:/www.washington.edu/People/dad/DoS列表,列表,http:/www.attrition.org/security/denial/DoS程序代码,程序代码,http:/www.itsecurity.it/dos_2.htm