NeCr00/NAC-Bypass

GitHub: NeCr00/NAC-Bypass

通过在交换机与合法工作站之间插入透明二层网桥来继承已有认证会话,从而绕过 802.1X/MAC 等 NAC 接入控制机制。

Stars: 7 | Forks: 3

# NAC Bypass ### 透明桥接网络访问控制绕过
[![版本](https://img.shields.io/badge/version-3.1-blue.svg?style=for-the-badge)](./nac_bypass.sh) [![Bash](https://img.shields.io/badge/bash-5.x-1f425f.svg?style=for-the-badge&logo=gnu-bash&logoColor=white)](https://www.gnu.org/software/bash/) [![平台](https://img.shields.io/badge/platform-linux-FCC624.svg?style=for-the-badge&logo=linux&logoColor=black)](https://www.kernel.org/) [![许可证](https://img.shields.io/badge/license-MIT-green.svg?style=for-the-badge)](#license) [![状态](https://img.shields.io/badge/status-production-brightgreen.svg?style=for-the-badge)](#)
一台 Linux 主机。两块网卡。继承工作站的 NAC 会话。
## 概述 `nac_bypass.sh` 可将配备两个以太网接口的 Linux 系统转换为位于合法工作站与网络交换机之间的透明二层网桥。该网桥在透明转发流量的同时,保留工作站的活跃 802.1X 或基于 MAC 的身份验证会话,使连接能够继续被 NAC 基础设施授权。 ## 架构 ee47985b-5e6f-4ceb-8141-278d55626ee5 ## 需求 | 组件 | 用途 | |---|---| | Linux kernel ≥ 4.x | `br_netfilter`、`nf_conntrack`、现代网桥 | | `iproute2` (`ip`) | 网桥 + 邻居 + 路由管理 | | `iptables`、`ebtables` | NAT 层 (传统版本或 `-nft` 兼容垫片均可) | | `tcpdump` | 被动学习 | | `macchanger` | 网桥 MAC 对齐 | | 两块物理以太网网卡 | `eth0` 连接交换机,`eth1` 连接工作站 | | Root 权限 | 网桥 + netfilter + sysctl 均需要 | 可选项:`nmcli` (用于 NM 取消托管)、`arptables`、`Responder`、`openssh-server`。 ``` sudo apt-get install iproute2 tcpdump macchanger ebtables iptables ``` ## 安装 ``` git clone https://github.com/yourname/nac-bypass.git cd nac-bypass chmod +x nac_bypass.sh ``` 无需构建步骤。这是一个独立的 Bash 脚本。 ## 用法 ``` nac_bypass.sh [options] ``` ### 常见工作流 ``` # 完整 pipeline:bridge + masquerade + monitor loop。按 Ctrl+C 停止并清理。 sudo ./nac_bypass.sh -R -S # 自定义 NIC 名称 sudo ./nac_bypass.sh -1 enp1s0 -2 enp2s0 # 如果被动学习无法看到网关 MAC,请固定它 sudo ./nac_bypass.sh -g aa:bb:cc:dd:ee:ff # 清理先前的运行(也可从 SIGKILL / 断电中恢复) sudo ./nac_bypass.sh -r ``` ### 选项 | 标志 | 参数 | 描述 | |------|----------|-------------| | `-1` | `` | 插入交换机的网卡 (默认: `eth0`) | | `-2` | `` | 插入工作站的网卡 (默认: `eth1`) | | `-b` | `` | 网桥名称 (默认: `nacbr0`) | | `-I` | `` | 链路状态监控接口 (默认: 与 `-2` 相同) | | `-g` | `` | 手动固定网关 MAC | | `-d` | `` | 主 DNS (默认: `1.1.1.1`) | | `-D` | `` | 备用 DNS (默认: `8.8.8.8`;设为 `''` 以禁用) | | `-m` | `` | 网桥默认路由的 metric 值 (默认: `0`) | | `-t` | `` | 被动学习超时时间 (默认: `45`) | | `-R` | | 启用 Responder 端口重定向 (NetBIOS / LLMNR / SMB / HTTP / …) | | `-S` | | 启用 sshd 重定向并启动该服务 | | `-r` | | 重置 / 清理先前的运行状态并退出 | | `-v` | | 详细模式 (DEBUG 日志) | | `-a` | | 自主模式 (无交互式提示) | | `-h` | | 帮助信息 | ### 运行攻击工具 网桥部署就绪后,脚本会打印横幅信息;请在**第二个终端**运行您的工具。通过网桥的默认路由 metric 值为 0,因此大多数内核套接字工具可直接使用。对于原始套接字工具,需显式固定源地址: ``` nmap -e nacbr0 -S 169.254.66.66 -sT -p- 10.0.0.0/24 nmap -e nacbr0 -S 169.254.66.66 -Pn -sS 10.0.0.0/24 ping -I nacbr0 10.0.0.1 curl --interface nacbr0 http://10.0.0.50/ netexec smb 10.0.0.0/24 -u alice -p 'Hunter2!' impacket-secretsdump alice@10.0.0.5 responder -I nacbr0 # if -R was supplied ``` ## 工作原理 | 步骤 | 脚本执行的操作 | |------|----------------------| | 1. 预检 | 检查 Root 权限、二进制文件、`br_netfilter`、`nf_conntrack`、网卡可用性、无网桥冲突、NM 冲突。失败时干净地中止。 | | 2. 主机锁定 | 停止 NM/networkd/wpa_supplicant,将网卡标记为未托管,禁用 NTP/IPv6,快照 sysctls + resolv.conf + 默认路由。 | | 3. 构建网桥 | 创建 `nacbr0` (关闭 STP),启用 EAPOL 转发,在 `-o nacbr0` 上安装出站锁定,然后在混杂模式下将两块网卡加入网桥。 | | 4. 被动学习 | 并行捕获 ARP / DHCP / SYN 流量;第一个可靠通道胜出。若没有同时获取到受害者和网关信息,则拒绝继续。 | | 5. 伪装 | Ebtables L2 SNAT (`SWMAC → COMPMAC`),iptables L3 SNAT (`BRIP → COMIP:高端口`),为虚构的网桥网关添加静态邻居表项,追加默认路由。 | | 6. 监控 | 每 5 秒轮询链路状态;在稳定断开时拆除 NAT,在稳定连接时重新部署。 | | 7. 清理 | 依据状态目录标记反向撤销每一项更改。恢复网卡、sysctls、服务、默认路由和 NM 托管状态。 | 所有的绕过 NAT 规则都位于专用的 `NACBYPASS_OUT` / `NACBYPASS_IN` / `NACBYPASS` 链中——清理操作只会删除这些链,不会触及操作人员安装的任何 防火墙、容器或 VPN 规则。 ## 故障排除 | 症状 | 可能原因 | 解决方法 | |---------|--------------|-----| | `br_netfilter is not available` | 内核模块缺失或被禁用 | `modprobe br_netfilter`;检查 `CONFIG_BRIDGE_NETFILTER=y` | | `Could not learn ... in 45s` | 工作站处于空闲状态 | 增加超时时间:`-t 120`,或等待其发送流量 | | `... but not gateway info` | 未见网关的 ARP/DHCP 流量 | 手动固定:`-g aa:bb:cc:dd:ee:ff` | | 工具可运行但无回复 | `bridge-nf-call-iptables=0` 或未加载 `nf_conntrack` | 两者均为强制要求;预检阶段会强制检查 | | 回复发往错误的网卡 | 操作者拥有更低 metric 值的默认路由 | 使用 `-m 0` (默认) 和/或通过 `-e nacbr0 -S 169.254.66.66` 固定工具 | | 工作站认证短暂断开 | 网桥绑定期间存在数百毫秒的间隙 | 可接受;多数 NAC 允许此类情况 | ## 免责声明 本软件仅用于**授权的安全测试和教育目的**。请仅在您拥有明确书面测试许可的网络和系统上使用。作者及贡献者不承担任何责任,也不对因滥用本程序造成的任何损害负责。对您不拥有的系统进行未经授权的使用可能违反当地、州或联邦法律。
标签:802.1X认证绕过, CTF学习, ebtables, iproute2, iptables, Linux工具, macchanger, MAC地址欺骗, NAC Bypass, 中间人攻击, 二层透明桥接, 内网渗透, 安全防御绕过, 应用安全, 模拟器, 流量转发, 物理接入安全, 端口探测, 红队基础设施, 红队评估, 网桥模拟, 网络准入控制, 网络嗅探, 网络安全, 透明代理, 防御绕过, 隐私保护