修改传输层数据流
传输层是 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抓取)
(2) 从上图可以看出,改捕获文件的数据包源端口为34464,目标端口为80。下面修改端口号80为8080.执行命令:
tcprewrite --portmap=80:8080 -i /home/kali/Desktop/test.pcap -o /home/kali/Desktop/tcp.pcap
执行命令以后,将不会输出任何信息。而是在当前目录下生成了一个新的捕获文件。
(3) 打开 tcp.pcap 捕获文件,端口已经改掉了。
使用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
从输出的信息中可以看见,已经成功解析并且加载了一条规则,而且正在监听 TCP 的80端口。此时,攻击主机监听到的80端口数据包将会应用规则 s/baidu/test,然后将修改后的数据发送到主机61.135.169.121的443端口。
麻了,封校好几天了,天天摆烂,呜呜。