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

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

1.为了排版方便,相关图片可能比较小,推荐右键查看原图
2.这个作业最终版尽量用一个软件完成,不增加大家安装负担
3.对arp,TCP/UDP相关原理和字段意义,推荐《TCP/IP协议:卷一》
4.这次作业尝试和很多方法,可行的、不可行的和暂时未完成的都会列在最后

0 总体结构

本次作业属于那个课程 《网络攻防实践》
这个作业要求在哪里 第五次作业 TCP/IP网络协议攻击
我在这个课程的目标是 学习网络攻防相关技术、掌握网络攻防相关能力
这个作业在哪个具体方面帮助我实现目标 学会TCP/IP层相关协议的攻击方式
作业正文 下述正文,1,2,3, 4部分
其他参考文献 见正文最后部分

1.实践内容

1.1 TCP/IP协议栈攻击概述

  • 网络安全属性与攻击模式
    • 网络安全属性:机密性、完整性、可用性、真实性和不可抵赖性
    • 网络攻击基本模式:截获、中断、篡改和伪造。截获是一种被动的攻击模式,其目的是获取网络通信双方的通信信息内容,是对机密性的违反。中断攻击是使目标的正常网络通信和回话无法继续,是对可用性的破坏。伪造则是假冒网络通信方的身份,欺骗通信对方达到恶意目的。篡改则是对网络通信过程的内容进行修改
  • TCP/IP网络协议栈安全缺陷与攻击技术
    • 网络接口层(数据链路层):常用的协议包括R/ARP和PPP协议,分别为ip-mac转换协议和点对点传输协议。分别对应MAC地址欺骗和嗅探及监听攻击。

    • 互连层(网络层):常用协议包括ICMP、BGP和ICMP等协议。IP地址只进行转发而不检查源IP地址的有效性,缺乏认证机制。ICMP协议可以控制路由路径,也可被用于洪泛攻击和Smurf攻击。

    • 传输层:TCP/UDP协议。再建立之后仅通过IP地址、端口和SEQ\ACK号对通信对方进行验证,非常容易遭受伪造和欺骗攻击。另外TCP的三次握手可以造就SYN洪泛攻击。

    • 应用层:HTTP、FTP、POP3/SMTP、DNS、SMB等均缺乏安全考虑,多采用明文传输。

1.2 网络层协议攻击

  • 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的地址进行扫描
    • 防范措辞:随机化初始序列号、使用IPsec代替IP、避免使用基于IP地址的信任策略和在路由和网关上对抗IP源地址欺骗技术。
  • ARP欺骗
    • ARP工作原理:当设备再数据链路层访问一个主机的时候,若已经得知对方的mac地址,则直接组合形成MAC帧进行传输;若只知道IP而不知道对方的MAC地址则通过ARP协议请求对方的MAC地址。
    • 具体的工作过程:当缺失MAC地址的时候就想全网广播ARP请求,收到的主机会检查自己的IP与被请求的IP是否相符,相符则发送arp相应包。(在有些书中会说,无论IP相符与否,请求方的IP和MAC会在收到请求的主机中更新。)
    • 攻击过程:当节点A发送对B节点的ARP请求包的时候,同一网段的主机都会收到请求。B会返回IP(B)/MAC(B),但是攻击机器C会返回IP(B)/MAC(C),其他机器不做应答。C不断返回错误的数据,导致A的IP-MAC映射表保存了错误的值。当A想B发送数据的时候,将会发送到C的端口。若C同时冒充A和B,则这就构成了中间人攻击
    • 应用场景:作为中间人嗅探信息,进行病毒传播等等
    • 使用netwox进行ARP欺骗命令:netwox 33 -b MAC(A) -g IP(B) -h MAC(A) -i IP(A),关键在于-g IP(B)使得目标主机保存错误的映射关系。
    • ARP攻击的防范措施:使用静态绑定关键自己的IP地址与MAC地址的映射表
  • ICMP路由重定向攻击
    • 重定向机制原理:ICMP控制类报文中的路由重定向用来更新主机的路由表从而提高网络的传输效率。
    • 重定向攻击过程:攻击者使用IP源地址欺骗技术,冒充IP网关,向攻击节点发送ICMP重定向报文。被攻击节点进行审核后接受ICMP请求,从而攻击者将成为被攻击者和路由网关之间的桥梁。转发过程中根据重定向原理会发送真实的重定向报文。
    • 使用netwox进行重定向攻击:netwox 86 -f "host 靶机IP" -g 攻击机IP -i 网关IP
    • 防范措施:过滤一些类型的ICMP数据包,设置防火墙过滤,判断ICMP重定向报文是不是来自路由器

