活动目录的枚举学习

文章目录

  • [一 活动目录枚举](#一 活动目录枚举)
  • [二 活动目录枚举的重要性](#二 活动目录枚举的重要性)
  • [三 枚举的内容](#三 枚举的内容)
  • [四 进行枚举的常见工具和技术](#四 进行枚举的常见工具和技术)
  • [五 一个简单的攻击场景示例](#五 一个简单的攻击场景示例)
  • [六 PowerView和powersploit框架](#六 PowerView和powersploit框架)
  • [Kerberos Authentication](#Kerberos Authentication)

一 活动目录枚举

  • 简单来说,活动目录枚举就是攻击者在获得一个初始立足点后,像侦探一样系统地收集和整理目标网络内部信息的过程。
  • 想象一下,你进入了一个巨大的、不熟悉的办公楼(企业网络)。你不知道谁在这里工作(用户),他们分别在哪个部门(用户组),办公室里有什么贵重物品(计算机、服务器),以及整栋楼的安全规则是怎样的。
  • 活动目录 就像是这栋办公楼的"中央信息总台"或"人事部+安保部"的合体。它存储了所有关于用户、计算机、组、策略等核心信息。

因此,枚举 就是你主动去查询这个"中央信息总台",试图获取以下问题的答案:

  • 这栋楼里都有谁?(用户列表)
  • 谁是管理员?(特权用户)
  • 这些人是怎么分组的?(用户组关系)
  • 楼里有哪些电脑和服务器?(计算机列表)
  • 安全规则是什么?谁可以访问哪里?(组策略和权限)

  • 最终目的:通过回答这些问题,绘制出一张详细的"网络地图",并从中找到最薄弱的环节和最快捷的路径,以便最终攻占整栋大楼(获取域控权限)。
  • 活动目录枚举是渗透测试中,在取得初步访问权限后,为了深入理解目标网络结构、发现特权账户和关键资产、并规划后续攻击路径而进行的系统性信息收集活动。它是内网渗透测试成功与否的关键环节,也是蓝队(防御方)需要重点监控和防御的领域。

二 活动目录枚举的重要性

在渗透测试中,枚举是 横向移动 和 权限提升 的基石。

  1. 信息就是力量:你掌握的信息越多,攻击的成功率和效率就越高。盲目攻击就像在黑暗中乱撞,而枚举则为你点亮了灯。
  2. 发现攻击路径:通过分析用户、组和权限之间的关系,你可以清晰地看到一条从普通用户到域管理员的攻击链。例如,你发现一个普通用户A是"服务器运维组"的成员,而这个组对某台服务器有管理权限,那这台服务器就可能成为你的下一个目标。
  3. 节省时间和精力:直接攻击域控制器通常很困难。枚举可以帮助你找到更容易攻破的次要目标,通过这些"垫脚石"逐步接近最终目标。

三 枚举的内容

  • 攻击者通常会系统性地收集以下几类关键信息:
类别 具体内容 为什么重要
域信息 域名、域控服务器名和IP、域信任关系、域策略(密码策略等) 了解攻击环境的整体结构和基本规则。
用户信息 所有用户名、描述信息、最后登录时间、密码最后设置时间、是否启用、邮箱地址等。 寻找可用的用户账户(例如:已禁用但密码未改的账户)、高价值用户(如高管)、为密码喷洒攻击准备用户列表。
计算机信息 所有加入域的计算机名、操作系统、最后登录用户等。 识别潜在的攻击目标,如管理员经常登录的工作站、存在漏洞的服务器。
组信息 所有组的列表(尤其是特权组如Domain Admins, Enterprise Admins)、组的成员关系。 这是关键中的关键! 直接定位到拥有最高权限的用户,并理解权限的继承关系。
共享资源 网络共享文件夹、其权限和内容。 可能包含敏感文件、配置文件,甚至是密码。
组策略对象 GPO的设置和链接的目标。 了解网络的安全配置,可能发现配置错误,甚至从中提取密码。
服务与SPN 服务主体名称,用于标识服务。 为 Kerberoasting 攻击做准备,可以破解服务账户的密码哈希。

四 进行枚举的常见工具和技术

枚举可以在不同的权限级别下进行:

  1. 非认证枚举(信息收集阶段)

    • 通过查询端口的NetBIOS、LDAP等,有时可以获取到域名称、用户列表等有限信息。现代系统默认配置下较难成功。
  2. 认证后枚举(最常见的场景)

    • 已经攻陷一台域内的机器,并获取一个普通域用户的权限。此时,你可以使用该用户的身份凭证来查询活动目录。
    • 命令行工具(原生Windows工具,隐蔽性好):
      • net 命令:net user /domain, net group "Domain Admins" /domain, net view /domain
      • PowerView:一个非常强大的PowerShell脚本,是net命令的超级增强版,可以查询几乎所有AD信息。
    • 专业AD枚举工具:
      • BloodHound:这不仅仅是枚举工具,更是图形化分析工具。它通过运行一个数据收集器(SharpHound)来"吞噬"所有AD数据,然后生成一个直观的关系图,自动找出攻击路径。这是目前最流行、最强大的工具。
      • AD Module:PowerShell模块,提供类似Get-ADUser, Get-ADGroup等强大cmdlet。
      • Impacket 工具包:一套Python脚本,可以在非Windows机器上执行各种AD枚举和攻击,如ldapsearch

五 一个简单的攻击场景示例

  1. 初始入侵:通过钓鱼邮件,攻击者获取了员工张三的域账号密码。
  2. 枚举开始:攻击者用张三的账号登录到一台跳板机,运行PowerView:
    • Get-NetUser:获取所有用户列表。
    • Get-NetGroupMember "Domain Admins":发现李四是域管理员。
    • Find-LocalAdminAccess:发现张三的账户对一台开发服务器DEV-SRV-01有本地管理员权限。
  3. 横向移动:攻击者登录到DEV-SRV-01,因为他是这台机器的管理员。
  4. 权限提升:在DEV-SRV-01上,他发现了李四(域管理员)曾在此登录过,并且凭据被缓存在内存中。攻击者使用Mimikatz工具成功 dump 出了李四的凭据。
  5. 达成目标:攻击者使用李四的域管理员账号,直接登录域控制器,完全控制了整个域。
  • 在这个例子中,枚举(第2步) 是整个攻击链条的转折点,它指明了从"普通员工张三"到"域管理员李四"的具体攻击路径。

六 PowerView和powersploit框架

  • PowerView是一个非常强大的PowerShell工具,它允许渗透测试人员获得深入了解织的Active Directory域和目录林。
  • PowerView工具使用原生PowerShell编码(经过一些修改)来更好地与Active Directory和Win32应用程序编程接口(API)工作。允许PowerView与Active Directory无缝交互,使用PowerView将大大改进在Active Directory中执行枚举的过程。

  • powersploit框架是一款基于powershell的后渗透框架软件,包含很多power shell攻击脚本。主要用于信息侦察、权限维持、权限提升

  • Kali Linux内置Powersploit,安装在/usr/share/windows-resources/powersploit目录下,可以通过 ls 命令看到各种脚本类型

    bash 复制代码
    cd /usr/share/windows-resources/powersploit                                                                                                                ls
    AntivirusBypass  CodeExecution  Exfiltration  Mayhem  Persistence  
    PowerSploit.psd1 PowerSploit.psm1  Privesc  README.md  Recon  ScriptModification  Tests                                                                                                                                                                                                   
  • 这使用python服务器在kali上搭建一个web页面然后在靶机访问并下载脚本服务,模拟脚本上传到靶机,最后在靶机上执行体验。

    bash 复制代码
    # 进入侦察模块目录
    cd /usr/share/windows-resources/powersploit/Recon
    
    python -m http.server 8000 &
bash 复制代码
cd c:\User\xxx\Downloads
powershell -exectionpolicy bypass
. .\PowerView.ps1
  • PowerShell执行策略用于防止当前用户在本地系统上意外执行PowerShell脚本。但是,可以通过powershell -exectionpolicy bypass绕过限制,所以并不被认为是Windows上的安全措施。

Kerberos Authentication

  • Kerberos 是一种在Windows Server 上运行的网络身份验证协议,允许客户端在网络上进行身份验证并访问域内的服务。

  • Kerberos提供单点登录(SSO),允许用户在网络上进行一次身份验证并访问资源,而无需在每次需要访问新资源时重新输入用户凭据。

  • 支持委派身份验证,这允许客户端计算机上运行的服务在连接到网络上的其他服务时代表经过身份验证的域用户进行操作。

  • Kerberos 支持互操作性,允许Windows 操作系统在也使用Kerberos 作为身份验证机制的其他网络中工作。

  • 在网络上使用 Kerberos 时,它支持相互身份验证,允许两个设备验证彼此的身份。

  • 虽然 NTLM 身份验证的工作原理是质询和响应,基于Windows 的 Kerberos 身份验证使用票证系统

  • 在较高级别上,对Active Directory 中的服务进行Kerberos 客户端身份验证涉及使用充当密钥分发中心(KDC)角色的域控制器。

  • Kerberos 作为第三方可信服务器运行,称为密钥分发中心 (KDC)。

  • 查询域用户

    bash 复制代码
    GET-NetUser
  • 查看域内的共享资源

    bash 复制代码
    Invoke-ShareFinder -Verbose
  • 查看当前域中的GPO(组策略对象)

    bash 复制代码
    Get-netgpo
  • 查看域林的详细信息

    bash 复制代码
    Get-netforeset
  • 查询包含目录内所有对象信息的当前林的所有全局目录

    bash 复制代码
    Get-NetForestCatalog
  • 发现当前用户在当前域中具有本地管理员访问权限的所有设备

    bash 复制代码
    Find-LocalAdminAccess -Verbose
  • 查找

    bash 复制代码
    Invoke-EnumerateLocalAdmin -Verbose
相关推荐
Da Da 泓4 小时前
shellSort
java·数据结构·学习·算法·排序算法
润 下4 小时前
C语言——深入解析C语言指针:从基础到实践从入门到精通(三)
c语言·开发语言·经验分享·笔记·学习·程序人生·其他
焚 城4 小时前
UniApp中Flex布局学习
学习·uni-app
你真的可爱呀5 小时前
uniapp学习【整体实践】
前端·学习·uni-app·实践
润 下5 小时前
C语言——深入解析C语言指针:从基础到实践从入门到精通(二)
c语言·开发语言·经验分享·笔记·学习·程序人生
知识分享小能手5 小时前
微信小程序入门学习教程,从入门到精通,电影之家小程序项目知识点详解 (17)
前端·javascript·学习·微信小程序·小程序·前端框架·vue
风和先行6 小时前
Android Vibrator学习记录
学习
三三木木七6 小时前
AI超级智能体学习笔记
笔记·学习
一只小风华~7 小时前
Vue Router 的三种历史模式详解
前端·javascript·vue.js·笔记·学习·前端框架·ecmascript