1.实验环境
设备/角色 | IPv4地址 | 子网掩码 | MAC地址 |
---|---|---|---|
Win7主机 | 192.168.41.20 | 255.255.255.0 | 00-0C-29-A9-5E-BF |
Kali主机 | 192.168.41.132 | 255.255.255.0 | 00:0c:29:a4:ce:b5 |
NAT网关 | 192.168.41.2 | 255.255.255.0 | 00-50-56-ea-26-d7 |
sudo arpspoof -i eth0 -t 192.168.41.20 192.168.41.2
arp欺骗前
arp欺骗后
进行单向欺骗后,测试win7的网络联通性,以及win7与网关间的联通性。
利用kali伪装成为网关对win7进行arp欺骗,同时伪装成为win7对网关也进行欺骗,形成双向欺骗。
sudo arpspoof -i eth0 -t 192.168.41.20 -r 192.168.41.2
攻击逻辑
欺骗Win7:让Win7认为Kali是网关(
192.168.41.2
→ Kali的MAC)。欺骗网关:让网关认为Kali是Win7(
192.168.41.20
→ Kali的MAC)。流量全拦截:Win7和网关之间的双向流量均通过Kali中转(需开启IP转发)。
测试双向欺骗后,win7的网络联通性,以及win7与网关间的联通性
IP转发,只有开启的kali上的ip转发功能,才能让win7数据包通过kali的路由表去找到真正的NAT网关,进而访问外网。
开启Kali的IP转发
# 临时生效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效(编辑/etc/sysctl.conf)
sysctl -w net.ipv4.ip_forward=1
作用:允许Kali在内核层面转发数据包
这里使用临时的IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
此时win7还是不能上网的
当我修改
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P FORWARD ACCEPT
之后win7才能正常的上网
1.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
的作用
功能:将 Win7 的私有 IP(192.168.41.20) 发出的数据包,在通过 Kali 的
eth0
接口(IP 为 192.168.41.132)时,修改其 源 IP 为 Kali 的eth0
接口 IP(192.168.41.132)。必要性:
Win7 的 IP 是私有地址(192.168.41.20),无法直接访问公网(如 8.8.8.8)。
NAT 网关(192.168.41.2)只接受来自同一子网(192.168.41.0/24)的流量。通过 MASQUERADE 规则,Win7 的流量“伪装”成 Kali 的 IP(192.168.41.132),从而被 NAT 网关接受并转发到外网。
2.
iptables -P FORWARD ACCEPT
的作用
功能:允许 Kali 转发来自其他主机的数据包(默认策略可能为
DROP
,导致转发被拒绝)。必要性:
即使开启了 IP 转发(
net.ipv4.ip_forward=1
),如果FORWARD
链策略未设置为ACCEPT
,Kali 仍会丢弃来自 Win7 的转发流量。此规则确保 Kali 作为网关,能将 Win7 的流量从内网接口(连接 Win7)转发到外网接口(
eth0
连接 NAT 网关)。Win7 访问 8.8.8.8 的流量路径(结合图片分析)
步骤 1:Win7 发送请求
数据包信息:
源 IP:
192.168.41.20
(Win7)目标 IP:
8.8.8.8
网关:
192.168.41.132
(Kali)步骤 2:Kali 处理转发
接收数据包:
Kali 从内网接口(如eth1
)收到 Win7 的请求。路由决策:
Kali 的路由表检查目标 IP(8.8.8.8),发现需通过默认网关(NAT 网关 192.168.41.2)从eth0
发出。NAT 伪装:
MASQUERADE
规则将 源 IP 从 192.168.41.20 修改为 192.168.41.132(Kali 的eth0
IP)。转发放行:
FORWARD ACCEPT
策略允许数据包从eth1
转发到eth0
。步骤 3:NAT 网关处理
数据包信息:
源 IP:
192.168.41.132
(Kali)目标 IP:
8.8.8.8
行为:
NAT 网关(192.168.41.2)将源 IP 转换为公网 IP(假设为 203.0.113.5),并将请求发送到互联网。步骤 4:返回流量处理
响应返回:
8.8.8.8 的响应目标为 NAT 网关的公网 IP(203.0.113.5)。NAT 网关反向转换:
NAT 网关将目标 IP 从 203.0.113.5 转换回 192.168.41.132(Kali 的eth0
IP)。Kali 反向 NAT:
Kali 根据 NAT 表记录,将目标 IP 从 192.168.41.132 还原为 192.168.41.20(Win7)。转发到 Win7:
数据包通过 Kali 的内网接口(eth1
)送回 Win7。图片验证(
tracert 8.8.8.8
结果)
第一跳:
192.168.41.132
(Kali),证明 Win7 的流量经过 Kali。第二跳:
192.168.41.2
(NAT 网关),证明 Kali 将流量转发到 NAT 网关。后续超时:公网路由器通常禁用 ICMP 响应(安全策略),不影响实际 TCP/UDP 通信(如网页访问)。
流量路径示意图
Win7 (192.168.41.20) │ ↓ 源IP:192.168.41.20 → 目标IP:8.8.8.8 Kali (192.168.41.132) │ ① 修改源IP为192.168.41.132 ↓ 源IP:192.168.41.132 → 目标IP:8.8.8.8 NAT网关 (192.168.41.2) │ ② 转换源IP为公网IP (203.0.113.5) ↓ 源IP:203.0.113.5 → 目标IP:8.8.8.8 互联网 │ ↓ 响应目标IP:203.0.113.5 NAT网关 (192.168.41.2) │ ③ 转换目标IP为192.168.41.132 ↓ 目标IP:192.168.41.132 Kali (192.168.41.132) │ ④ 还原目标IP为192.168.41.20 ↓ 目标IP:192.168.41.20 Win7 (192.168.41.20)
关键结论
MASQUERADE:解决私有 IP 无法访问公网的问题,使 Win7 流量“合法化”。
FORWARD ACCEPT:确保 Kali 允许转发流量,避免策略拦截。
双向欺骗:实际是 Kali 的 NAT 功能(非 ARP 欺骗),通过修改 IP 包头实现流量中转。
driftent 需要自行安装,安装命令:
sudo apt install driftnet
driftnet -i eth0 -d /home/kali/
win7打开百度
kali嗅探到win7所访问http网站的图片
ettercap嗅探HTTP网站帐号密码 Ettercap是一款中间人攻击神器,集成了各种形式的中间人攻击手段, 并且是kali自带的工具。
sudo ettercap -G
开启ettercap
菜单栏选择 Sniff → Unified sniffing → 选择网卡(如eth0)。
菜单栏选择 Hosts → Scan for hosts。
在 Hosts List 中添加Win7和网关IP到目标(Add to Target 1 和 Target 2)
菜单栏选择 Mitm → ARP poisoning → 勾选 Sniff remote connections。
菜单栏选择 Start → Start sniffing。
成功捕捉到明文的账号和密码
实验成功
关键总结
步骤 | 操作要点 |
---|---|
双向目标选择 | Target1 = Win7, Target2 = 网关 |
ARP 欺骗配置 | 勾选 Sniff remote connections,禁用单向欺骗 |
IP 转发 | 必须启用,否则断网 |
验证方法 | 检查 ARP 表 + 嗅探明文流量 |