20199103 2019-2020-2 《网络攻防实践》第五周作业

20199103 2019-2020-2 《网络攻防实践》 第五周作业

1、实践内容

网络安全属性与攻击模式

网络安全属性

  • 机密性:信息不能被未授权的人明白、使用。
  • 完整性:信息不能随意被更改。
  • 可用性:被授权的人可以使用。
  • 真实性:不能随便被冒充
  • 不可抵赖性:通信中不能否认自己发出的信息。

网络攻击模式

  • 截获:获取双方的通讯信息,违反机密性。

  • 中断:使通话无法继续,违反可用性.

  • 篡改:修改内容,违反完整性。

  • 伪造:假冒身份,违反真实性。

  • 中间人攻击:假设AB进行通话,C对两人的通话进行拦截,,并对A声称自己是B,对B声称自己是A。

网络协议栈缺陷

  • 网络接口层:最常用的是以太网协议。此协议缺乏对MAC地址的验证,利用软件可以修改网卡的物理MAC地址。
  • 互连层:最重要的协议就是大家熟知的ipv4、icmp、arp。对于ipv4来说,最大的缺陷是ipv4不对源地址的真实性进行验证,就像寄快递,发出地址随便填。arp是用来匹配ip地址和mac地址,但是他却不对匹配来的地址进行验证,我说我是xx.xx.xx.xx,那别人就会相信我是,尽管我可能是在说谎。icmp可以能被滥用进行攻击,比如洪泛攻击。
  • 传输层:大家也都知道,这里主要是TCP和UDP。TCP建立会话之后非常容易遭受伪造和欺骗攻击,例如后面的实践的TCP RST。UDP作为一个简单无状态传输协议,针对攻击较少,流行的有UDP泛洪攻击。
  • 应用层:应用层协议多种多样,且大多采用明文传输(?),存在被监听,欺骗,中间人攻击的风险。

原始报文伪造

在充分了解协议的情况下,我们可以不按照协议进行封装,而是直接自己伪造一个报文。除了自己编程可以实现,强大的netwox可以构造任意的tcp、udp、ip报文。


IP源地址欺骗

原理

  • 前面也提到,IP协议并不对源地址进行验证。因此攻击者可以伪造自己的IP地址,发送给别人数据。
  • 一般情况下,攻击者无法获取回应报文,因为攻击者并没有伪造的IP。但是也有特殊情况,例如伪造的IP和自己在一个局域网,就可以用arp欺骗或者重定向。
  • 在无法获取回应报文的情况下,有一种盲攻击:1、首先攻击一台靶机,让他失去工作能力。2、以该靶机的IP向目标主机发送SYN数据包,并且猜测目标主机返回的SYN/ACK的SEQ的值(系列号)3、然后伪造ACK报文,并且将ACK值设置为系列号加一。可以发很多的ACK包来提高命中成功的概率。4、链接建立,开始冒充靶机向目标主机发送消息。

防范措施

  • 随机序列号,让别人猜不到。
  • 对传输的数据包加密。
  • 避免采用基于IP的信任措施。
  • 包过滤

ARP欺骗

原理

  • ARP的工作原理就不再赘述。
  • 前面也说过,ARP不对真实性进行验证,你说啥他就信啥。
  • 假如A想知道谁有某个IP地址,这个地址是B的。一般情况下A广播,只有B会回应,但是攻击者C却说他的地址是该IP地址(本来不是),并且还一个劲的说。然后A就会更新自己的ARP缓存,认为C拥有该地址,下一次就不会再询问。

防范措施

  • 静态绑定关键的IP与MAC的映射。
  • 使用相应的防范工具。
  • 加密数据来减轻损失。

ICMP重定向技术

原理:

  • ICMP的原理也不再赘述。
  • 结合IP欺骗,冒充网关的IP地址,告诉被攻击者,指定新得IP作为新网关。
  • 新IP开启路由转发,可以开始中间人攻击。
  • 注:因为经过了中间人的路径肯定不是最优的,因此新IP作为路由有可能发送一个重定向报文,让被攻击者将网关改回去。

防范

  • 设置防火墙,判定ICMP是不是来自本地路由。

TCP RST攻击

原理

  • TCP协议头部有一个reset位,一旦该位置为1,接收该包的主机就会立即关闭这个TCP会话连接。
  • 攻击者早获取通信双方的IP、端口号、序列号之后,就可以穿上某一方的IP衣服,发reset信息给另一方,导致通信直接中断。
  • netwox可以进行该攻击。

TCP会话劫持攻击

原理

  • 一些网络服务在建立TCP会话之后,进行应用层身份认证,而认证之后一般就不会进行二次认证。
  • 目前通常会结合ARP欺骗来进行会话劫持。
  • 在靶机A开始和服务器B通话之后,攻击机C就冒充A,开始向B发消息。
  • 但是A还会继续向B发消息,这样就会因为ACK值不匹配而产生ACK风暴。

防范

  • 采用静态绑定IP-MAC映射表来避免ARP欺骗。
  • 引用和过滤ICMP重定向报文。

TCP SYN Flood拒绝服务攻击

原理

  • 伪造很多地址地址向主机发送大量的SYN,消耗主机的队列资源。
  • 此时主机会回复SYN/ACK,并等待的回复,但是大部分伪造地址是非活跃的,并不会回复RST,主机就继续发送SYN/ACK,并积压很多半开放队列,最终挤满。

