继上一篇的破坏AD域后 接下来写这个枚举AD域

为什么要进行 AD 枚举

前面跟着进行配置就好了

这里的话给了AD域的凭证 就是账号密码 直接就可以进行登录了

(这个域用户的主机开启了ssh和RDP服务 我们可以直接连接其电脑)

凭证注入

这里的讲的就是在获取域凭证之后 利用RDP或者SSH登录后 来在该域中添加一个新的域用户(就是我们自己) 相当于后门吧

在讨论 AD 对象和枚举之前,我们首先讨论凭据注入方法。从破坏 AD 网络中,您会发现凭据通常可以在不损害加入域的计算机的情况下找到。特定的枚举技术可能需要特定的设置才能工作。

需要一台 Windows 计算机。这将使我们能够使用几种内置方法来进行枚举和利用。在此网络中,我们将探索这些内置工具之一,称为 runas.exe 二进制文件。

Runas Explained (解释)

讲一下这个Runas这个工具的作用

  • runas.exe 是 Windows 操作系统中的一个实用工具,用于以不同的用户身份运行程序或命令。它允许你在一个用户账户下以另一个用户账户的权限运行程序。

    runas.exe 的主要功能是允许管理员或具有特定权限的用户在不切换用户账户的情况下执行某些任务。当你需要以管理员权限运行某个程序或命令时,可以使用 runas.exe 来提升权限,而不必完全切换到管理员账户。

    在命令提示符或运行对话框中,你可以使用以下语法来运行 runas.exe:

    1
    runas [/profile] [/env] [/netonly] [/savecred] [/smartcard] [/showtrustlevels] [/trustlevel] /user:<UserName> <Command>

    其中,/user: 用于指定要以哪个用户账户的身份运行程序或命令, 是要运行的程序或命令。

    需要注意的是,使用 runas.exe 运行程序或命令需要提供正确的用户凭据(例如用户名和密码),并且用户账户必须具有足够的权限来执行所需的操作。

    请注意,由于 runas.exe 涉及到权限提升和用户凭据的使用,所以在使用时要小心,并确保只在可信任的环境中使用。

简单来说就是在我们控制的计算机下通过获取的凭证来执行任何想要执行的命令(域的名字也要知道)

在安全评估中,您通常可以访问网络并刚刚发现 AD 凭据,但没有方法或权限来创建新的加入域的计算机。因此,我们需要能够在我们控制的 Windows 计算机上使用这些凭据。

如果我们有 : 格式的 AD 凭据,我们可以使用 Runas(一个合法的 Windows 二进制文件)将凭据注入到内存中。通常的 Runas 命令看起来像这样:

1
runas.exe /netonly /user:<domain>\<username> cmd.exe
  • /netonly - 由于我们没有加入域,因此我们希望加载网络身份验证的凭据,但不针对域控制器进行身份验证。因此,在计算机上本地执行的命令将在标准 Windows 帐户的上下文中运行,但任何网络连接都将使用此处指定的帐户进行。
  • /user - 在这里,我们提供域和用户名的详细信息。使用完全限定域名 (FQDN) 而不仅仅是域的 NetBIOS 名称始终是一个安全的选择,因为这将有助于解决问题。
  • cmd.exe - 这是我们在注入凭据后要执行的程序。这可以更改为任何内容,但最安全的选择是 cmd.exe,因为您可以使用它来启动您想要的任何内容,并注入凭据。

运行此命令后,系统将提示您提供密码。请注意,由于我们添加了 /netonly 参数,因此域控制器不会直接验证凭据,因此它将接受任何密码。我们仍然需要确认网络凭据是否已成功且正确加载。

注意:如果您使用自己的 Windows 计算机,则应确保以管理员身份运行第一个命令提示符。这会将管理员令牌注入到 CMD 中。如果您运行需要 Runas 生成的 CMD 本地管理权限的工具,则令牌将已经可用。这不会为您提供网络管理权限,但会确保您执行的任何本地命令都将以管理权限执行。

这样的好处就是在本地访问别的东西的时候是不需要向域控制器那边验证凭据了 直接就本地验证就行

(下面就是使用这个runas的好处)

image-20230907174837605

通过 Microsoft 管理控制台进行枚举

这个就不多写了 就是通过RDP后 通过MMC来查看域的整个结果和人员服务器组成情况

通过命令提示符进行枚举

这里的前提都是在能登录到对方主机的前提下 ssh或者rdp