1.3 传输层协议攻击

  • TCP RST攻击

    • TCP RST攻击原理:TCP协议头中有一个reset位置,用来表示会话中断。通过设置合理的seq和ack字段就可以达到关闭连接的效果。

    • 攻击的示意图:

    • netwox进行攻击:netwox 78 -i 靶机IP

  • TCP会话劫持攻击

    • TCP会话攻击原理:在靶机建立TCP会话之后再进行劫持,避免需要进行身份验证。简单来说就是攻击时间点后移的盲攻击

    • TCP会话攻击过程:靶机与服务器进行连接,服务器向靶机返回相应包,其中的序列号被攻击机嗅探得到,进而仿冒靶机向服务器发送数据包。此时攻击机仿冒服务器向靶机发送RST包,避免靶机对通信的干扰。

    • TCP会话劫持防御措施:初始序列号随机化、网络设计优化、新一代网络协议、禁用主机源路由、采用静态IP-MAC映射表及引用和过滤ICMP重定向报文等方法。或者采用对抗TCP攻击的通用方法IPsec。

    • 在实际操作的过程中遇到了抵抗Telnet端口TCP会话劫持的神级策略,下文再写,都是泪。

  • TCP SYN Flood拒绝服务攻击

    • SYN Flood攻击原理:正常的TCP会话需要三次握手:客户端SYN同步信息到服务器,服务器响应SYN-ACK,客户机返回ACK。简单来概括就是当服务器收到SYN后就必须回复并等待ACK,这将大量占用内存资源。当资源耗尽之后,服务器将拒绝新的连接,导致此端口无法响应机器的正常请求连接。
    • 使用netwox进行TCP SYN Flood攻击:entwox 76 -i 靶机IP -p 端口号
    • SYN Flood攻击的防范措施:1. 通过SYN-Cookie技术:在建立TCP连接的过程中不分配资源,而是返回生成的cookie报文,当客户端再次返回ACK的时候,使用ACK的头部信息计算cookie与返回的cookie进行比较,确认是否接受连接。2.通过防火墙地址状态监控技术:当防火墙监听到源地址的SYN报文和服务器的SYN\ACN报文就自动替客户机返回ACK,若一段时间内没有收到客户机的ACK就断开连接,并将客户机设置为bad的状态,禁止他再次连接。
  • UDP Flood拒绝服务攻击

    • UDP Flood攻击的原理:利用UDP无状态的特性,向靶机发送尽可能多的UDP报文。
    • UDP Flood攻击的防范措施:禁用或过滤监控和响应服务;禁用或过滤其他的UDP服务;在网络的关键位置使用防火墙和代理机制来过滤到一些非预期的网络流量来保护这些服务。

1.4 TCP/IP网络协议栈攻击防范措施

  • 监测、预防和安全加固
    • 在网络接口层,主要的安全威胁是网络嗅探。主要任务是利用防范网络嗅探的思想检测监听点,并在设计上细分和优化网络结构。
    • 在互连层上。采用多种检测和过滤技术进行检测和预防,并通过静态绑定IP-MAC映射表、使用IPsec进行安全加固
    • 在应用层上。采用审计、入侵检测等方法进行检测和预防,通过加密、用户及身份认证、数字签名技术和授权及访问控制等进行安全加固。
  • 网络安全协议:
    • 网络接口层:IEEE 802.11下属的相关协议,如WEP和WPA/WPA2,还有IEEE8002.11X协议
    • 网络互连层:IPsec协议簇。IPsec协议包含AH协议和ESP协议, AH协议提供无连接的完整性、数据源认证和抗重放保护服务;ESP提供IP协议的机密性、数据源验证、抗重放以及数据完整性保护服务。
    • 传输层的安全协议:传输层上的安全协议是TLS。基本特性是:加密和可靠。
    • 应用层安全协议:针对不同的安全机制可以使用HTTPS代替HTTP、S/MIME代替POP3/SMP,SSH代替telnet等等。
    • 应用下一代IPv6协议

2.实践过程

