问题 | 回答 |
---|---|
这个做业属于哪一个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个做业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
我在这个课程的目标是 | 学习教材第五章,了解各层网络协议的常见漏洞 |
这个做业在哪一个具体方面帮助我实现目标 | 相关知识点和实践任务 |
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的缘由而遭到破坏、更改 、泄露,系统连续可靠正常运行,网络服务不被中断。html
TCP/IP 网络协议栈在设计时采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不一样的功能,各自具备相应的网络协议。在每一个层次上的网络协议都存在着必定的安全问题或设计缺陷,目前也已经出现相应的攻击技术。如图所示
linux
网络层的主要协议如 IP、 ICMP 和 ARP 都存在多种攻击方式,如下将对其中最为常见的 IP 源地址欺骗、ARP欺骗和 ICMP 路由重定向攻击进行分别介绍,包括其原理、 攻击技术与具体实现。算法
IP 源地址欺骗是指攻击者伪造具备虚假源地址的 IP 数据包进行发送,以达到隐藏发送者身份、假冒其余计算机等目的。ubuntu
IP 源地址欺骗原理:IP 源地址欺骗能够实现的根本缘由在于:IP 协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。路由器在转发 IP 数据包时,也只根据目标 IP 地址查询路由路径,进行数据包的转发直至送达目标,不会对数据包是否真正来自其声称的源地址进行验证。在大多数状况下,IP 数据包的源地址会被正确地设置为数据包所发出的 IP 地址。但怀有恶意目的的攻击者则会修改 IP 协议报头,使其包含 个不一样的虚假 IP 地址,使其看起来像是从另一个地址发出的,这样就达到了欺骗目标和隐藏发送源的目的。而接收到欺骗数据包的计算机则会向假冒的源地址发回响应包,一般状况下,攻击者没法获取到这些响应包,所以 IP 源地址欺骗技术主要应用于攻击者不须要响应包或存在某些技术能够猜想响应包的场景中,如拒绝服务攻击等。在特定环境中, 攻击者也可能嗅探到响应包,或者可以将响应包重定向到受控主机上,最多见的状况是攻击者与假冒lP地址处在同一局域网内,能够实施ARP欺骗或路由重定向攻击劫待响应包,这时攻击者就可以彻底假冒这些主机进行网络交互了。
缓存
IP地址欺骗攻击过程:安全
IP源地址欺骗技术的应用场景:IP源地址欺骗最广泛应用于拒绝服务攻击中,也常常在进行网络扫描时应用,以隐藏真实的扫描源地址,还被攻击者用来对付一些基于 IP 地址的身份认证机制。服务器
IP源地址欺骗的防范措施:网络
ARP欺骗,有时候也被称为ARP下毒,,是指攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。tcp
ARP欺骗攻击技术原理:ARP欺骗攻击的根源在于ARP协议在设计时认为局域网内部的全部用户都是可信的,是遵循协议设计规范的,但事实上并不是如此,局域网内能够存在内部攻击者,或者已渗透进入局域网的外部攻击者或恶意代码。ARP协议在进行 IP 地址到 MAC 地址映射查询时存在安全缺陷,一方面采用了广播请求包方式在局域网段中询问映射关系,但没有对响应结果进行真实性验证的技术流程与方法,而另外一方面ARP协议为提升效率,设计了 ARP 缓存机制,以及会将主动的ARP应答视做有效信息进行接受,这使得ARP缓存很是容易被注入伪造的IP地址到MAC地址的映射关系,从而进行欺骗。工具
ARP欺骗攻击攻击过程:
ARP欺骗技术的应用场景:ARP欺骗攻击技术的应用场景也很是多,包括利用 ARP 欺骗技术进行局域网中的嗅探, 并经过进一步的协议分析窃取敏感信息;还能够利用 ARP 欺骗构造中间人攻击,从而实施 TCP 会话劫待的攻击方法。
ARP 欺骗攻击防范措施:预防 ARP 欺骗攻击的主要方法有静态绑定关键主机的 IP 地址与 MAC 地址映射关系、使用相应的 ARP 防范工具、使用 VLAN 虚拟子网细分网络拓扑,并加密传输数据以下降 ARP 欺骗攻击的危害后果等。
ICMP 路由重定向攻击是指攻击者假装成路由器发送虚假的 ICMP 路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
ICMP 路由重定向攻击原理:ICMP 重定向攻击就是利用 ICMP 路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,本身则能够假装成为路由器,使目标机器的数据报发送至攻击机从而增强监听。
ICMP 路由重定向攻击过程:
ICMP路由重定向攻击防范:ICMP路由重定向攻击的主要防范措施是根据类型过滤一些ICMP数据包,设置防火墙过滤,对于ICMP重定向报文判断是否是来自本
地路由器等。
传输层的主要协议 TCP 和 UDP 也存在不少种不一样攻击方式,如下对最流行的 TCP RST 攻击 TCP 会话劫持攻击、TCP SYN 洪泛拒绝服务攻击和 UDP 洪泛拒绝服务攻击等攻击。
TCP会话劫持攻击原理:TCP会话劫持则是一项更为复杂的TCP协议攻击技术方法,其目标是劫持通讯双方已创建的TCP会话链接,假冒其中一方(一般是客户端)的身份,与另外一方进行进一步通讯。一般一些网络服务会在创建TCP会话以后进行应用层的身份认证,客户端在经过身份认证以后,就能够经过TCP会话链接对服务端进行控制或获取资源,期间再也不须要再次进行身份认证。若是咱们可以使得要攻击的网络通讯通过攻击者控制的主机,那结合网络嗅探技术就能够获取到序列号等信息,从而很容易地实施会话劫持攻击。重定向网络通讯能够利用滥用 IP 协议源路由选项、ICMP 路由重定向攻击和 ARP 欺骗攻击完成,IP 源路由选项和 ICMP 路由重定向攻击都能使得攻击者能够指定 IP 数据包的路由路径, 经过攻击者所控制的路由器, 而后实施劫持。
TCP 会话劫持攻击技术过程:
TCP 会话劫持攻击防范措施:在下一代互联网协议设计方面从根本上避免会话劫待攻击以外, 目前对该种攻击可采起的防范措施包括:禁用主机上的源路由, 采用静态绑定 IP-MAC 映射表以免 ARP 欺骗, 引用和过滤 ICMP 重定向报文,这三个措施可以避免攻击者成为通讯双方的中间人,从而轻易地进行会话劫持攻击。
TCP SYN Flood,又称 SYN 洪泛攻击, 是目前最为有效和流行的一种拒绝服务攻击形 式。它利用 TCP 三次握手协议的缺陷,向目标主机发送大量的伪造源地址的 SYN 链接请求,消耗目标主机的链接队列资源,从而不可以为正经常使用户提供服务。
SYN Flood 攻击原理:在SYN Flood 攻击中,攻击主机向受害主机发送大量伪造源地址的 TCP SYN 报文,受害主机分配必要的资源,而后向源地址返回 SYN/ACK 包,并等待源端返回 ACK 包,若是伪造的源地址主机活跃,将会返回一个 RST 包直接关闭链接,但大部分伪造源地址是非活跃的,这种状况下源端永远都不会返回 ACK 报文,受害主机继续发送SYN+ACK 包,并将半开链接放入端口的积压队列中,虽然通常的主机都有超时机制和默认的重传次数,可是因为端口的半链接队列的长度是有限的,若是不断地向受害主机发送大量的 TCP SYN 报文,半开链接队列就会很快填满,服务器也就拒绝新的链接,致使该端口没法响应其余机器进行的正常链接请求,最终使受害主机被拒绝服务。
SYN Flood 攻击防范措施:对于 SYN Flood攻击的主要防范措施包括: SYN-Cookie 技术和防火墙地址状态监控技术
因为 UDP 协议的无状态不可靠的自然特性,UDP Flood 拒绝服务攻击的原理很是简单,即经过向目标主机和网络发送大蜇的 UDP 数据包,形成目标主机显著的计算负载提高,或者目标网络的网络拥塞,从而使得目标主机和网络陷入不可用的状态,形成拒绝服务攻击。UDP Flood 除了在短期发送内容尽量多的 UDP 报文以外, 没有其余额外特别的技术。
监测、预防与安全加固:
网络安全协议:在 IETF、IEEE 802 等国际性的网络研究和标准化组织内进行讨论和改进,并以标准化协议规范方式对业界进行发布,使得业界可以基于这些标准在网络设备、操做系统中实现和应用这些安全协议,从而加强现有网络的安全性。
下一代互联网协议:目前 IETF 正在进行以 IPv6 为表明的下一代互联网协议的设计、标准化与改进工做,而这也为从根本上改善 TCP/IP 协议栈的安全情况提供了一个绝佳的机会,IPv6 和相关配套的网络协议在设计时很是注重对安全性的考虑,目前正处在不断发展和完善的过程当中,在不久的未来将取代目前被普遍使用的 IPv4 协议,预期也可以在安全的协议基础上构建出一 个更加安全的下一代互联网。
完成 TCP/IP 协议栈重点协议的攻击实验, 具体包括 ARP 缓存欺骗攻击、ICMP 重定向攻击、SYN Flood 攻击、TCPRST 攻击及 TCP 会话劫持攻击(bonus)。
本次所用攻击机为kail linux,靶机为Linux Metasploitable和Windows Metasploitable,测试机为seed ubuntu
能够采用nmap扫描器进行IP源地址攻击,参数-D
后接要伪造的P地址。
这个实验所用到攻击机为kail,靶机为Linux Metasploitable,ip地址以下
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
这里查看 192.168.200.125 上的8080端口是否开放,且使用IP源地址为192.168.200.7进行欺骗,则相应的nmap命令为:nmap -sS -p 8080 192.168.200.125 -D 192.168.200.7
。打开wireshark监听数据包
能够看到nmap要知道端口是否开放,还须要以所在机器的IP发送SYN包,因此用Wireshark 能够监听到两个SYN包,分别是从 192.168.200.3 和 192.168.200.7 发送到 192.168.200.125 的,后者即是nmap构造的欺骗数据包。(由结果可知靶机8080端口关闭)
Netwox 中的 33 号工具能够构造任意的以太网 ARP数据报,能够用它来完成arp缓存欺骗攻击
所用的三台虚拟机分别是:攻击机为kail linux,靶机为Linux Metasploitable和Windows 2000 Server。如下简称为A(kail linux),B(Linux Metasploitable),
C(Windows 2000 Server)机。三台虚拟机的ip地址和mac地址以下表所示
主机 | ip地址 | mac地址 |
---|---|---|
A | 192.168.200.3 | 00:0c:29:dd:26:c3 |
B | 192.168.200.125 | 00:0c:29:94:0e:e1 |
C | 192.168.200.124 | 00:0c:29:6b:71:46 |
A 分别向 B、C 发送伪造的应答(或者请求)数据包进行欺骗,使得 B、C的 ARP 缓存表中的映射关系分别是 IP(C) /MAC (A),IP (B) /MAC (A) 。
首先查看B主机的arp缓存列表
在A主机执行命令行netwox 33 -b 00:0c:29:94:0e:e1 -g 192.168.200.124 -h 00:0c:29:94:0e:e1 -i 192.168.200.125
(-b 以太网帧的目的mac地址;-g arp ip的源地址 ;-h arp 以太网帧的目的mac地址;-i arp ip的目的地址)
其中关键部分 "this address : 00:0c:29:dd:26:c3 192.168.200.124" 使得目标主机 B 保存这对映射关系而达到欺骗的目的。
再次查看B主机的arp缓存列表
能够看到在B主机的arp缓存列表中,C主机的ip地址映射为了A主机的mac地址
同理可对C主机进行arp欺骗攻击
首先查看C主机的arp缓存列表
在A主机执行命令行netwox 33 -b 00:0c:29:6b:71:46 -g 192.168.200.125 -h 00:0c:29:6b:71:46 -i 192.168.200.124
再次查看C主机的缓存列表
能够看到在C主机的arp缓存列表中,B主机的ip地址映射为了A主机的mac地址
利用Netwox 的第86号工具, 能够进行ICMP重定向攻击实验, 其工做原理是嗅探网络中的数据包,每嗅探到一个符合要求的数据包(本身设定),就向该IP地址发送—个ICMP 重定向报文,让该IP的主机重定向至预先设定的IP地址
首先须要将攻击机和靶机改成桥接模式(若是采用NAT模式或者仅主机模式,亲测攻击机能够发出重定向报文,而且靶机能够接收到,可是靶机路由表不会改变,目前还不清楚缘由.....)
攻击机kail为192.168.0.106,目标主机为192.168.0.104,网关地址为192.168.0.1,攻击机使用Netwox86号工具进行欺骗。 当使用后Netwox便进入监听状态。
首先查看目标主机上的路由表
在kail linux上打开netwox86号工具,使用命令行netwox 86 -f "host 192.168.0.104" -g 192.168.0.106 -i 192.168.0.1
(ps:命令行的含义为嗅探到数据包的源或目的IP地址192.168.0.104时,就以192.168.0.1的名义向数据包的源地址发送一个ICMP重定向报文,使之使用192.168.0.106做为默认的路由。)
同时打开wireshark监听数据包,而且使用靶机ping百度的网址,能够从wireshark看到攻击机以192.168.0.1的名义向靶机发送了icmp重定向报文
再次查看靶机路由表,能够看到靶机访问211.138.106.7时的网关变成了192.168.0.106
能够利用netwox76号工具来完成此次攻击,这个实验使用3台主机,与2.2实验所用主机相同,主机和ip地址以下表所示,kail为攻击机,Linux Metasploitable为靶机,Windows 2000 Server为测试机
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
Windows 2000 Server | 192.168.200.124 |
在 IP 地址为 192.168.200.3 的主机 kail 进行攻击前,咱们将 IP 地址为 192.168.200.124 的主机 Windows 2000 Server向 IP 地址为 192.168.200.125 的服务器 Linux Metasploitable 发起 TCP 链接请求。 服务器能够正常回应,并创建链接。 断开 Windows 2000 Server 与 Linux Metasploitable 的链接,在 C 中打开 Netwox 软件,选择编号为 76 的 "Synflood" 工具并输入目标地址,主机 kail 即开始进行 TCP SYN Flood 攻击。 此时再使用主机 Windows 2000 Server 向服务器 Linux Metasploitable 发送链接请求,会没法正常访问。
这里选择利用 Windows 2000 Server 向靶机 Linux Metasploitable 发起telnet服务访问,用 kail 攻击机攻击靶机的telnet服务端口,并用Wireshark查看
首先用主机 Windows 2000 Server 向 Linux Metasploitable 发起登录 telnet 192.168.200.125 23
,能够正常登录
断开链接, 在Kali上利用netwox的76号工具对靶机的23号端口进行SYN Flood攻击
netwox 76 -i 192.168.200.125 -p 23
,同时打开wireshark监听
能够看到攻击机向靶机发送了大量的虚假ip发出的SYN链接请求
再次使用主机 Windows 2000 Server 向 Linux Metasploitable 发起登录,发现登录响应须要较长时间
能够利用netwox78号工具来完成此次攻击,这个实验使用3台主机,主机和ip地址以下表所示,kail为攻击机,Linux Metasploitable 为靶机seed 为测试机
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
在Netwox中,找们能够选择编号为78的"Resetevery TCP packet"工具来实现TCP RST攻击。同时,咱们使用 Wireshark软件来对攻击过程当中主机之间的通讯进行监听,并分析攻击过程。假设IP地址为192.168.200.125的主机 Linux Metasploitable 已经与IP地址为 192.168.200.6 的主机 seed 创建了TCP链接,IP地址为 192.168.200.3的主机 kail 企图对当前创建TCP链接进行RST攻击。在主机C中打开Netwox选定78号工具,并输入主机 Linux Metasploitable 的IP地址做为攻击目标。此时,当主机 seed 再向主机 Linux Metasploitable发送信息时,主机 kail 将监听到此信息,分析数据包的端口号、SEQ号后,假冒 Linux Metasploitable 的名义向 seed 发送带有RST标志的分组,从而断开二者的TCP链接。
一样选择利用 seed 向靶机 Linux Metasploitable 发起telnet服务访问,用 kail 攻击机攻击靶机的telnet服务端口,并用Wireshark查看
首先先正常登录
在Kali上利用netwox的78号工具对靶机进行TCP RST攻击netwox 78 -i 192.168.200.125
,并打开wireshark监听数据包
能够看到kail以Linux Metasploitable 的名义向seed发送了带有RST标志位的分组
再次打开seed,发现链接已经断开
能够利用netwox40工具来完成此次实验。这个实验使用3台主机,攻击机为kail linux,靶机为 seed 和 Linux Metasploitable,3台主机的ip地址以下表所示
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
首先在seed上使用telnet服务登录Linux Metasploitable,命令行telnet 192.168.200.125
此时,seed链接到linux后输入ls命令,在同一网段的攻击机使用 wireshark 嗅探共用网卡,等待客户机和服务器 通讯,捕捉 telnet 包。
查看wireshark,能够看到数据包的内容是 l 由于我输入的命令是 ls 他会把咱们发生的内容拆分开发送,看一下下一个数据包就会发现内容是 s
直接找到最后的一个包,点击 TransmissionControl Protocol 查看其中的源端口,目的端口,next seq 和 ack 信息。(其中linux的端口固定为 23 ,由于 telnet 端口是 23 )
由于咱们要伪造发下一个包,因此直接采用 next seq 做为下一个包的 ack ,采用 ack 做为下一个包的 seq 。获取到信息以后,攻击机使用 netwox 工具伪造seed给linux发一个 tcp 包。发送成功后,原来的客户端就会失去链接,同时linux会把攻击机看成 客户端,这样攻击机就实现了会话劫持。
使用命令行netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.6 --ip4-dst 192.168.200.125 --tcp-src 38818 --tcp-dst 23 --tcp-seqnum 44 --tcp-acknum 5 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "776c"
由于咱们要伪造 seed 给 linux 的发送TCP包,因此源ip(--ip4-src
):seed(192.168.200.6)目的 ip(--ip4-dst
):linux(192.168.200.125),seq(--tcp-seqnum
)和 ack(--tcp-acknum
)按刚才所说填写,末尾的 6c 是字母 wl 的十六进制数,这里的wl是咱们要发送的内容,其他参数默认便可。
查看wireshark,发现伪造的报文成功发送,同时发现Tcp Dup ACK XXX#X
和Tcp Retransmission
,这两个的含义分别是重复应答#前的表示报文到哪一个序号丢失,#后面的是表示第几回丢失
和超时引起的数据重传
。这说明引起了seed与linux之间的“ACK风暴”,说明此次劫持是成功的。
掌握了以上基本方法,可使用Ettercap工具进行TCP 会话劫持攻击(更加方便),步骤以下
首先,Kali利用ARP欺骗进行tcp会话劫持攻击,所以打开Kali节点的IP转发功能(命令行具体含义参照Linux ip_forward 数据包转发)
打开Ettercap,进入Ettercap的GTK图形界面方式,并选择“Sniff”菜单中的“Unified Sniff”选项,选择“eth0”做为嗅探监听接口,以下图所示
随后在“Hosts”菜单中选择“Scan for hosts”扫描局域网内攻击目标,并随后在菜单“Hosts list”中,选择Seed 192.168.200.6和 linux Metasploitable 192.168.200.125分别为target1和target2,以下图所示
选择菜单“MITM”中的“ARP poisoning”进行ARP欺骗,并选择“Sniff remote connections”
此时,在seed和linux中执行arp –a命令显示MAC地址缓存,将发现ARP欺骗攻击已成功,其输入以下:
在seed主机上使用telnet服务到linux主机上,在Kali上,此时Ettercap(View-Connections)显示以下图所示,Ettercap已经获取了telnet的登录用户名和密码
点击“Inject Data”,Kali节点做为中间人能够向TCP会话两端注入数据,以下图所示
经过wireshark查看seed与linux Metasploitable之间发生ACK风暴,劫持成功
(ps:对这个工具的使用还不太熟练,下去要多练习)
本次实践经过对各层网络协议常见漏洞的攻击实现,初步了解了各层网络协议的缺陷,以及提升了本身的动手能力。
网络攻防技术与实践
tcp会话劫持攻击
tcp会话劫持原理
tcp报文简介
Linux ip_forward 数据包转发