CMD 有一个内置命令,我们可以使用它来枚举有关 AD 的信息,即 netnet 命令是一个枚举有关本地系统和 AD 信息的便捷工具。我们将看看从这个位置可以列举的一些有趣的事情,但这并不是一个详尽的列表。

我们可以使用 net 命令通过 user 子选项列出 AD 域中的所有用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\>net user /domain
The request will be processed at a domain controller for domain za.tryhackme.com

User accounts for \\THMDC

-------------------------------------------------------------------------------
aaron.conway aaron.hancock aaron.harris
aaron.johnson aaron.lewis aaron.moore
aaron.patel aaron.smith abbie.joyce
abbie.robertson abbie.taylor abbie.walker
abdul.akhtar abdul.bates abdul.holt
abdul.jones abdul.wall abdul.west
abdul.wilson abigail.cox abigail.cox1
abigail.smith abigail.ward abigail.wheeler
[....]
The command completed successfully.

这将为我们返回所有 AD 用户,并有助于确定域的大小以进行进一步的攻击。我们还可以使用此子选项来枚举有关单个用户帐户的更详细信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
C:\>net user zoe.marshall /domain
The request will be processed at a domain controller for domain za.tryhackme.com

User name zoe.marshall
Full Name Zoe Marshall
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never

Password last set 2/24/2022 10:06:06 PM
Password expires Never
Password changeable 2/24/2022 10:06:06 PM
Password required Yes
User may change password Yes

Workstations allowed All
Logon script
User profile
Home directory
Last logon Never

Logon hours allowed All

Local Group Memberships
Global Group memberships *Domain Users *Internet Access
The command completed successfully.

注意:如果用户只是少数 AD 组的一部分,此命令将能够向我们显示组成员身份。但是,通常,在超过十个组成员身份后,该命令将无法列出所有组成员。

我们可以使用 net 命令通过使用 group 子选项来枚举域的组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C:\>net group /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Group Accounts for \\THMDC

-------------------------------------------------------------------------------
*Cloneable Domain Controllers
*DnsUpdateProxy
*Domain Admins
*Domain Computers
*Domain Controllers
*Domain Guests
*Domain Users
[...]
*Schema Admins
*Server Admins
*Tier 0 Admins
*Tier 1 Admins
*Tier 2 Admins
The command completed successfully.

这些信息可以帮助我们找到目标执行的特定群体。我们还可以通过在同一命令中指定组来枚举更多详细信息,例如组的成员身份:

1
2
3
4
5
6
7
8
9
10
11
12
13
C:\>net group "Tier 1 Admins" /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Group name Tier 1 Admins
Comment

Members

-------------------------------------------------------------------------------
t1_arthur.tyler t1_gary.moss t1_henry.miller
t1_jill.wallis t1_joel.stephenson t1_marian.yates
t1_rosie.bryant
The command completed successfully.

我们可以使用 net 命令通过 accounts 子选项枚举域的密码策略:

1
2
3
4
5
6
7
8
9
10
11
12
13
C:\>net accounts /domain
The request will be processed at a domain controller for domain za.tryhackme.com

Force user logoff how long after time expires?: Never
Minimum password age (days): 0
Maximum password age (days): Unlimited
Minimum password length: 0
Length of password history maintained: None
Lockout threshold: Never
Lockout duration (minutes): 30
Lockout observation window (minutes): 30
Computer role: PRIMARY
The command completed successfully.

这将为我们提供有用的信息,例如:

  • Length of password history kept. Meaning how many unique passwords must the user provide before they can reuse an old password.
    保留的密码历史记录长度。这意味着用户必须提供多少个唯一密码才能重新使用旧密码。
  • The lockout threshold for incorrect password attempts and for how long the account will be locked.
    错误密码尝试的锁定阈值以及帐户将被锁定的时间。
  • The minimum length of the password.
    密码的最小长度。
  • The maximum age that passwords are allowed to reach indicating if passwords have to be rotated at a regular interval.
    允许密码达到的最长期限,指示密码是否必须定期轮换。

net 命令必须从加入域的计算机执行。如果计算机未加入域,则它将默认为 WORKGROUP 域。

通过 PowerShell 进行枚举

这个懒得复制了 直接去thm直接看就行了

通过 Bloodhound 进行枚举(这里说这个是目前最牛的工具)

这个工具确实牛逼 (使用条件)

  • 能够ssh或者RDP目标主机 (就是获得到凭证了)
  • 然后上传Sharphound脚本获取整个AD域的所有信息
  • 在linux上进行Bloodhound 工具进行查看