RedSnarf工具解析:Windows域渗透中的凭证窃取与横向移动实战
1. 项目概述为什么是RedSnarf如果你在Windows域渗透测试这个圈子里待过一段时间或者刚刚开始接触那么“RedSnarf”这个名字你大概率不会陌生。它不像Metasploit那样家喻户晓也不像Cobalt Strike那样功能全面但在针对Windows活动目录Active Directory的横向移动和凭证窃取方面RedSnarf绝对是一把被低估的瑞士军刀。我第一次接触它是在一次内部红队评估中当时需要快速、隐蔽地从一台已控的域内主机上提取其他用户的会话和凭证尝试了几个工具都因为各种限制比如杀软、网络策略失败了直到一位前辈丢过来一个命令几秒钟后目标域控制器的管理员哈希就躺在了我的终端里——那个工具就是RedSnarf。简单来说RedSnarf是一个用Perl和PowerShell编写的工具包它的核心设计理念就是“快、准、狠”。它不追求花哨的界面或复杂的模块而是专注于执行几个在域渗透中最高频、最致命的任务远程转储LSASS进程内存以获取凭证、窃取和重用用户的Kerberos票据、执行基于IPCS$的哈希传递攻击以及枚举域内关键信息。它的所有操作几乎都依赖于Windows原生协议和特性如SMB、WMI、计划任务这使得它在许多环境下具有极佳的兼容性和隐蔽性。对于从零开始学习域渗透的新手理解RedSnarf的工作流程就等于理解了Windows认证与横向移动的核心脉络对于有经验的老手它则是工具箱里一个可靠的“应急”选项。2. 核心原理与攻击链拆解要精通RedSnarf不能只会敲命令必须理解它背后的Windows安全机制。它的威力全部源于对Windows域认证体系弱点的精准利用。2.1 认证基石NTLM与KerberosWindows域环境主要使用两种认证协议较老的NTLM和较新的Kerberos。RedSnarf的攻击大多围绕它们展开。NTLM哈希是用户密码经过MD4算法加密后的值。在域中用户的NTLM哈希存储在域控制器DC的NTDS.dit数据库中也会缓存在登录过的成员计算机内存中。一旦攻击者获取了哈希就可以在不破解明文密码的情况下直接使用该哈希向网络资源证明身份这就是“哈希传递”Pass-the-Hash PtH。RedSnarf的-pth参数就是干这个的。Kerberos票据则像是一场精心设计的戏剧票。当你客户端想访问服务器如文件共享时需要先向域控制器票务中心证明身份获取一张“票务授予票”TGT。然后用TGT去申请访问特定服务的“服务票据”ST。RedSnarf的-k参数相关的功能就是窃取或伪造这些票据实现“票据传递”Pass-the-Ticket PtT。2.2 LSASS凭证的宝库本地安全机构子系统服务LSASS进程是Windows安全的核心。它负责管理登录会话、维护凭据包括明文密码、NTLM哈希、Kerberos票据等。因此LSASS内存成了攻击者的头号目标。RedSnarf的核心功能之一就是远程转储LSASS进程内存。它通常通过WMI或计划任务在目标机器上执行一个PowerShell或二进制程序如procdump将LSASS的内存转储到磁盘然后通过SMB拉回攻击机最后用Mimikatz等工具离线解析出凭证。整个过程RedSnarf帮你做了自动化封装。2.3 横向移动的跳板SMB与WMIRedSnarf利用两种主要的协议进行横向移动服务器消息块SMB和Windows管理规范WMI。SMB是文件共享和打印机共享协议。经典的IPC$共享是空会话连接和后续攻击的入口。RedSnarf利用SMB进行文件上传上传攻击载荷、下载拉回转储文件以及执行基于SMB的哈希传递攻击。WMI则提供了强大的远程系统管理能力。通过WMIRedSnarf可以远程创建进程、执行命令、查询系统信息。相比SMBWMI的执行方式可能更隐蔽因为它走的是DCOM或WinRM协议是系统管理员的“正规”管理通道。理解了这些你就明白了RedSnarf每一条命令背后在“捅”Windows系统的哪个要害。3. 环境搭建与工具准备工欲善其事必先利其器。RedSnarf的运行环境有点“老派”但搭建起来并不复杂。3.1 攻击机环境配置RedSnarf主要依赖Perl和部分PowerShell模块。虽然它自称支持Linux和Windows但在Kali Linux或Parrot OS这类渗透测试发行版上运行最为顺畅。系统准备推荐使用最新版的Kali Linux作为攻击机。确保系统已更新。sudo apt update sudo apt upgrade -y安装Perl依赖RedSnarf的核心是Perl脚本需要一些额外的Perl模块。sudo apt install perl libio-socket-ssl-perl libnet-ssleay-perl libssl-dev -y这里安装的是处理SSL连接所需的Perl模块因为部分操作如某些WMI调用可能需要加密通道。获取RedSnarf从GitHub克隆最新代码。git clone https://github.com/nccgroup/redsnarf.git cd redsnarf注意务必从官方或可信源获取工具。第三方打包的版本可能被植入后门。准备辅助工具RedSnarf本身不解析凭证它需要配合其他工具。Mimikatz用于解析从LSASS转储文件中提取的哈希和票据。将mimikatz.exex64版放在RedSnarf目录下的tools/文件夹中如果没有就创建一个。Impacketsecretsdump.py虽然RedSnarf有自己的哈希抓取模块但Impacket的secretsdump是离线解析NTDS.dit或注册表hive文件的黄金标准。确保你的Python环境安装了Impacket套件。pip3 install impacket3.2 目标域环境模拟实验室搭建绝对禁止在未经授权的真实网络中使用RedSnarf。你必须搭建自己的实验室。 一个经典的实验室拓扑如下一台域控制器DC安装Windows Server 2016/2019提升为域控制器创建测试域如lab.local。一台域成员服务器安装Windows Server 2016/2019或Windows 10/11加入上述域。一台攻击机即我们刚配置好的Kali Linux需要能与域内机器通信。确保所有机器在同一网络段防火墙规则允许必要的流量SMB 445端口 WMI 135端口等。在域成员服务器上可以创建几个测试用户如user1,admin_user并分配不同的权限。3.3 RedSnarf目录结构初探进入RedSnarf目录你会看到几个关键文件和文件夹redsnarf.pl主程序入口。redsnarf.pyPython版本的主程序功能可能略有不同建议以Perl版为主。modules/存放各种攻击模块的Perl脚本。tools/你应该把Mimikatz等第三方工具放在这里。logs/默认的日志输出目录。creds/成功获取的凭证可能会被保存到这里。运行./redsnarf.pl -h查看帮助菜单熟悉所有参数。这是你使用任何新工具的第一步。4. 核心模块深度解析与实战RedSnarf的功能通过不同的模块和参数组合实现。我们深入剖析几个最核心的攻击场景。4.1 哈希获取远程转储LSASS这是RedSnarf的招牌动作。假设我们已经通过某种方式比如钓鱼获取的凭据在域成员服务器WORKSTATION01上有了一个立足点一个本地管理员权限的shell现在想提取这台机器内存中的所有域用户哈希。命令示例./redsnarf.pl -H 192.168.1.10 -u administrator -p Pssw0rd! -d lab.local -h-H指定目标主机IP。-u/-p用于认证的本地管理员用户名和密码或哈希。-d域名。-h执行“哈希转储”操作。背后发生了什么连接与认证RedSnarf使用你提供的凭据通过SMB连接到目标主机的ADMIN$共享。上传工具它会将内置或tools/目录下的一个LSASS转储工具可能是PowerShell脚本或编译好的可执行文件上传到目标机的临时目录。远程执行通过计划任务或WMI在目标机上静默执行该转储工具将lsass.exe进程的内存转储到一个文件如C:\Windows\Temp\lsass.dmp。下载文件通过SMB将转储文件拉回到攻击机的logs/目录。离线解析RedSnarf会自动或提示你使用tools/目录下的Mimikatz来解析这个dump文件。你会看到输出中包含NTLM哈希、Kerberos密钥等信息。实操心得这个操作动静较大容易被端点防护EDR检测。在实际测试中我发现使用-dumpmethod wmi参数通过WMI调用CreateProcess有时比默认的计划任务方式更隐蔽。另外确保你的Mimikatz版本较新能绕过一些内存扫描特征。4.2 横向移动哈希传递攻击拿到了一个域用户的NTLM哈希比如aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0这是空用户的哈希但原理相同如何用它登录到另一台主机WORKSTATION02命令示例./redsnarf.pl -H 192.168.1.11 -u administrator -HASH aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 -d lab.local -pth-HASH指定NTLM哈希值LM:NT格式。-pth执行哈希传递攻击。攻击流程解析RedSnarf使用提供的哈希而不是密码向目标主机192.168.1.11发起SMB认证。如果目标主机的本地管理员账户administrator的密码与哈希来源的密码相同或者在域环境下该哈希属于一个在目标机上有权限的域账户认证就会成功。认证成功后RedSnarf可以进一步执行命令例如添加一个后门用户、启动一个反向shell等。这通常需要结合-c参数来指定要执行的命令。注意事项哈希传递成功的关键在于权限。你拥有的哈希所对应的账户必须在目标机器上具有足够的权限通常是本地管理员组。在域环境中域管理员账户的哈希可以在任何域成员机器上传递成功这就是它如此危险的原因。4.3 票据窃取与传递Kerberos攻击如果目标环境主要使用Kerberos认证哈希传递可能受限。这时票据攻击就更有效。场景你已经控制了WORKSTATION01并且当前登录的用户或系统内存中有域管理员的Kerberos TGT票据。命令示例简化流程RedSnarf的Kerberos模块可能需要手动指定。更常见的做法是先用RedSnarf或Mimikatz在目标机上导出所有票据。# 在已控的WORKSTATION01上通过RedSnarf或其他方式执行 # 使用Mimikatz导出票据 mimikatz # privilege::debug mimikatz # sekurlsa::tickets /export这会生成一系列.kirbi文件。然后在攻击机上你可以使用RedSnarf或Impacket的ticketConverter.py将其转换为Impacket可用的格式并用python3 psexec.py -k -no-pass domain/admindc.lab.local这样的命令进行票据传递攻击。RedSnarf可能通过-k参数集成部分功能但根据版本不同其Kerberos模块的成熟度可能不如专门的工具。理解这个流程比记住特定命令更重要。4.4 信息枚举侦察与定位在发动攻击前侦察至关重要。RedSnarf提供了一些基本的枚举功能。命令示例./redsnarf.pl -H 192.168.1.10 -u guest -p -d lab.local -e-e执行枚举操作。这可能会尝试空会话连接枚举共享、用户、组等信息。枚举内容可能包括通过net view或SMB枚举网络共享。通过WMI查询系统信息用户、进程、服务。尝试枚举域内用户和组如果权限足够。踩坑记录空会话-u guest -p 在现代Windows系统Server 2008以后上受到严格限制通常无法枚举到有价值信息。这个模块的成功率很大程度上取决于目标系统的安全策略RestrictAnonymous。更可靠的信息收集往往需要先获得一个有效账户哪怕权限很低然后使用-u -p参数配合枚举。5. 高级技巧与隐蔽化操作直接使用默认参数和模块很容易被蓝队发现。以下是一些提升隐蔽性和成功率的技巧。5.1 绕过日志与检测清理痕迹RedSnarf执行后会在目标机留下计划任务、临时文件、WMI事件订阅等痕迹。成熟的脚本应在操作后自动清理。你可以手动检查schtasks /query /tn [任务名]Get-WmiObject -Namespace root\Subscription -Class __EventFilter和__EventConsumerC:\Windows\Temp\目录下的可疑文件。 在实战中我通常会写一个简单的PowerShell脚本在RedSnarf执行完毕后作为-c参数调用专门删除这些痕迹。对抗EDR直接使用公开的Mimikatz或Procdump会被大多数EDR瞬间拦截。自定义加载器将Mimikatz的PowerShell版本或C#版本进行混淆、编译、或通过反射加载。使用替代工具使用Task Manager的转储功能、SqlDumper.exe等合法系统工具间接转储LSASS。RedSnarf不一定集成这些方法但你可以修改其模块或自行上传脚本。直接读取进程内存通过MiniDumpWriteDumpAPI的P/Invoke调用这是更高阶的技巧。你需要将相应的C#或PowerShell代码集成到RedSnarf的攻击流程中。5.2 流量伪装与协议选择加密通道尽可能使用Kerberos认证-k而非NTLM。Kerberos流量本身是加密的而NTLM认证过程可能被网络设备嗅探到挑战-响应消息。端口选择SMB over TCP445端口是重灾区。如果环境允许可以尝试将SMB流量封装在HTTP/HTTPS中例如使用WebDAV但这需要目标服务器配置支持且RedSnarf原生不支持。延迟与抖动在脚本中添加随机延迟模拟正常用户行为。RedSnarf本身是单线程快速攻击容易被流量异常检测发现。你可以分步骤手动执行或在脚本层进行控制。5.3 模块扩展与自定义RedSnarf的模块化结构允许你进行扩展。modules/目录下的.pl文件就是各个功能模块。如果你有一个新的攻击思路比如利用某个新的服务漏洞可以参照现有模块的写法创建一个新的Perl脚本。例如一个简单的模块框架如下package RSModule; use strict; use warnings; use RSHelper; # RedSnarf的辅助模块 sub new { my ($class, %args) _; my $self {%args}; bless $self, $class; return $self; } sub execute { my ($self) _; my $target $self-{target}; my $creds $self-{creds}; # 你的攻击逻辑在这里 print [*] 正在对 $target 执行自定义攻击...\n; # 调用RSHelper中的函数进行SMB/WMI连接等 my $result RSHelper::wmi_command($target, $creds, whoami); print [] 结果: $result\n; return 1; # 成功返回1 } 1;然后你需要在主程序redsnarf.pl中注册和调用这个模块。这需要对Perl和RedSnarf的代码结构有一定了解。6. 防御视角如何检测与防范RedSnarf攻击作为一名红队成员了解如何攻击的同时也必须知道蓝队如何防御这样才能更好地规避。6.1 关键攻击特征检测网络层面异常SMB连接模式短时间内从单一IP向多台主机发起SMB连接并使用相同的用户名进行认证失败和成功尝试。WMI异常调用来自非管理终端或非常用IP地址的Win32_ProcessCreate调用特别是创建cmd.exe、powershell.exe或未知可执行文件。计划任务创建远程创建名称随机或类似系统任务的任务计划。主机层面LSASS进程访问任何非系统关键进程如svchost.exe,lsass.exe自身对lsass.exe进程进行PROCESS_VM_READ操作都应视为高度可疑。Windows Defender ATP和SysmonEvent ID 10可以监控这一点。凭证内存读取直接检测Mimikatz等工具的内存签名或行为链。临时文件创建在C:\Windows\Temp\或C:\Users\Public目录下创建.dmp文件并随后被网络传输。6.2 主动防御策略强化认证禁用NTLM在域环境中尽可能强制使用Kerberos认证并禁用NTLMv1限制NTLMv2的使用范围。实施Credential Guard对于Windows 10/11和Server 2016启用Credential Guard可以基于虚拟化安全VBS隔离LSASS进程使传统的内存转储工具无法读取受保护的凭据。启用LSA保护通过设置注册表RunAsPPL保护LSASS进程不被非受保护进程注入。最小权限原则限制本地管理员严格限制拥有本地管理员权限的用户数量。使用“受限管理员”模式或“仅允许提升的应用程序”策略。网络分段将关键服务器如域控制器放在独立网段严格限制从工作站发起到DC的SMB、WMI连接。管理跳板机所有对服务器的管理操作必须通过经过严格安全加固的跳板机堡垒机进行并实施多因素认证。深度监控部署Sysmon配置精细的Sysmon策略记录进程创建、网络连接、文件创建、进程访问等事件并集中收集到SIEM中。启用命令行审计在组策略中启用“审核进程创建”并记录命令行参数这能捕获攻击者执行的命令。建立行为基线了解环境中正常的WMI、计划任务、SMB登录模式任何偏离基线的行为都值得警惕。7. 实战演练从外网到域控的模拟路径让我们串联起所有知识模拟一个高度简化的攻击链。再次强调仅在授权的实验室环境中进行。阶段一初始访问假设我们通过一次成功的钓鱼攻击在域用户Bob的工作站CLIENT01上获得了一个反向Shell。Bob是普通用户不是本地管理员。阶段二权限提升在CLIENT01上我们利用一个本地提权漏洞例如通过getsystem或利用未修补的内核漏洞获得了NT AUTHORITY\SYSTEM权限。阶段三凭证窃取RedSnarf登场在攻击机Kali上我们已经知道了CLIENT01的IP192.168.1.100和本地管理员密码通过提权后的信息收集获得或假设默认密码。使用RedSnarf远程转储LSASS./redsnarf.pl -H 192.168.1.100 -u administrator -p Admin123! -d lab.local -h -o logs/client01_dump解析dump文件幸运地发现域管理员DAlab.local的密码哈希也缓存在这台机器上。阶段四横向移动至域控制器域控制器IP为192.168.1.1。使用RedSnarf进行哈希传递并尝试执行命令添加后门用户./redsnarf.pl -H 192.168.1.1 -u DA -HASH [获取到的DA用户的NTLM哈希] -d lab.local -pth -c “net user backdooruser Pssw0rd! /add /domain net group ‘Domain Admins’ backdooruser /add /domain”这条命令使用域管理员哈希向域控制器发起认证成功后执行添加用户并加入域管理员组的命令。阶段五持久化与清理成功添加后门账户后可以通过该账户直接访问域控制器。最后记得清理在CLIENT01上留下的RedSnarf临时文件和计划任务。这个链条展示了RedSnarf在“凭证窃取”和“横向移动”两个关键环节的核心作用。在实际复杂的网络中步骤会更多障碍也会更大但基本原理相通。掌握RedSnarf的精髓不在于记住所有参数而在于深刻理解每一条命令背后的Windows协议和认证机制。它更像一个教学工具和概念验证脚本将复杂的攻击过程自动化、模块化。当你能够手动复现RedSnarf的每一个步骤甚至能根据环境变化修改其代码时你才算真正“精通”了它。工具会过时但底层原理永存。在渗透测试中最强大的工具始终是测试者自己的知识体系。

