(SEED-Lab) TCP/IP Attack Lab

      最后更新:2022-02-18 16:57:54 手机定位技术交流文章

      (SEED-Lab) TCP/IP Attack Lab

      欢迎大家访问我的 GitHub博客

      https://lunan0320.cn

      文章目录

      • (SEED-Lab) TCP/IP Attack Lab
      • 一、实验目标
      • 二、实验原理
      • 三、实验过程
        • 3.1 Task 1: SYN Flooding Attack
        • 3.2 Task 2: TCP RST Attacks on telnet and ssh Connections
          • 3.2.2 SSH connection
        • 3.3 Task 3: TCP RST Attacks on Video Streaming Applications
        • 3.4 Task 4: TCP Session Hijacking
          • 3.4.1 netwox hijacking
          • 3.4.2 scapy hijacking
        • 3.5 Task 5: Creating Reverse Shell using TCP Session Hijacking
      • 四、参考文献

      一、实验目标

      掌握TCP协议
      利用TCP SYN Flood攻击,以及TCP cookies
      应用TCP reset attack
      执行TCP会话劫持攻击
      掌握使用反向shell

      二、实验原理

      ARP攻击是利用了在TCP会话的各个阶段出现的问题。
      TCP SYN Flood攻击就是一种Dos攻击方式,利用的是在短时间内与Server建立多个TCP的半连接(未发送ACK数据包),因此Server在没有防御措施的情况下都会接收并建立连接等待ACK数据包。
      抵御该模式的方式就是TCP cookies,在完成三次握手之前不会为任何一个连接分配资源。
      TCP的reset以及会话劫持攻击都是在已经建立的连接的基础上,通过嗅探到seq以及ack序列号以及相关信息从而伪造数据包,破坏连接。
      反向shell,即是攻击者通过nc建立一个tcp server,然后在会话劫持的基础上,可以让受害者执行命令把shell通过nc的端口反弹回攻击者的主机中,从而拿到了受害者机器的执行权限。

      三、实验过程

      Server 、Client、以及Attacker的IP地址以及MAC地址如下表
      Host IP
      Server 10.0.2.5
      Client 10.0.2.6
      Attacker 10.0.2.8

      3.1 Task 1: SYN Flooding Attack

      首先查看系统中设定好的SYN队列的长度是128。
      在这里插入图片描述

      查看队列的使用情况
      在这里插入图片描述

      检查是否开启了SYN的cookie策略

      [外链图片转存失败,源站可能有防在这里插入!盗链机制,议描述]将图片上https://传(imblog.csdnimg.cn/ea2UuU9D-1645082347595)(media/59af512014d36d576e743a177dd9f41c.png)]

      由红色部分可知,已经开启了cookie策略
      因此,需要关闭这个SYN cookie策略**。如下图所示。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-blog.csdnimg.cn/7eec7beba7da4940bc3a974b77fa0fd1.png6)(media/a5635f2e1ab828cceee0bb7974a532bf.png

      使用Client去telnet到Server,观察这个过程前后的队列端口使用情况。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtJt9Nhsnimg.cn/072b063347596)(2caf1ed9e448cdbbcd.pngi/9e6b48011e4209205baa14c19b510b70.png)]

      在成功登录到Server之后,再次查看。可以看到ESTABLISHED,表示已经建立了从Server到Client的TCP连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sz3bAfon-1645082347597)(media/61a26fe616055f63ffa680e5d14d7e40.png)]

      为了在Attacker中实现SYN flood Attack,此时考虑使用netwox工具。
      根据文档提示,此处应该使用的number是76,目的IP地址就是Server的IP地址,即10.0.2.5。端口号是23(因为此处使用的是telnet连接方式)。
      此处的-s raw表示的是对源IP地址的混淆,使得其随机,更好的达到欺骗目的主机的作用。
      在这里插入图片描述

      接着在Server中查看端口以及SYN队列的使用情况。可以看到,Server建立的一些半连接状态其实都是与一些不存在的主机建立的,此处就是使用的raw的作用,使得IP地址变为随机的。

      从端口上可以看出,均是23号端口,就是一个SYN flood Attack
      的过程,实现的都是tcp的连接。

      从连接状态中可以看出,大量的连接都已经是处于SYN_RECV的状态,表示这个连接是半打开的。
      在这里插入图片描述

      为了验证SYN flood
      Attack是否已经成功,即SYN序列是否已满。此时需要Client再度尝试telnet连接Server,从结果中可以看到,等待较长时间后,Client都没有和Server建立起连接,这说明Client的tcp的SYN请求被Server搁置了,因为Server的SYN队列都被半开放的连接攻击给占满了,不能再给出新的连接了。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7zzfLwK-1645082347598)(media/ee6f21d99a3b5254576afa8098d37906.png)]

      此时,考虑打开Server的SYN cookies机制。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VU6EjZPj-1645082347598)(media/6ad9480131ad77f40092c270d2a85002.png)]

      重复上述过程。

      首先查看一下Server的连接状态。与之前相同。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9PAO6EGd-1645082347599)(media/a16daeb1f2c1b97ca2383c45a72b20b1.png)]

      接着在Client中telnet Server。发现也是可以正常连接成功的。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传imag599)(media/3cde02d25021a604e67e798eee310ba5.png)]

      接着在Server中使用netstat -na |gerp
      tcp查看tcp连接。同样可以看到Server与Client建立起来的这条tcp连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q2AcBz3P-1645082347599)(media/b7883c228605050af66cb8b3e3c6ab19.png)]

      然后在Attacker中使用netwox的SYN洪泛攻击技术对Server的SYN序列展开攻击。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传347600)(media/f7b2967b854df64ffc9d531a6f4e0e31.png)]

      在Server中继续使用netstat -na |gerp
      tcp去查看tcp连接。可以看到,同样是有许多随机IP地址发起的连接,这也是一种SYN_RECV的状态,表示是半连接的。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传l,Bz-1645082347601)(media/209c0b873e9eef4511be0ff0f0bf71d3.png)]

      在这里插入图片描述

      3.2 Task 2: TCP RST Attacks on telnet and ssh Connections

      3.2.1 TCP RST Attack
      在这里插入图片描述

      首先在Client中去通过telnet命令去连接Server
      10.0.2.5,在正确输入password之后成功登录。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrVgDUD1-1645082347603)(media/fda9418296f4b9946b3e3447c75798cb.png)]

      首先考虑使用netwox命令去破环连接。

      在Attacker中使用netwox命令对该连接实施攻击。
      在这里插入图片描述

      可以看到,在Client中原本建立的连接已经被中断。说明攻击成功。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ANXZzME-1645082347605)(media/fae6682c0903ef2b7a0f292234d37dc9.png)]

      接着考虑使用scapy的方式去破环连接。

      在Client与Server通过telnet命令建立了连接之后,在Attacker中通过Wireshark抓包方式,查看二者之间的数据包。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wPzuaKNy-1645082347606)(media/62103680d1c40f69822102ff9481c826.png)]

      通过头部获取Client与Server之间的IP、Port、Sequence信息。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传606)(media/7619c80cb398a11d6d6737be7b3a0db8.png)]

      因此可以在Attacker中写出Scapy的代码:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wwz7AEND-1645082347607)(media/859f8f3f7a41ccc52d854dc54dfe690e.png)]

      此处需要注意的是需要以root权限运行程序

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAWzjt7X-1645082347607)(media/507e03ff7ffd7f4102f981fe8730496b.png)]

      在Attacker中运行该程序

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yyY1ue2-1645082347608)(media/61c101cba725ae48f20cbfbcfce0d5bd.png)]

      然后回到Client中继续想使用ls命令的时候,发现连接已经中断了,说明使用scapy程序攻击的方式也是取得了成功的。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0NCA6eb-1645082347608)(media/5b6c788bdc0736e064bbf0648245bbd4.png)]

      3.2.2 SSH connection

      首先是通过ssh命令建立Client与Server之间的连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKqEIpUD-1645082347609)(media/d22b84d6c31f590e1f21583f1c95d3a6.png)]

      此时可以看到的是连接状态是ESTABLISHED.

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4e8Ph7vt-1645082347609)(media/52a410a5e5dbe05b010d4ca104629e2f.png)]

      第一种方法是考虑使用netwox命令:

      在Attacker中使用netwox命令去攻击:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsmcOptq-1645082347610)(media/102b4903f43d505ec6f8bd1942eccb30.png)]

      回到Client中查看连接情况,可以看到当输入ls时候,提示连接被破坏了。此时继续查看ip地址,发现是10.0.2.6,这是Client的地址,说明这个连接是被破坏了的。说明攻击成功。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i0)(media/5c73d065dc2c1893996242fbe3ef1847.png)]

      第二种方法是考虑使用scapy程序:

      在Client与Server之间建立连接时,在Attacker中使用Wireshark抓包工具,查看到了二者直接的数据包。(数据部分被加密)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73H5jmXS-1645082347611)(media/1d83dcb7275e1330c2605298cb7f5abb.png)]

      分析查看可追踪数据包的IP、Port、NextSequence

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNOeFFDO-1645082347611)(media/a9496c9a6a7025441bf535b96cd4d83f.png)]

      因此可以在Attacker中写出代码:

      此处需要注意的是sport应该为22,因为ssh是默认22端口的。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iWJwhgUe-1645082347612)(media/401b8d67c443c55cb507cb65ba197链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传tf40d12)(media/72fb0b28782e0d3abfd04910deba3d31.png)]

      在这里插入图片描述

      此时回到Client中可以看到连接被破坏了。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1UMQViB-1645082347613)(media/c35e6894f9cdcd227511253f8eba5ded.png)]

      在wireshark中可以看到,说明对ssh方式的连接,通过scapy的方式也可以攻击成功。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传613)(media/9a2fcb23b0cb2b04c1471ba6b090f986.png)]

      3.3 Task 3: TCP RST Attacks on Video Streaming Applications

      首先在Client中打开一个video,可以正常观看。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-43CfHZHD-1645082347613)(media/ba9ef5e154675e3215b1883a46a21f99.png)]

      此时可以看到Client与video Server建立了多条tcp连接。处于Established状态。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img.14)(media/1ad60709f8c091be4549bc1008e19a0b.png)]

      接着在Attacker中使用netwox命令去破环Client与video Server的连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-reSOdkGm-1645082347614)(media/9514c48b9d36f1b2866b2ad525fe70e6.png)]

      然后在Client中就可以看到正常播放的视频此时出现了卡顿,一直显示的是缓冲中。其实这就是因为Client已经与video
      Server断开了连接,因此会一直显示处于缓冲的状态。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1IaijoqW-1645082347614)(media/48fcab0bb3363a4517fab19cf3e2ea07.png)]

      此时在Client中查看之前建立的几条连接是否正常。可以看到几条连接均已经断开,说明攻击是成功的,破坏了Client与video
      Server的连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FSH927L-1645082347615)(media/74b01dddb4b28a1d88b8cc44e613f534.png)]

      3.4 Task 4: TCP Session Hijacking

      3.4.1 netwox hijacking

      为了模拟会话劫持之后以Client的身份删除Server上的重要文件,因此首先在Server中创建一个demo文件,本实验的成功取决于该文件是否能够被Attacker删除。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWrlQ9ci-1645082347615)(media/446a829f59104c381862b03a011263ba.png)]

      接着对rm -rf demor命令做十六进制。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bui7EuQy-1645082347615)(media/95d48d711b568a3b802004aec6fadff2.png)]

      原因解释:此处用hex是因为netwox命令中的TCP data部分是十六进制的格式。

      此处‘r’是为了使得我们注入的指令能够正确执行,与其他指令相区分。

      首先是在Client中通过telnet 10.0.2.5的方式连接到Server中。

      接着在Attacker中通过wireshark分析最后一个数据包的seq以及ack序列号。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZSrc6it-1645082347616)(media/f03179eabbdd447856353ba38a936442.png)]

      此处的数据包提示了是从Client到Server的数据包,提示了序列号和确认号。

      此处在劫持过程中Attacker中所使用的就是从Client发送到Server的序列号为seq,确认号为Ack。

      根据文档中所给提示,需要在使用netwox时候对参数进行相关的设置。

      BPDNPP[B67T0KC}7]W``Y_5

      执行的命令如下。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kSP1Nud9-1645082347616)(media/b5c52c868a77f81a1d5ca11fe06cd003.png)]

      在Attacker执行上述命令之后得到如下回显。这是我们构造的hijacking的数据包。

      在Attacker中的Wireshark中查看,可以看到出现了Retransmission的信息,表示数据包一直在重传。这是合理的,因为这个会话已经被Attacker劫持了。Client与Server之间将无法通信。
      在这里插入图片描述
      在这里插入图片描述

      此时,在Server中查看会发现demo文件已经被删除。表示进行的会话劫持是成功的。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFvSCkT3-1645082347617)(media/16c7ec567ad43f2c3d5d5bafaf8b62a8.png)]

      3.4.2 scapy hijacking

      首先是Client与Server建立telnet的TCP连接。

      此处,在Server中创建一个demo2的文件

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfnDvIDq-1645082347617)(media/33c245369889133e49f69a8588d2ff83.png)]

      与netwox劫持原理相同,使得Client telnet 10.0.2.5连接到Server中。

      在Attakcer中抓包查看telnet过程中的最后一个数据包,由此可以得到IP、port、seq、ack等信息

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ibsv6gHs-1645082347618)(media/f3a87216a7071d34c125c011326fabd8.png)]

      根据上述信息构建此处代码TCP_hijacking.py

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tl8RpUUV-1645082347618)(media/051fa34cd525cb8c9bec7dca235b8236.png)]

      在Attacker中运行该文件(root身份运行)。可以看到构造的数据包的信息如下。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H86tN0xk-1645082347619)(media/3daead3606127e95811624de310b7d7e.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSorWw36-1645082347619)(media/234620db6fd3d2b7f03ad4834f6ba4aa.png)]

      此时,回到Client中,发现已经无法在其中键入命令。光标被锁死。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Em8vLy4q-1645082347620)(media/aa488dc01bb6e7e236a2ff87373f15e2.png)]

      查看Attacker中的TCP数据包信息。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UxDO0zMe-1645082347620)(media/78f5b63ee58120db4c8d86360bc2300d.png)]

      对这些重传的数据包追踪TCP流信息。可以清楚的看到我们构造的命令已经通过Client在Server中执行。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zz1WCydR-1645082347621)(media/988157a44bd6c3ea48db0b24f8b3094c.png)]

      此时,在Server中查看文件信息,发现之前文件demo2还在,但是当执行完攻击命令之后,demo2文件已经被删除。说明通过scapy命令也完成了会话劫持攻击。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeirypEv-1645082347621)(media/c719452bb6049b46d13822a4c9f54c9b.png)]

      3.5 Task 5: Creating Reverse Shell using TCP Session Hijacking

      首先在Attacker中开启监听9090端口,从Server中反射回的shell会通过9090端口返回回来。

      此处nc命令的使用是表示在Attacker中开启的是9090端口,也就是相当于启动了一个tcp服务,此服务监听了从9090端口输入进来的内容。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I5fyPHdc-1645082347621)(media/fe4284d63a03be7bd9114618c7720fd6.png)]

      接着在Client中使用telnet命令去连接Server 10.0.2.5的IP地址。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiYxASbW-1645082347622)(media/890a4ee63f098586bd66cefa4ba06b81.png)]

      在Server中使用netstat
      -na命令,可以看到已经建立了从10.0.2.5到10.0.2.6,即Server到Client的连接。

      P8$G{O$~TY`LR%4}@MBL2{C

      在连接过程中,Attacker捕获其中的tcp数据包,并提取最后一个数据包的信息如下。得到IP、Port、Seq、Ack这类相关信息。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufhtWi77-1645082347622)(media/510e52452a6f484f24403f544765a3cb.png)]

      以此信息,在Attacker中构建TCP_reverse_shell.py程序文件。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nq30xGvb-1645082347623)(media/04a6df4a6154f9d1784a2c9518e31149.png)]

      在Attacker中运行该Scapy程序。得到了构造的数据包的信息。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deIk3qrH-1645082347624)(media/16098a43a73617e1f69f6774334e6004.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9KbrmXkD-1645082347626)(media/efe4bf9152f1bf6a9380b7d135cf32fc.png)]

      接着在Attacker中的9090端口回显了从Server 10.0.2.5的信息。

      在Server中查看此时的连接。可以看到已经和Attacker 10.0.2.8
      的9090端口建立了tcp连接。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8U8qRlrr-1645082347626)(media/d0b2ec88436cd1f3d26335eefaa53c53.png)]

      在Client中由于会话被劫持,已经不能再输入其他的命令了。输入命令也会没有反应。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmPa40IY-1645082347627)(media/535889bf830d15f11361fb4659cb5a06.png)]

      此时查看IP地址,发现已经是Server的IP地址了,即已经拿到了Server的Reverse_shell。攻击成功!

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KV029USO-1645082347627)(media/12444dbfd97347c919c07e24cb5fac60.png)]

      文件描述符概念:标准输入为0,标准输出为1,标准错误输出为2。
      &1是标准输出文件的主机。0<&1是将标准输入由标准输出的主机输入。2>&1是将标准错误输出到标准输出的主机上。也就是说shell的输入输出都是由攻击者来控制的了。因此就可以实现了远程控制反弹shell。

      四、参考文献

      [1] 深入浅出TCP中的SYN-Cookies - SegmentFault
      思否

      https://segmentfault.com/a/1190000019292140

      [2] TCP SYN-Cookie的原理和扩展_Netfilter,iptables/OpenVPN/TCP guard:

      https://blog.csdn.net/dog250/article/details/51468729

      [3] Linux Netcat 命令——网络工具中的瑞士军刀 -
      简书

      https://www.jianshu.com/p/877d72133987

      [4] Linux 文件 1.4—文件描述符0 12(文件操作简述) https://cxymm.net/article/qq_45831156/107469716

      [5] 使用netcat的正向 / 反向shell - botoo - 博客园
      (cnblogs.com)

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/18603.html

          热门文章

          文章分类