20199125 2019-2020-2 《网络攻防实践》第五周作业
一.概况
本次作业属于哪门课 | 网络攻防实践 |
---|---|
作业要求 | TCP/IP网络协议攻击 |
收获 | 对于如何利用arp、icmp、tcp以及udp等协议进行网络攻击有了更清晰的认识,以及如何来防范这类网络攻击,学习了ipsec技术 |
二.本周知识点梳理
1.OSI七层模型和TCP/IP 4层模型对比
2.TCP协议三次握手过程
(1)首先客户端向服务器端发送一段TCP报文,其中:
- 标记位为SYN,表示“请求建立新连接”;
- 序号为Seq=X(X一般为1);
- 随后客户端进入SYN-SENT阶段;
(2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文,其中:
- 标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了连接请求);
- 序号为Seq=y;
- 确认号为Ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值;随后服务器端进入SYN-RCVD阶段;
(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。其中:
- 标志位为ACK,表示“确认收到服务器端同意连接的信号”;
- 序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;
- 确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值;
随后客户端进入ESTABLISHED阶段,服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。
3.网络安全的三大基本属性
保密性:指数据不被未授权的实体使用,使用加密算法进行加密。
可用性:指数据不被恶意破坏,当需要时能够提供正常的存取和访问所需的信息和服务。
完整性:指数据未经授权不允许被修改,通常采用数字签名和摘要算法来保证数据的完整性。
4.网络攻击的基本模式
主要包含四种模式,分别是:截取、中断、篡改和伪造。
其中,arp欺骗攻击和icmp重定向攻击既可以是截取又可以是中断攻击(当攻击机不开启ip路由转发时,变成了中断攻击)。
而SYN flood,UDP flood等都是中断服务攻击。
三、TCP/IP网络协议攻击实践
1.ARP欺骗攻击
实现原理:
ARP协议是IP地址映射到物理网卡MAC地址的一个协议,实现ARP欺骗攻击利用了主机动态缓存ip-mac映射表的漏洞,伪造某台靶机的ip地址,以这台靶机的ip和自己的mac地址向其他主机频繁发送虚假的arp数据,使得其他主机更新自己的ip—mac映射表,将靶机的ip映射到了攻击机的mac地址;那么其他主机发送给原靶机ip的数据包都会发送到攻击机上。利用arp欺骗实施中间人攻击既利用了信息不对称的漏洞,假设主机A与主机B进行正常通信,攻击机C用B的ip向A发送虚假arp信息,使得A更新ip-mac映射表,将B的ip映射到了攻击者C的mac地址,同理,攻击者C利用A的ip对B进行arp欺骗,使得B更新ip-mac映射表,将A的ip映射到了攻击者C的mac地址上。这样就在A和B直接建立了中间人连接,所有A和B之间的流量都要通过C进行转发。
实践操作:
- 配置
- 首先要开启攻击机ip路由转发,否则当发起arp攻击时,会导致手机断网,这也就是arp断网攻击,将ip_forward中的值设为1即开启ip路由转发,通过echo 1的方式设置只对本次使用有效,系统重启之后还是会恢复为0。
- 使用arpspoof命令:arpspoof –i [网卡] –t [靶机ip] [局域网网关ip],不停发送虚假arp信息,向被攻击的靶机进行欺骗,伪造网关身份,建立网关和靶机之间的中间人身份。
- 打开另一个ubuntu终端,安装工具driftnet,使用该工具对靶机进行流量监控,执行命令driftnet -i [攻击机网卡],将会捕捉到靶机在网页上浏览的图片(使用https协议的网站不能捕捉)
- 开启另外一个终端,使用ettercap命令:
ettercap –Tq –i ens33
(T表示启动嗅探,q表示安静模式,即不显示嗅探到的数据流,-i表示选择网络接口),执行嗅探命令,此时靶机访问使用http协议的网站,进行账户登录操作,将会嗅探到使用明文传输的账户和密码。
- 分析数据包,虚拟机中的攻击机向靶机伪造网关身份,向靶机发送ip为网关真实ip,mac为自己mac地址的虚假信息。
- 分析靶机进行一次外网通信的数据包,攻击机在路由器网关和靶机之间建立中间人关系,靶机首先将流量发送给攻击机,再由攻击机转发给网关。
防范措施: - 网关和主机中设置静态ip-mac映射表
- 一种基于仲裁的ARP欺骗防范模型
在ARP防火墙模型中,会与网关串联一个设备,局域网中用户流量会先经过这个网络设备后,才进入网关,并且网关的数据也会先经过这个防火墙设备后在传输给用户。相应的原理图如图所示。
2.ICMP重定向攻击
实现原理:
ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表
icmp重定向攻击就是利用icmp路由重定向报文来改变主机的路由表,攻击者向目标主机发送重定向信息,把自己伪装成路由器,使得目标主机的数据报发送到攻击者上进行转发。
实践操作:
- 首先同样要开启攻击机的ip路由转发,否则进行icmp重定向攻击后靶机会断网,察觉到受到攻击,开启方式如上。
- 使用netwox中的86号工具,执行命令:netwox 86 -f "host [靶机ip] " -g [攻击者ip] -i [路由器ip],
-f
表示筛选规则,-g
表示新的网关地址,-i
表示原网关地址。这条指令意思就是攻击者向靶机发送icmp重定向信息,修改靶机上的路由表,将路由器地址设置为靶机ip。
- 无论是使用icmp重定向攻击还是使用arp中间人攻击,目的只有一个:截取目标主机同其他主机通信的流量。所以同样可以使用
ettercap -Tq -i ens33
命令来嗅探转发的流量中的明文密码。
- 分析wireshark抓包的数据流,可以看到,靶机同外网通信的流量首先转发到了攻击机上,再由攻击机进行转发到真正的路由器。
防范措施:
根据类型过滤一些ICMP数据包,设置防火墙过滤,对于ICMP重定向报文是否来自本地路由器先判断再进行处理。
3.TCP RST攻击
实现原理:
TCP RST攻击被称作伪造TCP重置报文攻击,是一种假冒干扰TCP正常连接的技术方法。利用了TCP协议头中的标志位“RST”,大部分数据包中的该标志位都置为0,而当一个数据包中RST
标志位置为1时,接收该数据包的主机将断开这个TCP连接。假设主机A和主机B进行正常的TCP通信,攻击者监听到A和B之间通信的信息,此时攻击者假冒A向B发送一个RST
标志位为1的数据包,B收到数据包后进行检查,发现RST
标志位为1,断开和A的连接。
实践操作:
- 使用netwox第78号工具发起攻击,执行命令
netwox 78 -i [靶机ip]
,即对靶机进行TCP RST攻击,将导致靶机断开所有的TCP连接。
- 执行命令后,打开wireshark进行抓包分析,同时打开靶机浏览器访问任意网站,结果无法访问,浏览器反馈信息为
ERR_CONNECTION_RESET
,即TCP连接被重置。
- 值得注意的是,我用ssh连接的靶机跟攻击机,执行TCP RST攻击后,靶机同样会断开同攻击机的SSH连接。
- 分析wireshark数据包,实施TCP RST攻击后,靶机访问的服务器中断,图中所示为服务器发回到靶机上的中断TCP连接数据,其中
RST
标志位为1。
防范措施:
部署防火墙,过滤掉RST
标志位为1的数据包。
4.TCP会话劫持
实现原理:
所谓会话,就是两台主机之间的一次通讯。例如你Telnet到某台主机,这就是一次Telnet会话;你浏览某个网站,这就是一次HTTP会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行简听,甚至可以是代替某一方主机接管会话。我们可以把会话劫持攻击分为两种类型:1)中间人攻击(Man In The Middle,简称MITM),2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持;被动劫持实际上就是在后台监视双方会话的数据流,丛中获得敏感数据;而主动劫持则是将会话当中的某一台主机“踢”下线,然后由攻击者取代并接管会话。
实践操作:
- 本来想使用hunt-1.5工具进行tcp会话劫持,但是安装了hunt-1.5之后,发现hunt-1.5无法识别到网卡,没有抓到任何局域网内的网络连接,以失败告终,暂时还未解决。
- 执行命令后显示无连接
防范措施: - 使用交换式网络替代共享式网络;
- 采用加密通讯,使用SSH代替Telnet、使用SSL代替HTTP,或者使用IPSec/VPN;
- 监视网络流量,如发现网络中出现大量的ACK包,则有可能已被进行了会话劫持攻击;
- 防范arp欺骗。
5.SYN Flood攻击
实现原理:
在SYN Flood
攻击中,利用TCP三次握手协议的缺陷,攻击者向目标主机发送大量伪造源地址的TCP SYN报文,目标主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。
实践操作:
- 使用虚拟机中的linux作为攻击机来对win7靶机发起
SYN Flood
攻击,靶机ip地址为192.168.2.60
; - 使用netwox中的76号工具进行攻击,执行命令:netwox 76 -i "[靶机ip]" -p [端口号]。在这里我发起的是针对telnet连接的23号端口的
SYN Flood
攻击。
- 同时在靶机上打开wireshark进行抓包分析,可以看到攻击机向靶机发送了大量的虚假ip发出的
SYN
连接请求,这些虚假的连接请求没有MAC地址,无法溯源攻击者的真实身份。
防范措施: - 优化系统配置:包括缩短超时时间,增加半连接队列的长度,关闭不重要的服务;
- 优化路由器配置:配置路由器的内、外网卡;
- 完善基础设施:增加源IP地址检查机制等;
- 使用防火墙:采用半透明网关技术的放火墙可有效防范SYN Flooding攻击;
- 主动监视:监视TCP/IP流量,收集通信控制信息,分析状态,辨别攻击行为。
四、疑难问题
hunt网络劫持工具无法获取到网卡监听到的局域网连接信息,而使用其他工具虽然能够截取到靶机的明文密码,但是要进行注入篡改攻击还是难以实现。