iptables进行端口复用与SSLH工具使用

目录

端口复用概念:

一,使用ICMP做遥控开关

创建端口复用链:

查看该链:

将流量转发至22端口:

开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中

关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉

let’s do it,如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

查看ZH链上的规则:

开启复用:

验证:

关闭复用:

验证:

二,使用tcp数据包中的关键字做遥控开关

创建端口复用链:

将流量转发至22端口:

开启开关:

关闭开关:

开搞:

让HTTPS、SSH 共享端口的——工具SSLH

安装 SSLH

配置 Apache 或 Nginx Web 服务器


端口复用概念

定义:端口复用是指不同的应用程序使用相同端口进行通讯。

场景:内网渗透中,搭建隧道时,服务器仅允许指定的端口对外开放。利用端口复用可以将3389或22等端口转发到如80端口上,以便外部连接。

一,使用ICMP做遥控开关

ICMP定义:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

创建端口复用链:

[root@manage ~]# iptables -t nat -N ZH

查看该链:

[root@manage ~]# iptables -nvxL -t nat --line

将流量转发至22端口:

[root@manage ~]# iptables -t nat -A ZH -p tcp -j REDIRECT --to-port 22

开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中

[root@manage ~]# iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT

关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉

[root@manage ~]# iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEPT

let’s do it,如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

[root@manage ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j ZH

查看ZH链上的规则:

开启复用:

[root@master ~]# ping -c 1 -s 1111 192.168.199.128

验证:

关闭复用:

[root@master ~]# ping -c 1 -s 1112 192.168.199.128

验证:

ssh -p 80 root@192.168.199.128

二,使用tcp数据包中的关键字做遥控开关

创建端口复用链:

iptables -t nat -N LZH

将流量转发至22端口:

iptables -t nat -A LZH -p tcp -j REDIRECT --to-port 22

开启开关:

iptables -A INPUT -p tcp -m string --string 'zhimakaimen' --algo bm -m recent --set --name zdm --rsource -j ACCEPT

关闭开关:

iptables -A INPUT -p tcp -m string --string ‘threathunterleaving’ --algo bmm recent --name zdm --remove -j ACCEPT

开搞:

iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name zdm --rsource -j LZH

[root@manage ~]# echo zhimakaimen | socat - tcp:192.168.199.132:80

[root@manage ~]# echo threathunterleaving | socat - tcp:192.168.199.132:80

HTTPSSSH 共享端口的——工具SSLH

安装 SSLH

yum install -y epel-release

yum install -y sslh 

安装 SSLH 时,将提示你是要将 sslh 作为从 inetd 运行的服务,还是作为独立服务器运行。每种选择都有其自身的优点。如果每天只有少量连接,最好从 inetd 运行 sslh 以节省资源。另一方面,如果有很多连接,sslh 应作为独立服务器运行,以避免为每个传入连接生成新进程。

配置 Apache Nginx Web 服务器

编辑 Web 服务器(nginx 或 apache)配置文件并找到以下行:

listen 443 ssl;

将其修改为:

listen 127.0.0.1:443 ssl;

如果你在 Apache 中使用虚拟主机,请确保你也修改了它。

VirtualHost 127.0.0.1:443

保存并关闭配置文件。不要重新启动该服务。我们还没有完成。

配置 SSLH

使 Web 服务器仅在本地接口上侦听后,编辑 SSLH 配置文件:

sudo vim /etc/default/sslh

找到下列行:

Run=no

将其修改为:

Run=yes

并修改以下行以允许 SSLH 在所有可用接口上侦听端口 443(例如 0.0.0.0:443)。

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

–user sslh:要求在这个特定的用户身份下运行。

–listen 0.0.0.0:443:SSLH 监听于所有可用接口的 443 端口。

–sshs 127.0.0.1:22 : 将 SSH 流量路由到本地的 22 端口。

–ssl 127.0.0.1:443 : 将 HTTPS/SSL 流量路由到本地的 443 端口。 保存并关闭文件。

最后,启用并启动 sslh 服务以更新更改。

sudo systemctl enable sslh

sudo systemctl start sslh

测试

检查 SSLH 守护程序是否正在监听 443。

ps -ef | grep sslh

现在,在kali上远程访问:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值