Port knockd服务

在一次靶场渗透中遇到了这个服务,刚开始ssh怎么也连不上,后来弄懂了有这么哥服务,感觉挺有意思的,也是一个ctf出题思路,作为积累,就写个笔记记录一下吧

概念

端口敲门(Port knocking)技术,可以理解为密码或者暗号服务,简单来说,就是访问“预先设定好的顺序端口”,服务器收到某客户端的端口尝试序列后,动态修改防火墙规则,打开某特定端口,这时候,这个端口就可以被某IP进行访问了。访问顺序端口跟敲门一样,也类似于密码或者暗号。

大白话

简单说就是事先设置好一个顺序,当你访问该端口时需要按照顺序来访问端口,这种服务很好的隐蔽了端口(因为扫出来端口是关闭状态),降低了被攻击风险

在真实渗透环境中遇到时,当ssh连不上,可以查看**/etc/knockd.conf**文件来确定是否有相关服务(当然前提是获取到了一定的权限,或者是通过文件包含来打),再做后续操作

端口敲门服务的实现

先看一下没开启knock服务 对方22端口的状态

为open状体

安装knockd

1
apt-get  install  knockd  -y #安装knock服务

1
vim /etc/knockd.conf #配置knock服务

设置敲门顺序

sequence = 7777,8888,9999 此处为定义敲门顺序号

当我们敲门时需按照这个顺序敲

将 seq_timeout 设置为 30,以免超时时间过小出错

最终配置如下(-I一定要改,否则敲门没用)

开启knockd

配置**/etc/default/knockd**,修改 START_KNOCKD=1。

启动knockd

1
service knockd start

配置防火墙策略

1
iptables -A INPUT -p tcp --dport 22 -j DROP #禁止22端口的ssh登陆也就是22端口不为open状态

如果设置错了用下面命令进行删除

1
iptables -D INPUT 编号

依次敲门

此时nmap扫对方22端口为filtered状态

直接ssh登陆也是time out的

使用nmap或者knockd敲门(也就是访问一下端口),这里使用knockd比较方便

1
knock 192.168.17.133 7777 8888 9999 -d 50 

敲门后,此时对方端口状态为

对方防火墙策略里也多了一条,显示开启了22端口

登陆成功

敲门关闭

敲门关闭22端口也是同理

1
knock 192.168.17.133 9999 8888 7777 -d 50 #-d 延迟为50毫秒

已关闭22端口