恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
逆向笔记:锐捷 802.1X 客户端多网卡检测机制与 VirtualBox 兼容补丁
首页
资讯中心
/
逆向笔记:锐捷 802.1X 客户端多网卡检测机制与 VirtualBox 兼容补丁
逆向笔记:锐捷 802.1X 客户端多网卡检测机制与 VirtualBox 兼容补丁
发布时间:2026/9/26 3:01:42
目标:锐捷认证客户端 5.0.2014.108(RG_SU_For_Windows 6.61)环境:Windows 10 / PowerShell 7 / objdumpTL;DR锐捷的「多网卡检测」分三步:建可疑网卡名单 → 真实联网探测 → 弹窗并踢下线。建名单时豁免PnpInstanceID含VMWARE的网卡,所以 VMware 的 VMnet 一直无事;探测方式是把 socketbind到每块候选网卡 IP,再真的去connect www.baidu.com(最多 3 次);命中后调用StopAuthentication(102),发 Logoff 报文并释放 IP,把你踢下线。VirtualBox Host-Only 网卡(192.168.56.1)三条豁免都不沾、又通过了探测,于是中招。本文给出3 处等长字节补丁(共 14 字节),让它彻底闭嘴。1. 现象与取证现象:启用 VirtualBox Host-Only 网卡后,认证几分钟内被踢,弹窗提示「服务器禁止设置多个IP来提供代理服务」,并点名VirtualBox Host-Only Ethernet Adapter。对照组:同机 VMware VMnet1 / VMnet8 带 IP 却一直平安。安装目录:C:\Program Files\Ruijie Networks\Ruijie Supplicant\ ├─ 8021x.exe ← 主程序(GUI + 认证协议 + 各种检测) ├─ suservice.exe ← SYSTEM 权限后台服务 ├─ Nic.dll / NetworkDetect.exe / W32N55.dll / snetcfg.exe └─ logs\ ← 行为日志8021x.exe:PE32、未加壳、镜像基址0x400000,文件偏移 = 虚拟地址 − 0x400000。日志(GBK 编码)里躺着完整证据链:[2026-09-25 18:35:29] CContextControlThread::CheckMulNICDevice helpInfo 服务器禁止设置多个IP…… [2026-09-25 18:35:29] Enter CContextControlThread::StopAuthentication [2026-09-25 18:35:29] nLogOffReson 102 [2026-09-25 18:35:29] SendLogOffPacket 释放ip同流程在 18:35–20:07 重复 6 次,与被踢时间完全吻合。提示文案本身不在本地任何文件中,推测由服务器下发或运行时拼装。字符串扫描(ASCII / UTF-16LE / GBK 三编码)显示:VirtualBox/VBox命中0 次,VMware命中 2 次。这不是按名字匹配的黑名单——弹窗里的网卡名只是系统读到的描述原样打印,改网卡名骗不过检测。关键锚点:锚点字符串文件偏移VA"www.baidu.com"0x1B79440x5B7944"GetProcxyDefenseStatus, bRet = 0x%x"0x1B7FD00x5B7FD0"nLogOffReson %d"0x1B9B100x5B9B10"CContextControlThread::CheckMulNICDevice"0x1BA1FC0x5BA1FC跳过关键词表(miniport/video/pseudo/netpas/ras/wan)0x1B88C4–0x1B88EC—2. 静态分析:三条主干反汇编:objdump -d -M intel --no-show-raw-insn 8021x.exe dis.txt,字符串 VA = 文件偏移 + 0x400000,在 dis.txt 中 greppush 0x5b7944找引用。调用链总览:[3 个调用点:网络状态事件处理 / 事件码 0x16 分发 / 状态同步] └─ CheckMulNICDevice (0x4432BF) ├─ 0x43D540 建「可疑网卡」名单 │ ├─ GetAdaptersInfo 枚举(两段式:先取长度 0x6F,再取数据) │ ├─ 只要 Type==6(以太网) / 0x47(无线) │ ├─ 读注册表 Connection\PnpInstanceID → 含 "VMWARE" 跳过 ← VMware 免死金牌 │ └─ 描述转小写 → Find(miniport/video/pseudo/netpas/ras/wan) → 跳过 ├─ 0x434ED9 NicConnected:逐条探测 │ └─ 0x434C60 bind 本网卡 IP → connect www.baidu.com(最多 3 次) ├─ GetProcxyDefenseStatus (0x4377CF):取服务器下发的「防代理」标志位 └─ 名单非空 → 弹窗(资源 ID 0x127)+ 全局状态 0x475 + StopAuthentication(102)建名单(0x43D540)关键汇编:43d5fd: mov eax,[ebx+0x1a0] ; IP_ADAPTER_INFO.Type 43d603: cmp eax,0x6 ; 以太网? 43d608: cmp eax,0x47 ; 无线? 43d622: lea eax,[ebx+8] ; AdapterName,即 {GUID} 43d628: call 0x43a086 ; ← 读 ...\Connection\PnpInstanceID,返回是否含 "VMWARE" 43d62d: test al,al 43d62f: jne 0x43d7e5 ; 命中 VMWARE → 跳过该网卡 43d64d: push 0x5b88e0 ; "netpas" 43d655: call 0x40be85 ; Find 43d664: push 0x5b88d0 ; "video" 43d66c: call 0x40be85 ; Find → 命中即跳过本机注册表实测:网卡PnpInstanceID结局VMware VMnet1 / VMnet8ROOT\VMWARE\0000/0001✅ 豁免板载 RealtekPCI\VEN_10EC…认证网卡,走另一分支VirtualBox Host-Only不含VMWARE❌ 中招探测(0x434C60)伪代码:WSAStartup(2,2);SOCKET s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);setsockopt(s,SOL_SOCKET,SO_SNDTIMEO,1000ms);setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,1000ms);bind(s,{AF_INET,inet_addr(候选网卡的 IP)});// ← 绑定到目标网卡hostent*h=gethostbyname("www.baidu.com");for(