2.0 前提约定

  • 在此次实验中的相关主机的IP和MAC地址如下所示,下述图片为了排版比较小,请右键查看原图,谢谢

  • 机器名称 IP地址 MAC地址
    Ubuntu 18.04 192.168.200.3 00:0c:29:1f:45:3b
    seed 192.168.200.5 00:0c:29:0e:46:5a
    Metasplotable2 192.168.200.125 00:0c:29:a1:19:93
    kali 192.168.200.6 00:0c:29:e3:10:93
    windows2k 192.168.200.124 00:0c:29:A7:55:70
    windowsAttacker 192.168.200.4 00:0c:29:18:6f:6d
    DHCP服务器 192.168.200.120 \

2.1 ARP欺骗攻击

  • 这里我们通过两个步骤来展示ARP欺骗的结果:转发ftp登录信息,通过攻击机的转发两台靶机能ping通

  • 首先展示正常的ftp登录过程。登录方是192.168.200.4,登录服务器是192.168.200.124, 使用arp -a指令查看arp缓存表中的信息。查看kali下使用wireshark抓包结果

  • 登陆前arp信息 登录过程及登陆后arp信息 抓包结果
  • 接下来通过命令netwox 33 -b 00:0c:29:A7:55:70 -g 192.168.200.4 -h 00:0c:29:A7:55:70 -i 192.168.200.124netwox 33 -b 00:0c:29:18:6f:6d -g 192.168.200.124 -h 00:0c:29:18:6f:6d -i 192.168.200.4 对两台靶机进行ARP欺骗。

  • 之后,我们查询两台靶机的arp缓存表,得到如下结果

  • 192.168.200.124的arp缓存表 192.168.200.4的arp缓存表
  • 接下来,在攻击机中输入sudo su && cat 1 > /proc/sys/net/ipv4/ip_forword 开启攻击机的路由转发功能。

  • 尝试使用一台靶机ping通另一台靶机,并尝试ftp登录,在kali中使用wireshark抓包, 结果如下图

  • 欺骗之后再次尝试登录 欺骗之后尝试ping通 wireshark抓包

2.1 ARP欺骗第二种方法

  • 这里介绍另一个可以进行arp欺骗的工具,这一工具也可在第五个实验中使用ettercap

  • 在ubuntu中运行如下命令安装并运行(kali中应该也可以, 基于ubuntu的seed一定可以)

    sudo apt-get install ettercap-graphical
    sudo su
    ettercap -G
    
  • 打开之后依次点击Sniff > 选择网卡后点击确定 > Host > Scan for hosts > Host list > 选择两台靶机分别为targer1和target2 > Mitm > ARP poisoning。至此ARP欺骗自动完成。点击plugin标签有相关提供的.so静态库,可供直接调用用以截获并分析转发的数据包,并从中筛选信息。

  • 相关截图如下

2.2 ICMP重定向攻击

  • 此次攻击的靶机是windowsAttack, 攻击机是Ubuntu,相关参数在上文不在赘述。

  • 首先我们在Ubuntu中执行攻击命令netwox86 -f "host 192.168.200.4" -g 192.168.200.3 -i 192.168.200.2。命令参数f代表靶机地址,g代表靶机的下一跳地址,i代表伪造的身份。

  • 现在使用靶机打开任意网页,之后查看靶机的相关路由表信息。windows通过route print查看相关路由表信息。

  • 命令执行过程 命令执行后靶机的路由表
  • 这一步也能用上文提到的ettercap完成,在Mitm中选择ICMP redirect即可.

2.3 SYN Flood攻击

  • 此次攻击的靶机是metaplot,攻击端口是telnet的23端口,攻击机是ubuntu(这台ubunut是我日常的开发机,我给ubuntu搭建了kali的相关软件,感觉比kali顺手,可能是幻觉把)
  • 在Ubuntu中运行攻击指令netwox 76 -i 192.168.200.125 -p 23。这里注意 ,攻击机性能尽可能拉高,攻击机性能尽可能拉低。之前给metaplot分配了2核8G,攻击了1分钟内存还没耗尽,在用wireshark抓包的kali崩溃了。
  • 因为死机wireshark的抓包数据并没有保存下来,下面是telnet连接超时的截图

2.4 TCP RST攻击

  • 这个攻击比较简单,打开www.google.com,展示的页面就是RST攻击的结果

  • 这次我们的靶机是windowsAttack, 攻击机是Ubuntu。

  • 在攻击之前靶机可以正常打开网页,并可以通过ftp进行连接, 攻击机运行指令netwox 78 -i 192.168.200.4

  • 此时打开靶机,发现不能正常打开网页,并且连接远程连接靶机的ftp终端断开连接

  • 攻击结果相关截图和wireshark嗅探如下。

  • 攻击结果 wireshark嗅探结果
  • 这次攻击也可以使用ettercap一键完成,相关操作如上所述,不再赘述。

