网络数据的嗅探与欺骗
网络数据的嗅探与欺骗是信息安全领域中的两种常见技术手段,它们在网络攻击和安全测试中扮演重要角色:
网络数据嗅探(Network Sniffing)
网络嗅探是指通过监听网络上的数据流量来捕获、分析和解读传输中的数据包的过程。在共享式网络环境中(如集线器连接的网络),所有设备可以接收到所有经过的数据包;而在交换式网络环境下,则需要特定技术(如ARP欺骗)或配置网卡为混杂模式以获取非目标数据包。
典型工具:
- TcpDump:命令行工具,用于抓取和分析网络流量。
- Wireshark:图形界面工具,提供了强大的网络封包分析功能,可深度解析各种协议的数据包内容。
ARP欺骗(ARP Spoofing)
ARP地址解析协议欺骗是一种中间人攻击形式,攻击者通过发送虚假的ARP应答信息,误导网络中其他主机将攻击者的MAC地址映射到某个IP地址上,从而实现数据流的重定向。这样,攻击者就能拦截并可能篡改原本应该直接从源主机流向目标主机的数据包,进行嗅探甚至欺骗操作。
相关工具:
- arpspoof:一个用于实施ARP欺骗的小工具,能够更改网络中设备间的ARP缓存表项。
- driftnet: 一个网络数据嗅探工具,主要用于在网络流量中捕获并显示图片和视频内容。
应用情境举例:
- 数据嗅探可用于网络性能分析、故障排查,以及安全审计等合法目的。
- 欺骗则更多出现在恶意场景中,例如窃取敏感信息(如用户名、密码、银行账号等)、篡改数据、执行会话劫持等攻击行为。
综上所述,网络数据的嗅探与欺骗都是针对网络通信层面的安全威胁,对于网络安全防护至关重要,同时也要求网络管理员和技术人员深入理解其原理及防范措施。
实验准备
软件:VMware Workstation Pro
虚拟机:Red Hat Enterprise Linux 7 服务器,windows客户端,Kail Linux 攻击机
网络模式:NAT模式
ip地址:Red Hat Enterprise Linux 7 服务器(192.168.1.10),windows客户端(192.168.1.128),Kail Linux 攻击机(192.168.1.129)
实验内容
本次实验主要内容是使用Red Hat Enterprise Linux 7 服务器搭建一个web服务器及一个ftp服务器,并使用Kail Linux 攻击机上的网络数据嗅探器工具arpspoof实现ARP断网攻击,及搭配driftnet实现arp欺骗,捕获受害机图片,以揭示未加密通信可能带来的隐私泄露风险。最后使用Wireshark工具嗅探ftp登录过程中的明文传输的密码泄露风险。
部署环境
1、在Red Hat Enterprise Linux 7 服务器上部署httpd服务,这里为了方便后续的arp欺骗实验,在红帽服务器上传了一个带有图片的网页。
[root@localhost 桌面]# mkdir /mnt/cdrom
[root@localhost 桌面]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost 桌面]# vim /etc/yum.repos.d/a.repo
[root@localhost 桌面]# cat /etc/yum.repos.d/a.repo
[a]
name=a
baseurl=file:///mnt/cdrom
enable=1
gpgcheck=0
[root@localhost 桌面]# yum install httpd -y
[root@localhost 桌面]# systemctl start httpd
[root@localhost 桌面]# cd /var/www/html/
拷贝一个带图片的网页至/var/www/html/目录,
设置防火墙,放行httpd的流量
[root@localhost html]# firewall-config
成功访问。
2、开启一台windows客户端,充当被攻击机。查看被攻击机的ARP缓存表,并检测是否可以正常上网。
3、kali机检查网络,配置apt国内源(注:虚拟机需可正常浏览网页,否则无法更新源)
┌──(root㉿hnsw)-[~]
└─# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.129 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe0d:3b06 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0d:3b:06 txqueuelen 1000 (Ethernet)
RX packets 17 bytes 2134 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 4286 (4.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 240 (240.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
┌──(root㉿hnsw)-[~]
└─# vim /etc/apt/sources.list
┌──(root㉿hnsw)-[~]
└─# cat /etc/apt/sources.list
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
#deb http://http.kali.org/kali kali-rolling main contrib non-free
# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
┌──(root㉿hnsw)-[~]
└─# apt update
获取:1 https://mirrors.aliyun.com/kali kali-rolling InRelease [41.5 kB]
获取:2 https://mirrors.aliyun.com/kali kali-rolling/contrib Sources [80.3 kB]
获取:3 https://mirrors.aliyun.com/kali kali-rolling/main Sources [16.2 MB]
获取:4 https://mirrors.aliyun.com/kali kali-rolling/non-free Sources [123 kB]
获取:5 https://mirrors.aliyun.com/kali kali-rolling/main amd64 Packages [19.8 MB]
获取:6 https://mirrors.aliyun.com/kali kali-rolling/main amd64 Contents (deb) [47.1 MB]
获取:7 https://mirrors.aliyun.com/kali kali-rolling/non-free amd64 Packages [195 kB]
获取:8 https://mirrors.aliyun.com/kali kali-rolling/non-free amd64 Contents (deb) [893 kB]
获取:9 https://mirrors.aliyun.com/kali kali-rolling/contrib amd64 Packages [119 kB]
获取:10 https://mirrors.aliyun.com/kali kali-rolling/contrib amd64 Contents (deb) [258 kB]
已下载 84.8 MB,耗时 7秒 (12.1 MB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
有 1998 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
使用arpspoof工具,提示需要安装dsniff软件。
arp断网攻击
安装完成后使用arpspoof对被攻击机发起ARP断网攻击,输入arpspoof -i eth0 -t 192.168.190.130 192.168.43.2,可以看到此时KALI不断地向windows发送ARP应答包,这个应答包将网关的ip地址192.168.1.2和KALI机的MAC地址0:c:29:d:3b:06绑定在一起,从而将物理机的ARP缓存表中的网关的MAC地址修改为虚拟机的MAC地址。
arpspoof -i 网卡名 -t 目标机 网关 #对目标主机实施arp欺骗
arpspoof -i 网卡名 -t 网关 目标机 #对网关实施arp欺骗
也可使用一条命令同时进行arp攻击:
arpspoof -i 网卡名 -t 目标机 -r 网关
在WINDOWS中再次使用cmd向百度发送一个ping包,检查是否可以联网。
可以看到请求超时。
ARP表中网关192.168.1.2的MAC地址被绑定成攻击机的MAC地址了。
如被攻击机与攻击有过通讯,则可以通过网关和攻击的地址相同来判断遭到了ARP攻击。
停止攻击后,WINDOWS机可以正常联网。
如果未恢复,可用arp –d 192.168.190.2删除缓存记录。
红帽使用ip neigh查看arp表,
防范arp攻击
通常的ARP攻击对象包括路由器和局域网中的客户端主机,其中针对客户端主机的攻击居多,因此着重于客户端主机ARP欺骗的防治。通常解决ARP欺骗攻击的方法:
可以进行MAC与IP地址的绑定,生成固定的ARP对照表,保证映射关系的正确;
ARP -s 192.168.1.2 00-50-56-ec-c6-96 回车(绑定)
ARP -d 192.168.1.2 00-50-56-ec-c6-96 回车(解除)
arp欺骗
在刚刚的实验中,我们实现了对WINDOWS进行断网攻击,接下来我们进行一点升级,利用arpspoof工具和driftnet工具进行ARP欺骗。
实施ARP欺骗,需要打开攻击主机的IP转发功能,linux因为系统安全考虑,是不支持IP转发的,其配置文件写在/proc/sys/net/ipv4的ip_forward中。默认为0,修改为1。修改完后实施攻击就不会影响到被攻击机的联网功能了,重新发起攻击。
再次查看物理机的ARP表,发现网关地址的MAC地址发生变化。但是可以正常ping通百度,正常浏览网页,此时,被攻击机和网关通信的数据包都会流经虚拟机,可以在虚拟机中利用driftnet工具,捕获被攻击机正在浏览的图片。
图片捕获工具driftnet
driftnet是一款简单而使用的图片捕获工具,可以很方便的在网络数据包中抓取图片。
主要参数:
-b 捕获到新的图片时发出嘟嘟声
-i interface选择监听接口
-f file读取一个指定pcap 数据包中的图片
-p 不让所监听的接口使用混杂模式
-a 后台模式:将捕获的图片保存到目录中(不会显示在屏幕上)
-m number指定保存图片数的数目
-d directory指定保存图片的路径
-x prefix指定保存图片的前缀名。
在虚拟机中安装driftnet。
使用命令driftnet -d /home/hack -a -i eth0捕获被攻击机正在浏览的图片。然后使用被攻击机访问红帽服务器上的web网页。
成功捕获到图片。
使用WireShark进行网络嗅探
在Red Hat Enterprise Linux 7 服务器上部署vsftpd服务。
[root@localhost 桌面]# yum install -y vsftpd*
[root@localhost html]# systemctl start vsftpd
[root@localhost home]# vim /etc/vsftpd/vsftpd.conf
[root@localhost home]# grep “#” -v /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //不允许匿名用户登录
local_enable=YES //允许本地用户登录
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES //是否将用户权限禁锢在FTP目录,以确保安全
local_root=/var/www/html //设置所有本地用户的根目录。当本地用户登录后,会自动进入该目录。
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@localhost home]# systemctl restart vsftpd.service
[root@localhost html]# firewall-config
[root@localhost student]# getsebool -a | grep ftp
[root@localhost student]# setsebool -P ftpd_full_access=on
[root@localhost 桌面]# setsebool -P ftpd_connect_all_unreserved 1
[root@localhost 桌面]# useradd user1
[root@localhost 桌面]# useradd user2
[root@localhost 桌面]# echo redhat | passwd --stdin user1
更改用户 user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
在物理机上分别使用user1、user2登录ftp服务器。
可以看到成功捕获到登录成功用户名user1及密码redhat,登录失败用户名user2和空密码