- 20199123 2019-2020-2 《网络攻防实践》第5周作业
- 0 总体结构
- 1.实践内容
- 1.1 TCP/IP网络协议栈攻击概述
- 1.2 网络层协议攻击
- 1.3 传输层协议攻击
- 2.实践过程
- 2.1 IP源地址欺骗
- 2.2 ARP欺骗
- 2.3 ICMP路由重定向攻击
- 2.4 TCP RST攻击
- 2.5 TCP会话劫持攻击
- 2.6 TCP SYN Flood拒绝服务攻击
- 3.学习中遇到的问题及解决
- 4.实践总结
- 参考资料
20199123 2019-2020-2 《网络攻防实践》第5周作业
0 总体结构
本次作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业要求在哪里 | 《网络攻防实践》第五周作业 |
我在这个课程的目标是 | 学习网络攻防相关技术、掌握网络攻防相关能力 |
这个作业在哪个具体方面帮助我实现目标 | 复习TCP/IP协议基本知识,学习TCP/IP协议栈的攻击 |
作业正文 | 下述正文 |
其他参考文献 | 见文末 |
1.实践内容
由于这章是介绍TCP/IP协议栈的内容,我找了两张TCP/IP的图片拼成了下图,好在心里对这个协议栈有个直观的感受。
1.1 TCP/IP网络协议栈攻击概述
-
1.1.1 网络安全属性与攻击模式
-
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常运行,网络服务不被中断。
-
网络安全属性: 机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)、真实性(Authentication)、不可抵赖性(Non-Repudiation)
机密性:是指网络中的信息不被非授权实体获取和使用,通常基于加密算法进行保障。
完整性:是指信息未经授权不能进行改变的特性,即信息在存储和传输过程中保持不被修改、不被破坏和丢失的特性。
可用性:是指被授权实体访问并按需求使用的特性,即当需要时能够正常地存取和访问所需的信息与服务。
真实性:是指确保通信双方是它所声称的真实实体,而非假冒实体。
不可抵赖性:是指在通信中确保任何一方无法抵赖自己曾经做过的操作的安全特性,包括对自己行为的不可抵赖及对行为发生时间的不可抵赖,有时也被称为不可否认性和可审查性(Accountability)。
-
网络攻击基本模式:截获、中断、篡改和伪造。
截获 中断 篡改 伪造 攻击模式 被动攻击 主动攻击 主动攻击 主动攻击 目的 获取网络通信双方的通信信息内容 致使正常的网络通信和会话无法继续 对网络通信过程的信息内容进行修改,使得通信一方或双方接收到篡改后的虚假消息 假冒网络通信方的身份,欺骗通信双方达到恶意目的 违反的安全属性 机密性 可用性 完整性 真实性 具体攻击技术 嗅探(Sniffing)、监听(Eavesdropping) 拒绝服务(Denial of Service,DoS) 数据包篡改 欺骗(Spoofing) 中间人攻击(Man-in-the-Middle Attack,MITM):攻击者通过各种技术手段与通信双方建立起各自独立的会话连接,并进行消息的双向转发,使他们误以为是通过一个私有通道在直接通信,而实际上整个会话都是由攻击者所截获和控制的。
-
-
1.1.2 TCP/IP网络协议栈安全缺陷与攻击技术
-
说明:
(1)IP协议除了在进行分组交换会存在IP地址欺骗攻击的安全问题,还存在利用源路由选项滥用,IP分片重组缺陷,书上没介绍IP重组缺陷这里查了一个 IP分片攻击 的资料。
(2)ICMP协议存在安全缺陷除了有ICMP路由重定向攻击,还有Ping洪泛攻击和Smurf攻击,这里查了一个smurf攻击的原理的资料,其中的攻击步骤写的不错,可以看看。
(3)动态路由协议:RIP(是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递)、OSRF( 全称为Open Shortest Path First,也就开放的最短路径优先协议 )、BGP(边界网关协议:运行于 TCP 上的一种自治系统的路由协议)
(4)应用层协议:SMB(ServerMessage Block通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议)
-
1.2 网络层协议攻击
-
1.2.1 IP源地址欺骗
-
1.2.2 ARP欺骗
-
ARP欺骗(ARP Spoofing):有时也称为图36,是指攻击者在有线以太网或无线网络上发送伪造ARP信息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
-
ARP协议基本功能:对目标IP地址查询它的MAC地址,以便把数据包发送到目标主机
-
ARP协议完成IP地址到MAC地址映射的过程步骤如图:
-
ARP协议存在的安全缺陷:(1)采用了广播请求包方式在局域网段中询问映射关系,对没有对响应结果进行真实性验证;(2)ARP协议为提高效率,设计了缓存机制,以及会将主动地ARP应答视作有效信息进行接受,这使得ARP缓存非常容易被注入伪造的IP地址到MAC地址的映射关系,从而进行欺骗
-
ARP欺骗攻击过程如图:
-
防范措施:静态绑定关键主机的IP地址与MAC地址映射关系;使用相应的ARP防范工具;使用VLAN虚拟子网细分网络拓扑并加密传输数据以降低ARP欺骗攻击的危害后果等
-
-
1.2.3 ICMP路由重定向攻击
-
ICMP重定向攻击技术:利用ICMP路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,自己则可以伪装成为路由器,使目标机器的数据报发送至攻击机从而加强监听
1.3 传输层协议攻击
-
1.3.1 TCP RST攻击
-
1.3.2 TCP会话劫持攻击
-
1.3.3 TCP SYN Flood拒绝服务攻击
-
1.3.4 UDP Flood拒绝服务攻击
- 基本原理:通过向目标主机和网络发送大量的UDP数据包,造成目标主机显著的计算负载提升,或者目标主机网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击
- UDP Flood一般采用分布式拒绝服务攻击(Distributed Denial of Service,DDoS)达到发送大量的UDP数据包
- 防范措施:禁用或过滤监控和响应服务;禁用或过滤其他的UDP服务等
2.实践过程
2.1 IP源地址欺骗
Step 1:把kali机子切换到桥接模式连接上本机的网络,因为切换了网络所以kali机子的IP地址已改变,利用命令行ifconfig
查看kali机子的IP为192.168.1.105
Step 2:使用命令行sudo apt-get install netwox
和sudo apt-get install netwag
说明:如果出现没有这个包的提示信息,则先使用命令行sudo apt-get update
对kali进行升级再安装netwox和netwag
Step 3:打开wireshark开始抓包,kali终端中输入命令行netwox 41 -l 192.168.200.180 -m 192.168.200.2
说明:netwox 41表示netwox第41号工具构造ICMP数据包并且需要设定IP地址;-l 表示显示与审计相关的模块;192.168.200.180为伪造的源地址;-m表示显示与暴力破解相关的模块;192.168.200.2表示目标IP地址。
Step 4:打开wireshark查看抓到的数据包
说明:执行Step 3 命令的原理与Ping命令类似,都是需要ARP协议转换IP到MAC才能进行数据传输,因此可以看到下图的蓝色的框就是kali主机192.168.1.105先向网关192.168.1.1(由于不在一个局域网中所以需要通过网关)发送数据然后得到kali的MAC地址,再进行IP数据的传输,则就是下面红色的框进行广播询问是否有源IP地址发出的数据告诉kali,至此完成了IP源地址的欺骗。
Step 5:打开netwag软件在search下面找到38号工具(38:Spoof Ip4 packet)
Step 6:进入38号工具的form设置页面,设置IP源地址欺骗的IP源地址和IP目标地址(和上面Step3一致)点击run执行
Step 7:此时wireshark里面也会抓到和Step 4 一样的数据包,点击netwag的running也可以查看到设置的IP数据包的详细信息
2.2 ARP欺骗
Step 1:选择A、B、C三个虚拟机,其具体的IP和MAC地址如下表:
主机 | IP地址 | MAC地址 |
---|---|---|
A(Metasploitable_Linux) | 192.168.200.125 | 00:0c:29:bb:0a:6b |
B(SEEDubuntu) | 192.168.200.3 | 00:0c:29:b4:5e:60 |
C(kali) | 192.168.200.2 | 00:0c:29:90:5e:3c |
Step 2:恢复kali的VMNet8模式,打开kali的IP转发功能:
Step 3:使用命令行netwox 33 -b A_MAC -g B_IP -h A_MAC -i A_IP
说明:
(1)-b: 显示网络协议下相关的模块;-g:显示与客户端相关的模块;-h:显示与服务器相关的模块;-i:显示与检测主机连通性相关的模块;
(2)从图中可以看到this address的地方已经实现IP(B)/MAC(C)的ARP欺骗
Step 4:使用命令行netwox 33 -b B_MAC -g A_IP -h B_MAC -i B_IP
实现IP(A)/MAC(C)的ARP欺骗
Step 5:B->A通信:在B中执行命令ftp 192.168.200.125
输入A主机账号和密码登录成功,此过程在C主机的wireshark上捕获
说明:在图中可以看出B与A之间的通信在C主机上已经捕获,由此可知已成功实现了ARP欺骗
Step 6:A->B通信:在A中执行命令ftp 192.168.200.3
输入B主机账号和密码登录成功,此过程在C主机的wireshark上捕获,可知此过程的ARP欺骗也成功实现
2.3 ICMP路由重定向攻击
Step 1:攻击机A、受害机B和路由的详细信息如下表
主机 | IP |
---|---|
攻击机A_kali | 192.168.200.2 |
受害机B_XPAttacker | 192.168.200.4 |
路由 | 192.168.200.1 |
Step 2:查看受害主机B的路由表信息
Step 3:在kali中输入命令netwox 86 -f "host B_IP" -g IP_A -i 路由IP
Step 4:在honey中查看ICMP redirect的信息
Step 5:受害机B上访问百度网页,然后再次查看路由表信息(很奇怪的是我换了好几个机子都没有再次查看到更换了路由表,但是在honey和wireshark的抓包里面又是实现了ICMP重定向的,很奇怪?不知道哪位大佬懂,后面知道了回更博)->(后续:我更博了,换了靶机为WinXPAttacker再做了一遍成功了,可以看到下图路由表更新了,实现了ICMP路由重定向。其实我也不知道原因是什么,可能是今晚运气还行?彩票中了...)
Step 6:打开wireshark查看上述攻击过程的抓包情况
说明:从上面的图可以看出第63号数据包为受害机B访问百度;第64,65,66是攻击机发现自己并非最优路由,于是向受害机B发一条ICMP重定向;第67数据包是由攻击机转发受害机发送的数据;第69是攻击机冒充路由发送ICMP重定向报文。
2.4 TCP RST攻击
Step 1:选择主机A、B、C详细信息如下:
主机 | IP |
---|---|
A_WinXPAttacker | 192.168.200.4 |
B_WinXPtarget | 192.168.200.124 |
C_kali | 192.168.200.2 |
Step 2:建立A、B之间的telnet连接(PS:可参看WinXP里面开启telnet服务)
Step 3:在kali中打开wireshark进行抓包,并输入命令行netwox 78 -i "192.168.200.4"
Step 4:在A中可以看到A、B通信已经断开
Step 5:查看wireshark的抓包情况如下图,可以看到第28号数据A向B发送了RST至此TCP RST攻击完成
2.5 TCP会话劫持攻击
Step 1:选择A、B、C主机详细信息如下:(建议选择ubuntu和winxp做A、B主机,我这里是为了方便使用上一个攻击的主机)
主机 | IP |
---|---|
A_WinXPAttacker | 192.168.200.4 |
B_WinXPtarget | 192.168.200.124 |
C_kali | 192.168.200.2 |
Step 2:在kali中打开节点的IP转发功能(kali利用ARP欺骗进行中间人攻击)
cat /proc/sys/net/ipv4/ip_forward(如果结果是0继续输入下一个命令)
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward(此时输出的结果应该是1就算是打开成功了)
Step 3:kali中打开Ettercap工具,在kali中搜索一下就出来了(或命令行ettercap -G)
Step 4:进入Ettercap的GTK图形界面方式,并选择“Sniff”菜单中的“Unified Sniff
”选项,选择“eth0”作为嗅探监听接口(PS:Ettercap工具的菜单栏在顶上,鼠标放上去会有英文名称)
Step 5:“Hosts”菜单中选择“Scan for hosts
”扫描局域网内攻击目标,并随后在菜单“Hosts list
”中,选择
WinXPtarget 192.168.200.124和WinXPAttacker 192.168.200.4分别为target1和target2,如下图所示:
Step 6:选择菜单“MITM”中的“ARP poisoning
”进行ARP欺骗,并选择“Sniff remote connections
”
Step 7:检查cat /proc/sys/net/ipv4/ip_forward 已经开启了转发
Step 8:在WinXPtarget和WinXPAttacker中执行arp –a
命令显示MAC地址缓存,将发现ARP欺骗攻击已成功,其输入如下:
Step 9:WinXPAttacker节点telnet到WinXPtarget节点telnet 192.168.200.124
Step 10:在Kali节点上,此时Ettercap(View-Connections)中显示了Ettercap已经获取了telnet的登陆的两个主机的信息
Step 11:双击其中一个会话连接(如果这里无法看到连接列表,依次点击【view -> connections】即可看到,请选择状态为active
的一个会话连接进行下一步,如果这里没有,请在WinXPAttacker节点命令行随便输入一些内容,这时需要保证telnet
连接没有断开,然后敲击回车),可进一步显示截获的数据,如下图所示:
Step 12:点击“Inject Data”,Kali节点作为中间人可以向TCP会话两端注入数据,如下图所示:
Step 13:kali中通过wireshark对上述过程的抓包如下,可以发现A、B之间有很多TCP报文,发现已经劫持成功。如果可以的话可以在被注入数据的主机上用命令行查看TCP报文,这里还没做,后面再更博
PS:又做了一遍,换了ubuntu的机子,但是tcpdump命令行不熟悉,没能在ubuntu主机上找到注入的那个数据包...(如果有大佬知道请赐教!!!)但是在ettercap软件中又清晰的看到捕获到的telnet登录ubuntu主机的账号和密码,很神奇
2.6 TCP SYN Flood拒绝服务攻击
Step 1:依旧是选定A、B、C主机(很奇怪,我都快把所有的虚拟机选个遍了,每次都还能继续登录成功???整的我一脸懵逼???不知道哪位大佬知道原因,请赐教!最后我只能用wireshark的抓包来分析SYN Flood拒绝服务攻击)->(后续:我更博了,重新做了一遍又成功了,神奇...)
主机 | IP |
---|---|
A_WinXPAttacker | 192.168.200.4 |
B_Linux靶机 | 192.168.200.125 |
C_kali | 192.168.200.2 |
Step 2:检查A、B主机是否能够互相连接,这里我选择的是telnet连接
Step 3:A、B主机互相断开连接,在kali中输入命令netwox 76 -i 192.168.200.4 -p 23
说明:-i 表示目标主机IP 23为telnet端口号
Step 4:wireshark抓包结果,从图中可以看到一直在给受害主机A发送TCP SYN的数据包,但是我就是还是能连接上???你说气人不气人???如果哪位大佬知道原因,请赐教!
后续:我重新做了一遍,然后在这一步重新登录的时候等了一会儿发现SYN Flood攻击成功了???很奇妙...
3.学习中遇到的问题及解决
(1)ICMP路由重定向中出现的问题为:受害机B上访问百度网页,然后再次查看路由表信息(很奇怪的是我换了好几个机子都没有再次查看到更换了路由表,但是在honey和wireshark的抓包里面又是实现了ICMP重定向的,很奇怪?不知道哪位大佬懂,后面知道了回更博)
(2)SYN Flood攻击中出现的问题:很奇怪,我都快把所有的虚拟机选个遍了,每次都还能继续登录成功???整的我一脸懵逼???不知道哪位大佬知道原因,请赐教!最后我只能用wireshark的抓包来分析SYN Flood拒绝服务攻击
解决:上面两个攻击重新做了一遍...突然又可以了...
4.实践总结
啊啊啊啊,我觉得我是只蜗牛在爬作业这座泰山!啥时候能看到山顶的日出呀?或者日落也可以!好难啊!作业真的好多啊!为什么我的脸上时常戴着黑眼圈,那是我对作业的执着,每次的作业一定是要熬夜才能写完的...
这次的TCP/IP协议栈的攻击真的好多啊,做一个看一个原理,做的时候感觉原理都懂了,在实践中去对应原理,就做的好慢...而且自己也不熟悉,所以我还把TCP/IP的图做成了桌面...方便查看,做的攻击太多了,我都不知道从哪个攻击开始说感想...只能说做完之后感觉还有点懵,还得再回去看看实践过程,希望我记住的比忘记的多...
参考资料
-
IP分片攻击
-
smurf攻击的原理
-
TCP三次握手
-
Netwox详细介绍
-
netwox命令行参数
-
WinXP里面开启telnet服务
-
TCP会话劫持攻击