第五课 实践验收
第五课 实践验收
验收内容
请在网络攻防实验环境(以SEED_VM作为攻击机,Linux Metasploitable/Windows Metasploitable作为靶机)中完成TCP/IP协议栈重点协议的攻击实验,具体包括:
ARP缓存欺骗攻击
ICMP重定向攻击
SYN Flood攻击
TCP RST攻击
TCP会话劫持攻击。
要求:有攻击成功的截图,描述每次攻击的原理。
使用的虚拟机
镜像类型 | 镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 |
---|---|---|---|---|---|
linux攻击机 | kali | kali | kali | - | 192.168.200.2 |
windows攻击机 | windowsXP Attacker | - | mima1234 | - | 192.168.200.3 |
linux攻击机/靶机 | SEEDUbuntu | seed | dees | dees | 192.168.200.4 |
Linux靶机 | Metasploitable2-Linux | msfadmin | msfadmin | - | 192.168.200.125 |
windows靶机 | win2kServer | administrator | mima1234 | - | 192.168.200.124 |
蜜罐网关 | roo | roo | honey | honey | 192.168.200.8 |
实验
ARP缓存欺骗攻击
实验过程
打开蜜网网关方便实验,通过su -
提权,运行命令tcpdump -i eth0 icmp
打开靶机A:Metasploitable2-Linux,和靶机B:win2kServer,用 A ping B:ping 192.168.200.124
发现AB是联通的
查看一下A的MAC地址ifconfig
A的MAC地址为00:0c:29:1a:16:9e
欺骗A,所以在攻击机当中执行以下命令···sudo netwox 33 -b -(A的mac地址) -g -(B的ip地址) -h -(A的mac地址) -i -(A的ip地址)···
即在SEEDUbuntu中使用命令sudo netwox 33 -b 00:0c:29:1a:16:9e -g 192.168.200.124 -h 00:0c:29:1a:16:9e -i 192.168.200.125
查看到攻击机地址为00:0c:29:b3:48:4c
欺骗前后分别用arp -a
查看A中arp缓存内容
对比攻击前后两次内容可发现B的MAC地址已改为攻击机的MAC地址,达到欺骗A的目的。
实验原理
ARP协议是将IP地址映射为MAC地址的协议,其在协议上使用ARP请求及ARP应答报文来实现。
arp -a
是显示ARP缓存的命令命令,它可以显示电脑上所有的ARP缓存条目。ARP欺骗(ARP Spoofing),有时候也被称为ARP下毒(ARP Poisoning),是指攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
ARP欺骗攻击的根源在于,ARP协议在设计时认为局域网内部的所有用户都是可信的,是遵循协议设计规范的,但事实上并非如此,局域网内可以存在内部攻击者,或者已渗透进入局域网的外部攻击者或恶意代码。
实验中,使用netwox进行ARP欺骗。Netwox中的33号工具可以构造任意的以太网ARP数据报,80号工具可以周期性地发送ARP应答报,因此可以利用这两个工具来实施ARP欺骗攻击。在本实验中使用了33号工具···sudo netwox 33 -b -(A的mac地址) -g -(B的ip地址) -h -(A的mac地址) -i -(A的ip地址)···
镜像代号 | 镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 | MAC地址 |
---|---|---|---|---|---|---|
靶机A | Metasploitable2-Linux | msfadmin | msfadmin | - | 192.168.200.125 | 00:0c:29:1a:16:9e |
靶机B | win2kServer | administrator | mima1234 | - | 192.168.200.124 | |
攻击机C | SEEDUbuntu | seed | dees | dees | 192.168.200.4 | 00:0c:29:b3:48:4c |
C分别向A、B发送伪造的应答(或者请求)数据包进行欺骗,使得A、B的ARP缓存表中的映射关系分别是IP(B)MAC(C),IP(A)MAC(C)。
上图的关键部分“this address : 00:0c:29:b3:48:4c 192.168.200.124" 使得目标主机A保存这对映射关系而达到欺骗的目的,同理可进行对B的欺骗。完成对A、B的欺骗之后,再让B对A进行FTP访问,同时将A、B、C三者之间的通信数据包记录下来。
ICMP重定向攻击
镜像代号 | 镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址
:-: | :-: | :-: | :-: | :-: | :-: | :-:
攻击机A | kali | kali | kali | - | 192.168.200.2
靶机B | SEEDUbuntu | seed | dees | dees | 192.168.200.4
靶机C | windowsXP Attacker | - | mima1234 | - | 192.168.200.3
实验过程
查看WinXP的路由表信息netstat -rn
在kali中输入命令sudo netwox 86 -f "host 192.168.200.3 " -g 192.168.200.2 -i 192.168.200.1
然后我们来看一下wireshark捕到的包
可以看出被攻击机WinXP一直在被发送icmp路由重定向攻击。
再次在WinXP中查看路由表,发现kali的IP地址已经出现(若没有出现,则先在WinXP打开随便什么网站,再查看路由表)
实验原理
ICMP路由重定向攻击是指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
ICMP重定向攻击就是利用ICMP路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,自己则可以伪装成为路由器,使目标机器的数据报发送至攻击机从而加强监听。
利用Netwox的第86号工具,可以进行ICMP重定向攻击实验,其工作原理是嗅探网络中的数据包,每嗅探到一个符合要求的数据包,就向该IP地址发送一个ICMP重定向报文,让该IP的主机重定向至预先设定的IP地址,例如本实验中的:
sudo netwox 86 -f "host 192.168.200.3 " -g 192.168.200.2 -i 192.168.200.1
,-f
代表靶机地址,-g
代表靶机的下一跳地址,-i
代表伪造的身份意思就嗅探到数据包的源或目的IP地址192.168.200.3时,就以192.168.200.1的名义向数据包的源地址发送一个ICMP重定向报文,使之使用192.168.200.2作为默认的路由。
攻击机为192.168.200.2,受害机为192.168.200.3,网关为192.168.200.1,攻击机使用Netwox86号工具进行欺骗。当使用后Netwox便进入监听状态。
在受害主机访问任意网页之后,受害主机在其路由表中添加了两条路由项,对发往网页的IP数据包,使用攻击机IP(192.168.200.2)作为其网关,而非事先配置的192.168.200.1。使用Wireshark对整个攻击过程的监听情况分析,从受害机给那个网页发送数据时,但是实际MAC地址是指向攻击机的;紧接着攻击机发现自己并非最优路由,于是发送给受害机一条ICMP重定向,告知其他使用正确的路由;接下来由攻击机转发受害机发送的数据,再接下来攻击机冒充路由发送的ICMP重定向报文。这样,攻击者便完全监听到了受害机的会话。
SYN Flood攻击
镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 | 本实验中用途 |
---|---|---|---|---|---|
kali | kali | kali | - | 192.168.200.2 | 攻击机A |
Metasploitable2-Linux | msfadmin | msfadmin | - | 192.168.200.125 | 靶机B |
windowsXP Attacker | - | mima1234 | - | 192.168.200.3 | 靶机C |
实验过程
使用WinXP登录靶机B,telnet 192.168.200.125
输入用户名msfadmin
,密码msfadmin
,登陆成功
在攻击机kali上使用Netwox中的76号工具,对靶机B的23号端口进行SYN Flood攻击sudo netwox 76 -i 192.168.200.125 -p 23
打开Wireshark查看,可以看到攻击机向靶机发送了大量的虚假ip发出的SYN连接请求
再次使用WinXP登录靶机B,telnet 192.168.200.125
,发现已失去和主机的联系。
实验原理
TCP SYN Flood拒绝服务攻击,又称SYN洪泛攻击。利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
当客户端尝试与服务器建立TCP连接时,正常情况下客户端与服务器端会进行“TCP三次握手”过程。
在SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。由于大部分伪造源地址是非活跃的,这种情况下源端永远都不会返回ACK报文,受害主机继续不断地发送大量的SYN/ACK包,并将半开连接放入端口的积压队列中。由于端口的半连接队列的长度是有限的,半开连接队列就会很快填满,服务器也就拒绝新的连接,导致该端口无法响应其他机器进行的正常连接请求,最终使受害主机被拒绝服务。
Netwox中的76号工具可实现SYN Flood拒绝服务攻击,
netwox 76 -i ip -p port [-s spoofip]
各参数含义如下:
-i
--dst-ip ip
目标IP地址,此处攻击靶机B,故IP地址为192.168.200.125
-p
--dst-port port
目标端口号,实验中对靶机23号端口进行SYN Flood攻击
-s
--spoofip spoofip
IP欺骗初始化类型,实验中本部分省略实验中,使用的命令为
sudo netwox 76 -i 192.168.200.125 -p 23
TCP RST攻击
镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 | 本实验中用途 |
---|---|---|---|---|---|
kali | kali | kali | - | 192.168.200.2 | 攻击机A |
Metasploitable2-Linux | msfadmin | msfadmin | - | 192.168.200.125 | 靶机B |
windowsXP Attacker | - | mima1234 | - | 192.168.200.3 | 靶机C |
实验过程
使用WinXP登录靶机B,telnet 192.168.200.125
输入用户名msfadmin,密码msfadmin,登陆成功
在攻击机kali上使用Netwox的78号工具“Reset every TCP packet”来实现TCP RST攻击sudo netwox 78 -i 192.168.200.125
打开攻击机中的Wireshark查看抓包情况,可以看到第16号数据Metasploitable2-Linux向windowsXP发送了RST
此时回到WinXP再次尝试登录靶机B,发现已失去和主机的联系(如果刚刚没关窗口,回车即可)
实验原理
TCP RST攻击,也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。TCP协议头的标志位中拥有一个
reset
比特位,绝大部分数据包中该标志位都置为0,而一旦该标志位置为1,则接收该数据包的主机将立即断开这个TCP会话连接,不再利用该连接进行数据包发送和接收。在Netwox中,可以选择78号工具来实现TCP RST攻击。假设IP地址为192.168.200.125的主机B已经与IP地址为192.168.200.3的主机C建立了TCP连接,IP 地址为192.168.200.2的主机A企图对当前建立TCP连接进行RST攻击。在主机A中使用Netwox78号工具
sudo netwox 78 -i 192.168.200.125
,并输入主机B的IP地址作为攻击目标。此时,当主机C再向主机B发送信息时,主机A将监听到此信息,分析数据包的端口号、SEQ号后,假冒A的名义向B发送带有RST标志的分组,从而断开B与C的TCP连接。
TCP会话劫持攻击
镜像名称 | 用户名 | 密码 | su/su - 提权密码 | IP地址 | 本实验中用途 |
---|---|---|---|---|---|
kali | kali | kali | - | 192.168.200.2 | 攻击机A |
Metasploitable2-Linux | msfadmin | msfadmin | - | 192.168.200.125 | 靶机B(受害者) |
windowsXP Attacker | - | mima1234 | - | 192.168.200.3 | 靶机C(telnet 服务器) |
实验过程
结合ARP欺骗来进行TCP会话劫持攻击。这里使用的ettercap是执行ARP欺骗嗅探的工具,通常用它来施行中间人攻击。
在kali中打开节点的IP转发功能:
sudo su
cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
kali中,执行命令ettercap -G
打开Ettercap工具,选择“eth0”作为嗅探监听接口
点击左上角第三个图标,进入···Host List···
点击左上角第二个按钮,Scan for hosts
扫描局域网内攻击目标
分别添加windowsXP的IP192.168.200.3
和Metasploitable2-Linux的IP地址192.168.200.125
为target1和target2
选择菜单右上角第一个图标MITM menu
中的 ARP poisoning 进行ARP欺骗
并选择Sniff remote connections
分别在两靶机中执行arp -a
查看MAC地址缓存,发现ARP欺骗攻击已经成功。
回到kali的Ettercap,选择菜单右上角第三个图标Ettercap Menu
菜单栏上选择【View】-【Connections】
在WinXP上执行telnet 192.168.200.125
,发现失去联系
回到kali可以看到Ettercap已经截获了telnet登录的两个主机的信息
双击上方的会话连接,可进一步显示截获的数据,此时WinXP那边没有登录,没有截获到账号密码
又重新telnet了一次,登录,返回可看到截获的账号密码
查看kali中wireshark的抓包,发现了很多Tcp Dup ACK XXX#X
和Tcp Retransmission
,劫持成功!其中TCP Dup ACK XXX#X
是重复应答#前的表示报文到哪个序号丢失,#后面的是表示第几次丢失,TCP Retransmission
是超时引发的数据重传。也就是书上说的ACK风暴。
实验原理
TCP会话劫持,其目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。通常一些网络服务会在建立TCP会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过TCP会话连接对服务端进行控制或获取资源,期间不再需要再次进行身份认证。
Victim 主机与telnet 服务器进行连接,并通过身份认证建立起会话;
telnet 服务器将会向Victim 发送响应包,并包含服务器当前序列号(记为SVR_ SEQ),以及期望客户端发送的下一个序列号(记为SVR_ _ACK);
攻击者通过ARP欺骗实施中间人攻击,可以嗅探获得Victim和telnet服务器间的通信内容,然后就假冒Victim的IP地址及身份,向telnet服务器发送数据包,宣称自己就
是Victim。而攻击者发送数据包中的序列号(记为CLT_ SEQ)必须满足条件: SVR_ ACK<=CLT_ SEQ<= SVR_ ACK+SVR_ WND,其中SVR_ WND为服务器的接收窗口,telnet服务器才会接收该数据包,如此,攻击者就劫持了Victim 与telnet 服务器间的会话,并以Victim已经验证的身份执行任意命令;靶机B仍然会继续维持与winXP之间的连接会话,但由于与winXP之间的ACK值互相不再匹配产生出“ACK风暴”,即在攻击机kali注入数据包后,B在接收到winXP的响应包后,将会发现ACK值不正确,并向winXP发回含有它所期望ACK值的ACK包,期望重新建立起同步状态,而winXP收到靶机B的ACK包后,也会发现它并不符合它的接收条件,因此它再次返回了一个ACK包,这样就构成了死循环,在网络上来回发送ACK,直到其中一个ACK由于网络拥塞或其他原因丢失为止。