20199313 2019-2020-2 《网络攻防实践》第五周作业
本博客属于课程:《网络攻防实践》
本次作业:《第五周作业》
我在这个课程的目标:掌握知识与技能,增强能力和本领,提高悟性和水平。
一、知识点梳理与总结
上周回顾:
上周我们学习了TCP/IP各层的网络安全基础知识,以及网络空间的常识,我们在自己搭建的属于自己的虚拟网络中进行各种知识、技巧的学习。
同时,我们上周对嗅探器做了全方位的学习。
接下来我们就要开始针对重要协议的攻击展开学习。
二、网络拓补结构
本次实验使用的网络拓扑结构如图:
三、ARP缓存欺骗攻击
1.ARP通讯协议过程
由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输、计算机是根据mac来识别一台机器。
区域网内A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。
如果未找到,则A广播一个ARP请求报文(携带主机B的IP地址),网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。
其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)
2.实践过程
首先查看一下自己攻击机的IP和mac地址,如果ifconfig
命令中没有显示HWADDR字样的mac地址,则可以用nmcli device show eth0
命令来查看mac地址(其中eth0则是你的网卡编号)
在虚拟机中,通过fping命令,fping -g 192.168.220.1/24
查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址,我们发现一共四台主机在线(ubantu、theseed、Metasploitable、用户主机),本次我们使用ubantu来篡改theseed和Measploitable的ARP表来达到双向监听的效果。(其实我们可以在局域网内任意选择两个主机的IP来做ARP欺骗)
由于我们对局网内的主机进行了检测,所以我们现在的ARP表应该多的一塌糊涂,这时候我们用组合命令来清除一下ARP表:
arp -n|awk '/^[1-9]/{system("arp -d "$1)}'
注意这条命令需要root权限
然后我们用ping命令来检测和其他两台主机的连通性,顺便获取一下他们的MAC信息,此时的ARP表就十分清爽
如何进行ARP欺骗不被发现:
开启端口转发:echo 1 >/proc/sys/net/ipv4/ip_forward
关闭端口转发:echo 0 >/proc/sys/net/ipv4/ip_forward
查看端口转发是否成功:cat /proc/sys/net/ipv4/ip_forward 如果显示1则表示开启成功,显示0则开启失败
开启IP转发后 流量会经过kali的主机而后再去到目标所以这时开启arpspoof 那么目标就不会断网,因为流量通过了kali主机那么我们就可以拦截相关数据。
使用netwox工具伪造tcp报文,利用netwox的80工具: 80 : Periodically send ARP replies
,客户端(需要ip地址与MAC地址)与服务端(需要ip地址与MAC地址)和攻击机(需要ip地址与MAC地址) 在同一局域网内, 攻击机使用命令来向另一台主机发送tcp报文,来修改靶机的ARP表:netwox 80 -e "攻击机MAC地址" -i "服务端ip地址"
这条命令被广播之后,其他虚拟机关于靶机的IP对应mac地址的ARP表都被修改成了攻击机的mac地址(图一),我们接下来要做的是同时修改靶机关于网关的地址,就可以做到双向监听(图二)
四、ICMP重定向攻击
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发。 ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:网络重定向)达到这个目的,原理上和APR重定向很相似。
使用netwox工具伪造ICMP重定向报文,利用netwox的86工具 86 : Sniff and send ICMP4/ICMP6 redirect
。使用命令:netwox 86 -f "host 192.168.220.5" -g 192.168.220.4 -i 192.168.220.1
其中-f是靶机的host,-g 是指定新的网关地址(攻击机IP);-i是当前网关地址;也即攻击者冒充当前网关,通知受害者修改自己的网关IP。
在图中我们可以看到,本身应该发往网关的报文被攻击机以网关的身份重定向到我们的攻击机,在此我们可以获取靶机所发出的所有报文。
五、SYN洪水攻击
SYN Flood攻击
Dos(Denial of Service)拒绝服务攻击是指在特定攻击发生后,被攻击的对象不能及时提供应有的服务。从广义上说,任何导致服务器不能正常提供服务的攻击都是拒绝服务攻击。
SYN Flood是当前最流行的拒绝服务攻击之一,这是一种利用TCP协议缺陷,发送大量的伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
TCP协议是基于连接的,也就是说,为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接。
建立TCP连接的标准过程是这样的:
第一步,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加1,ACK即确认(Acknowledgement);
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成。
以上的连接过程在TCP协议中被称为三次握手。
问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN超时,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃——即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
使用netwox工具伪造ICMP重定向报文,利用netwox的76工具76 : Synflood
。使用命令:netwox 76 -i 192.168.220.64 -p 80
用法:netwox 76 -i ip -p port [-s spoofip]
参数:
-i | --dst-ip ip 目标IP地址
-p | --dst-port port 目标端口号
-s | --spoofip spoofip IP欺骗初始化类型
(这里我们也用ubantu用cpp实现了syn拒绝服务攻击,附图在后文)
使用命令:netwox 76 -i 192.168.220.64 -p 80
可以看到,我们的靶机windows xp已经卡死了(cpu占用100%),临死前的wireshark捕获到了大量的tcp报文
防御措施:
SYN cookie是抵抗SYN-Flooding的防御机制.
防御原理简介:
在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,
而是根据这个SYN包计算出一个cookie值.
在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性.
如果合法,再分配专门的数据区进行处理未来的TCP连接.
六、TCP_RST攻击
使用netwox的78号工具对靶机进行TCP RST攻击,强行断开靶机的tcp链接。利用netwox的76工具78 : Reset every TCP packet netwox
。使用命令:netwox 78 -i 192.168.220.64
我们使用上周的talent连接紫丁香社区,此时我们的主机在和服务器之间不停的进行tcp报文的通讯,如果我们用TCP_RST,则会使链接立刻断开
七、TCP会话劫持攻击(bouns攻击)
方法零:依据我的理解,我们只需要使用前述ARP欺骗或ICMP欺骗使得服务器和客户端之间的通信被我们的攻击机劫持,在此就不过多赘述有关ARP和ICMP欺骗的过程。欺骗完成后结合方法三进行会话劫持。
方法一:在seed上使用telnet登录msfadmin,总显示找不到链接,我回头再研究一下,T.T
方法二:使用netwox的40号工具构造一个TCP数据包,来达到TCP会话劫持的效果
我们用wireshark来检测靶机和服务器之间的tcp会话信息如图,我们看到了源端口51268和通信端口23(telnet)以及发送的数据字符l
劫持命令如下:(需要配合方法一使用)
netwox 40 --ip4-dontfrag --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.220.5 --ip4-dst 192.168.220.7 --tcp-src 51268 --tcp-dst 23 --tcp-seqnum 55 --tcp-acknum 102 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "6c"
其中参数的意义如下:
attacker观察数据包,依次设置参数
IP4 tos :无需设置
IP4 id :无需设置,因为报文会设置为不允许分段
IP4 dontfrag :1(不允许分段,参考报文1)
IP4 offsetfrag :0(参考报文1)
IP4 ttl :64(参考报文1)
IP4 protocol :6(参考报文1)
IP4 src :48222(参考报文1)
IP4 dst :23(参考报文1,telnet服务默认端口)
IPv4 options :无需设置(参考报文1)
TCP src :192.168.175.140
TCP dst :192.168.175.141
TCP seqnum :1137345078(参考报文2)
TCP acknum :2543750827(参考报文2)
TCP ack :1
TCP psh :1(表示有data数据传输)
TCP window :128(笔者随意设置的)
`tcp-data :"6c"(6c是l的16进制下字符l的Ascii码)
在第四张图中,不管我怎么按键盘,我的seed都不会有反应(原因在第五张图,产生了ack风暴)
可以看到,我门成功劫持了会话,并且和服务器建立了通信
八、附录(netwox功能表)
1:显示网络配置
2:显示调试信息
3:显示有关IP地址或主机名的信息
4:显示有关以太网地址的信息
5:获取IP列表中计算机的以太网地址
6:显示如何访问IP地址
7:嗅
8:嗅探并显示打开的端口
9:嗅探和显示以太网地址
10:嗅探和显示网络统计信息
11:嗅探并验证校验和
12:显示要用于netbox参数的值
13:为每个设备获取嗅探和欺骗的DLT类型
14:伪造唱片
15:显示记录的内容
16:转换记录
17:重新计算记录中数据包的校验和
18:重新组合记录的IP数据包,并重新排序TCP流
19:从记录中提取一系列数据包
20:从记录中搜索数据包中的字符串
21:转换数字
22:转换字符串
23:显示ASCII表
24:转换IP地址范围
25:测试目录是否安全
26:转储文件
27:计算文件的MD5
28:将二进制文件转换为可读和可编辑的文件
29:将可读和可编辑的文件转换为二进制文件
30:将文件从unix转换为dos
31:将文件从dos转换为unix
32:欺骗以太网数据包
33:欺骗EthernetArp包
34:欺骗以太网4数据包
35:欺骗以太网4 udp数据包
36:欺骗以太网4 TCP数据包
37:欺骗以太网4 ICMP4数据包
38:欺骗Ip4包
39:欺骗Ip4Udp数据包
40:欺骗Ip4Tcp数据包
41:欺骗Ip4Icmp4数据包
42:包样本的欺骗:片段
43:包样本欺骗:片段,ip4opt:noop
44:数据包样本欺骗:片段,ip4opt:rr
45:数据包样本欺骗:片段,ip4opt:lsrr
46:数据包样本欺骗:片段,ip4opt:ts
47:数据包样本欺骗:片段,ip4opt:ipts
48:数据包样本欺骗:片段,ip4opt:ippts
49:Ping ICMP
50:Ping ICMP(EthIP欺骗)
51:Ping TCP
52:Ping TCP(EthIp欺骗)
53:Ping-UDP
54:Ping-UDP(EthIp欺骗)
55:平ARP
56:Ping ARP(EthIp欺骗)
57:跟踪路由ICMP
58:Traceroute ICMP(EthIP欺骗)
59:跟踪路由TCP
60:Traceroute TCP(EthIp欺骗)
61:Traceroute UDP
62:Traceroute UDP(EthIp欺骗)
63:指定IP协议上的Traceroute
64:指定IP协议上的Traceroute(EthIp欺骗)
65:扫描ICMP
66:扫描ICMP(EthIP欺骗)
67:扫描TCP
68:扫描TCP(EthIp欺骗)
69:扫描UDP
70:扫描UDP(EthIp欺骗)
71:扫描ARP
72:扫描ARP(EthIp欺骗)
73:模拟多台计算机(arp和ping)的存在
74:用随机碎片淹没宿主
75:使用大量以太网数据包填充交换机表
76:综合洪水
77:检查seqnum是否可预测
78:重置每个TCP数据包
79:确认每个TCP SYN
80:定期发送ARP回复
81:发送ICMP4时间戳
82:嗅探并发送无法到达的ICMP4/ICMP6目标
83:超过嗅探和发送ICMP4/ICMP6时间
84:嗅探和发送ICMP4/ICMP6参数问题
85:嗅探并发送ICMP4源淬火
86:嗅探并发送ICMP4/ICMP6重定向
87:TCP客户端
88:UDP客户端
89:TCP服务器
90:UDP服务器
91:TCP服务器多客户端
92:UDP服务器多客户端
93:TCP远程管理服务器
94:TCP远程管理客户端(exec)
95:TCP远程管理客户端(获取文件)
96:TCP远程管理客户端(put文件)
97:系统日志客户端
98:用syslog消息淹没主机
99:TELNET客户端
100:TELNET客户端执行一个或多个命令
101:暴力telnet客户端
102:查询DNS服务器
103:获取绑定DNS服务器的版本
104:DNS服务器总是回答相同的值
105:嗅探并发送DNS答案
106:发送电子邮件
107:发布新闻组消息
108:列出服务器上可用的新闻组
109:下载一条或多条新闻组邮件
110:以太网网桥限制流
111:FTP列出目录
112:FTP客户端:获取文件
113:FTP客户端:放置文件
114:FTP客户端:删除文件
115:FTP client:递归获取目录
116:FTP client:递归放置目录
117:FTP客户端:递归删除目录
118:HTTP获取
119:HTTP头
120:HTTP帖子
121:HTTP输入
122:HTTP删除
123:HTTP跟踪
124:HTTP选项
125:HTTP服务器
126:HTTP远程管理服务器
127:使用异或加密/解密文件
128:将文件分成小块
129:重新组合文件块
130:暴力ftp客户端
131:暴力http客户端(站点密码)
132:强制http客户端(代理密码)
133:转换url/uri
134:在HMTL文件中获取url/uri
135:将HMTL文件中的url/uri转换为绝对url
136:Web下载(http://。。。或ftp://…)
137:创建工具138的示例配置文件
138:WebSpider(使用137工具创建的配置文件)
139:命令行上的WebSpider(完全递归)
140:欺骗以太网6数据包
141:欺骗以太网P6UDP数据包
142:欺骗以太网P6TCP数据包
143:欺骗以太网P6ICMP6数据包
144:欺骗Ip6数据包
145:欺骗Ip6Udp数据包
146:欺骗Ip6Tcp数据包
147:欺骗Ip6Icmp6数据包
148:Ping ICMP6邻居发现
149:Ping ICMP6邻居发现(EthIp欺骗)
150:扫描ICMP6邻居发现
151:扫描ICMP6邻居发现(EthIp欺骗)
152:交互式IRC客户端
153:IRC客户端列表频道
154:IRC客户端侦听频道
155:网络性能测量:TCP服务器
156:网络性能测量:TCP客户端
157:网络性能度量:UDP服务器
158:网络性能度量:UDP客户端
159:SNMP获取
160:SNMP漫游
161:SNMP陷阱
162:SNMP Trap2
163:SNMP通知
164:SNMP集
165:TFTP客户端:获取文件
166:TFTP客户端:放置文件
167:TFTP服务器
168:FTP服务器
169:显示简单的网络配置,易于解析
170:TELNET服务器
171:DHCP客户端
172:新闻组的列表文章范围
173:下载一条或多条新闻组邮件的概述
174:FTP客户端:获取文件并检查其MD5
175:Web下载(http://。。。或ftp://…)并检查其MD5
176:TFTP客户端:获取一个文件并检查其MD5
177:检查SMTP服务器是否启动
178:检查IRC服务器是否启动
179:DHCP客户端请求通知
180:SNTP客户端获取时间
181:SNTP服务器
182:获取web文件的大小(http://。。。或ftp://…)
183:TCP中继
184:UDP中继
185:TCP多客户端中继
186:毫秒睡眠
187:显示日期和时间
188:系统日志服务器
189:SMTP服务器
190:煮咖啡
191:生成密码(英语,
法语、西班牙语)
192:包样本欺骗:片段,ip4opt:ssrr
193:IDENT client请求有关打开会话的信息
194:IDENT client创建会话并请求其信息
195:标识服务器
196:谁是客户
197:谁是客户端猜测服务器
198:SMB/CIFS客户端:列出共享
199:SMB/CIFS客户端:创建目录
200:SMB/CIFS客户端:删除目录
201:SMB/CIFS客户端:重命名目录
202:SMB/CIFS client:列出目录的内容
203:SMB/CIFS客户端:删除文件
204:SMB/CIFS客户端:重命名文件
205:SMB/CIFS客户端:获取文件
206:SMB/CIFS客户端:放置文件
207:SMB/CIFS客户端:递归获取目录
208:SMB/CIFS客户端:递归地放置目录
209:SMB/CIFS客户端:递归删除目录
210:命令行上的WebSpider(保持在同一目录中)
211:网络蜘蛛:将本地下载的文件名转换为其原始url
212:Web spider:将url转换为其本地下载的文件名
213:显示IP地址列表
214:Traceroute发现:网络拓扑图
215:Traceroute发现(EthIp欺骗)
216:哔声
217:SMB/CIFS服务器
218:netbox内部验证套件
219:计算文件的加密哈希(md5、sha等)
220:将二进制文件转换为base64编码的文件
221:将base64编码的文件转换为二进制文件
222:在HMTL文件中,禁止指向本地url的链接