Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )

目录

[🔍 1. Authpf概述与Shell设置的作用](#🔍 1. Authpf概述与Shell设置的作用)

什么是Authpf?

Shell设置为/usr/sbin/authpf的作用与含义

[🛠️ 2. Authpf工作原理与防火墙绕过机制](#🛠️ 2. Authpf工作原理与防火墙绕过机制)

技术栈

工作原理

防火墙绕过机制

Shell关联

[🌐 3. Authpf与SSH认证及服务探测的关联](#🌐 3. Authpf与SSH认证及服务探测的关联)

关联机制

渗透测试与红队流程

为何进行Nmap认证后扫描

[🚀 4. 案例分析:SSH认证后端口开放原理](#🚀 4. 案例分析:SSH认证后端口开放原理)

案例背景

为何SSH认证后可访问8081端口

多端口探测原理

[🧩 5. 补充知识点](#🧩 5. 补充知识点)

Authpf配置细节

渗透测试中的其他利用

Nmap扫描技术

[📊 6. 完整案例:利用Authpf绕过防火墙](#📊 6. 完整案例:利用Authpf绕过防火墙)

案例背景

完整步骤(补充原文不足)

[🧠 7. Authpf与渗透测试/红队的技术水平](#🧠 7. Authpf与渗透测试/红队的技术水平)

技术水平要求

红队应用

[🛡️ 8. 防御措施](#🛡️ 8. 防御措施)

[🔚 9. 总结](#🔚 9. 总结)


创作不易 点个赞吧! 哈哈哈


🔍 1. Authpf概述与Shell设置的作用

什么是Authpf?

authpf是OpenBSD提供的一种认证防火墙工具,通过SSH认证动态修改pf(Packet Filter)防火墙规则,控制用户网络访问权限。其核心功能是:

  • 用户通过SSH登录,触发authpf加载特定pf规则,允许用户IP访问特定服务或端口。

  • 用户断开SSH会话后,规则自动移除,确保访问权限临时性。

Shell设置为/usr/sbin/authpf的作用与含义

  • 作用

    • 将用户的登录Shell设置为/usr/sbin/authpf(如案例中的nfsuser),意味着用户通过SSH登录时,不会获得传统交互式Shell(如/bin/sh),而是由authpf接管,执行防火墙规则修改。

    • 登录成功后,authpf根据用户身份加载预定义的pf规则(如/etc/authpf/users/nfsuser/authpf.rules),允许用户IP访问特定服务(如NFS、HTTP)。

    • 断开SSH后,authpf移除规则,关闭访问权限。

  • 含义

    • 提供细粒度的访问控制,基于用户身份而非固定IP,适合动态IP环境(如无线网络)。

    • 实现类似Captive Portal或VPN的认证机制,限制未认证用户访问网络资源。

  • 案例关联

    • /etc/passwd中,nfsuser:x:1002:1002::/home/nfsuser:/usr/sbin/authpf表明nfsuser使用authpf作为Shell,SSH登录将触发防火墙规则修改,开放特定端口(如8081)。

🛠️ 2. Authpf工作原理与防火墙绕过机制

技术栈

  • 工具authpf(认证Shell)、pf(OpenBSD防火墙)、OpenSSH(认证协议)、Nmap(端口扫描)。

  • 配置文件

    • /etc/authpf/authpf.conf:全局配置(可为空但必须存在)。

    • /etc/authpf/authpf.rules:默认规则,适用于无用户特定规则的情况。

    • /etc/authpf/users/<username>/authpf.rules:用户特定规则。

    • /etc/pf.conf:主防火墙规则,包含authpf锚点。

  • 协议:SSH(认证)、PF(规则管理)、TCP/UDP(网络流量)。

工作原理

  1. SSH认证

    1. 用户以authpf作为Shell(如nfsuser)通过SSH登录,系统调用/usr/sbin/authpf

    2. authpf验证用户身份,获取登录IP(如10.10.16.22)。

  2. 规则加载

    1. authpf读取用户特定规则(如/etc/authpf/users/nfsuser/authpf.rules)或默认规则(/etc/authpf/authpf.rules)。

    2. 规则通过pfctl加载到pf锚点(如authpf/nfsuser(PID)),允许用户IP访问特定服务(如8081端口)。

  3. 规则移除

    1. 用户断开SSH后,authpf移除锚点规则,恢复默认防火墙限制。

防火墙绕过机制

  • 默认限制pf默认阻止非必要流量(如案例中的block all策略)。

  • 动态开放 :SSH认证后,authpf添加规则(如pass in quick on $wifi_if proto tcp from $user_ip to any port 8081),允许用户IP访问受限服务。

  • 渗透测试中的利用

    • 攻击者通过获取SSH凭据(如案例中的nfs.key)登录,触发authpf开放端口。

    • 使用Nmap扫描发现新开放端口(如8081),进一步利用服务漏洞。

Shell关联

  • authpf作为Shell接管用户登录,不提供交互式终端,而是执行防火墙规则管理。

  • SSH认证成功后,authpf基于用户身份和IP动态调整pf规则,控制网络访问。


🌐 3. Authpf与SSH认证及服务探测的关联

关联机制

  • SSH认证

    • 用户通过SSH登录(如ssh -i nfs.key nfsuser@10.129.2.232),authpf验证成功后加载规则,允许用户IP访问特定服务。
  • 服务探测

    • 认证前,Nmap扫描可能仅发现少量开放端口(如22/SSH)。

    • 认证后,authpf开放新端口(如8081),Nmap扫描可检测这些变化,揭示隐藏服务。

  • 案例中的关联

    • 登录nfsuser后,authpf加载规则,开放8081端口。

    • Nmap扫描(nmap -T4 -p- 10.129.2.232 -Pn)发现新端口,表明防火墙规则已动态修改。

渗透测试与红队流程

  1. 信息收集

    1. 使用Nmap进行初始扫描(nmap -T4 10.129.2.232),识别开放端口(如22)。

    2. 发现authpf用户(如nfsuser)通过/etc/passwd

  2. 凭据获取

    1. 通过命令注入(如db=;cat /home/bob/ca/intermediate/certs/nfs.key)获取SSH私钥。
  3. SSH登录

    1. 使用私钥登录(ssh -i nfs.key nfsuser@10.129.2.232),触发authpf规则加载。
  4. 端口扫描

    1. 再次运行Nmap(nmap -T4 -p- 10.129.2.232 -Pn),发现新端口(如8081、NFS、RPC)。
  5. 服务利用

    1. 访问8081端口(如http://10.129.2.232:8081),分析服务功能。

    2. 利用NFS服务(如mount -t nfs 10.129.2.232:/home/nfsuser /mnt)获取文件系统访问。

为何进行Nmap认证后扫描

  • 目的 :验证authpf是否开放新端口,识别隐藏服务。

  • 原因

    • authpf基于认证动态修改防火墙规则,初始扫描可能无法发现受限服务。

    • 认证后扫描可揭示新开放端口(如8081、2049/NFS),为后续利用提供目标。

  • 红队意义

    • 发现隐藏服务(如管理接口、NFS共享)。

    • 结合漏洞(如NFS未启用root_squash),实现权限提升或横向移动。


🚀 4. 案例分析:SSH认证后端口开放原理

案例背景

  • 漏洞 :命令注入(POST /select)获取CA文件和SSH私钥(nfs.key)。

  • 目标 :通过authpf认证,开放端口(如8081),访问受限服务。

为何SSH认证后可访问8081端口

  • 原理

    • 默认状态下,pf防火墙阻止8081端口访问。

    • nfsuser的Shell为/usr/sbin/authpf,登录后触发规则加载(如pass in quick on $wifi_if proto tcp from $user_ip to any port 8081)。

    • 规则基于用户IP(10.10.16.22)开放8081端口。

  • 技术栈

    • OpenSSH :处理认证,验证nfs.key

    • authpf :加载用户特定规则(/etc/authpf/users/nfsuser/authpf.rules)。

    • pf:动态修改防火墙规则,允许TCP流量到8081。

  • 前后关联

    • 前置 :通过命令注入获取nfs.keydb=;cat /home/bob/ca/intermediate/certs/nfs.key)。

    • 认证 :SSH登录触发authpf规则加载。

    • 后置 :Nmap扫描发现8081端口开放,浏览器访问http://10.129.2.232:8081确认服务。

多端口探测原理

  • Nmap扫描nmap -T4 -p- 10.129.2.232 -Pn):

    • -T4:加速扫描。

    • -p-:扫描全端口(1-65535)。

    • -Pn:跳过主机发现,直接扫描。

  • 结果 :发现8081、2049(NFS)、111(RPC)等端口,表明authpf规则放通多个服务。

  • 原因authpf规则可能包含多端口放行(如pass in quick on $wifi_if proto tcp from $user_ip to any port { ssh, http, https, 8081, 2049 })。


🧩 5. 补充知识点

Authpf配置细节

  • /etc/authpf/authpf.allow :指定允许认证的用户(如nfsuser),*表示允许所有用户。

  • /etc/authpf/authpf.banned :禁止用户名单,优先级高于authpf.allow

  • /etc/authpf/authpf.message :自定义登录消息(如案例中的Hello nfsuser. You are authenticated from host "10.10.16.22")。

  • 锚点机制

    • 规则加载到authpf/<username>(PID)锚点,确保用户隔离。

    • 示例:nat-anchor "authpf/*", rdr-anchor "authpf/*", anchor "authpf/*"

渗透测试中的其他利用

  • SSH会话劫持

    • 攻击者可尝试劫持SSH会话,维持authpf规则有效。

    • 防御:配置/etc/ssh/sshd_config启用ClientAliveInterval 15ClientAliveCountMax 3,60秒内断开劫持会话。

  • NFS服务利用

    复制代码
    showmount -e 10.129.2.232 mount -t nfs 10.129.2.232:/home/nfsuser /mnt
    • 如果authpf开放2049端口,可挂载NFS共享:

    • 检查root_squash配置,若未启用,可提权。

  • RPC服务利用

    • 端口111(RPC)可能暴露rpcbind服务,使用rpcinfo -p 10.129.2.232枚举服务。

Nmap扫描技术

  • SYN扫描nmap -sS):快速,检测开放/关闭端口。

  • ACK扫描nmap -sA):识别防火墙过滤端口。

  • FIN/NULL/Xmas扫描nmap -sF/-sN/-sX):绕过简单防火墙,检测开放端口。

  • 案例关联 :认证后使用全端口扫描(-p-)发现authpf开放的服务。


📊 6. 完整案例:利用Authpf绕过防火墙

案例背景

  • 目标 :Web服务器(10.129.2.232)运行OpenBSD,存在命令注入漏洞(/select)和authpf认证机制。

  • 目标服务:8081端口(HTTP)、2049(NFS)、111(RPC)。

  • 前提 :通过命令注入获取nfs.key和CA文件。

完整步骤(补充原文不足)

  1. 初始扫描

    nmap -T4 10.129.2.232

  2. 命令注入获取凭据

复制代码

db=;cat /home/bob/ca/intermediate/certs/nfs.key

  1. SSH登录
复制代码

ssh -i nfs.key nfsuser@10.129.2.232

  1. 二次扫描

    nmap -T4 -p- 10.129.2.232 -Pn

  2. 访问8081端口

    1. 浏览器访问http://10.129.2.232:8081,确认服务功能。
  3. NFS利用

    showmount -e 10.129.2.232 mount -t nfs 10.129.2.232:/home/nfsuser /mnt

  4. 伪造客户端证书(结合原文):

    复制代码
    db=;cat /home/bob/ca/intermediate/certs/intermediate.cert.pem db=;cat /home/bob/ca/intermediate/private/intermediate.key.pem
    
    
    openssl genrsa -out client.key 2048 openssl req -new -key client.key -out client.csr openssl x509 -req -in client.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out client.pem -days 1024 -sha256 openssl pkcs12 -export -out client.pfx -inkey client.key -in client.pem -certfile intermediate.cert.pem
    1. 获取CA文件:

    2. 生成证书:

    3. 导入Firefox,访问https://fortune.htb/admin

  5. AD域利用

    复制代码
    impacket-getTGT -dc-ip 10.129.2.232 -cert-pfx client.pfx -pfx-pass password123 fortune.htb/client1
    1. 使用证书进行PKINIT攻击:

🧠 7. Authpf与渗透测试/红队的技术水平

技术水平要求

  • 初级

    • 理解SSH认证和Nmap扫描基础。

    • 执行命令注入,获取nfs.key

  • 中级

    • 熟悉authpf机制,分析防火墙规则。

    • 使用Nmap高级扫描(如FIN/NULL)绕过过滤。

  • 高级

    • 结合客户端证书伪造,访问mTLS服务。

    • 利用NFS或PKINIT进行权限提升和横向移动。

红队应用

  • 认证绕过 :通过authpf开放端口,访问隐藏服务。

  • 持久化:维持SSH会话或伪造证书,确保长期访问。

  • 横向移动:利用NFS共享或AD域接口,扩展攻击面。


🛡️ 8. 防御措施

  • 限制SSH访问

    • 配置/etc/ssh/sshd_config限制AllowUsers nfsuser

    • 启用ClientAliveInterval防止会话劫持。

  • 保护CA文件

    • 限制/home/bob/ca/目录权限,防止命令注入泄露。
  • authpf配置

    • 使用authpf.banned禁止高危用户。

    • 限制规则放行端口,仅允许必要服务。

  • Nmap防御

    • 配置pf检测异常扫描(如block in quick proto tcp flags F/F)。
  • AD域防护

    • 禁用PKINIT或限制信任CA。

    • 监控异常TGT请求。


🔚 9. 总结

  • authpf是OpenBSD的强大认证防火墙工具,通过SSH认证动态修改pf规则,实现细粒度访问控制。在渗透测试中,攻击者可利用命令注入获取SSH凭据,触发authpf开放端口(如8081、NFS),结合Nmap扫描发现隐藏服务,进一步利用客户端证书伪造访问mTLS保护的AD域资源。
  • 本文章展示了从漏洞发现到权限提升的完整流程,强调了技术栈的深度和逻辑关联。防御需从SSH配置、CA保护和防火墙规则优化入手。
相关推荐
cipher23 分钟前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
BingoGo11 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack11 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
Jony_1 天前
高可用移动网络连接
网络协议
chilix1 天前
Linux 跨网段路由转发配置
网络协议
JaguarJack1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack2 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
一次旅行3 天前
网络安全总结
安全·web安全