相关新闻

鸿蒙NEXT声纹识别技术实现会议录音转文字

鸿蒙NEXT声纹识别技术实现会议录音转文字

1. 项目背景与需求解析在商务会议、学术研讨等多人交流场景中,录音转文字功能早已成为刚需。但传统方案存在一个明显的痛点:转写后的文字往往难以区分不同发言人的内容,后期整理需要人工反复听录音核对,效率极低。鸿蒙NEXT针对这一…

2026/7/29 6:16:06 阅读更多
SQL注入四种类型详解:原理、利用与防御

SQL注入四种类型详解:原理、利用与防御

1. 什么是 SQL 注入?SQL 注入是指攻击者将恶意 SQL 代码插入到输入参数中,应用程序未进行过滤便将其拼接到 SQL 查询语句中,导致数据库执行了非预期的命令。一句话解释就是你输入的内容被直接当作代码执行了2. 四种常见类型2.1 联合查询注入 …

2026/7/29 6:06:06 阅读更多
C++ std::count_if 算法详解:从基础用法到高阶优化与实战

C++ std::count_if 算法详解:从基础用法到高阶优化与实战

1. 项目概述:为什么count_if值得你花时间?在C的日常开发里,处理容器数据是家常便饭。很多时候,我们不只是想知道容器里有多少个元素,更想知道有多少个元素“符合某个特定的条件”。比如,一个存放员工信息的…

