注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

冰魂's blog

关注网络技术.

 
 
 
 
 

日志

 
 

TCP劫持原理分析与实践  

2011-08-17 00:56:31|  分类: [安全资讯] |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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 //查看当前网络上的会话
  评论这张
 
阅读(243)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017