TCP劫持原理分析与实践
2772 点击·0 回帖
![]() | ![]() | |
![]() | TCP协议劫持入侵 也许对连接于internet的服务器的最大威胁是TCP劫持入侵(即我们所知的主功嗅探),尽管顺序号预测法入侵和TCP劫持法有许多相似之处,但TCP劫持之不同在于黑客将强迫网络接受其IP地址为一个可信网址来获得访问,而不是不停地猜IP地址直至正确。TCP劫持法的基本思想是,黑客控制了一台连接于入侵目标网的计算机,然后从网上断开以让网络服务器误以为黑客是实际的客户端。图,显示了一个黑客怎样操作一个TCP劫持入侵。 黑客通过断开和模仿实际客户端的连接来实施TCP劫持入侵 成功地劫持了可信任计算机之后,黑客将用自己的IP地址更换入侵目标机的每一个包的IP地址,并模仿其顺序号。安全专家称顺序号伪装为"IP模仿",黑客用IP模仿在自己机器上模拟一个可信系统的IP地址,黑客模仿了目标计算机之后,便用灵巧的顺序号模仿法成为一个服务器的目标。 黑客实施一个TCP劫持入侵后更易于实施一个IP模仿入侵,而且TCP劫持让黑客通过一个一次性口令请求响应系统(如共享口令系统),再让一个拥有更高安全性的主机妥协。通过口令系统也让黑客穿过一个操作系统而不是黑客自己的系统。 最后,TCP劫持入侵比IP模仿更具危害性,因为黑客一般在成功的TCP劫持入侵后比成功的IP模仿入侵后有更大的访问能力。黑客因为截取的是正在进行中的事务而有更大访问权限,而不是模拟成一台计算机再发起一个事务。 TCP会话劫持过程 假设现在主机A和主机B进行一次TCP会话,C为攻击者,劫持过程如下: A向B发送一个数据包 SEQ (hex): X ACK (hex): Y FLAGS: -AP--- Window: ZZZZ,包大小为:60 B回应A一个数据包 SEQ (hex): Y ACK (hex): X+60 FLAGS: -AP--- Window: ZZZZ,包大小为:50 A向B回应一个数据包 SEQ (hex): X+60 ACK (hex): Y+50 FLAGS: -AP--- Window: ZZZZ,包大小为:40 B向A回应一个数据包 SEQ (hex): Y+50 ACK (hex): X+100 FLAGS: -AP--- Window: ZZZZ,包大小为:30 攻击者C冒充主机A给主机B发送一个数据包 SEQ (hex): X+100 ACK (hex): Y+80 FLAGS: -AP--- Window: ZZZZ,包大小为:20 B向A回应一个数据包 SEQ (hex): Y+80 ACK (hex): X+120 FLAGS: -AP--- Window: ZZZZ,包大小为:10 现在,主机B执行了攻击者C冒充主机A发送过来的命令,并且返回给主机A一个数据包;但是,主机A并不能识别主机B发送过来的数据包,所以主机A会以期望的序列号返回给主机B一个数据包,随即形成ACK风暴。如果成功的解决了ACK风暴(例如前边提到的ARP欺骗),就可以成功进行会话劫持了。 关于理论知识就说到这里,下面我以具体的实例演示一次会话劫持。 二、会话劫持实践 1、唠叨几句 可以进行会话劫持的工具很多,比较常用有Juggernaut,它可以进行TCP会话劫持的网络Sniffer程序;TTY Watcher,而它是针对单一主机上的连接进行会话劫持。还有如Dsniff这样的工具包也可以实现会话劫持,只是看你会不会使用了。但,能将会话劫持发挥得淋漓尽致的,还要算Hunt这个工具了。它的作者是Pavel Krauz,可以工作在Linux和一些Unix平台下。它的功能非常强大,首先,无论是在共享式网络还是交换式网络,它都可以正常工作;其次,可以进行中间人攻击和注射式攻击。还可以进行嗅探、查看会话、监视会话、重置会话。通过前面的叙述,我们知道在注射式攻击中,容易出现ACK风暴,解决办法是先进行ARP欺骗;而使用Hunt进行注射式攻击时,它并不进行ARP欺骗,而是在会话劫持之后,向会话双方发送带RST标志位的TCP包以中断会话,避免ACK风暴继续下去。而中间人攻击是先进行ARP欺骗,然后进行会话劫持。Hunt目前最新版本是1.5,可以到Pavel Krauz网站下载源代码包和二进制文件:http://lin.fsid.cvut.cz/~kra/#hunt。 现在来看看如果使用Hunt,首先是下载并编译源代码: [root@dahubaobao hunt]#wget http://www.ringz.org/hunt-1.5.tgz [root@dahubaobao hunt]#tar zxvf hunt-1.5.tgz [root@dahubaobao hunt]#cd hunt-1.5 [root@dahubaobao hunt-1.5]#make [root@dahubaobao hunt-1.5]#./hunt //Hunt是完全交互试的操作 解释一下各个选项的含义 l/w/r) list/watch/reset connections //l(字母l)为查看当前网络上的会话;w为监视当前网络上的某个会话;r为重置当前网络上的某个会话。 a) arp/simple hijack (avoids ack storm if arp used) //中间人攻击(会话劫持),Hunt先进行ARP欺骗,然后进行会话劫持。使用此方法可以避免出现ACK风暴。 s) simple hijack //简单的会话劫持,也就是注射式攻击。会出现ACK风暴。 d) daemons rst/arp/sniff/mac //该选项共实现四个功能,分别为:终止会话,自动发送带RST标志位的TCP包;ARP欺骗后进行数据包转发;不用说了,嗅探功能;在当前网络上收集MAC地址。 其他的选项很简单,不在多说了。还是来看看具体的例子吧,我想大家都等不及了!^_^ 2、应用实例 测试环境: 攻击者:Red Hat Linux 9.0 IP:192.168.0.10 主机A:Windows Advanced Server IP:192.168.0.1 主机B:FreeBSD 4.9 STABLE IP:192.168.0.20 [root@dahubaobao hunt-1.5]#./hunt /* * hunt 1.5 * multipurpose connection intruder / sniffer for Linux * (c) 1998-2000 by kra */ starting hunt --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ l/w/r) list/watch/reset connections u) host up tests a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit *> l //查看当前网络上的会话 | |
![]() | ![]() |