20199320 2019-2020-2 《网络攻防实践》第5周作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
我在这个课程的目标是 | 掌握网络攻防知识及操作 |
这个作业在哪个具体方面帮助我实现目标 | 掌握TCP/IP网络协议栈中最为基本的网络层和传输层协议所存在的安全性问题及针对性攻击技术 |
一、知识点总结
1. TCP/IP网络协议栈攻击概述
-
网络安全属性
机密性:确保敏感或机密数据在传输和存储时不遭受未授权的浏览。
完整性:保障被传输、接收或存储的数据是完整和未被篡改的,在被篡改时能够发现篡改的事实或者篡改的位置。
可用性:即使在网络攻击、计算机病毒感染、系统崩溃、战争破坏、自然灾害等突发事件下,依然能够保障数据和服务的任何时候都正常可用。
真实性:能够确保实体(如人、进程或系统)身份或信息、信息来源的真实性。
不可抵赖性:保证信息系统操作者或信息的处理者不能否认其行为或处理结果。
-
网络攻击基本模式
-
被动威胁
截获(机密性)具体攻击技术:嗅探与监听
-
主动威胁
篡改(完整性)具体攻击技术:数据包篡改,一般结合身份欺骗进行中间人攻击
篡改图示:
中间人攻击图示:
中断(可用性)具体攻击技术:拒绝服务
伪造(真实性)具体攻击技术:欺骗
-
-
TCP/IP网络协议栈安全缺陷与攻击技术
-
原始报文伪造技术及工具
- 通过使用原始套接字(RawSocket),绕过TCP/IP协议栈的报文封装处理和验证,构造出任意的数据报文,如进行各种欺骗攻击的伪造报文。
- 非常强大且易用的开源工具包:Netwox、Netwag(友好的GUI界面)
2. 网络层协议攻击
2.1 IP源地址欺骗
- IP源地址欺骗可以实现的根本原因在于:IP协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。
- IP源地址欺骗过程:
2.2 ARP欺骗
-
ARP协议完成IP地址到MAC地址映射的过程:
- 当一台主机需要将数据包发送到目标主机时,首先会检查自己的ARP缓存中是否存在目标主机IP地址所对应的MAC地址。如果有,则直接将数据包发送到这个MAC地址;如果没有,就向本地局域网段发送一个ARP请求广播包,查询目标主机IP地址所对应的MAC地址。
- 本地局域网段所有主机收到ARP请求包后,检查自己与请求包中的IP是否一致。一致则将源IP和MAC地址更新到自己的ARP缓存表中,再向源主机发送一个ARP应答包;不一致则忽略。
- 源主机将收到的应答包中的IP地址和MAC地址添加到自己的ARP缓存表,并开始数据包传输。
-
ARP欺骗攻击技术原理:源主机以向本地局域网段发送广播包来获取目标主机的MAC,而并没有对目标主机发来的应答包进行验证的机制,ARP欺骗也是因此而发生的。
-
ARP欺骗攻击过程
-
工具:DSniff套装中的Arpspoof工具、arpoison、 Ettercap、 Netwox 工具集等。
netwox 33 -b MAC(A) -g IP(B) -h MAC(A) -i IP(A)
欺骗A,使A收到IP(B)/MAC(C)的映射。
2.3 路由重定向攻击
-
ICMP路由重定向机制原理:网络拓扑结构发生变化、网络出现故障时,主机采用非优化的路由发送数据,路由使用ICMP重定向报文对主机路由表更新,使得主机选择更优化的路由传输。
-
ICMP路由重定向攻击过程:
-
攻击节点利用IP源地址欺骗冒充网关IP发送ICMP重定向报文。
-
被攻击节点选择攻击节点作为新路由。
-
攻击节点作为中间人开启全程监听。
-
根据重定向机制,攻击节点又向被攻击节点发送ICMP重定向报文,指定更优路径,即原先正确的路由。
-
-
ICMP路由重定向攻击技术:
netwox 86 -f "host 靶机IP" -g 攻击机IP -i 网关IP
意思是嗅探到数据包的源或目的IP地址时,就以网关IP的名义向源地址(靶机)发送一个ICMP重定向报文,使之使用攻击机IP作为默认的路由。
3. 传输层协议攻击
3.1 TCP RST 攻击
-
TCP RST 攻击原理:TCP协议头的标志位中的“reset”比特位置1,则将断开TCP会话连接。
-
TCP RST 攻击过程:
-
攻击机C通过嗅探监听到通信双方A、B的IP、端口和序列号。
-
利用IP源地址欺骗技术伪装成主机A,向B发送TCP重置报文,达到双方通信中断。
-
-
netwox进行攻击:
netwox 78 -i 靶机IP
3.2 TCP 会话劫持攻击
-
TCP会话攻击原理:在双方建立TCP会话之后再进行劫持,避免需要进行身份验证。
-
TCP会话攻击过程:
-
靶机与服务器建立连接
-
服务器向靶机发送响应包(含SVR_SEQ),期望靶机发送下一个序列号(含SVR_ACK)。
-
攻击机利用ARP欺骗,假冒靶机的身份向服务器发送数据包。
-
攻击机向靶机发送TCP重置掉靶机与服务器的连接,避免被网络管理员发现。
-
3.2 TCP SYN Flood 拒绝服务攻击
二、实践过程
1. ARP欺骗
-
主机 IP MAC win2k(靶机A,FTP服务器) 192.168.200.124 00:0c:29:c5:fb:24 seed(靶机B,FTP访问者) 192.168.200.6 00:0c:29:7e:a4:9f kali(攻击机C) 192.168.200.4 00:0c:29:ff:8e:fa -
攻击机ping两台靶机,再
arp -a
查看两台主机的MAC地址,如下: -
使用命令
netwox 33 -b MAC(A) -g IP(B) -h MAC(A) -i IP(A)
对主机A进行ARP欺骗,使A收到IP(B)/MAC(C)的映射。- 使用netwox工具,进入5号节点(命令行中工作),33号工具(构造以太网ARP数据报)
-
输入命令
netwox 33 -b 00:0c:29:c5:fb:24 -g 192.168.200.6 -h 00:0c:29:c5:fb:24 -i 192.168.200.124
-
靶机A
arp -a
查看ARP映射表,发现已被成功更改。
-
使用命令
netwox 33 -b MAC(B) -g IP(A) -h MAC(B) -i IP(B)
对主机B进行ARP欺骗,使B收到IP(A)/MAC(C)的映射。-
输入命令
netwox 33 -b 00:0c:29:7e:a4:9f -g 192.168.200.124 -h 00:0c:29:7e:a4:9f -i 192.168.200.6
-
靶机B
arp -a
查看ARP映射表,发现已被成功更改。
-
-
主机B使用命令
ftp 192.168.200.124
访问A的FTP服务,攻击机打开wireshark进行抓包,可见如图的结果:攻击机捕获到靶机A、B之间的通信:
2.ICMP路由重定向攻击
-
主机 IP kali(攻击机) 192.168.200.4 winXPattacker(靶机) 192.168.200.2 路由 192.168.200.1 -
查看靶机的路由信息:
-
netwox 86 -f "host 靶机IP" -g 攻击机IP -i 网关IP
意思是嗅探到数据包的源或目的IP地址时,就以网关IP的名义向源地址(靶机)发送一个ICMP重定向报文,使之使用攻击机IP作为默认的路由。- 攻击机输入
netwox 86 -f "host 192.168.200.2" -g 192.168.200.4 -i 192.168.200.1
进入监听状态,靶机访问任意网页,之后再查询路由信息,可见多出两项的路由为攻击机IP,如图:
- 攻击机输入
3. SYN Flood 攻击
-
主机 IP kali(攻击机) 192.168.200.4 seeubuntu(靶机) 192.168.200.6 -
攻击机以telnet方式对靶机进行连接,可见,连接成功:
-
攻击机输入
netwox 76 -i "192.168.200.6" -p 23
对靶机的23号端口进行SYN Flood
攻击,打开wireshark进行抓包,发现大量SYN数据包: -
攻击了大概五分钟,再次telnet,竟然还能连接, 可能seed靶机的内存足够,完全可以抵挡洪范攻击?后来我尝试以80端口攻击winXPattacker靶机,给我死机了,强制退出kali,60多G的磁盘空间不足。好吧,攻击可不能随便用。
4. TCP RST 攻击
-
主机 IP kali(攻击机) 192.168.200.4 seeubuntu(靶机) 192.168.200.6 -
建立双方的ftp连接:
-
攻击机中利用
netwox 78 -i 192.168.200.6
对靶机进行TCP RST攻击。同时打开wireshark抓包可见攻击机向靶机发送了RST断开连接。
-
此时再ftp连接,不出所料地连接失败:
5. TCP 会话劫持攻击
-
主机 IP MAC winXPattacker(靶机A,客户端) 192.168.200.2 00:0c:29:fa:58:be seed(靶机B,服务器) 192.168.200.6 00:0c:29:7e:a4:9f kali(攻击机C) 192.168.200.4 00:0c:29:ff:8e:fa -
为了加强记忆,我更换了靶机A,利用上述的ARP欺骗
netwox 33 -b 00:0c:29:fa:58:be -g 192.168.200.6 -h 00:0c:29:fa:58:be -i 192.168.200.2
对winXPattacker进行了ARP欺骗。 -
靶机A以Telnet登录seed,攻击机打开wireshark对靶机A、B的数据包交互进行抓包。找到最后一个Telnet包,点击 TransmissionControl Protocol 查看其中的源端口,目的端口,next seq 和 ack 信息。(其中 服务器 的端口固定为 23 ,因为 telnet 端口是 23 ) :
-
因为我们要伪造发下一个包,所以直接采用 next seq (725)作为下一个包的 ack ,采用 ack(17) 作为下一个包的 seq
-
获取到信息之后,攻击机 使用 netwox 工具伪造客户端给服务器发一个 tcp 包。发送成功后,原来的客户端 就会失去连接,同时服务器会把攻击机当作客户端 ,这样攻击机就实现了会话劫持。
-
攻击机发送包的格式:
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl (客户端ttl) --ip4-protocol 6 --ip4-src (客户端IP) --ip4-dst (服务器IP) --tcp-src (捕获到的目的端口) --tcp-dst (捕获到的源端口) --tcp-seqnum (捕获的到ACK) --tcp-acknum (捕获到的next seq) --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "要产生的结果"
-
攻击机输入命令:
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 128 --ip4-protocol 6 --ip4-src 192.168.200.2 --ip4-dst 192.168.200.6 --tcp-src 1150 --tcp-dst 23 --tcp-seqnum 17 --tcp-acknum 725 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "6c"
说明:
-
如何获取本机吞吐量?
本机输入ping 127.0.0.1。
-
关于发送包的ack、seq在上面已经介绍。
-
其中“要产生的结果”是指该包中携带的信息,是十六进制表示,我使用的“6c”是“l”的十六进制,在下面抓到的包中可见该内容。
-
-
攻击机输入命令后截图:
-
- 攻击机wireshark中成功捕获到攻击机伪造客户端发送给服务器的数据包。
至此,TCP 会话劫持攻击成功。
三、学习中遇到问题及解决
-
问题1:kali无法上网,按照上次的方式已经解决不了了。
解决方法:将网络连接方式改为桥接模式,此时
ifconfig
查不到eth0的IP,百度到在命令行输入dhclient eth0
,就可查到IP,且可以成功上网了。 -
问题2:明明刚才Telnet登录还可以成功,对其ARP欺骗后,连接失败!!!
解决方法:换了另一台靶机还是同样的问题。正在发愁之际,随手又试了试,感觉是在逗我,可以了!!!赶紧的,攻击机打开wireshark抓包。
-
问题3:SYN flood攻击后,攻击机还能连接到靶机,奇怪。
解决方法:暂未解决,猜测可能内存足够,完全不怕你攻击。
四、实践总结
首先想说的是网络攻防真的好难,不仅技术上要求高,脑子也得备好。实践时候,总得不断地翻原理,感觉看书时候本来理解了,实践时候就忘了,还是掌握不扎实。做完这几项攻击,感觉原理和命令还是没有记清楚,之后还要不断地巩固,可能知识的掌握还是靠实践来加强,多多练习。
其次总结一下本次实践,运用netwox工具进行了ARP欺骗攻击、ICMP路由重定向攻击、SYN Flood攻击、TCP RST 攻击、TCP会话劫持,每项攻击的原理此处不细说(脑海回顾中.......),分别使用的命令以后要多用才能熟悉,其中,ARP欺骗攻击的命令我理解了很久才彻底明白,我觉得还是先弄懂再去实践会记忆更好。