先知安全沙龙(北京站) - 滥用 ADWS 协议枚举 Active Directory
字数 1626
更新时间 2025-08-23 02:29:34

滥用 ADWS 协议枚举 Active Directory 教学文档

1. ADWS 协议概述

ADWS (Active Directory Web Services) 是微软从 Windows Server 2008 R2 开始引入的一种基于 SOAP 的 Web 服务协议,用于远程管理 Active Directory。它运行在 TCP 9389 端口上,使用 HTTP/HTTPS 传输。

主要特点:

  • 基于 SOAP (Simple Object Access Protocol)
  • 使用 WSDL (Web Services Description Language) 描述服务接口
  • 默认在域控制器上启用
  • 提供对 Active Directory 的编程访问接口

2. ADWS 协议的安全问题

ADWS 协议在设计上存在以下安全问题,可被攻击者利用进行信息枚举:

  1. 无需认证的信息泄露:部分操作可以在未认证状态下执行
  2. 过度暴露的接口:提供了过多关于 AD 结构的详细信息
  3. 缺乏足够的访问控制:默认配置下权限控制不足

3. 利用 ADWS 枚举 Active Directory

3.1 信息收集基础

通过 ADWS 可以收集以下关键信息:

  • 域名称和功能级别
  • 域控制器信息
  • 用户账户和组信息
  • 计算机对象
  • 组策略信息
  • 信任关系

3.2 利用工具和技术

3.2.1 使用 PowerShell

# 发现可用的ADWS端点
$adwsEndpoint = Get-ADWebServiceEndpoint -Discover

# 建立连接
$connection = New-ADWSConnection -Endpoint $adwsEndpoint

# 枚举域信息
Get-ADDomain -Connection $connection

# 枚举用户
Get-ADUser -Filter * -Connection $connection

# 枚举计算机
Get-ADComputer -Filter * -Connection $connection

3.2.2 使用 Python 脚本

import requests
from zeep import Client

# 发现ADWS服务
def discover_adws(domain_controller):
    url = f"http://{domain_controller}:9389/ActiveDirectoryWebServices/Windows/Discovery?disco"
    response = requests.get(url)
    return response.text  # 包含WSDL信息

# 创建SOAP客户端
def create_adws_client(domain_controller):
    wsdl_url = f"http://{domain_controller}:9389/ActiveDirectoryWebServices/Windows/Directory/WSMan?wsdl"
    client = Client(wsdl_url)
    return client

# 枚举域信息
def enumerate_domain(client):
    return client.service.GetDomainInfo()

3.3 具体枚举技术

3.3.1 域信息枚举

  • 获取域名称、SID、功能级别
  • 获取域控制器列表
  • 获取域密码策略

3.3.2 用户账户枚举

  • 获取所有用户账户列表
  • 获取用户属性(包括敏感属性如lastLogonTimestamp)
  • 识别特权账户(Domain Admins, Enterprise Admins等)

3.3.3 计算机对象枚举

  • 获取域内所有计算机列表
  • 识别域控制器
  • 获取操作系统信息

3.3.4 组策略枚举

  • 获取GPO列表
  • 解析GPO设置
  • 识别安全策略配置

4. 防御措施

4.1 检测ADWS滥用

  1. 监控网络流量

    • 异常数量的ADWS请求(特别是来自非管理员的请求)
    • 来自非管理主机的ADWS连接
  2. 日志分析

    • 检查安全日志中的ADWS访问记录
    • 监控失败的认证尝试

4.2 防护措施

  1. 网络层防护

    • 限制对TCP 9389端口的访问
    • 仅允许管理网络访问ADWS
  2. 服务配置

    • 禁用不必要的ADWS功能
    • 配置更严格的访问控制
  3. 认证强化

    • 强制使用Kerberos认证
    • 实施多因素认证
  4. 替代方案

    • 考虑使用更安全的远程管理协议
    • 对敏感操作实施审批流程

5. 高级利用技术

5.1 结合其他协议的攻击链

ADWS可以与其他协议结合形成更复杂的攻击:

  • 结合LDAP进行更深入的信息收集
  • 结合SMB进行横向移动
  • 结合Kerberos进行权限提升

5.2 自动化攻击框架集成

可以将ADWS枚举集成到自动化攻击框架中:

  • 作为Cobalt Strike的初始侦察模块
  • 作为BloodHound的数据收集源
  • 作为Empire/PowerSploit的攻击模块

6. 实际案例分析

案例1:通过ADWS发现特权账户

攻击者通过未认证的ADWS请求获取了所有用户列表,筛选出具有高特权的服务账户,然后针对这些账户进行密码喷洒攻击。

案例2:利用ADWS进行横向移动

攻击者通过已攻陷的工作站,使用ADWS协议枚举域内计算机,识别出未打补丁的系统,然后利用已知漏洞进行横向移动。

7. 总结

ADWS协议作为Active Directory的管理接口,在提供便利的同时也带来了安全风险。安全团队应当:

  1. 充分了解ADWS协议的工作原理和潜在风险
  2. 实施适当的监控和防护措施
  3. 定期审计ADWS的使用情况
  4. 教育管理员和安全人员关于ADWS滥用的风险

通过合理配置和监控,可以在保持管理功能的同时降低ADWS协议被滥用的风险。

相似文章
相似文章
 全屏