前言:
ARP欺骗原理:在每台主机上都有ARP
缓存表,缓存表中记录了IP地址与ARP地址对应的关系,而局域网数据传输依靠的是MAC地址(网络设置之间互相通信是用MAC地址而不是IP地址),同理MAC
地址在OSI模型中对应的是数据链路层
的,其中ARP是IP转换为MAC的过程
,所以ARP在也是在数据链路层
的。
实验环境和工具:
这里所有的操作环境都是在VM虚拟机下搭建的,并且网络环境设置的是NAT模式,VM虚拟机中一共有3种模式,分别是NAT模式
,桥接模式
,和仅主机模式
,这三种模式的关系,这里就不多介绍了。
Kali
(中间人)系统 IP地址:192.168.107.128 MAC地址:00:0c:29:a2:2d:54
Win7
系统 IP地址:192.168.107.157 MAC地址:00-0C-29-AB-F9-3F
Win2008
系统 IP地址:192.168.107.146 MAC地址:00-0C-29-CF-53-FF
arpspoof
工具:用来进行ARP(MAC)地址欺骗,Kali系统中自带
tcpdump
工具:用来进行流量监听,Kali系统中自带
driftnet
工具:用来进行图片嗅探,Kali系统中自带
ettercap
工具:用来进行DNS欺骗,Kali系统中自带
此时,三种机器机器都是可以在同一局域网环境下,并且都是可以ping通的。
ARP欺骗:
第一步:我们在我们的win7上搭建一个ftp(具体搭建教程,请自行百度),然后通过win2008来进行ftp的连接,由于ftp数据的传输是明文传输的,所以通过流量监听是可以监听到明文数据的。
在win2008上先正常访问下win7的ftp,输入账号和密码,提示successful,成功连接到。
第二步:查看win2008上的路由表,可以看到,此时win7的IP地址和MAC地址是一一对应的。
第三步:打开Kali系统,进行ARP欺骗,首先开启流量转发:echo 1 >> /proc/sys/net/ipv4/ip_forward
使用工具arpspoof
,执行命令:arpspoof -i eth0 -t 192.168.107.157 192.168.107.146
这条语句的意思就是告诉192.168.107.157(win7),我(Kali)现在是192.168.107.146(win2008),这样192.168.107.157发送的数据就会发送到Kali系统上来,当然了也可以执行双向监听。
第四步:在Kali中执行tcpdump -i eth0 -X port 21
意思就是监听eth0网卡上端口为21的数据,此时就是监听的状态。
第五步:回到win2008(192.168.107.46)上重新连接win2007(192.168.107.157)的ftp服务,此时win2008发送请求到win2007,win2007收到请求后返回数据包,让win2008输入ftp的账号和密码,win2008输入账号和密码,并且发送给win2007,那么此时我们已经进行了ARP欺骗了win2008,所以账号和密码在Kali中就能被抓取到。
账号:
密码:
ftp连接成功信息:
图片嗅探:
这个实验比较简单,当Kali和win7处于同一局域网时,直接在Kali中执行:driftnet -i eth0
即可进行图片嗅探,嗅探是不需要进行ARP欺骗的,直接执行即可。
win7浏览器打开的图片:
Kali下嗅探到的图片:
URL嗅探
这里就需要使用到ettercap
这个嗅探神器了,也是在Kali中自带的,废话不多话,看操作吧。
第一步:在Kali中执行ettercap -G
以图形化的界面打开,打开后的界面如下:
选项需要嗅探的网卡,然后点击勾号。
第二步:点击扫描,扫描后,点击左边的按钮,就可以列出当前局域网中存活的设备。
第三步:这是扫描后的结果,选择需要嗅探的目标,Add to Target1 ,然后Delete host其他的主机。
第四步:选择ARP poissoning…。
第五步:选择Plugins加载模块
第六步:双击加载remote_browser浏览器嗅探模块。
第七步:点击扫描
到此所有的准备工作都已经完成了,接下来等待被嗅探的机器win7打开浏览器,访问URL等资源链接。
win7访问的百度地址。
Kali中嗅探到的URL信息和界面
DNS欺骗:
首先,我们需要在Kali系统中配置欺骗的DNS,vim打开文件/etc/ettercap/etter.dns
,在文件开头处添加,然后保存,并且我们需要在kali上开启apache服务(这里不多介绍)
www.baidu.com A (A记录) 192.168.107.128(本机ip)
*.*.* A 192.168.107.128
DNS欺骗所利用到的工具也是ettercap
,前面的步骤都是一样的,唯一不同的就是加载模块不一样,需要加载dns_spoof
。
最后点击执行。
那么这个时候192.168.107.157(win7)
访问任何的网页地址,都将解析到我们kali的地址:192.168.107.128上,实际的用法,大家自行脑补,这里我就不多说了。