RedSnarf渗透测试工具:Windows域内凭证提取与横向移动实战指南

发布时间:2026/7/29 15:26:30

RedSnarf渗透测试工具:Windows域内凭证提取与横向移动实战指南 1. 项目概述为什么需要RedSnarf在Windows环境下的渗透测试和红队评估中信息收集与凭证获取是前期突破的关键。面对复杂的域环境、多样的Windows版本以及层出不穷的安全策略测试人员需要一套高效、精准且能绕过常见防护的工具。RedSnarf正是为此而生的利器。它不是一个单一的工具而是一个功能强大的框架专门用于从Windows系统中提取密码哈希、LSA秘密、计划任务凭证、RDP连接历史等敏感信息。与那些需要复杂编译或依赖特定环境的工具不同RedSnarf的设计哲学是“开箱即用”和“最小化痕迹”它主要利用Windows系统自带的合法工具如reg.exe、cmd.exe和WMIWindows Management Instrumentation来执行操作从而极大地降低了被端点检测与响应EDR系统标记的风险。我第一次接触RedSnarf是在一次针对大型企业内网的模拟攻击中。传统的Mimikatz虽然强大但其内存注入行为在如今稍具规模的企业环境中几乎会被立刻告警。我们需要一种更“安静”的方式。RedSnarf通过多种协议SMB、WMI、WinRM和认证方式密码、哈希传递、票据传递与目标交互其模块化的设计允许测试者根据目标环境的具体情况如防火墙规则、可用端口、用户权限灵活选择攻击路径。对于刚入行的安全研究员或红队成员来说掌握RedSnarf意味着你拥有了一把打开Windows域内信息宝库的万能钥匙而且这把钥匙的“开门声”非常小。2. 环境准备与前置条件解析在开始安装和挥舞RedSnarf这把利剑之前我们必须先磨好刀也就是准备好一个合适且稳固的操作环境。这一步至关重要一个配置不当的环境会导致工具运行失败、功能缺失甚至可能暴露测试行为。2.1 操作系统与依赖环境选择RedSnarf本身是一个Python脚本工具集因此它对宿主操作系统有较好的跨平台支持。但考虑到其主要用于攻击Windows我们通常会在攻击机通常是Kali Linux、Parrot OS等渗透测试发行版上运行它。当然在Windows攻击机上通过Python环境运行也是完全可行的但这可能涉及到一些额外的规避技巧。首选环境Kali Linux这是最推荐的选择。Kali Linux预装了绝大多数渗透测试所需的工具和Python库能最大程度减少环境配置的麻烦。你需要确保你的Kali系统是最新或较新的版本以获得稳定的Python3支持和必要的网络工具。备选环境其他Linux发行版或Windows如果你使用Ubuntu、Debian或Arch Linux你需要手动安装一些依赖。在Windows上你可以使用Windows Subsystem for Linux (WSL) 来获得一个接近Linux的环境或者直接配置Python for Windows。但请注意在Windows主机上直接对同一网络内的其他Windows主机进行某些类型的测试如SMB攻击可能会受到网络堆栈或防火墙策略的微妙影响。核心依赖检查无论选择哪种系统以下组件必须就位Python 3.6这是运行RedSnarf的硬性要求。使用python3 --version或python --version检查。Impacket库这是RedSnarf的“心脏”。Impacket是一个用于对网络协议进行低级编程访问的Python类集合RedSnarf大量依赖它来实现SMB、MSRPC等协议通信。必须安装。其他Python库如argparse,configparser,logging等这些通常是Python标准库的一部分但确保其存在。系统工具git用于克隆代码、pip3Python包管理器。2.2 网络与权限考量在实验室环境搭建时我们常常忽略网络配置但这在实际测试中会导致工具无法工作。你需要确保你的攻击机可以与目标Windows主机进行网络通信。关键端口与协议SMB (TCP 445)这是RedSnarf提取本地哈希、访问远程注册表等操作最常用的端口。确保攻击机到目标的445端口是开放的。WMI (TCP 135, 及动态高端口)或WinRM (TCP 5985/5986)这是执行远程命令、查询系统信息的另一种重要方式。如果目标防火墙阻止了445端口WMI/WinRM可能是备用通道。RDP (TCP 3389)虽然RedSnarf不直接利用RDP进行攻击但获取到的凭证很可能用于RDP登录因此网络需要可达。权限模拟在搭建实验环境时你至少需要两台虚拟机一台攻击机Kali一台目标机Windows 10/11 或 Windows Server。为目标机创建一个普通域用户账户和一个本地管理员账户用于模拟不同权限下的测试效果。确保攻击机与目标机在同一网络段如都使用VMware/NAT或桥接模式并且可以互相ping通。注意在真实测试中你获得的初始权限可能很低。RedSnarf的部分模块如提取本地哈希需要本地管理员权限。因此你的测试流程往往是先通过其他手段如漏洞利用获取一个立足点哪怕是普通用户然后尝试提权到本地管理员再使用RedSnarf进行横向移动和信息深度收集。在实验环境搭建时我们直接从管理员权限开始是为了熟悉工具功能。3. RedSnarf的安装与初始化配置好了环境准备妥当现在让我们把RedSnarf“请”到我们的攻击机上。整个过程力求清晰、可复现。3.1 从源码克隆与安装最推荐的方式是从官方GitHub仓库克隆这样可以获得最新的代码和修复。# 1. 克隆仓库 git clone https://github.com/nccgroup/redsnarf.git # 2. 进入目录 cd redsnarf # 3. 安装Python依赖 # 强烈建议使用虚拟环境避免污染系统Python环境 python3 -m venv venv source venv/bin/activate # Linux/macOS # 对于WindowsCMDvenv\Scripts\activate # 对于WindowsPowerShellvenv\Scripts\Activate.ps1 (可能需要先执行 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser) pip3 install -r requirements.txtrequirements.txt文件会自动安装所有必要的库最主要的就是Impacket。如果安装过程中遇到关于Impacket的错误可以尝试单独安装其开发版本pip3 install impacket或者从Impacket的GitHub仓库克隆安装以确保版本兼容性。3.2 目录结构与核心文件解读安装完成后让我们看看RedSnarf的目录里有什么理解其结构有助于后续使用。redsnarf/ ├── redsnarf.py # 主程序入口 ├── modules/ # 功能模块目录 │ ├── get_hashes.py # 获取哈希模块 │ ├── lsa_secrets.py # 获取LSA机密模块 │ ├── sam_dump.py # 转储SAM模块 │ └── ... # 其他模块 ├── lib/ # 库文件目录 │ ├── connection.py # 连接处理库 │ └── helpers.py # 辅助函数库 ├── output/ # 默认输出目录运行后生成 ├── logs/ # 日志目录运行后生成 ├── hosts.txt # 目标主机列表文件示例 ├── hashes.txt # 哈希文件示例 └── README.md # 说明文档核心文件说明redsnarf.py这是你所有操作的起点。它负责解析命令行参数、加载模块、协调整个攻击流程。modules/每个Python文件对应一个独立的功能。这种模块化设计使得代码清晰也方便你未来根据需要阅读或修改特定功能的源码。lib/包含工具的核心逻辑如建立SMB连接、处理认证、解析输出等。普通使用者无需修改但进阶学习时值得深入研究。hosts.txt和hashes.txt这是两个重要的输入文件模板。hosts.txt用于存放你要攻击的目标IP或主机名列表每行一个。hashes.txt用于在哈希传递攻击Pass-the-Hash时提供NTLM哈希对。3.3 首次运行测试与常见安装问题排查安装完成后不要急于攻击目标先进行一个简单的自检。# 在redsnarf目录下运行帮助命令 python3 redsnarf.py -h你应该能看到一个详细的参数说明列表这证明主程序可以正常运行。接下来我们测试一个不涉及网络连接的本地功能比如查看模块列表python3 redsnarf.py --list-modules这个命令会列出所有可用的攻击模块例如smb_hashes,wmi_exec,rdp_sessions等。如果你能看到一长串模块名称那么恭喜你RedSnarf的基本安装已经成功。实操心得安装踩坑记录Impacket版本冲突这是最常见的问题。如果你的系统如Kali已经通过apt安装了Impacket而pip又安装了一个版本可能会导致导入错误。解决方案是统一使用pip安装的版本并确保你的Python脚本优先使用虚拟环境中的包。可以使用pip3 show impacket查看当前生效的版本和路径。Python路径问题如果你在非虚拟环境下安装或者系统有多个Python版本如python指向2.7python3指向3.9可能会导致运行失败。始终明确使用python3和pip3。缺少系统库在极少数情况下Impacket的编译依赖可能缺失如Python开发头文件。在Debian/Ubuntu/Kali上可以运行sudo apt install python3-dev来解决。Windows防火墙与杀软如果你在Windows上运行RedSnarf去攻击另一台Windows本机的Windows Defender或第三方杀毒软件可能会将RedSnarf或Impacket的部分行为视为恶意而拦截。在实验环境中可以临时关闭实时保护但务必知晓风险。4. 核心模块功能详解与实战场景RedSnarf的强大在于其丰富的模块。理解每个模块的用途、使用场景和所需权限是高效利用它的关键。下面我们深入剖析几个最核心、最常用的模块。4.1 哈希获取模块smb_hashes与wmi_hashes这是RedSnarf的“招牌菜”。它允许你在拥有目标主机本地管理员权限的情况下远程读取注册表中的SAM和SYSTEM hive从而导出本地所有用户的NTLM哈希。这相当于拿到了该主机本地用户的“密码等价物”。原理简述Windows将用户密码的哈希值存储在注册表HKEY_LOCAL_MACHINE\SAM和HKEY_LOCAL_MACHINE\SECURITY中但这些键默认只有SYSTEM权限可读。当你是管理员时RedSnarf会通过SMB或WMI服务连接到目标的ADMIN$共享然后使用类似reg.exe save的命令或直接通过API将这两个注册表单元保存为临时文件再下载到本地最后使用Impacket库中的secretsdump.py类似逻辑离线解析出哈希。使用场景横向移动获取一台主机的本地管理员哈希后如果域内其他主机使用了相同的本地管理员密码这是一种常见但不安全的做法你可以直接使用“哈希传递”登录那台主机。密码破解将获取的NTLM哈希导入到Hashcat或John the Riipper中进行离线破解尝试还原明文密码。权限维持即使域密码被更改本地管理员哈希通常不变可作为后门。基本命令格式python3 redsnarf.py -H hosts.txt -u Administrator -p ‘AdminPassword123!’ -d DOMAIN -M smb_hashes-H hosts.txt: 指定包含目标IP列表的文件。-u/-p: 指定具有目标主机管理员权限的域用户或本地用户名和密码。-d: 域名如果是域用户。-M smb_hashes: 指定使用smb_hashes模块。smb_hashesvswmi_hashessmb_hashes通过SMB协议445端口执行。速度通常较快是最常用的方式。wmi_hashes通过WMI协议135及动态端口执行。当目标防火墙屏蔽了445端口但开放了WMI时这是有效的备用方案。命令格式类似只需将-M参数改为wmi_hashes。注意事项此操作会在目标主机上留下痕迹。它会创建临时文件虽然RedSnarf会尝试清理并在系统日志中可能留下事件ID为4656句柄请求和4663对象访问的日志对应于对SAM注册表键的访问。在高度敏感的环境中蓝队可能会监控此类事件。4.2 远程命令执行模块wmi_exec与smb_exec在渗透测试中获取哈希后我们往往需要执行命令来进一步探索或部署载荷。RedSnarf提供了多种远程命令执行方式。wmi_exec模块通过Windows Management Instrumentation执行命令。它会在目标系统上创建一个WMI进程并将命令输出通过WMI通道回传。优点是与系统管理行为相似隐蔽性相对较好。python3 redsnarf.py -H 192.168.1.10 -u adminuser -p ‘Passw0rd!’ -d CORP -M wmi_exec -C “whoami /all”-C “command”: 指定要远程执行的命令。smb_exec模块类似于经典的psexec通过SMB服务在目标上创建并启动一个服务来执行命令。它的行为特征更明显容易被EDR识别。选择策略如果环境对WMI管理行为监控宽松优先使用wmi_exec。如果WMI端口被禁或连接不稳定再尝试smb_exec。执行命令时尽量使用系统自带的、看似合法的程序如cmd.exe /c、powershell.exe -EncodedCommand等避免直接执行可疑的二进制文件。4.3 会话与凭证枚举模块rdp_sessions,loggedon_users这些信息收集模块不需要很高的权限但提供的情报价值巨大。rdp_sessions模块查询目标主机上当前和历史的RDP远程桌面会话信息。这能告诉你谁登录过这台机器以及可能的来源IP。对于定位管理员活动、寻找跳板机非常有帮助。python3 redsnarf.py -H 192.168.1.10 -u guest -p ‘’ -M rdp_sessions注意即使是低权限用户有时也能查询到部分会话信息loggedon_users模块枚举当前登录到目标系统的用户。这有助于了解主机的活跃使用情况并可能发现高权限用户的登录会话为后续的令牌窃取攻击提供目标。实战意义在获得一个初始立足点后优先使用这些低权限模块对当前网段进行扫描可以快速绘制出网络的人员活动图谱找到高价值目标如域管理员登录的服务器从而集中火力进行突破。4.4 LSA机密与Vault凭证提取这是RedSnarf的高级功能需要SYSTEM权限但能挖出更深层的“宝藏”。lsa_secrets模块LSALocal Security Authority机密存储了系统运行所需的多种敏感信息例如DPAPIData Protection API主密钥用于解密用户存储的凭据如Chrome密码、Wi-Fi密码。服务账户密码一些服务配置为以特定用户身份运行其密码可能以明文或可逆加密形式存储在LSA中。域缓存凭证当域成员机无法联系域控制器时用于验证用户登录的缓存域哈希MS-Cache。提取LSA机密是权限提升和凭证窃取的关键一步。python3 redsnarf.py -H 192.168.1.10 -u Administrator -p ‘hash:579da618cfbfa85247acf1f800a280a4’ -M lsa_secrets这里使用了哈希传递-p参数以hash:前缀接NTLM哈希vault_creds模块Windows Vault是系统存储网络密码、证书等的地方。此模块尝试从Vault中提取已保存的Web凭据、RDP连接密码等。成功与否取决于当前用户的上下文和Vault中是否有内容。5. 高级攻击链组合与自动化实战单独使用模块只是基础真正的威力在于将多个模块组合成自动化攻击链模拟高级持续性威胁APT的攻击模式。5.1 基于哈希传递的横向移动自动化假设我们已经通过某种方式获得了域中一台工作站WORKSTATION01的本地管理员哈希并且我们怀疑域内存在密码复用。我们可以编写一个简单的脚本让RedSnarf自动完成以下步骤读取一个IP段列表targets.txt。对列表中的每台主机尝试使用获得的哈希进行SMB连接验证权限。对连接成功的主机立即执行smb_hashes模块获取其本地哈希。将新获取的哈希存入一个中央哈希库。虽然RedSnarf本身不直接提供这种全自动流水线但我们可以利用Shell脚本或Python来调用它。核心思路是使用-p ‘hash:...’参数进行哈希传递认证。#!/bin/bash # 示例简易横向移动脚本 TARGET_FILE“targets.txt” HASH“579da618cfbfa85247acf1f800a280a4” # 已知的管理员哈希 DOMAIN“CORP” USER“Administrator” for ip in $(cat $TARGET_FILE); do echo “[*] 尝试横向移动到 $ip” # 首先测试连接性例如通过smbclient或简单的wmi_exec执行无害命令 python3 redsnarf.py -H $ip -u $USER -p “hash:$HASH” -d $DOMAIN -M wmi_exec -C “hostname” /dev/null 21 if [ $? -eq 0 ]; then echo “[] $ip 连接成功开始提取哈希...” # 实际提取哈希输出到以IP命名的文件 python3 redsnarf.py -H $ip -u $USER -p “hash:$HASH” -d $DOMAIN -M smb_hashes -o “hashes_$ip.txt” else echo “[-] $ip 连接失败或权限不足” fi done5.2 与Cobalt Strike、Empire等框架的联动RedSnarf可以作为大型攻击行动中的一个优秀“侦察兵”和“凭证收集员”。例如在Cobalt Strike中你通过一个Beacon获得了目标主机的管理员权限。你可以从Beacon中导出该主机的哈希使用hashdump命令。在团队服务器上使用RedSnarf以上述哈希作为凭据对目标内网的其他主机进行扫描和攻击。将RedSnarf新获取的凭证导入到Cobalt Strike的凭证库中供其他Beacon或后续攻击使用。这种联动打破了单个工具的局限形成了“漏洞利用/钓鱼 - 建立据点 - 凭证窃取RedSnarf - 横向移动 - 权限提升 - 目标达成”的完整闭环。5.3 输出结果分析与整理RedSnarf默认会将每个模块的输出以文本形式保存在output/目录下按主机IP和模块名分类。对于大型内网渗透可能会产生大量文件。你需要一套方法来高效分析这些结果。关键信息提取编写脚本从所有*_hashes.txt文件中提取出NTLM哈希并去重合并成一个总的哈希文件用于后续的密码破解或哈希传递攻击。高价值目标标记从*_loggedon_users.txt和*_rdp_sessions.txt中筛选出存在“Domain Admins”组成员登录会话的主机这些是最高优先级的横向移动目标。凭证分类将LSA机密中提取出的DPAPI密钥、明文密码、服务账户凭证等分类存储便于在不同场景下使用。6. 防御规避与反制措施思考作为一名渗透测试者不仅要会攻击更要理解防御机制这样才能更好地模拟高水平的攻击者。使用RedSnarf时如何规避检测6.1 了解并绕过日志记录RedSnarf的许多操作会在Windows安全日志中留下痕迹4688进程创建对应远程命令执行。4624/4625登录成功/失败对应SMB/WMI连接。4656/4663对象访问对应注册表SAM/SYSTEM键读取。规避思路降低日志级别如果已获得足够权限可以尝试修改目标主机的审计策略但这本身会产生日志。时间选择在目标系统活跃期如工作日白天进行操作将行为混入大量正常的系统管理流量中。使用合法管理通道尽量使用WMI而非SMB因为系统管理员使用WMI进行远程管理是常见行为。清理痕迹RedSnarf会尝试删除远程临时文件但进程创建等日志无法自动清除。在测试授权范围内评估是否需要手动清理或将其作为测试发现的一部分报告给客户。6.2 对抗端点检测与响应EDR现代EDR会监控可疑的进程行为、网络连接和文件操作。进程树监控wmi_exec创建的进程其父进程通常是WmiPrvSE.exe这比由services.exe创建的陌生服务如smb_exec看起来更正常一些。命令行参数监控避免在执行的命令中包含明显的恶意关键词如“powershell -enc”、“iex”、“downloadstring”。可以使用混淆、编码或从远程位置读取脚本的方式。内存扫描虽然RedSnarf不涉及在目标内存中加载恶意DLL但其依赖的Impacket库在网络通信中的数据包特征可能被某些高级网络检测系统识别。在高度安全的环境下可能需要定制修改Impacket的默认数据包结构。6.3 操作安全OpSec最佳实践使用代理与重定向不要直接从你的攻击机发起对目标内网的所有连接。使用已控制的主机作为跳板通过SSH动态转发或工具自带的代理功能来中转流量。凭证管理不要在命令行中直接使用明文密码尤其是当命令可能被记录到Shell历史或通过进程列表可见时。优先使用哈希传递-p hash:...或票据传递。考虑使用RedSnarf的-k选项进行Kerberos认证。速率限制在内网扫描或横向移动时使用--delay参数在每次操作之间添加随机延迟避免触发基于频率的入侵检测系统IDS警报。目标选择不要盲目扫描整个IP段。先通过端口扫描如445、135和服务发现识别出真正存活且开放相关服务的主机再进行有针对性的攻击。7. 故障排除与常见问题实录即使按照指南操作在实际环境中你仍会遇到各种问题。下面是我在多次使用中积累的一些典型问题及其解决方法。7.1 连接与认证失败问题使用正确的密码但smb_hashes或wmi_exec模块始终返回“访问被拒绝”或“登录失败”。排查步骤验证网络连通性ping和nmap -p 445,135确认端口开放。验证凭据使用更基础的工具验证凭据是否有效。例如用smbclient或crackmapexec测试SMB登录crackmapexec smb 192.168.1.10 -u Administrator -p ‘AdminPassword123!’如果这里也失败说明凭据错误、账户被锁定、或主机不允许该用户从网络登录检查“拒绝从网络访问此计算机”策略。检查用户权限确保使用的账户在目标主机上是本地管理员组的成员。域用户可能只是“Domain Users”而非目标机器的本地管理员。UAC远程限制对于Windows Vista及更高版本即使你是本地管理员远程连接时也可能受UAC远程限制影响令牌被“过滤”。你需要使用域管理员账户或者确保本地管理员账户的注册表键LocalAccountTokenFilterPolicy被设置为1这通常是不安全的配置但某些环境中存在。协议与端口尝试切换模块。SMB失败就试WMI (-M wmi_hashes)反之亦然。防火墙可能只允许其中一种。7.2 模块执行成功但无输出或输出不全问题命令执行成功但output/目录下的文件是空的或者哈希列表不完整缺少某些用户。排查步骤检查输出目录权限确保运行RedSnarf的用户对当前目录有写权限。查看详细日志运行命令时添加-v或-vv参数开启详细输出观察每一步的执行情况看是否有错误在中间步骤被忽略。目标系统问题某些高度定制的Windows系统或服务器核心版可能禁用了某些功能。尝试手动执行模块所依赖的操作例如远程执行reg save hklm\sam c:\windows\temp\sam.save看是否成功。杀毒软件干扰目标主机上的AV/EDR可能实时拦截了注册表保存操作或临时文件的创建。查看RedSnarf的详细输出看是否提到了文件创建失败或访问被拒绝。7.3 性能问题与超时问题在对多个主机执行操作时某些主机响应极慢导致整个脚本卡住。解决方案设置超时参数RedSnarf支持--timeout参数来设置连接和操作超时单位秒。根据网络状况适当调整例如--timeout 30。并发控制默认情况下RedSnarf可能按顺序处理主机。对于批量操作可以考虑自己编写外层脚本使用将任务放入后台或者使用xargs -P实现简单的并发控制但要注意避免触发安全设备的洪水检测。网络分区大型内网可能存在多个网段跨网段延迟高。合理规划扫描顺序先完成当前网段再尝试其他网段。7.4 工具更新与兼容性问题从GitHub拉取最新代码后某些功能无法工作或出现新的Python库错误。解决方案阅读更新日志首先查看GitHub仓库的Release Notes或最近的Commit信息了解是否有重大变更。依赖库更新运行pip3 install -r requirements.txt --upgrade确保所有依赖库更新到新代码要求的版本。Python版本确认你的Python版本满足要求3.6。有时新特性需要更高版本的Python。回滚版本如果新版本不稳定可以使用git checkout回退到之前稳定的版本。工具的使用永远是一个“实践-遇到问题-分析解决-积累经验”的过程。RedSnarf作为一个活跃的项目其功能和规避技术也在不断演进。保持对项目动态的关注多动手搭建实验环境进行测试是掌握它的不二法门。最后记住所有技术都应在合法授权的范围内使用你的目标是帮助客户发现并修复漏洞让网络环境变得更加安全。

相关新闻