20199304 2019-2020-2 《网络攻防实践》第5周作业
本次作业属于哪个课程 | 网络攻防实践 |
---|---|
这个作业要求在哪里 | TCP/IP网络协议攻击 |
我在这个课程的目标是 | 学习网络攻防相关技术和原理、了解TCP/IP网络协议攻击原理 |
这个作业在哪个具体方面帮助我实现目标 | TCP/IP网络协议攻击的原理和实践 |
1.实践内容
1.1 TCP/IP协议栈攻击概述
- 网络安全属性与攻击模式
- 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常运行,网络服务不被中断。
- 网络安全属性:机密性、完整性、可用性、真实性和不可抵赖性
- 网络攻击基本模式:截获、中断、篡改和伪造。截获是一种被动的攻击模式,其目的是获取网络通信双方的通信信息内容,是对机密性的违反。中断攻击是使目标的正常网络通信和回话无法继续,是对可用性的破坏。伪造则是假冒网络通信方的身份,欺骗通信对方达到恶意目的。篡改则是对网络通信过程的内容进行修改
分类 | 截获 | 中断 | 篡改 | 伪造 |
---|---|---|---|---|
攻击模式 | 被动攻击 | 主动攻击 | 主动攻击 | 主动攻击 |
目的 | 获取网络通信双方的通信信息内容 | 致使正常的网络通信和会话无法继续 | 对网络通信过程的信息内容进行修改,使得通信一方或双方接收到篡改后的虚假消息 | 假冒网络通信方的身份,欺骗通信双方达到恶意目的 |
违反的安全属性 | 机密性 | 可用性 | 完整性 | 真实性 |
具体攻击技术 | 嗅探(Sniffing)、监听(Eavesdropping) | 拒绝服务(Denial of Service,DoS) | 数据包篡改 | 欺骗(Spoofing) |
1.2网络层协议攻击
- TCP/IP网络协议栈安全缺陷与攻击技术
- IP源地址欺骗
- 首先对受信任主机进行攻击,使其丧失工作能力。
- 采样猜测目标服务器的初始序列号ISN,再返回SYN/ACK报文的时候设置为ISN+1。
- 伪造源地址为受信任的主机IP的SYN数据包
- 伪装成被信任主机发送ACK包,设置发送数据包的ACK值为预测目标主机ISN+1。
- 建立连接,假冒被信任主机与主机进行通信。
- 应用场景:网络扫描、拒绝服务攻击和对抗身份认证机制。
- netwox伪造报文:
netwox 41 -j 128 -k 1 -l 192.168.200.3 -m 192.168.200.5 -o 8
- nmap伪造源地址:
nmap -sS -p 8080 192.168.200.3 -D 192.168.200.5使用.5的地址进行扫描
- 防范措辞:
- (1)随机化初始序列号、
- (2)使用IPsec代替IP、
- (3)避免使用基于IP地址的信任策略
- (4)在路由和网关上对抗IP源地址欺骗技术。
- ARP欺骗
-
ARP协议工作原理:ARP协议用于将网络主机的IP地址解析成其MAC地址,然后在局域网内通过MAC地址进行通话。
-
ARP欺骗攻击技术原理:ARP欺骗攻市的根源在于ARP协议在设计时认为屈域网内部的所有用户都是可信的,是遵循协议设计规范的,但事实上并非如此
-
ARP欺骗技术的应用场景:利用 ARP 欺骗技术进行局域网中的嗅探,利用 ARP 欺骗构造中间人攻击,ARP 欺骗技术目前也被恶意代码所普遍使用
-
ARP欺骗攻击过程图:
-
-
防范措施:预防ARP欺骗攻击的主要方法有静态绑定关键主机的IP地址与MAC地址映射关系 、 使用相应的ARP防范工具、 使用VLAN虚拟子网细分网络拓扑, 并加密传输数据以降低ARP欺骗攻击的危害后果等。
-
- ICMP路由重定向攻击
- 定义:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。ICMP报文分为两种类型:差错报告类(目的站不可达、数据报超时、数据包参数错误)、控制类报文(请求/应答类和通知类)。
- 原理:利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听。
- 攻击步骤:
- (1)攻击节点利用IP源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP重定向报文,并将指定的新路由器IP地址设置为攻击节点。
- (2)被攻击节点收到报文后,进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新的路由器。
- (3)攻击节点可以可以开启路由转发,充当中间人,对被攻击节点的通信进行全程嗅探监听,达到ARP欺骗类似的攻击效果。
- (4)在转发过程中,根据ICMP路由重定向机制的设计原理,攻击节点协议栈可能会向攻击节点发送一个ICMP重定向报文,指定原先网关为新路由器,将欺骗路由路径还原至原先状态。
- 工具:Netwox
- 防范措施:
- (1)根据类型过滤一些ICMP数据包
- (2)设置防火墙过滤
- (3)对ICMP重定向报文判断是不是来自本地路由器的
1.3传输层协议攻击
-
TCP RST攻击
-
TCP RST攻击原理:TCP协议头中有一个reset位置,用来表示会话中断。通过设置合理的seq和ack字段就可以达到关闭连接的效果。
-
攻击的示意图:
-
-
攻击步骤:
-
(1)攻击主机C可以通过嗅探方式监视通信双方A、B之间的TCP连接。
-
(2)在获得源、目标IP地址及端口、序列号之后,接可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方。
-
(3)在确保端口号一致及序列号落入TCP造成通信双方正常网络通信的中断,达到拒绝服务的效果。
-
工具:Netwox
-
-
TCP会话劫持攻击
-
TCP会话攻击原理:在靶机建立TCP会话之后再进行劫持,避免需要进行身份验证。简单来说就是攻击时间点后移的盲攻击
-
TCP会话攻击过程:靶机与服务器进行连接,服务器向靶机返回相应包,其中的序列号被攻击机嗅探得到,进而仿冒靶机向服务器发送数据包。此时攻击机仿冒服务器向靶机发送RST包,避免靶机对通信的干扰。
-
TCP会话劫持防御措施:初始序列号随机化、网络设计优化、新一代网络协议、禁用主机源路由、采用静态IP-MAC映射表及引用和过滤ICMP重定向报文等方法。或者采用对抗TCP攻击的通用方法IPsec。
-
-
-
TCP SYN Flood拒绝服务攻击
- 原理:基于TCP三次握手的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务。
- 攻击步骤:
- (1)在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。
- (2)受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
- (3)如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
- 防范措施:
- (1)SYN-Cookie技术(在连接信息未完全到达前不进行资源的分配)。
- (2)防火墙地址状态监控技术(将到目标服务器的TCP连接状态分为NEW、GOOD、BAD)。
-
UDP Flood拒绝服务攻击
- 原理:通过向目标主机和网络发送大量UDP数据包,造成目标主机显著的计算负载提升,或者通过网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
- 防范措施:
- 禁用或过滤监控及响应服务。
- 禁用或过滤其他UDP服务。
2.实践过程
2.1 ARP欺骗攻击
-
1.首先,我们需要通过工具netwox工具来进行攻击,在攻击机kali上安装netwox工具:
sudo apt-get install netwox
-
2.查看靶机地址。
-
3.使用seed ping靶机,查看seed的arp缓存表,获取靶机ip-mac映射关系:
arp -a
-
4.在kali上开始ARP欺骗,可以看到seed缓存表中靶机的ip-mac映射关系已经改变,kali成功了ARP欺骗:
netwox 80 -e 00:0c:aa:aa:aa:aa -i 192.168.200.5
-
5.实践完后,删除seed中靶机的arp映射表:
sudo arp -d 192.168.200.5
。
2.2ICMP重定向攻击
- 1.查看受害主机的路由表信息
- 2.在kali机子上进行攻击,然后wireshark抓包:
netwox 86 -f "host 192.168.200.4" -g 192.168.200.3 -i 192.168.200.11
(# 嗅探到192.168.200.4(靶机)的数据包时,以192.168.200.11的名义发送ICMP重定向报文,使192.168.200.3(攻击机)成为其默认路由)
- 3.在靶机ping 时,提示icmp重定向应答,
3.SYN Flood攻击
-
1.先用seed向靶机使用ftp登录。(登录时需要输入靶机的账号密码)
-
2.在kali使用命令
netwox 76 -i 192.168.200.5 -p 23
,这里的ip地址是靶机的,76代表使用netwox的76号工具,-p 23指定端口为23号。
-
3.在seed端的wireshark查看数据流,发现有一大堆SYN请求发往靶机192.168.200.5
4.TCP RST攻击
- 1.用seed建立与靶机的telnet连接,
telnet 192.168.200.5
。(这里我傻了,一会问题里说)
- 2.在kali使用命令
netwox 78 -i 192.168.200.5
,这里的ip地址是靶机的,78代表使用netwox的78号工具。
- 3.此时,再在seed来访问靶机的目录,发现访问被拒绝,而且telnet连接也断掉了。
5.TCP会话劫持攻击。
- 1.先用SEED Ubuntu建立与靶机MetaSploitable的telnet连接,
telnet 192.168.200.5。
- 2.在kali端打开wireshark,并使用指令
tcp.port==23
来进行过滤,此时我们发现并没有输出结果。
- 3.回到SEED Ubuntu端,使用telnet对靶机进行操作,此处我们用命令
cd .
,然后我们回到kali攻击机,使用wireshark查看数据流,可以在telnet协议的数据包中看到发送的指令数据:c、d、.。
- 4.查看wireshark中最后一个包,得知信息:由192.168.200.4发向192.168.200.5数据包,源端口是
47822
,目的端口是23
,Sequence number=3873640881
,Acknowledgment number=2314665775
。这些参数在后面构造数据包时用到。
- 5.编造16进制的数据:用文本转16进制形式,将个人信息转化为16进制数据。
- 6.使用命令进行TCP劫持:
netwox 40 --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.4 --ip4-dst 192.168.200.5 --tcp-src 47822 --tcp-dst 23 --tcp-seqnum 3873640881 --tcp-acknum 2314665775 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "6c62733230313939333034"
其中--ip4-protocol
是协议号、--ip4-ttl
是登陆者的ttl、--ip4-src
是seed的ip地址、--ip4-dst
是靶机的ip地址、--tcp-src
源端口号、--tcp-dst
目的端口号、--tcp-data
是要发送的16进制数据。
- 7.此时,kali的wireshark抓取到许多TCP Retransmission,TCP Dup:数据在传输过程中遇到问题,一直在请求重新传输。我们再来到SEED Ubuntu看到,连接断开,说明我们的劫持已经成功了。
3.学习中遇到的问题及解决
-
问题1:kali又又又无网络了
-
问题1解决方案:
-
(1)首先
ping www.baidu.com
显示ping: unkown host www.baidu.com
-
(2)然后
ping 8.8.8.8
显示connect:network is unreachable
-
(3)接着在看下本机有没有分配到ip地址
ifconfig -a
若发现没有inet addr:这个 -
-
(4)接着:
dhclient eth0
然后在查看下是否分配到ip地址ifconfig -a
可以看见已经有ip地址了,然后也ping的通了。 -
-
-
问题2:telnet失败
-
问题2解决方案:
-
(1)安装yum,使用
yum install talent
安装talent -
-
-
(2)嗯···想必大家已经看出来了,我只是写错命令了
telent
写成talent
-
4.实践总结
这次作业感觉自己就像个憨憨一样,本来已经困到迷糊了,还去硬挺着做实验,结果命令行写错了导致command not found;然后查呀查,查了半个晚上发现命令写错了···恨不得掐死自己。
感受二————熟能生巧:这次kali虚拟机又罢工了,不过已经有过经验,很快改正过来。
对于本次实践的内容来说,感觉蛮神奇的,短短几句命令就可以实现各种各样的攻击,对这门课的兴趣越来越高了。
但对有些实验原理理解稍显浅薄,需继续加强。