2.5 TCP会话劫持攻击

  • 这是这次作业最难的依次实验了,接下来将首先介绍通过netwox结合wireshark进行会话劫持的相关方法。
  • 首先我们使用windowsattack登录seedtelnet 192.168.200.5并在kali上使用wireshark进行抓包。
  • 接下来我们输入命令ls可以看到命令可以正常执行,并通过wireshark看到两次发送的telnet数据包,三次返回的telnet数据包和对应的三次TCP ACK
  • 这时为了让攻击效果比较明显,不妨玩大一点, 现在windowsattack上获取seed的管理员权限sudo su。这一步不必要,但是有了这一步攻击的内容就多了。
  • 再次回到kali的wireshark界面, 纪录192.168.200.5发送的最后一个ACK包对应的源端口目的端口sequence number(raw)Acknowledgement number(raw)
  • 这里我们必须要明白。seqnum是我发送包的序号,ACKnum是我收到包的序号。那么在构建包的过程中,下一个包的seqnum应该是上一个数据包的seq+1,但是我们看到最后一个包是ACK,他不是数据包,所以只需要原样抄下来就好了。
  • 接下来我们构建请求包netwox 40 --ip4-offsetfrag 0 --ip4-ttl (登录者TTL) --ip4-protocol 6 --ip4-src (攻击者IP) --ip4-dst (服务器IP) --tcp-src (原始端口) --tcp-dst 23 --tcp-seqnum (抓包可以看见raw seqnum) --tcp-acknum (抓包可以看见 ACK number(raw)) --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "7265626f6f740d00"
  • 最后解释一下--tcp-data这个字段是你需要执行的命令对应的十六进制ASCII码+0d00(0x00就是经常提到的的那个EOF结尾标志, 0x0d就是'/r'),我这是“reboot\r\n”。
  • 因为我们的指令的--ip4-src字段的IP填的是攻击机的IP,所以在攻击之后,会话就转移到了我们的攻击机上,实现了“劫持的过程”。
  • 回头去看wireshark抓到的包。会看到大片的红色错误报文,由两类报文组成:TCP Dup ACK XXXXTCP Retransmission 。其中TCP Dup ACK XXXX表示序号为XXXX的报文丢失,TCP Retransmission表示请求数据重传。
  • 此时会引起登陆机和服务器之间的ACK风暴,可以直接进行RES攻击结束登陆方的会话
  • 此时seed应该已经重启了。
  • 相关截图如下

2.5 TCP会话劫持攻击的第二种方法

  • 这一种就比较简单了,上文提到过的ettercap工具,在进行arp欺骗之后,可以通过view查看所有的网络连接,选择我们的TCP.port==23的连接就可以找到我么们的telnet登录会话
  • 点击下方的inject就可以注入指令。

3.学习中遇到的问题及解决

  • 问题1:ARP欺骗不成功
  • 问题1解决方案:IP地址和MAC地址的映射搞错了
  • 问题2:在最后一项实验中尝试使用wireshark抓包形成pcap文件,然后用tcpreplay工具进行修改数据包的相关参数并进行重放。但是一直不成功
  • 问题2解决方案:没有解决纠结一个晚上之后,改为手动生成数据包
  • 问题3:通过代码使用libpcap库手动构造数据包,并进行发送。但是一直出现poll()函数错误
  • 问题3解决方案:没有结果,以后应该也用不到我的代码了。找到了ettercap工具,通过此工具第一次成功做到TCP劫持,后来查找netwox的帮助,发现40号指令可以构造包含数据的指令包,就重做了一遍。
  • 问题4:我好弱智啊
  • 问题4解决方法:不想活了又怕死,没啥好办法。

4.实践总结

​ 这次实验最大的难点可能就是时间不够把,最近的作业挺多的,再加上最近心态比较崩溃这份作业写的挺艰难的。最近论文将要截稿实验还没作完,熬夜调代码第二天上课、看结果、继续调代码,越到ddl队友越不着急。慢慢的自己思考也很好,很享受这个过程,最后一个实验换了四个方法,两个没调通两个完成了。但是总想和别人比速度,也许是我的问题把。

参考资料

posted @ 2020-03-30 01:07  孙启龙20199102  阅读(564)  评论(1编辑  收藏  举报