开发者学堂课程【网络安全攻防 - Web渗透测试:中间人攻击及防御_2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9933
中间人攻击及防御_2
内容介绍
一、背景
二、静态 IP/MAC 绑定
一、背景
A 机器想要去访问 http://www.bigpig.co:8080/网站,它要把数据包交给网关,要跟网关建立链路,建立连接,A 机器只知道网关的 IP,它地址中有设置网关的 IP,所以它需要向网关发出 arp 请求,索要 mac 地址,虽然可能 A 机器有网关的 mac 地址,但是由于中间人持续的发出信息它是网关,它的 mac 地址,从而告诉 A 机器,它就会欺骗,从而一旦中间人选择它俩作为欺骗对象,它俩都会欺骗。
解决这个问题有两个方向,一个是从客户端出发,另一个是从服务器端出发,根本解决这个问题的方法在于关注不了太多客户端,客户端安一些防火墙防 arp 攻击就可以,或通过一些手动的方式。主要运维的对象是网站,只要保证在用户访问网站的时候,他的密码不被窃取就可以。所以从两个角度,左边的角度是对客户端,对上网的行为的这些行为,这些方式自己有一些基本的保护,首先以 windows,不相信任何人的网关地址,主动告诉的不相信,自己把网关的地址记下来,变成静态的,当打开 windows 的 arp 缓存时看缓存表,大部分都是动态的,动态的就是它有生命周期,它一定时间就会被替换,另外如果对方更新,也会替换,动态就是只要对方变了,就换掉,不管是自己觉察到变的,还是别人主动告诉变的,都换掉,解决方法就是变成静态,-d 是删除,输入 arp -d 10.30.162.1,现在中间人攻击是开着的,上一个命令结果是43-99,但是被中间人骗了,是94-d1,思路就是要让地址变成静态的,固定的这种行为。
二、静态 IP/MAC 绑定
1、背景:
Windows 下静态 IP/MAC 绑定,以防 ARP 攻击。
添加 IP: 192.168.1.200 MAC:00-aa-00-62-C6-09为例。
2、方法一:通过“arp-s“命令来实现
(1) 绑定 IP/MAC
DOS 界面下,输入命令[arp -S 192.168.1.200 00-aa-00-62-c6-09]回车即可。192.168.1.200是 IP,00-aa-00-62-c6-09是 MAC。
PS :该添加为临时添加,系统重启后,即失效。
但是这个名不一定好用,因为 windows 上接口特别多,如果没有把接口使用正确,就绑定到别的地方,不起作用。
(2)查看是否绑定成功
DOS 界面下,输入命令[arp-a ]参看添加成功后的 ARP 表项。
出现 internet 地址192.168.1.200,物理地址00-aa-00-62-c6-09,类型是静态,就证明绑定成功了。
(3)删除绑定的 IP/MAC
DOS 界面下,输入命令[arp -d 192.168.1.200]删除指定的 ARP 表项。
(4)IP/MAC 绑定不成功故障处理
输入"arp -S "后回车若出现提示"ARP 项添加失败:拒绝访问”。
3、方法二:通过"netsh "命令来实现
建议使用 netsh 命令进行操作,网关的 ip 和 mac 做静态的绑定。
(1)查看网口的 Idx 值
DOS 界面下,输入命令[netsh i i show in] , 查看本地网卡对应的"Idx"值,接下来会使用到。
PS: [netsh i i show in]为[netsh interface ipv4 show interfaces ]的缩写。
C: \users\ Administrator>netsh i i show in
Dx Met MTU 状态 名称
1 50 4294967295 connected Loopback Pseudo Interface 1
12 50 1500 disconnected 无线网络连接
14 20 1500 connected 本地连接
15 5 1500 disconnected 无线网络连接3
19 20 1500 connected UMware Network Adapter UMnet1
20 20 1500 connected UMware Network Adapter UMnet8
21 20 1500 disconnected 本地连接2
C: \users\ Administrator
是本地连接,打开网络连接,更改设备,详细信息。
(2)绑定 IP/MAC
DOS 界面下,输入命令[netsh-c "i i" add ne 18 192.168.1.200 00-aa-00-62-C6-09] , 绑定 IP 与 MAC,默认是永久生效,即使重启系统。其中18是 idx 值,store=active 临时生效,重启失效,store 下列其中一个值:active:地址将在下一次启动时出现,persistent:地址持久有效,此为默认值,该值默认为永久有效。
PS:
A、[netsh-c "ii" add ne]为[netsh -C interface ipv4" add neighbors]的缩写。
B、若只需临时绑定ARP表项,跟上参数: store=active ,即: [netsh-c "ii" add ne 18 192.168.1.200 00-aa-00-62-C6-09 store=active] 。C、命令中的[""]在拼音输入模式下输入。
C: \Users \Administrator>netsh -c i i ad ne 14 10.30.162.1 cc-2d-e0-1e-43-99 store =persistent
如果现实对象已存在。先输入 arp -d 10.30.162.1删除。再输入-a 就可以看到静态的。中间人攻击目前是开着的,它的攻击行为都是失效的,不会得到错误网关的地址,重启也是一样生效的。
(3)查看是否绑定成功
DOS 界面下,输入命令[arp-a ]参看添加成功后的ARP表项。
(4)删除绑定的 IP/MAC
DOS 界面下,输入命令[netsh -C "i i" delete neighbors 18]删除绑定的 ARP 表项。如果是临时添加,重启系统就可,如果是永久添加,就需要通过该方法来删除。
PS:"18"是 Idx 值。
C: \Users\Administrator>netsh -c i i ad ne 14 10.30.162.1 cc-2d-eØ-1e-43-99 store=persistent 是永久的,是在本次生效的。active 是下一次生效。
C: \Users\Administrator>arp-a 再次查看是否被骗,对于客户端的保护,只能如此,因为客户端不是重点关注对象,一些arp保护软件或防攻击软件自然能够去防御,即把网关做死。
现在是被攻击的状态:
[ root@gg ~]# ip n
Neigh Netns ntable
[ root@gg ~]# ip neigh
10.30.162.142 dev eth0 lladdr 68:f7:28:52:db:bf STALE
10.30.162.109 dev eth0 lladdr 00:21:cc:68:fb:61 REACHABL E
10.З0.162.155 dеv еth0 llаddr Ѳ0:0с:29:24:94:d1 ЅТАLЕ
10.30.162.1 dev eth0 lladdr 00:0c:29:24;94:d1 REACHABLE
10.30.162.6 dev eth0 lladdr 68:f7:28:55:e5:d7 STALE
[ root@gg ~]#
[root@gg ~]# arp -a
? (10.30.162.142) at 68:f7:28:52:db:bf [ether] on eth0
? (10.30.162.109) at 00:21:cc:68:fb:61 [ether] on eth0
? (10.30.162.155) at 00:0c:29:24:94:d1 [ether] on eth0
gateway (10.30.162.1) at 00:0c:29:24:94:d1 [ether] on eth0
? (10.30.162.6) at 68:f7:28:55:e5:d7 [ether] on eth0
至少现在是被攻击的状态,arp的命令是通用的,临时的要用 arp-s,在 windows 上使用这个命令还是有一些问题:
[ root@gg ~]# arp -S 10.30.162.1 cc:2d:e0:1e:43:99
[root@gg ~]# arp -a
? (10.30.162.142) at 68:f7:28:52:db:bf [ether] on eth0
? (10.30.162.109) at 00:21:cc:68:fb:61 [ether] on eth0
? (10.30.162.155) at 00:0c:29:24:94:d1 [ether] on eth0
gateway ( 10.30.162.1) at cc:2d:e0:1e:43:99 [ ether] PERM on eth0
? (10.30.162.6) at 68:f7:28:55:e5:d7 [ether] on eth0
使用 ip neigh:
[ root@gg ~]# ip neigh
10.30.162.142 dev eth0 lladdr 68:f7 :28:52:db:bf STALE
10.30.162.109 dev eth0 lladdr 00:21:cc:68:fb:61 REACHABL E
10.З0.162.155 dеv еth0 llаddr 00:0с:29:24:94:d1 ЅТАLЕ
10.30.162.1 dev eth0 lladdr cc:2d:e0: 1e:43:99 PlERMANENT
10. 30162.6 dev eth0 lladdr 68·f7·28·55·e5·d7 STALЕ
43:99 PERMANENT
是永久的。
[root@gg ~]# arp -a
? (10.30.162.142) at 68:f7:28:52:db:bf [ether] on eth0
? (10.30.162.109)
at 00:21:cc:68:fb:61 [ether] on eth0
? (10.30.162.155) at 00:0c:29:24:94:d1 [ether] on eth0
gateway (10.30. 162.1)at cc:2d:e0:1e:43:99 [ether] PERM on eth0
? (10.30.162.6) at 68:f7:28:55:e5:d7 [ether] on eth0
也可以看到 PERM,永久的。
总之这些命令都是临时的,欺骗不了,但虽然是临时的,也可以将【root@gg ~ arp -s 10.30.162.1 cc:2d:e0:le:43:99】这行命令写入 ac.login 里面,保证开机时可以自动启动,这个网关行为不会上当受骗。windows 就是用netsh 命令做绑定,静态化,前提是要看接口,因为有好多借口,而 linux 可以使用 arp -s 这个命令。一旦失去保护的情况:
[root@gg ~]# ip neigh
10.30.162.142 dev eth0 lladdr 68:f7:28:52:db:bf STALE
10.30.162.109 dev eth0 lladdr 00:21:cc:68: fb:61 REACHABLE
10.30.162.155
dev eth0 lladdr 00:0c:29:24:94:d1 STALE
10.30.162.1 dev eth0 lladdr cc:2d:e0: 1e:43:99 PERMANENT
10.30.162.6 dev eth0 lladdr 68:f7 :28:55:e5:d7 STALE
[root@gg ~]# arp -d 10.30.162.1
把 mac 缓存删除
再次输入可以看到已经上当了:
[root@gg ~]# ip neigh
10.30.162.142 dev eth0 lladdr 68:f7:28:52:db:bf STALE
10.30.162.109 dev eth0 lladdr 00:21:cc:68:fb:61 REACHABLE
10.30.162.155 ,dev eth0 lladdr 00:0c:29:24:94:d1 STALE
10.30.162.1 dev eth0 lladdr 00:0c:29:24:94:d1 REACHABLE
10.30.162.6 dev eth0 lladdr 68:f7 :28:55:e5:d7 STALE
因为中间人攻击一直在欺骗别人。无论输入多少次,都是假网关的 mac 地址。除非保护起来,变成静态的。
Windows 状态是保护起来的,arp-a 是静态的,在 windows 上输入用户密码。如果还是被骗,最好重启一下,保证可以真正意义上的生效。特别是 windows,普通用户用不了这个命令,只能安装相应的防火墙,arp 的防火墙,防攻击的防火墙,linux 比较容易,直接 arp-s 静态绑定即可。