尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

内网安全实战:Kerberos协议攻击与防御深度解析

内网安全实战:Kerberos协议攻击与防御深度解析 1. 项目概述为什么我们需要Rebeus这样的内网安全工具在任何一个稍具规模的企业或组织的IT环境中内网Intranet都是核心业务和数据流转的主动脉。我们通常会把防火墙、入侵检测系统IDS等安全设备部署在网络边界严防死守来自互联网的威胁这就像给大楼安装了坚固的大门和保安。然而一个常常被忽视的事实是绝大部分严重的安全事件其攻击链的起点或关键环节恰恰发生在内网之中。攻击者可能通过一封钓鱼邮件、一个被感染的U盘或者一个存在漏洞的对外服务成功在内部一台普通员工的电脑上获得了一个初始立足点。从这一刻起真正的“战斗”才在内网打响。这个初始立足点安全行话里叫“初始访问”或“立足点”。攻击者的目标很明确以此为跳板在内网中横向移动寻找更重要的服务器如域控制器、文件服务器、数据库窃取核心数据或部署勒索软件。内网环境通常被认为是“可信的”因此主机之间的访问控制如Windows域内的权限继承、网络通信如SMB、RDP、WinRM协议往往不如边界那么严格。这就给了攻击者巨大的活动空间。“Rebeus”正是在这种攻防对抗背景下一个在安全圈内特别是红队模拟攻击方和渗透测试人员中备受推崇的工具。它不是一个图形化的一键扫描器而是一个基于.NET框架的命令行工具核心能力是滥用和操作微软的Kerberos认证协议。简单来说Kerberos是Windows域环境中用于身份验证的“门票系统”。Rebeus则像一个精通各种伪造、转发票务规则的黑客能让我们以测试者的视角深入理解并演示攻击者是如何利用这个“门票系统”的固有弱点在内网中悄无声息地实现权限提升和横向移动的。对于安全工程师、系统管理员和所有关心内网健康度的人来说学习使用Rebeus绝非是为了发动攻击其价值在于知己知彼百战不殆。只有清晰地知道攻击者可能利用哪些路径、哪些协议漏洞我们才能有针对性地加固我们的防御体系——比如启用哪些安全策略、监控哪些异常日志、如何配置更细粒度的访问控制。接下来我将以一个内部渗透测试人员的视角带你拆解Rebeus的核心功能、实战应用场景以及背后的安全原理。2. 核心原理拆解Kerberos协议与它的“阿喀琉斯之踵”要玩转Rebeus必须对Kerberos协议有一个基础的理解。你可以把它想象成一个高度安全的剧院检票流程用户客户端想去访问服务器某个域内资源比如共享文件夹。用户首先向域控制器DC的密钥分发中心KDC出示自己的密码或哈希说“我想去看剧。”KDC验证身份后发给用户一张票据授予票据TGT。这张TGT就像你的身份证证明了你是域内的合法用户但它不能直接用于进场看剧。当用户想访问具体服务器时他拿着TGT再次找到KDC说“我用我的身份证TGT申请一张观看《XX服务器》这部剧的票。”KDC验证TGT有效后会颁发一张服务票据ST给用户。这张ST是加密的一部分用服务器的密钥加密用户看不懂另一部分用用户自己的密钥加密包含会话密钥等信息。用户将这张ST提交给目标服务器。服务器用自己的密钥解密ST中属于它的那部分验证通过后便允许用户访问。这个过程本身非常安全。问题出在实现细节和某些特性上Rebeus主要针对以下几个核心弱点2.1 黄金票据Golden Ticket—— 伪造“万能身份证”攻击原理TGT是由KDC使用一个特殊的、高权限的账户——“krbtgt”账户的密码哈希进行加密签名的。如果攻击者通过某种手段例如已经攻陷了域控制器获取了krbtgt账户的密码哈希NTLM Hash他就可以脱离KDC自己伪造任意用户的TGT。因为所有域控制器都使用同一个krbtgt哈希来验证TGT所以这张伪造的TGT在任何域控制器眼里都是合法的。Rebeus的利用Rebeus可以让我们在拥有krbtgt哈希的前提下现场伪造一张属于“Domain Admins”组成员的TGT。拥有了这张“黄金票据”攻击者就可以在域内畅通无阻访问任何资源因为从认证层面看他已经是“皇帝”了。防御思考这凸显了保护域控制器和krbtgt账户哈希的极端重要性。定期更改krbtgt账户密码这是一个需要谨慎规划的操作可以使得之前窃取的哈希失效从而作废所有基于该哈希伪造的黄金票据。2.2 白银票据Silver Ticket—— 伪造“特定剧场的门票”攻击原理与服务票据ST不同白银票据是直接伪造访问特定服务如CIFS文件共享、HTTP网站、MSSQL数据库的票据。它不需要与KDC交互因为ST中有一部分是用目标服务器自己的密码哈希加密的。如果攻击者获取了某个服务器账户的密码哈希他就可以直接为任意用户伪造访问该服务的ST。Rebeus的利用例如我们获取了一台文件服务器机器账户的哈希就可以用Rebeus伪造一张域管理员访问该服务器CIFS服务的白银票据。拿着这张票可以直接访问服务器上的所有文件共享而无需经过KDC验证因此也不会在KDC上留下日志。防御思考白银票据攻击更难检测因为它绕过了KDC。防御的关键在于保护每一台域内计算机和服务账户的密码哈希避免其被窃取。同时启用Windows事件日志中的详细Kerberos日志并部署SIEM系统进行异常行为分析如用户访问服务时没有对应的TGT请求记录有助于发现此类攻击。2.3 票据传递攻击Pass-the-Ticket PtT—— “捡到别人的票就用”攻击原理在Kerberos认证中票据TGT或ST是存储在客户端内存LSASS进程中的。如果攻击者通过凭证转储工具如Mimikatz从内存中提取到了这些票据文件.kirbi格式他就可以将这些票据文件注入到自己当前会话的内存中从而“扮演”票据所属的用户身份无需知道该用户的明文密码。Rebeus的利用Rebeus可以方便地管理这些票据。它可以将从其他工具获取的.kirbi票据文件注入到当前会话也可以将当前会话中的票据导出为文件用于在其他机器上传递使用。这是内网横向移动中最常用、最有效的手段之一。防御思考限制高权限账户尤其是域管理员在普通工作站上的登录行为。启用“受保护的用户”组、限制票据生命周期、强制使用智能卡认证等措施可以增加攻击者获取高价值票据的难度。同时部署终端检测与响应EDR工具监控对LSASS进程的异常内存读取操作。2.4 Kerberoasting—— “低成本钓取服务账户哈希”攻击原理这是针对服务票据ST的一种攻击。当域用户请求访问某个服务时KDC返回的ST中有一部分是用服务账户的密码哈希加密的。任何域用户都可以为自己请求访问任何服务的ST。攻击者可以大量请求各种服务的ST然后离线暴力破解加密部分尝试还原出服务账户的密码。由于许多服务账户如SQL Server运行账户的密码可能设置得不够复杂且很少更改因此破解成功率较高。Rebeus的利用Rebeus提供了非常简洁的命令可以一键请求所有SPN服务主体名称注册用户的服务票据并将其导出为适合Hashcat或John the Ripper破解的格式。防御思考为服务账户设置强而复杂的密码长度25位随机并定期更换。尽可能使用“组托管服务账户gMSA”其密码由系统自动管理且非常复杂。监控事件日志中大量异常的Kerberos TGS请求事件。3. 环境准备与工具部署在开始实操前我们需要一个合法的测试环境。绝对禁止在未经授权的生产环境或他人的网络中使用Rebeus等工具。3.1 搭建测试实验室最理想的测试环境是一个隔离的虚拟网络包含至少以下角色一台域控制器DC安装Windows Server并提升为Active Directory域控制器。创建一个测试域例如lab.local。一台成员服务器加入域并安装一些服务如文件共享CIFS、Web服务HTTP为其注册SPN。一台客户端工作站加入域使用一个普通域用户登录。我们将在这台机器上运行Rebeus。一台攻击机可选可以是Kali Linux或另一台Windows机器用于进行网络抓包、破解哈希等辅助操作。你可以使用VMware Workstation、VirtualBox或Hyper-V来搭建这个环境。确保网络模式设置为“仅主机”或“内部网络”与你的物理机隔离。3.2 获取与运行RebeusRebeus是一个C#项目通常以源代码或编译好的可执行文件形式提供。下载从其官方GitHub仓库github.com/GhostPack/Rebeus下载最新版本的Rebeus.exe。GhostPack是著名安全研究员Harmj0y维护的工具集信誉较高。运行Rebeus是命令行工具。在测试环境的客户端工作站上打开一个具有普通域用户权限的命令行窗口。将Rebeus.exe拷贝到该机器上直接运行即可看到帮助菜单。C:\Tools .\Rebeus.exe它不需要安装开箱即用。注意Windows Defender或其他杀毒软件可能会将Rebeus识别为恶意工具并删除。在测试环境中你需要临时禁用实时保护或将Rebeus所在目录添加到排除项。在生产环境的安全评估中需要与防御团队协调采用白名单或允许执行的方式。3.3 基础信息收集在发起任何“攻击”之前良好的信息收集是成功的一半。Rebeus本身也集成了一些信息收集功能。# 查看当前用户的Kerberos票据TGT和ST C:\Tools .\Rebeus.exe tgtdeleg # 这个命令利用了TGT delegation特性来尝试获取当前用户的TGT是查看票据的一种方式。 # 更通用的查看票据缓存命令是 klist系统自带但Rebeus的导出功能更强。 # 查询域内所有的SPN服务主体名称这是发现潜在攻击目标服务账户的关键步骤 C:\Tools .\Rebeus.exe kerberoast /stats运行kerberoast /stats会列出所有注册了SPN的用户并显示加密类型。这能让你对域内服务账户有个整体了解。4. 核心攻击手法实战演示假设我们已经在测试环境中以一个普通域用户lab\john的身份登录到了客户端工作站。4.1 Kerberoasting攻击实战这是门槛最低、最常被初始攻击者使用的手法。步骤一请求所有服务票据C:\Tools .\Rebeus.exe kerberoast /outfile:hashes.txt这条命令会以当前用户身份向域控制器请求所有能找到的SPN对应的服务票据TGS-REP并将这些票据中加密的部分即使用服务账户哈希加密的部分提取出来以Hashcat兼容的格式$krb5tgs$23$*...保存到hashes.txt文件中。步骤二分析结果打开hashes.txt你会看到多行哈希值。每一行对应一个服务账户。你需要关注用户名例如MSSQL_SvcLAB.LOCAL。服务类型例如cifs文件共享httpWeb服务MSSQLSvcSQL Server。加密类型通常是RC4-HMAC(etype 23) 或AES256(etype 18)。RC4加密的哈希破解速度远快于AES。步骤三离线破解将hashes.txt拷贝到你的攻击机如Kali使用Hashcat进行破解。# 破解RC4加密的Kerberos TGS哈希 kalikali:~$ hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt # 破解AES256加密的难度大很多 kalikali:~$ hashcat -m 19600 hashes.txt /usr/share/wordlists/rockyou.txt如果运气好破解出了某个服务账户的密码那么你就获得了该账户的权限。如果这个服务账户属于域管理员组或者拥有对其他服务器的管理权限那么整个域就危在旦夕了。实操心得在实际测试中我经常先运行/stats看看有多少RC4加密的账户。优先破解这些成功率更高。另外目标选择很重要像MSSQLSvc、CIFS这类高价值服务的账户是首要目标。4.2 票据传递攻击实战假设我们通过其他手段比如利用系统漏洞提升到SYSTEM权限后用Mimikatz的sekurlsa::tickets /export命令已经导出了一个域管理员用户的TGT票据文件admin.kirbi。步骤一注入票据现在我们在普通用户john的会话中注入这张高权限票据。C:\Tools .\Rebeus.exe ptt /ticket:admin.kirbi命令执行成功后当前会话的内存中就包含了域管理员的TGT。你可以用klist命令验证会发现多了一张来自域管理员账户的票据。步骤二利用票据访问资源此时无需任何密码你就可以以域管理员身份访问域内任何资源。例如使用系统自带的dir命令列出域控制器的C$共享C:\Tools dir \\dc01.lab.local\c$\访问会成功。因为当你访问\\dc01...时系统会自动使用内存中那张域管理员的TGT去申请访问CIFS服务的ST整个过程悄无声息。注意事项PtT攻击是“无日志”或“低日志”的。在目标服务器如DC的安全日志中你只会看到域管理员账户的登录事件而无法追溯到最初的攻击者账户john。这给事件溯源带来了极大困难。防御方需要结合多台机器的日志进行关联分析。4.3 白银票据攻击实战假设我们通过Kerberoasting破解了文件服务器FILESERVER01机器账户的密码哈希或者通过其他漏洞获取了该哈希NTLM hash。步骤一伪造白银票据我们要伪造一张允许域管理员Administrator访问FILESERVER01上CIFS服务的票据。C:\Tools .\Rebeus.exe silver /service:cifs /target:FILESERVER01.lab.local /domain:lab.local /rc4:NTLM_Hash_of_FILESERVER01$ /user:Administrator /ptt参数解释/service:cifs 伪造访问CIFS文件共享服务的票据。/target 目标服务器的主机名。/domain 域名。/rc4 目标服务器机器账户的NTLM哈希RC4密钥。/user 我们要伪造的用户名这里用域管理员。/ptt 直接注入到当前会话Pass-the-Ticket。步骤二验证与访问执行成功后同样可以用klist查看。然后直接访问该服务器的共享C:\Tools dir \\FILESERVER01.lab.local\c$\你将获得访问权限。注意这个过程完全没有与域控制器交互因此即使在DC上开启最详细的审核也看不到这次票据申请记录。4.4 黄金票据攻击实战高危操作这个操作通常发生在攻击者已经完全控制了域控制器并转储了krbtgt账户的哈希之后。这是“核弹级”的攻击意味着整个域的Kerberos信任体系被攻破。步骤一获取krbtgt哈希通过域控制器上的提权工具如Mimikatz获取krbtgt账户的NTLM哈希RC4或AES密钥。假设我们拿到了RC4哈希。步骤二伪造黄金票据在域内任何一台机器上甚至是一台新加入的机器执行C:\Tools .\Rebeus.exe golden /rc4:krbtgt_NTLM_Hash /domain:lab.local /sid:Domain_SID /user:FakeAdmin /ptt参数解释/rc4krbtgt账户的NTLM哈希。/domain 域名。/sid 域的SID安全标识符可以通过whoami /user查看当前用户的SID然后去掉末尾的-RID部分得到域SID。/user 可以任意指定一个用户名甚至可以是不存在的用户如FakeAdmin。/ptt 直接注入。步骤三验证“上帝”权限票据注入后你可以尝试访问域控制器的目录创建域管理员账户等操作。C:\Tools dir \\dc01.lab.local\c$\ C:\Tools net user backdooradmin Pssw0rd! /add /domain C:\Tools net group Domain Admins backdooradmin /add /domain这些操作都会成功。因为你伪造的TGT被所有域控制器认为是合法的你拥有了域内任意用户的身份。严重警告黄金票据攻击是毁灭性的。在测试环境中操作后唯一有效的补救措施是重置krbtgt账户的密码两次微软官方建议。因为KDC会同时保存当前和上一次的密码哈希用于票据验证连续重置两次才能确保旧的哈希彻底失效。这会导致域内所有现有的Kerberos票据包括所有用户登录的TGT全部失效需要重新登录对生产环境影响巨大。因此保护krbtgt哈希是域安全的重中之重。5. 防御检测与缓解措施实录作为蓝队防御方或系统管理员了解攻击是为了更好地防御。针对Rebeus所利用的Kerberos弱点我们可以从以下几个方面加固5.1 强化监控与日志分析启用详细Kerberos日志在域控制器上配置“审核策略”-“详细跟踪”-“审核Kerberos身份验证服务”为“成功”和“失败”。在“高级安全审核策略”中启用“Kerberos服务票证操作”的审核。这些日志会记录在DC的“安全”事件日志中事件ID包括4768TGT请求4769ST请求4770服务票据续订 **4771Kerberos预身份验证失败**等。监控异常行为Kerberoasting检测 监控事件ID 4769筛选出Ticket Encryption Type为0x17RC4且Account Name是用户账户而非计算机账户的请求。一个用户账户在短时间内如10分钟请求大量不同服务的ST是典型的Kerberoasting行为。黄金票据检测 黄金票据伪造的TGT不会在DC上产生标准的4768事件因为票据是伪造的未向KDC请求。但可以通过其他异常间接发现例如一个之前从未出现过的用户名FakeAdmin突然拥有了高权限并执行敏感操作或者从网络流量中抓包分析发现TGT的加密时间戳与当前时间差异巨大因为黄金票据可以设置超长的有效期。白银票据检测 最为困难因为不涉及DC。只能在目标服务器如文件服务器上监控事件ID 4624登录成功和4648使用显式凭证登录并关注登录进程是否为Kerberos且网络地址是否来自可疑位置。结合用户行为分析UEBA如果发现一个普通用户突然以管理员身份访问了某台服务器就需要警惕。5.2 实施主动防御策略针对Kerberoasting为服务账户设置强密码 长度至少25位随机包含大小写字母、数字和符号。定期更换。使用组托管服务账户gMSA gMSA的密码由AD自动管理非常复杂且定期自动轮换从根本上杜绝了密码被破解的风险。将服务账户加入“受保护的用户”组 该组的成员强制使用更安全的Kerberos加密类型如AES且票据生命周期很短。实施最小权限原则 确保服务账户只拥有完成其功能所必需的最小权限绝不是域管理员。针对票据传递与伪造限制域管理员登录权限 禁止域管理员在非管理员的服务器和工作站上交互式登录或进行网络登录。这能极大减少高权限票据在非安全终端上缓存的机会。启用“受限的委派”和“基于资源的约束委派” 替代不安全的老式约束委派精确控制哪些服务可以代表用户去访问其他服务。部署LAPS本地管理员密码解决方案 确保每台计算机的本地管理员密码不同且随机并定期自动更改防止通过本地管理员权限横向移动后获取机器账户哈希。启用Credential GuardWindows 10/11, Server 2016 这是一项基于虚拟化的安全功能能将存储凭证的LSASS进程隔离在安全的内核空间中使Mimikatz等工具无法直接读取内存中的明文密码和票据哈希极大地增加了攻击者获取凭证的难度。5.3 应急响应与事件排查当怀疑发生Kerberos相关攻击时可以按以下流程排查立即隔离受影响主机 将疑似被入侵的服务器或工作站从网络中断开。收集证据使用klist或Rebeus的tgtdeleg命令查看可疑主机上的Kerberos票据缓存。导出并分析域控制器和关键服务器上的安全事件日志重点关注4768、4769、4624、4625、4672特权使用等事件。如果条件允许对可疑主机的内存进行镜像以便后续进行深度取证分析如使用Volatility分析LSASS内存。清除持久化如果发现黄金票据立即按照微软官方流程执行两次krbtgt账户密码重置。这是清除黄金票据威胁的唯一有效方法。重置所有疑似泄露的服务账户和用户账户密码。审查域内所有管理员组成员移除可疑账户。溯源与加固分析攻击链找出最初的入侵点如钓鱼邮件、未打补丁的漏洞。根据攻击路径修补漏洞加强员工安全意识培训并实施前面提到的各项加固策略。Rebeus像一把锋利的手术刀在安全测试人员手中它能精准地解剖出内网Kerberos认证体系中最脆弱的环节。通过这次深入的探索我们不仅学会了如何“挥舞”这把刀更重要的是理解了它每一招每一式所指向的“命门”在哪里。真正的安全不在于隐藏弱点而在于正视它、理解它并加固它。希望这篇基于实战的解析能帮助你从一个更高的维度去审视和守护你的内网环境。在安全的世界里最好的防御永远是比攻击者想得更深、更远。
返回列表