修改传输层的数据流

传输层是 TCP/IP 参考模型中的第三层,主要负责向两个主机中进程之间的通信提供服务。在传输层中,主要使用的协议是 TCP 和 UDP。其中,一些特定的服务都有固定端口。例如,Web 服务的 TCP 端口为80;SSH服务的 TCP 端口为22等。用户可以通过修改端口号,将源数据包发送到一个伪服务器。下面将介绍修改传输层数据流的方法。

使用 tcprewrite 工具

tcprewrite 是 TCP 数据流重放工具集 Tcpreplay 中的一个重写数据包工具。tcprewrite 工具可以修改PCAP包里的所有报文头部,如 MAC 地址、IP 地址、端口等。下面将介绍使用 tcprewrite 工具修改数据流。

tcprewrite 工具的语法格式如下所示:

tcprewrite [-flags] [-flag [value]] [–option-name[[=| ]value]]。

其支持的选项及含义:

  • -r string, –portmap=string (修改端口号)

  • -r string, –portmap=string (修改端口号)

  • -N string, –pnat=string (通过伪NAT重写IP地址)

  • -S string, –srcipmap=string (通过伪NAT改写源地址IP)

  • -D string, –dstipmap=string (通过伪NAT改写目的地址IP)

  • -e string, –endpoints=string (在最后两个点之间改写IP地址)

  • -b, –skipbroadcast (不重写广播和多播地址)

  • -C, –fixcsum (强制重新计算包头checksum)

  • -m number, –person=number (指定MTU)

  • –mtu-trunc (大于指定MTU报文被截断)

  • -E, –efcs (删除以太网最后一帧的校验和(删除最后 2 个字节))

  • –ttl=string (修改TTL值)

  • –tos=number (修改TOS值)

  • –tclass=number (修改tcalss值,主要用在ipv6)

  • –flowlabel=number (修改IPv6 Flow Label)

  • -F string, –fixlen=string (=pad用0填充pad的值,使满足报文包头的lenth的值,=del只留包头删除pad,主要用于抓的报文只抓了包头没有抓数据部分)

  • –skipl2broadcast (跳过重写2层的mac地址,和广播包的mac地址)

  • –skipl2broadcast (跳过重写2层的mac地址,和广播包的mac地址)

  • –skipl2broadcast (跳过重写2层的mac地址,和广播包的mac地址)

  • –skipl2broadcast (跳过重写2层的mac地址,和广播包的mac地址)

  • –hdlc-control=number (将Ethernet协议头转成Cisco HDLC)

  • -o string, –outfile=string (输出重写完成的文件名)

    举个实例:

    修改捕获文件 test.pcap 中的端口80为8080,,并且将修改后的数据包文件保存为 tcp.pcap。具体步骤如下:

    (1) 打开 test.pacp 捕获文件。(首先使用wireshark抓取)

    image-20220409134416883

    (2) 从上图可以看出,改捕获文件的数据包源端口为34464,目标端口为80。下面修改端口号80为8080.执行命令:

    tcprewrite –portmap=80:8080 -i /home/kali/Desktop/test.pcap -o /home/kali/Desktop/tcp.pcap

    执行命令以后,将不会输出任何信息。而是在当前目录下生成了一个新的捕获文件。

    image-20220409134955008

    (3) 打开 tcp.pcap 捕获文件,端口已经改掉了。

    image-20220409135058804

使用netsed工具

netsed是一款简易的数据修改工具。该工具支持对TCP和UDP的数据进行修改。渗透测试人员通过指定IP地址、端口号的方式,确定要修改的网络数据,然后再指定修改规则,就可以实现网络修改的功能。在修改规则中,用户不仅可以指定替换内容,还可以指定修改次数和数据流向。下面将介绍使用netsed工具修改数据的方法。

netsed工具的语法格式如下所示:

netsed [option] proto lport rhost rport rule1 [ rule2 … ]

其支持的选项及含义:

  • -4,–ipv4: 使用 IPv4 工具

  • -6.–ipv6: 使用 IPv6 工具

  • –ipany:自动判断IPv4或者IPv6

  • -h,–help: 显示帮助信息

  • rhost: 指定远程主机

  • rport:指定远程端口

  • ruleN:指定修改规则

  • falg:表示修改的数量

  • i和I:表示进站数据

  • o和O:表示出站数据

    举个实例:

    使用 netsed 工具修改 TCP 数据流。例如,将传输数据中的 baidu 替换为 test,并且将修改后的数据发送到主句61.135.169.121的80端口。执行命令:

    netsed –ipany tcp 443 61.135.159.121 80 s/baidu/test

    image-20220409134828403

    从输出的信息中可以看见,已经成功解析并且加载了一条规则,而且正在监听 TCP 的80端口。此时,攻击主机监听到的80端口数据包将会应用规则 s/baidu/test,然后将修改后的数据发送到主机61.135.169.121的443端口。

    麻了,封校好几天了,天天摆烂,呜呜。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!