2026/7/29 6:46:07 阅读更多
Python批量处理PDF文档:自动化关键词统计与信息提取实战

Python批量处理PDF文档:自动化关键词统计与信息提取实战

1. 项目概述:从海量PDF中挖掘关键信息在金融、法律、咨询或任何涉及大量文档研究的领域,分析师们常常面临一个既基础又繁琐的任务:从成百上千份PDF格式的上市公司年报、招股说明书、法律文件中,快速定位并统计特定关键词的出现频率…

2026/7/29 6:46:07 阅读更多
7.28 从“图形状态切换“理解 Parse 与状态驱动模式

7.28 从“图形状态切换“理解 Parse 与状态驱动模式

从"图形状态切换"理解 Parse 与状态驱动模式 面向初学者 | 无代码,纯思路 目录 先看一个场景什么是 Parse为什么图形能自动变色一个数字装下很多个状态为什么不用一个状态属性,而是散落的 9 个三个转换器,各管一摊从头到尾走一遍总…

2026/7/29 6:46:07 阅读更多
AI辅助毕业论文写作:从选题到查重的全流程指南

AI辅助毕业论文写作:从选题到查重的全流程指南

1. 毕业论文写作痛点与AI解决方案作为一名经历过毕业论文折磨的过来人,我深知学术写作过程中的种种痛苦:选题迷茫、资料杂乱、格式混乱、查重焦虑...这些痛点几乎困扰着每一位毕业生。而如今,AI技术的快速发展为这些问题提供了全新的解决方案…

2026/7/29 6:46:07 阅读更多
MMDetection v2.22.0 实战:从零训练自定义目标检测模型

MMDetection v2.22.0 实战:从零训练自定义目标检测模型

1. 项目概述:从零上手MMDetection v2.22.0 如果你刚拿到一批标注好的图片,想用MMDetection这个强大的目标检测工具箱来训练自己的模型,但面对官方文档和繁杂的配置文件感到无从下手,那你来对地方了。我最近刚用MMDetection v2.22…

2026/7/29 6:36:07 阅读更多