TCP/IP协议顺序号预测攻击是最简单的"黑客"入侵,也是系统安全的最大威胁。在网络上,每台计算机有惟一的IP地址,计算机把目标IP地址和一个惟一的顺序号加载于传输的每一个数据包上。在一个TCP连接中,接收机只收到具有正确IP地址和顺序号的那个包裹。许多安全设备,如路由器,只允许有一定IP地址的计算机收发传送。TCP/IP 顺序号预测入侵将使用网络给计算机赋址的方式和包裹交换的顺序来企图访问网络。一般来说,"黑客"进行TCP/IP 顺序号预测攻击分两步:
第一,得到服务器的IP地址。黑客一般通过网上报文嗅探,顺序测试号码,由WEB浏览器连接到结点上并在状态栏中寻找结点的IP地址。因为黑客知道其他计算机有一个与服务器IP地址部分公用的IP地址,他便尽力模拟一个能让其通过路由器和作为网络用户访问系统的IP号码。例如,如果系统的IP地址为192.0.0.15,黑客便知有近256台计算机可以连入一个C级网,并猜出所有最后位在序列中出现过的地址号码。IP地址指示了一个网络连接的计算机数,同时上述地址的高字节中两个最重要的位设定指出了该网为C级网,图1显示了黑客是怎祥预测C级网的IP号码的。
"黑客"用服务器的IP地址来猜测其他网络地址
第二,黑客在试过网上IP地址之后,便开始监视网下传送包的序列号,然后,黑客将试图推测服务器能产生的下一个序列号,再将自己有效地插入服务器和用户之间。因为黑客有服务器的IP地址,就能产生有正确IP地址和顺序码的包裹以截获用户的传递,图2指明了怎样模仿IP地址及包裹序列号以愚弄服务器,使之信任黑客为合法网络用户。
黑客模拟一个TCP/IP通讯愚弄服务器
黑客通过顺序号预测取得系统访问之后,便可访问通讯系统传给服务器的任何信息,包括密钥文件、日志名、机密数据,或在网上传送的任何信息。典型地,黑客将利用顺序号预测作为一个实际入侵服务器的准备,或者说人为入侵网上相关服务器提供一个基础。
技术指导:防卫顺序号预测入侵
对您的系统来说,防卫顺序号预测入侵的最简单有效的方法是确保您的路由器、防火墙、您系统上的每个服务器拥有全面的审计跟踪保护。利用审计跟踪功能,在一个"黑客"企图通过路由器和防火墙来访问服务器时,您便能发现它。您的审计跟踪系统可显示下面的词条顺序,当然这要根据您的操作系统而定:
access denied. IP address unknown
当黑客循环不断地测试可能的顺序号时,访问被拒绝词条将一个接一个地出现。运用您操作系统上可利用的一些设备,您可以让它在审计系统出示一定数量的访问拒绝词条后指挥事件日志向您自动报警。
二、TCP协议劫持入侵
也许对连接于Internet的服务器的最大威胁是TCP劫持入侵(即我们所知的主功嗅探),尽管顺序号预测法入侵和TCP劫持法有许多相似之处,但TCP劫持之不同在于黑客将强迫网络接受其IP地址为一个可信网址来获得访问,而不是不停地猜IP地址直至正确。TCP劫持法的基本思想是,黑客控制了一台连接于入侵目标网的计算机,然后从网上断开以让网络服务器误以为黑客是实际的客户端。图3显示了一个黑客怎样操作一个TCP劫持入侵。
黑客通过断开和模仿实际客户端的连接来实施TCP劫持入侵
成功地劫持了可信任计算机之后,黑客将用自己的IP地址更换入侵目标机的每一个包的IP地址,并模仿其顺序号。安全专家称顺序号伪装为"IP模仿",黑客用IP模仿在自己机器上模拟一个可信系统的IP地址,黑客模仿了目标计算机之后,便用灵巧的顺序号模仿法成为一个服务器的目标。
黑客实施一个TCP劫持入侵后更易于实施一个IP模仿入侵,而且TCP劫持让黑客通过一个一次性口令请求响应系统(如共享口令系统),再让一个拥有更高安全性的主机妥协。通过口令系统也让黑客穿过一个操作系统而不是黑客自己的系统。
最后,TCP劫持入侵比IP模仿更具危害性,因为黑客一般在成功的TCP劫持入侵后比成功的IP模仿入侵后有更大的访问能力。黑客因为截取的是正在进行中的事务而有更大访问权限,而不是模拟成一台计算机再发起一个事务。
三、嗅探入侵
利用嗅探者的被动入侵已在Internet上频繁出现,如被动嗅探入侵是一个黑客实施一次实际劫持或IP模仿入侵的第一步。要开始一个嗅探入侵,黑客要拥有用户IP和合法用户的口令,而用一个用户的信息注册于一个分布式网络上。进入网之后,黑客嗅探传送的包并试图尽可能多地获取网上资料。
黑客如何实施一个被劫嗅探入侵
为了防止分布式网络上的嗅探入侵,系统管理员一般用一次性口令系统或票据认证系统(如 Kerberos)等识别方案。例如,一些一次性口令系统向用户提供在每次退出登录后的下次登录口令。尽管一次性口令系统和Kerberos方案能让黑客对口令的嗅探在不安全的网络上变得更加困难,但如果它们既未加密又未指明数据流时仍将面临实际的被入侵风险。图4显示了黑客如何实施被动的嗅探入侵。
下面描述黑客将TCP流定向到自己机器上的针对TCP的实际入侵。在黑客重新定向了TCP流之后,黑客能通过无论是一次性口令系统或票据认证系统提供的保护安全线,这样TCP连接对任何一个在连接路径上拥有TCP包嗅探器和TCP包发生器的人来说都变得非常脆弱。在后面,您将了解到一个TCP包在到达目的系统之前要经过许多系统,换句话说,只要拥有一个放置好了的嗅探器和发生器,黑客能访问任何包--它们可能包括您在Internet上传送的包。
在后面一部分里,我们详述了一些您可以用来检测实际入侵的方案和一些您可以用来防卫入侵的方法。黑客能用这一章节中所述的最简单的方法来侵入Internet主机系统,而且,黑客可以实施一次和被动嗅探所需资源一样少的主动非同步攻击。
四、主动的非同步入侵
TCP连接需要同步数据包交换,实际上,如果由于某种原因,包的顺序号不是接收机所期望的,接收机将遗弃它,而去等待顺序号正确的数据包。黑客可以探明TCP协议对顺序号的要求以截取连接。
下面将详述非同步入侵来攻击系统,黑客或骗取或迫使双方中止TCP连接并进入一个非同步状态,以使得两个系统再也不能交换任何数据。黑客再用第三方主机(换句括说,另一个连接于物理媒介并运送TCP包的计算机)来截取实际中的数据包和为最初连接的两台计算创建可接受的替代包。第三方产生数据以模仿连接中的系统本应交换的数据包。
1.非同步后劫持入侵
假设,此刻黑客可以窃听两个系统交换的用以形成TCP连接的任何数据包,而且,在截取数据包之后,黑客可以伪造其想要的任何IP包来取代原包。黑客的伪包能让黑客冒充客户机或服务器(甚至伪包可以让黑客既冒充客户机又冒充服务器)。如果黑客可以让这些假设变成现实,那么实际上黑客能迫使在客户机和服务器间传送的消息改变走向,即从客户机到黑客,从服务器到黑客。
您将在下一部分了解到黑客可以用一些技术使一个TCP连接非同步。此时,假设黑客已成功地非同步了TCP部分,且黑客发送了一个包头中包含以下代码的包:
SEG_SEQ = CLT_SEQ
SEG_ACK = CLT_ACK
包头域中和第一行,SEG_SEQ = CLT_SEQ,指明了包的顺序号是客户机系列的下一个顺序号(SEG代表数据段);第二行,SEG_ACK = CLT_ACK,把数据包的确认值赋给下一个确认值。因为黑客非同步了TCP 连接,客户机的包顺序号(CLT_SEQ)与前面期望顺序号不相等,服务器不接收数据且将包放弃,黑客拷贝服务器放弃的包(如图5)。
黑客拷贝服务器放弃的包
在服务器放弃包之后短暂延迟时间,黑客将与客户机一样发送同样的包,只是改变SEG_SEQ 和SEG_ACK命令(和包的记数值),以使包头域词条变成下面代码:
SEG_SEQ = SVR_ACK
SEG_ACK = SVR_SEQ
因为包头域的顺序号是正确的(SVR_ACK等于SEG_SEQ),服务器接受包头域部分词条同时接受包且处理数据,另外,依据客户机传送但服务器放弃的包的数目,原客户机仍会不断传送包。
如果您定义变量CLT_TO_SVR_OFFSET等于SVR_ACK减CLT_SEQ之结果(即服务器期待的顺序号和客户机的实际的顺序号是相异数),SVR_TO_CLT_OFSET等于CLF_ACK减去SVR_SEQ,黑客一定会重写客户机送给服务器的TCP包,以让包代表SEG_SEQ和SEG_ACK之值(如图6)。
被截获的连接
SEG_SEG =(SEG_SEQ+CLT_TO_SVR_OFFSET)
SEG_ACP =(SEG_ACK_SVR_TO_CLT_OFFSET)
因为所有的传送都经过黑客,它便可以在传送流中加任何数据或删任何数据。例如,如果连接是一个远程登录使用的 Telnet,黑客能代表用户添加任何命令(Unix命令 echo jamsa.com,它将产生一个所有连接于jamsa.com服务器的网络的主机列表,就是一个黑客发出命令的范例(如图7)。
黑客往传送包中加命令
在服务器接收到包之后,服务器对黑客请求的数据和客户端请求的数据予以响应。在服务器对客户端响应之前,黑客可以漏掉或删除服务器对黑客命令的响应,如此,用户便不再觉察到任何黑客入侵(如图8)。
黑客从服务器的传送包中删除其请求的信息
以下部分您将了解 TCP ACK风暴,它在黑客继续伪装时,在非同步后劫持入侵中将发作。
2.TCP ACK风暴
前面部分详述的后期非同步劫持入侵有一个基本的不足,即它将大量地产生 TCP ACK包,网络专家称这些大量的 ACK包为 TCP ACK风暴。当一个主机(无论客户机或服务器)收到一个不能接受的包时,主机将向产生的主机发送期待的顺序号来认证这个不能接收的包。在以前详述的主动的 TCP入侵的情况下,第一个 TCP ACK包将包含服务器的顺序号,客户机因为没有送出请求更改的包,所以将不接受这个认证包。因此,客户机产生自己的认证包,它反过来迫使服务器产生另一个认证包,这些反复循环,理论上对传送每个数据包是一个无止尽循环(如图9)。