20222937 2022-2023-3 《网络攻防实践》实践四报告
1.知识点梳理与总结
任务:
在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
实践内容
1.1 ARP缓存欺骗攻击原理
ARP攻击或欺骗的原理是:
通过发送伪造虚假的ARP报文(广播或单播),来实现的攻击或欺骗!
如虚假报文的mac是伪造的不存在的,实现ARP攻击,结果为中断通信/断网!
如虚假报文的mac是攻击者自身的mac地址,实现ARP欺骗,结果可以监听、窃取、篡改、控制流量,但不中断通信!
1.2 ICMP重定向攻击简介
ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。
1.3 SYN Flood攻击
SYN Flood(半开放攻击)是一种拒绝服务(DDoS)攻击,其目的是通过消耗所有可用的服务器资源使服务器不可用于合法流量。通过重复发送初始连接请求(SYN)数据包,攻击者能够压倒目标服务器机器上的所有可用端口,导致目标设备根本不响应合法流量。
1.4 TCP RST攻击
在TCP协议中,RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。假设有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须重新开始建立连接。
1.5 TCP会话劫持攻击
会话劫持利用了TCP/IP工作原理来设计攻击。TCP使用端到端的连接,即TCP用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。另外,TCP在进行数据传输时,TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要。序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。
TCP会话劫持的攻击方式可以对基于TCP的任何应用发起攻击,如HTTP、FTP、Telnet等。对于攻击者来说,所必须要做的就是窥探到正在进行TCP通信的两台主机之间传送的报文,这样攻击者就可以得知该报文的源IP、源TCP端口号、目的IP、目的TCP端号,从而可以得知其中一台主机对将要收到的下一个TCP报文段中seq和ackseq值的要求。这样,在该合法主机收到另一台合法主机发送的TCP报文前,攻击者根据所截获的信息向该主机发出一个带有净荷的TCP报文,如果该主机先收到攻击报文,就可以把合法的TCP会话建立在攻击主机与被攻击主机之间。带有净荷的攻击报文能够使被攻击主机对下一个要收到的TCP报文中的确认序号(ackseq)的值的要求发生变化,从而使另一台合法的主机向被攻击主机发出的报文被被攻击主机拒绝。TCP会话劫持攻击方式的好处在于使攻击者避开了被攻击主机对访问者的身份验证和安全认证,从而使攻击者直接进入对被攻击主机的的访问状态,因此对系统安全构成的威胁比较严重。
2.实践过程
2.1ARP缓存欺骗攻击
准备ARP缓存欺骗攻击实验环境:
选择Kali为攻击机,选择靶机1:Linux MetaSploitable和靶机2:win2k为两台互相通信的主机。
查看kali的IP地址:
查看Linux MetaSploitable的IP地址:
查看win2k的IP地址:
在Linux MetaSploitable靶机上输入ping 192.168.200.124(win2K靶机IP地址),尝试是否与win2K靶机连通。
成功ping通,值得注意的是,第一跳的时间为8.59ms,该信息需要与后续实验进行对比。
在linux靶机中输入arp -a,查看ARP缓存的信息。
可以看到win2K靶机的物理地址为 00:0C:29:C9:42:F6
在蜜网网关中提权,然后输入ifconfig,获取网卡的信息。
可以看到密网的物理地址为 00:0C:29:7B:79:F7
进入Kali Linux攻击机,在终端中输入sudo su提权,然后输入netwox 80 -e 00:0C:29:7B:79:F7(密网物理地址) 1 -i 192.168.200.124(win2000靶机IP地址)。
发现没有安装netwox
安装netwox,输入apt install netwox
安装成功后再次输入netwox 80 -e 00:0C:29:7B:79:F7 1 -i 192.168.200.124
然后在Linux靶机中再次输入arp -a,运行,发现win2K靶机的MAC地址变为00:0C:29:7B:79:F7(密网的物理地址)。
(备注:实验进行到此步时,win2K靶机网络出现错误,与之前IP地址发生不知名冲突,通过网络配置更改IP地址后,实验可以继续进行)
停止运行Kali攻击机中的指令,在Linux靶机中再次ping通win2K靶机,然后输入arp -a,发现win2K靶机的MAC地址变回攻击前的地址00:0C:29:C9:42:F6。
同时发现,这次ping操作的第一跳时间较之前的8.59ms更长了,说明在通过蜜网网关的过程中时延增加了。
2.2 ICMP重定向攻击
准备ICMP重定向攻击实验环境:
选择Kali为攻击机,选择ubantu为靶机。
查看ubantu的IP地址:192.168.200.3
并获得管理员权限:密码为dees
输入命令:route -n
发现该靶机ubantu的网关为192.168.200.2
然后输入命令ping baidu.com,发现能成功ping通,且百度的IP地址为39.156.66.10。
在kali中查看其IP地址:192.168.200.4
在Kali Linux攻击机中运行攻击指令netwox 86 -f “host 192.168.200.3(Ubuntu IP地址)” -g 192.168.200.4(Kali攻击机IP地址) -i 192.168.200.2(网关)。
及:netwox 86 -f “host 192.168.200.3” -g 192.168.200.4 -i 192.168.200.2
回到ubantu靶机中,再次运行ping baidu.com命令,发现目标主机的IP地址被重定向到Kali Linux攻击机了。
2.3 SYN Flood攻击
准备SYN Flood攻击实验环境:
选择Kali为攻击机,选择靶机1:Linux MetaSploitable和靶机2:ubantu为两台互相通信的主机。
打开Kali Linux攻击机中的Wireshark,选择eth0网卡。
在ubantu靶机的终端中运行命令telnet 192.168.200.123,以命令行的形式访问Linux靶机。
输入账户(msfadmin)和密码(msfadmin)
Ubuntu靶机能够正常访问Linux靶机。
并且能在wireshark中找到正常的TCP-SYN/ACK响应。
在Kali Linux虚拟机的终端中运行攻击命令netwox 76 -i 192.168.200.123(Linux靶机IP地址) -p 23,对Linux靶机进行SYN Flood攻击。
运行几秒之后,按Ctrl+Z停止运行。
可以在wireshark中看到许多目的地址为192.168.200.123的SYN数据包,且发送地址(source)为伪造的。
2.4 TCP RST攻击
准备TCP RST攻击实验环境:
选择Kali为攻击机,选择靶机1:Linux MetaSploitable和靶机2:ubantu为两台互相通信的主机
在Ubuntu靶机中telnet 192.168.200.123,输入账户密码,成功连接linux靶机
在Kali Linux攻击机的终端中运行命令netwox 78 -i 192.168.200.123(Linux靶机IP地址)
然后在Ubuntu主机中重新telnet,发现连通后,连接又立即被中断了。
2.5 TCP会话劫持攻击
准备STCP会话劫持攻击实验环境:
选择Kali为攻击机,选择靶机1:Linux MetaSploitable和靶机2:ubantu为两台互相通信的主机
在Kali Linux攻击机中输入密码(kali)运行Ettercap。
点击右上角功能栏的第一个“√”,开始嗅探。
点击红标右侧的菜单图标
选择“Hosts”
再选择“Scan for hosts”,开始扫描网络中的主机。
再次进入菜单图标,选择“Hosts”,再选择“Hosts list”,查看扫描出来的主机。
选择Ubuntu主机(192.168.200.3),将其添加到Target1中:
选择Linux靶机(192.168.200.123),将其添加到Target2中:
再次进入菜单图标,选择“Targets”再选择“Current targets”,查看当前的目标。
点击红标左侧的双机图标,运行ARP Poisoning…
选择OK
在ubantu靶机中telnet连接Linux靶机,,输入telnet 192.168.200.123,
输入账号密码进行登录。
回到Kali Linux虚拟机,点击菜单图标再选择“View”
再选择“Connections”
双击主机为Ubuntu主机(192.168.200.9)和Linux靶机(192.168.200.123)的那一项。
可以看到两个主机之间交互的数据,包括进行telnet的命令,以及账号和密码。
3.学习中遇到的问题及解决
- 问题1:使用linux靶机ping靶机Win2K时,因未知原因出现地址冲突问题,致使无法ping通
- 问题1解决方案:重新配置Win2k的IP地址,将原来的192.168.200.124改为192.168.200.125,成功ping通
- 问题2:不清楚netwox的使用方法
- 问题2解决方案:查阅netwox有关使用说明
- 问题3:不清楚Ettercap的使用方法
- 问题3解决方案:查阅Ettercap有关使用说明
4.学习感想和体会
通过本次实验,熟悉了TCP/IP协议栈重点协议的相关知识并且实践了TCP/IP协议栈重点协议的攻击方法,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击,通过学习这些攻击技术,更好地了解网络攻击,更加体会到网络安全的重要性。
参考资料
- netwox网络工具集入门教程:http://t.csdn.cn/4skV3
- Ettercap的基本使用:http://t.csdn.cn/JlRKF