灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2098回复:0

TCP劫持原理分析与实践

楼主#
更多 发布于:2011-08-15 10:19
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 //查看当前网络上的会话

 

喜欢0 评分0
游客

返回顶部