防范措施

  • SYN-cookie,避免了在连续信息未达到之前进行资源分配。
  • 防火墙地址状态监控,监控程序会监视,当一个ip长时间不回复,他就会代理回复一个RST,并将该IP拉至“黑名单”。

检测、预防和加固

  • 网络接口层:主要要检测防御的是嗅探。可以检测出局域网的监听点;优化网络结构;对关键的网关和路由做好防护。
  • 互连层:可以采用多种检测和过滤技术来发现和阻断网络中可能出现的欺骗攻击。
  • 传输层:可以实现加密传输和安全控制。
  • 应用层:加密、数字签名等

网络安全协议

  • 网络接口层:目前常用的WIFI,蓝牙等都实现了身份认证,加密传输等协议。
  • 网络互联层:目前最主要的协议是IPsec协议簇,提供了复杂的规范,还适用于IPv6.
  • 传输层:传输层的安全协议主要是TLS,其安全性有两个特性:1、采用了对称密钥的加密算法。2、可靠、使用哈希函数来计算消息完整性校验和。
  • 应用层:应用层的安全协议特点是针对不同的需求有不同的机制。如电子邮件、HTTP安全等。

2、实践过程

完成TCP/IP协议栈重点攻击实验,具体包括ARP缓存欺骗攻击、ICMP重定向技术、SYN Flood攻击、TCP RST攻击以及TCP会话劫持攻击

ARP缓存欺骗攻击

  • 首先,这次的实验需要用到hunt、netwox,所以sudo apt-get install netwox和apt-get install hunt

  • 首先找出来靶机的mac

  • 然后我用netwox 33 -b MAC(A) -g IP(伪) -h MAC(A) -i IP(A)这里的mac(a)是靶机a的mac,ip(伪)是你想要假装的IP

  • 然后我再去靶机查看arp -a,这里的图有两次arp -a,第一次在欺骗之前,第二次就成功冒充了192.168.154.130。在此之前如果不知道攻击机的MAC需要查一下,我查询这一步没有截图(忘了)。

icmp重定向攻击

  • 根据教材的例子netwox 86 -f "host IP1" -g IP2 -i IP3(网关)意思是嗅探到数据包的源或者目的的IP地址是IP1的话,就以IP3的名义向源地址发一个ICMP的重定向报文,让他把IP2当作默认路由。

  • 首先先来检查一下靶机的路由表

  • 然后运行该命令

  • 之后随便访问个什么网页,然后再打开路由表

  • 可以看见发生了变化,192.168.254.128出现在了路由表中。

SYN Flood攻击

  • 根据命令netwox 76 -i IP -portIP是想要攻击的IP,port是端口。telnet端口是23,所以我攻击的23端口。

  • 不知道为什么,我攻击seed做靶机,,然后xptelnet 192.168.254.131连接seed,没有任何反应,还是可以连接上(我的wireshark都抓崩溃了),也许是因为seed处理能力挺强?所以我就换了一个,攻击metasploitable,然后用seed连接metasploitable,成功了。

  • 首先先试试seed能不能telnet连接metasploitable

  • 是可以的,然后再攻击metasploitable

  • 之后再用seed telnet连接metasploitable,好半天都没有反应。

  • 我出去吃个包子回来有反映了。

  • 成功了。

TCP RST攻击

  • netwox 78-i 靶机ip,就能达到目的。还是之前,先建立telnet连接,然后攻击。

  • 我还没有输入账号就断开了。。。

  • 成功

TCP会话劫持

  • 这个实验有个很头疼的就是hunt一直检测不到链接,但是我的两个靶机已经建立了telnet链接。

  • 网上有资料说是因为i没有开启ip转发。

  • 可看出来是开着的。

  • 还有资料说需要实现进行ARP欺骗,我对两个靶机都进行了欺骗,还是如下

  • 一直都是no connection are available并且,好像我也不是个例,所以这个暂时搁置,等我知道了解决办法再来更新。


更新会话劫持方法

  • 在伟大的建国同学和启龙同学的帮助下,他们找到了一个博客里面有劫持方法,并且他们找到了相关的劫持软件。

  • 首先照旧在靶机之间建立telnet连接,这个就不截图了。但是注意抓包,这个软件需要端口号。

  • 获取到了端口号1043

  • 然后打开劫持软件,输入网卡、源地址,源端口号,服务器地址,服务器端口号(这个telnet肯定是23)

  • 上图可以看到开始等待通讯,以便劫持

  • 在通讯之后(我才输入了一个t,true都没输完),劫持成功

  • 可以看到,现在kali已经可以和服务器开始正常通讯。

  • ps:参考资料里有写,也可以伪造数据包来达到目的,可是不知道为什么我总是失败,也检查不出我伪造的数据包有什么问题,所以就没有贴出这个过程。

3、学习中遇到的困难

  • 问题1:对seed的TCP SYN Flood攻击难以奏效,尽管wireshark已经确定了确实发送了syn包
  • 问题1解决方法:更换靶机metasploitable
  • 问题2:hunt总是找不到连接。
  • 问题2解决方法:建国同学慷慨提供了一个其他的劫持工具。

4、实践总结

令人头疼的hunt最终没有找到解决方法,虽然最后换了个劫持工具,但是hunt本身的问题仍然没有解决。

参考资料

posted @ 2020-03-29 16:46  20199103陈昱帆  阅读(347)  评论(0编辑  收藏  举报