概述

这篇Paper深入研究了 Windows 10下的Pass-the-Hash攻击:
本文分析了PtH攻击在windows 10 v1903环境下的可行性。
本文展示了几种hash提取技术。
本文演示了在哪些情况下攻击者可以使用这些hashes进行身份验证(各种协议下执行PtH攻击的条件和方法)。
本文说明了一个企业可以考虑使用的"安全管控"(security controls)措施,可以最大程度降低PtH攻击的风险。

最终,做了的这些测试证明了PtH攻击仍然是一个真正的威胁,每个企业都需要直面这种风险。

意义

  • 研究Pass-the-Hash攻击的意义:
    • 1.有助于已授权的渗透测试
    • 2.有助于企业防御PtH攻击、横向移动
    • 3.有助于安全研究人员继续探索
    • ...

意义较大,故逐字翻译,带上了注释,以供参考。

Paper: 《Pass-the-Hash in Windows 10》
Author: Lukasz Cyra,
Advisor: Sally Vandeven
Accepted: September 25, 2019

摘要

20多年来,攻击者一直在使用传递散列(Pass-the-Hash, PtH)攻击。
为了防御这种攻击,Windows设计发生了几个变化。这些变化影响了攻击的可行性、攻击工具的有效性。
与此同时攻击技术也在提高,出现了新的PtH攻击方法。

所以会有几个问题:
Windows具体环境下,怎么样能够PtH攻击成功?
Windows具体环境下,什么样的配置是脆弱的?
...

本Paper研究了各种方法的哈希提取、各种方法执行PtH攻击(列出攻击的先决条件)、PtH防御建议。

文章最后,本文使用windows 10 v1903展示了PtH对Windows具体环境造成的风险等级。

1.介绍

说明写本文的背景、以及写本文的目的。

背景:
攻击者通常在获得Windows机器的管理员访问权限后,首先要做的事情之一就是提取密码hashes。他们可以使用这些hashes进行离线分析,甚至在"传递散列"(Pass-the-Hash,PtH)攻击中直接访问系统。20多年来,攻击者一直在使用这种技术来促进横向移动(Ewaida, 2010)。
与"hash提取"、"PtH攻击"相关的安全风险是众所周知的。微软一直试图通过Windows的安全升级来提高攻击的难度,其中最近最值得注意的变化是用AES (Deneut, 2018)替换了RC4encryption,并引入了Credential Guard(Joyce, 2019a)。这些变化使得窃取凭证的老方法无效,甚至有从业者提出了“PtH攻击结束”(Green, 2017)。
Windows 10 Authentication: The End of Pass the Hash?

与此同时,攻击技术也在不断发展。新颖、巧妙的攻击方法也被设计出来,如内心独白"Internal Monologue" (Fortuna, 2018),带来了新的安全风险。

  • 所以有这些问题:
    • 1.具体管控措施不明 - 人们对管控措施(防御措施)本身产生了许多困惑。在Windows 10的各种版本中,哪些是可行的,哪些是不可行的;以及流行的攻击工具是否仍然有效,这些问题往往没人研究清楚。
    • 2.被错误信息误导 - 好多地方提供了误导、过时、不正确的信息(Strand, 2018b),不适用于当代系统的信息(Ewaida, 2010)。
    • 3.系统更迭 - 随着微软对Windows 7支持的快速终结,基于Windows的企业正在将桌面环境迁移到Windows 10。这些企业需要获得有关Windows 10安全的"可靠信息",当然其中包括有关PtH攻击的信息。

最终,为了学习这门“PtH攻防”学科,一个人至少需要几个小时的学习和实验。如果借助了碎片化和不可靠的信息来源,还需要再次实际测试去验证。

所以本文的目的是,用实际测试来验证,确认"PtH to Windows 10"可造成的风险。

2. Pass-the-Hash Theory

2.1 Paper Scope

论文范围。

本文假设攻击者已经获得了对主机的远程访问,并试图提取用户多个凭证的hashes,以便于进行横向移动。
在此假设下,本文排除了多种已知的攻击技术:
1.排除“物理攻击”,通过物理访问进行hash提取超出了本文的范围。这同样适用于从损坏的域控制器中提取散列。
2.排除提取“凭证管理器”,本文不考虑从Windows Credential Manager中提取凭据,而是明确地关注用于登录操作系统的密码hashes。

  • 本文只关注3种hashes:
    • NT hashes (也称为 NTLM hashes)
    • NTLMv1 hashes(也称为Net-NTLMv1 hashes)
    • NTLMv2 hashes (也称为Net-NTLMv2 hashes)

为什么关注NT hashes ?
主机是以NT hashes的形式存储OS凭证的(见 Section 4 )。Windows 10使用NT hashes,所以在本文的研究范围内。

为什么关注NTLMv1 hashes 和 NTLMv2 hashes ?
身份验证协议(Authentication protocols),特别是NTLMv1和NTLMv2,不会在网络上传递NT hashes,而是传递来自于NT hashes的值(pass values derived from the NT hashes),分别称为NTLMv1 hashes和NTLMv2 hashes。

各自分别地来看:

  • NTLMv1 hashes - Windows 10环境默认不支持NTLMv1 (Shamir, 2018)。但是,在某些攻击中,可以启用NTLMv1 hashes,因此需要考虑NTLMv1 hashes。
  • NTLMv2 hashes - 在大多数网络中,NTLMv2是启用的,因此本文将考虑NTLMv2 hashes。
    • "工作组配置"(workgroup configuration)中的现代网络使用NTLMv2 (Gombos, 2018)。
    • 基于域的环境默认也支持NTLMv2 hashes (微软,2017)。
    • Kerberos专有环境仍然很少,因为它们可能存在兼容性问题(Renard, 2017)。

为什么本文没有关注以下类型的hashes ?

LM hashes - 是在Windows中存储登录凭证的一种较老的方法,它没有被本文考虑在内。
当使用默认设置时,LM hashes不会存储在Windows 10计算机上(Strand, 2018a)。不过,通过GPO(Group Policy Objects)设置来启用LM hashes是可能的(Gombos, 2018)。

SHA1/SHA2 hashes和MSCach2(即DCC2) hashes - PtH攻击不适用于SHA1/SHA2 (Delaunay, 2017)和MSCach2 (Lundeen, 2014)。

MD5 hashes - 不考虑WDigest身份验证中使用的MD5 hashes,因为Windows 10在默认情况下不使用WDigest (Joyce, 2019b)。

2.2. Hashing Algorithms

如Figure 1所示,从明文密码生成NT hash这一过程,需要将MD4散列函数应用于密码的UTF-16小端序编码(Gombos, 2018)。

注:小端序(LE,Little Endian)

NT_Hash(password) = MD4(UTF-16-LE(password))
NT_Hash("pass1") = "8D7A851DDE3E7BED903A41D686CD33BE"

Figure 1 NT Hashing Algorithm and Example

在存储密码时使用salt是一个好习惯。salt是计算一个hash时使用的随机数据块,这使得hash更难破解和重用。必须注意的是,NT散列并没有使用salt。因此,它很容易受到"预计算攻击"(precomputation attacks):也就是可以有个映射表(如彩虹表),可以根据hashes快速找到对应的明文密码。此外,相同的密码可以仅基于NT hashes来识别,不需要破坏加密(breaking the encryption)。值得注意的是,在许多场景中NT hashes相当于密码本身。它们只允许基于散列信息的身份验证。这种攻击称为散列传递(Pass-the-Hash, PtH)。

参考Figure 2可知,NTLMv1散列算法步骤

共有2个输入参数
1.密码的NT hash
2.服务器提供的challenge

NTLMv1散列算法将NT散列与5个字节的零(zeros)连接起来,将这个字符串分成3个7字节的密钥(keys)。
这3个密钥(keys)用于使用DES算法对challenge进行加密,得到3个cryptograms,把3个cryptograms串接起来得到NTLMv1散列。

The NTLMv1 hashing algorithm takes as input the NT hash of a password and a challenge provided by the server. It concatenates the NT hash with five bytes of zeros. It splits this string into three 7-byte keys. Those keys are used to encrypt the challenge using DES. The cryptograms are concatenated to create the NTLMv1 hash (see Figure 2).

// c – challenge
K1 | K2 | K3 = NT_Hash(password) | “0000000000”

NTLMv1(password, c) = DES( K1, c) | DES( K2, c) | DES( K3, c)

c = "1122334455667788"

NTLMv1("pass1", c) = "151814cebe6083b0551173d5a42adcfa183c70366cffd72f"

Figure 2 NTLMv1 Hashing Algorithm and Example

必须注意的是,NTLMv1 hashes可以被破解,从而可得到用于生成这个NTLMv1 hash的那个NT hash。存在针对选定的NTLMv1 challenges的彩虹表,可以在数分钟内获得哈希值(Shamir,2018)。例如,https://crack.sh 可以用于此目的。因此,本文将视NTLMv1 hash与对应的NT hash等效。但是,必须明白PtH攻击使用的是真正的"NT hash"。

参考Figure 3可知,NTLMv2散列算法步骤
第1步:NTLMv2散列算法将用户名(user name)和域的名称(domain name)连接在一起,然后使用密码的NT hash作为key,来应用HMAC-MD5散列函数。
第2步:将上一步的计算结果作为key,将server和client的challenges串起来,并再次应用HMAC-MD5散列函数。

// u – user name | d – domain name | s – server challenge | c – client challenge
v2_Hash = HMAC-MD5(u+d, NT_Hash(password))
NTLMv2(password, u, d, s, c) = HMAC-MD5(s+c, v2_Hash)
u = “local_used1”; d = “GIAC-MSFT”; s = “1122334455667788”
c = “0F2795EDCC2AB44DCE77EC3031EBF595”
NTLMv2(“pass1”, u, d, s, c) = “0101000000000000C0653150DE09D20180DD46755
D637E72000000000200080053004D004200330001001E00570049004E002D005000
52004800340039003200520051004100460056000400140053004D00420033002E00
6C006F00630061006C0003003400570049004E002D0050005200480034003900320
0520051004100460056002E0053004D00420033002E006C006F00630061006C0005
00140053004D00420033002E006C006F00630061006C0007000800C0653150DE09
D20106000400020000000800300030000000000000000100000000200000F8E6D0C
07977EB77F39274A491B01EA3BE82BF0C85E35DFDAF1902D989438F1B0A001
000000000000000000000000000000000000900100063006900660073002F00640064
006400000000000000000000000000”

Figure 3 NTLMv2 Hashing Algorithm and Example

NTLMv2比NTLMv1强。通常,NTLMv2需要使用如hashcat、john之类的工具实现暴力枚举(brute-force)、字典攻击(dictionary attacks)来进行破解(Siddhu,2016)。这些攻击是可行且普遍使用的(Stankovic,2017),从而可以恢复明文密码 而不是NT hash。因此,本文并不探讨这种类型的攻击,本文关注于直接使用NTLMv2 hashes的中间人攻击(man-in-the-middle attacks)。

2.3. Pass-the-Hash Attack

"Windows 10中的PtH" 与 "NTLMv2身份验证协议" 密切相关。Windows实现了单点登录(SSO)系统,该系统在首次身份验证后缓存了凭据(credentials),并在此之后使用缓存了的凭据去访问主机(hosts),文件共享(file shares)和其他资源(此过程对用户透明)。单点登录系统的优点是,避免了用户每次访问网络资源时都需要重新输入密码。

NTLMv2身份验证过程应用了challenge/response交换,该交换不使用用户的明文密码,而是使用其NT hash。 此功能允许攻击者在不知道相应密码的情况下使用NT hash进行身份验证 (Pass-the-Hash)。

此外,在中间人攻击中,可以直接使用捕获到的NTLMv2 hash进行身份验证,即使不知道NT hash也没关系。

  • PtH攻击包括2个主要步骤:
    • 1.Extraction of hashes
      • 通过网络通信从已经控制的主机提取 hashes (在Section 4中进行了说明)
      • 通过另一个尚未被控制的主机中提取 hashes (在Section 5 中进行了说明)
    • 2.gain access
      • 使用提取到的hashes来访问同一个机器、或不同的机器 (在Section 6中进行了说明)

看下Figure 4 中的演示。


Figure 4 PtH Authentication

Figure 4 演示了使用Metasploit成功建立了PtH连接。这次攻击中使用的NT hash是以32个零开头的,代表LM hash。因为Windows 10不使用LM hashes,所以零是被接受的。

3. Test Environment

本文的目的是,测试并确认在最新的Windows环境中PtH攻击所带来的风险等级。

为此,多个"用户帐户"(user accounts)被使用。

如下,Figure 5展示了这些"帐户"(accounts)的配置。NTLMv1 hashes使用1122334455667788作为challenge.

Account details

User name: local_used1 | Type: local | Groups: Administrators
Password: pass1A?1 | NT hash: D1E534455F97DBB7FBE436CD25CE661B
NTLMv1: C59DAC0FD53CCC70991990CB8EC3084AE1BF3881312D3280
Comment: The user has already logged in to the computer.

User name: local_used2 | Type: local | Groups: Administrators
Password: pass1A?2 | NT hash: 43BDCF65BD4D6603BBD8311D4B1670B1
Comment: The user has already logged in to the computer.


User name: local_notused | Type: local | Groups: Administrators
Password: pass1A?3 | NT hash: B85CA2C4BA3911C6DC427392FD7B7F7D
Comment: The user has never logged in to the computer.


User name: domain_used1 | Type: domain | Groups: Domain Admins
Password: pass1A?4 | NT hash: 7BBC9C60C62A1204364B66D678FCA2C9
NTLMv1: 04753E2350DB855B4A1BF6F7F693D3AFF9F3CEE75B64A7F6
Comment: The user has already logged in to the computer.


User name: domain_used2 | Type: domain | Groups: Domain Admins
Password: pass1A?5 | NT hash: 5E64EA6FBAFAC1289CE092AED46790A5
Comment: The user has already logged in to the computer


User name: domain_notused | Type: domain | Groups: Domain Admins
Password: pass1A?6 | NT hash: 05CF392F7B89860C6AC0F6FD85B87A3E
Comment: The user has never logged in to the computer.


User name: msft_used@outlook.com | Type: Microsoft | Groups: Administrators
Password: pass1A?7 | NT hash: 527E12E1627BA10C39324C4BB48CE1FE
Alias: msft_ | Comment: The user has already logged in to the computer.
Pass-the-Hash in Windows 10 8
Lukasz  Cyra,   lukasz.cyra@gmail.com


User name: msft_notused@outlook.com | Type: Microsoft | Groups: Administrators
Password: pass1A?8 | NT hash: D5098E10765DE1E80713A61E644A5698
Alias: msft__mt4bjny | Comment: The user has never logged in to the computer.


User name: local_nonpriv | Type: local | Groups: Users
Password: pass1A?9 | NT hash: C5597987BCB2BAA5D78B056101D5EDD7
Comment: The user has already logged in to the computer.

Figure 5 Account Configuration

说明:

所有NT哈希值都是使用 https://www.tobtu.com 的服务计算的。NTLMv1 hashes已使用 John the Ripper进行了确认。

VMware Workstation 15.1.0 提供了构建该实验的环境。

如下,Figure 6显示了所使用的10个VM的配置信息:

名字以“E”结尾的计算机的系统版本是 Windows 10 Education v1903

名字以“P”结尾的计算机的系统版本是 Windows 10 Pro v1903

为了使该测试可重复,所有机器均未打补丁。并且都禁用了:Windows updates、Windows Defender Firewall、Windows Defender Antivirus。

Host details


Name: GIAC-DOM-E/GIAC-DOM-P | Credential Guard: disabled
Accounts: local_used1, local_used2, local_notused, domain_used1, domain_used2,
domain_notused, local_nonpriv


Name: GIAC-DOM-CG-E/GIAC-DOM-CG-P | Credential Guard: enabled
Accounts: local_used1, local_used2, local_notused, domain_used1, domain_used2,
domain_notused, local_nonpriv


Name: GIAC-MSFT-E/GIAC-MSFT-P | Credential Guard: disabled
Accounts: local_used1, local_used2, local_notused, msft_used@outlook.com,
msft_notused@outlook.com, local_nonpriv


Name: GIAC-MSFT-CG-E/GIAC-MSFT-CG-P | Credential Guard: enabled
Accounts: local_used1, local_used2, local_notused, msft_used@outlook.com,
msft_notused@outlook.com, local_nonpriv


Name: GIAC-AD | OS: Windows Server 2019 Datacenter | Domain: giac.local
Accounts: domain_used1, domain_used2, domain_notused


Name: - | OS: Kali Linux 2019.2

Figure 6 Computer Configuration

4.Hash Extraction from Host

本section将分析攻击者能够使用的多种提取hashes的方法。

4.1 NT Hashes in Registry

安全帐户管理器(Security Account Manager,SAM) 数据库是一个存储NT hashes的注册表文件(registry file)。SAM存储local帐户和Microsoft帐户的hashes,但不存储域帐户(domain accounts)的hashes。
Windows使用MSCach2格式来缓存域登录,Windows uses the MSCach2 format to cache domain logon (Januszkiewicz, 2017).

SAM文件的位置在%SystemRoot%/system32/config/SAM 并被挂载在HKLM/SAM注册表配置单元中(mounted at the HKLM/SAM registry hive).

读取这些凭据需要特权访问(privileged access,SYSTEM或admin)。 人们可以在计算机上找到解密这些hashes所需的所有信息。Deneut(2018)解释了算法,Willett(2016)提供了数据结构。

用于加密SAM的算法与本文的研究课题高度相关。 哈希提取工具必须跟上Windows的发展。 微软修改了Windows 10 v1607中的算法,将RC4密码替换为AES(Deneut, 2018)。这个更改破坏了所有直接访问SAM以转储散列(dump hashes)的提取工具。一些工具已经更新并可正确处理新的加密方法。然而,关于使用何种工具、以及何时使用仍有许多困惑(Strand, 2018b)。


Figure 7 Failed Hash Extraction

Figure 7显示了用metasploit v5.0.34在主机GIAC-DOM-E上执行Smart_Hashdump模块的结果。如图所示,所有提取到的NT hashes都是相同的31d6cfe0d16ae931b73c59d7e0c089c0。这是个错误结果,它实际上是"空字符串"(empty string)的NT hash。大多数过时的工具在Windows 10 v1607+机器上执行时就会产生这种错误结果。

Mimikatz是已更新过的工具之一,它可以正确处理新格式的SAM。
要使用此工具dump hashes,需要执行3个命令:

privilege::debug
token::elevate
lsadump::sam

Figure 8 显示了在GIAC-MSFT-P上使用Mimikatz 2.2.0时获得的结果。


Figure 8 Extraction of Hashes with Mimikatz

Mimikatz为所有local和Microsoft帐户提取了正确的hashes,除了msft__mt4bjny(即msft_notused@outlook.com的别名)。这个结果并不令人惊讶。 管理员(administrator)已授权msft_notused@outlook.com使用这个主机,这导致在SAM中创建了该帐户。在这种情况下,系统使用msft__mt4bjny作为该帐户的别名。但该用户过去从未登录过,所以系统无法知道正确的hash值。 但是,Figure 8显示了该帐户的一个hash(这个hash是错误的,与 Figure 5相比较)。

图9显示了使用这个 NT hash进行身份验证的结果: 即使这个hash是错误的,身份验证也已成功!


Figure 9 Successful Authentication Using Incorrect Hash

似乎Microsoft用一个"随机值"预先填充了新创建的Microsoft帐户的NT hash字段,该值仅在用户首次登录后才更新。 但是,该NT hash值(错误的值)可以成功地用于进行身份验证。 我无法找到任何提及此发现、或解释这个行为的论文。 更令人惊讶的是,可以在Windows 10 Pro机器上重现此行为,但在Windows 10 Education的多个虚拟机上都不起作用。 这种差异可能表明它是产品缺陷。

如果应用了其他的步骤(注意前提),有时可以使用旧的工具来转储SAM:
Meterpreter的hashdump命令可以说明这种方法。它将代码注入到LSASS中(见Section 4.2),然后从SAM中提取数据(Ewaida, 2010)。
为了使hashdump命令在Windows 10 v1903中工作,首先必须将Meterpreter进程迁移到LSASS,然后再执行hashdump命令得到的结果就与之前在Mimikatz中使用lsadump::sam得到的结果相同(见Figure 10)。Wally Strzelec先生分享的这一方法,解决了刚才提到的困难(Strand, 2018)。


Figure 10 Extraction of Hashes with Hashdump

4.2. NT Hashes in Memory

Local Security Authority Subsystem Service (LSASS)进程的内存可用于提取NT hashes。 LSASS是位于%SystemRoot%\ System32 \ Lsass.exe的可执行文件。 它保证了Windows中的"身份验证"(authentication)和"授权"(authorization)。 每当用户登录系统时,都会创建带有"用户名"(username)和NT hash的数据结构并将其存储在进程内存中。 与基于注册表的方法相比,该技术可以提供local、Microsoft、域的"帐户"(accounts)的凭据。此方法需要特权访问(privileged access).

图11显示了LSASS在Windows中的作用。 它为每个已登录系统的用户都维护了该用户的一个条目表(a table of entries)。 LSASS存储了所有活跃使用的账户的相关信息,包括"服务账户"(service accounts),"RDP会话"(RDP sessions),RunAs executions(Renard,2017)。 存储的属性中有NT hashes。但是,"网络登录"(Network logons)是一个例外,因为在这种情况下,这个NT hash 永远不会发到这个机器(Damele, 2011c)。
LSASS代表用户使用hashes来提供SSO体验。有2种说法:
根据Ewaida (2010)的说法(错误说法),一旦用户锁定系统或注销,LSASS就会立即清除凭据。
根据Damele(2011c)的说法(正确说法),用户锁定系统或注销之后,LSASS会在几分钟后清除凭据。 作者的测试也证实该说法。


Figure 11 LSASS

要从GIAC-DOMAIN-E的LSASS转储密码(dump passwords),需要在Mimikatz 2.2.0中执行两条命令:privilege::debugsekurlsa::logonpassword。如Figure 12所示,此方法使获取domain_used1用户的NT hash成为可能(该用户当时已登录)。
相反,domain_used2用户的hash仍然是受保护的(因为该用户并没有登录)。这也适用于 当时没有登录的本地用户的密码hashes(The same applies to the hashes of passwords of local users who were not logged in at that time).


Figure 12 Extraction of Hashes with Mimikatz

4.3. NT Hashes in Credential Guard

Windows Defender Credential Guard (WDCG) 是Windows 10的一个安全特性,它使用基于虚拟化的安全技术来保护秘密。最初,它在企业版(Enterprise)、教育版(Education)和服务器版(Server)都有,现在它也被包括在Windows 10 Pro中。
WDCG引入了一个通过虚拟化隔离的LSASS进程(LSAISO),该进程只允许"受信任的"(trusted)、"特权级的"(privileged)应用程序访问数据。系统的其余情况都无法访问此进程。恶意应用程序即使是admin/SYSTEM权限运行,也无法从LSASS/LSAISO进程获得凭据。
WDCG保护了域的NTLM和"Kerberos派生凭证"(Kerberos derived credentials),以及作为"域凭证"(domain credentials)存储的应用程序的数据。

通过这种方式,微软试图阻止PtH攻击 (Microsoft, 2017)。它的引入激发了人们对未来的PtH攻击可行性的讨论(Green, 2017)。
WDCG的一个重要限制是:WDCG不能保护SAM。
此外WDCG会对功能产生负面影响:当启用WDCG时,它会blocks"特定的身份验证功能"(specific authentication capabilities),如"无约束的委托"(unconstrained delegation)、DES encryption、NTLMv1 (Joyce, 2019a)。因此,WDCG会对功能产生负面影响。

作者通过尝试在主机GIAC-DOM-CG-E上执行sekurlsa::logonpassword来测试WDCG。和预期相符,无法获得当前登录的用户indomain_used1的NT hash (见Figure 13)。
然而,作者能够获得当前已登录的"本地帐户"(local accounts)的hashes。对GIAC-MSFT-CG-E的重复测试表明,WDCG会阻止Mimikatz提取已登录的Microsoft账户的hash值。但你仍然可以通过命令lsadump::sam获得hash。


Figure 13 Extraction of Hashes with Mimikatz – WDCG

GIAC-DOM-CG-PGIAC-MSFT-CG-P经过了相同的测试。WDCG在这些主机上的激活过程与Windows 10 Education的激活过程相同。尽管WDCG正在运行,如 msinfo32、Device Guard、Credential Guard硬件就绪工具(hardware readiness tool) 的报告,它似乎没有任何功能上的影响。 后来对"内心独白"(Internal Monologue)的测试(见Section 4.4)得出了相同的结论。 因此,在PtH攻击的情况下,在Windows 10 Pro上激活WDCG不会产生任何积极影响(无法防御PtH)。

4.4. Internal Monologue Attack

"内心独白"(Internal Monologue)是一种攻击技术,intruder提取所有已登录用户的NTLMv1 hashes。该工具的作者宣称它是Mimikatz的替代品,它越来越多地被防病毒解决方案检测到,而且它不能在WDCG环境下工作(Shamir, 2018)。

  • "内心独白"(Internal Monologue)攻击分为4个步骤:
    • 1.Windows 10默认不支持NTLMv1。 “内心独白”(Internal Monologue)更改注册表设置以强制主机使用NTLMv1而不用NTLMv2。 此步骤需要特权访问。
    • 2.该工具检索当前正在运行的进程的"非网络登录"(non-network login) tokens的列表。
    • 3.对于每个token,它使用"模拟"(impersonation)来强制主机为所选的challenge提供NTLMv1响应。
    • 4."内心独白"(Internal Monologue)将还原第1步中所做的更改。

如果攻击者没有管理员(admin)权限,则该攻击允许提取NTLMv2 hashes, 拿到这些hashes用处不大(见Section 2.2)

"内心独白"(Internal Monologue)的作者承认,该攻击在WDCG的环境中不起作用(Shamir, 2018)。WDCG阻止NTLMv1(见在 Section 4.3)。在这种情况下,"内心独白"只能提取NTLMv2 hashes。 尽管有此限制,在Mimikatz被阻止或容易检测到的环境中,"内心独白"(Internal Monologue)仍然是一种有用的技术。

测试证实,在没有WDCG的环境中,"内心独白"(Internal Monologue)工具成功提取了当前登录的本地和域用户的NTLMv1哈希(见Figure 14)。但是,不可能获得Microsoft帐户的 hashes。 在有WDCG的环境中,只能在Windows 10 Education主机上获取本地帐户和域帐户的NTLMv2 hashes 。


Figure 14 Extraction of NTLMv1 Hashes with InternalMonologue

4.5. Summary of Findings

Figure 15总结了Sections4.1, 4.2, 4.3, 和 4.4的结果。
+/- 表示,在具有指定配置的主机上针对给定帐户类型,提取给定类型的hashes的可行性。


Figure 15 Dumping Hashes in Various Configurations

测试表明,与本地帐户和Microsoft帐户相比,域帐户的保护级别更高。 在Windows 10的所有配置中,都可以从SAM中提取非域帐户(non-domain account)的hashes。域帐户的hashes仅容易从LSASS内存中提取出来。 启用了WDCG的配置中的Windows 10 Education在所有被分析的情况下都防止了hash提取,进一步提高了域帐户的安全性。 值得一提的是,即使在这种情况下,也可以应用其他攻击手段(例如:键盘记录程序,还有Section 5中讨论的攻击)

5. Hash Extraction from Network

Section 4讨论了如何从一个"已控制的"(compromised)主机中提取hashes,而本Section 5分析了通过网络进行hash提取的方法。

5.1. DCSync

在DCSync攻击中,攻击者模拟"域控制器"(DC,Domain Controller)的行为,以通过"域复制"(domain replication)来取出密码hashes。它利用了无法被禁用的必要的功能(Berg, 2019)。一直以来,Administrators, Domain Admins, 和 Enterprise Admins 以及DC(不包括 只读DC)的"帐户"(accounts)都具有的所需的权限(Metcalf, 2015a)。Mimikatz、Impacket、DSInternals等工具都实现了DCSync。


Figure 16 Hash Retrieval with DCSync

使用domain_used1帐户和Mimikatz的lsadump::dcsync命令 对该技术进行了测试,该命令之前用于从注册表和LSASS中提取NT hashes。 如Figure 16所示,该技术使得获得domain_used2用户的NT hash成为可能。 此外,该命令返回了用户过去曾使用过的hashes的一个list,这对于破解(模式分析,pattern analysis),以及"hash喷射"(hash spraying)非常有用。

5.2. Man-in-the-Middle Attacks

可以使用NTLMv2 hashes来设计中间人攻击(见 Section 2.2). Figure 17 展示了攻击步骤。


Figure 17 NTLMv2 Relay Attack

  • 这种攻击可以分为2个部分:
    • (1)欺骗用户尝试认证到攻击者的机器(Tricking the user into trying to authenticate to the attacker’s machine)
    • (2)转发消息,使攻击者能够代表用户访问主机(Relaying the messages so that the attacker gets access to a host on behalf of the user)

可以使用各种协议执行攻击,例如SMB、HTTP、LDAP或MSSQL (Abraham, 2016)。为了使攻击生效,"受害者的计算机"(victim’s machine)和"被攻击的主机"(attacked host)必须是2个不同的主机(Byt3bl33d3r, 2017)。为了避免这种限制,我们需要在攻击的每个部分(共2个部分)中使用不同的协议(Abraham, 2016)。

欺骗用户进行"身份验证"(authentication)的方法有很多种。
在一些企业中,存在"主动防御系统"(active defense systems)或"漏洞扫描器"(vulnerability scanners),试图登录到网络上的任何新主机(Baggett, 2013)。
社会工程学(Social engineering)是有用的,例如诱导用户点击位于攻击者的主机上的SMB共享的链接(Strand, 2018a)。Chrome支持自动下载SCF文件,这可以触发"身份验证"(Stankovic, 2017)。
Metasploit提供了Word UNC Injector模块,该模块可以生成一个word文档,这个word文档中有一个"指向到SMB资源"的"嵌入式链接"(embedded link)。在编辑模式下打开文档后,该文档就开始一个与“攻击者选定的主机”进行NTLMv2身份验证的会话(Chandel, 2017)。 "ARP投毒"(ARP poisoning)或"DNS欺骗"(DNS spoofing),提供了充当中间人的通用方式,也可能导致NTLMv2中继攻击(Strand, 2018a)。

另一种方法是使用广播名称解析中毒(BNRP, Broadcast Name Resolution Poisoning)攻击,该攻击使用NBT-NS,LLMNR或mDNS。攻击者可以响应对"不存在的资源"的请求,例如,由于"拼写错误"或"配置错误"而执行的请求。尤其是在Windows 10电脑上使用默认配置的现代浏览器,会使用Web Proxy Auto-Discovery (WPAD)协议。如果"内网"(Intranet)上没有WPAD服务器,则WPAD很容易受到BNRP攻击。如果攻击者能找到一种注册 "与该企业内部命名方案冲突的"(the internal naming scheme of the organization) "通用顶级域"(generic Top-Level Domain ,gTLD)的方法,这种攻击甚至可以在Internet上使用(Abraham, 2016)。此外,攻击者甚至可以通过结合“对DNS服务器的DoS攻击”来响应对现有资源的请求(Abraham, 2016)。

可以使用impacket的库中包含了的ntlmrelayx工具来设置relay。
另一种选择是用Responder的Multi Relay。

为了测试此技术的有效性,通过设置一个"可拦截、响应"(intercepted and responded) WPAD请求的SMB relay (Byt3bl33d3r, 2017)。作为一个用户,打开了Chrome。在具有默认配置的Windows 10中,这是迫使计算机发出一个WPAD请求所需要做的全部工作。他使用Responder 2.3.4.0处理NBT-NS、LLMNR、mDNS poisoning。如Figure 18演示了攻击。


Figure 18 Responder Sending Poisoned Answers for WPAD

作者使用Imacket 0.9.15的ntlmrelayx命令来响应这些请求,发起NTLMv2身份验证,并将其"转发"(relay)给另一台服务器。最终,使作者有机会能够在"被控的"(compromised)服务器上执行ipconfig命令(见Figure 19)。


Figure 19 Successful Authentication and Command Execution with ntlmrelayx

借助此技术,作者可以在具有和不具有WDCG的计算机上"冒充"(impersonate)本地帐户和域帐户。当被冒充的域用户具有管理员(admin)权限时,作者可以代表他/她执行命令。

当该攻击用于冒充Microsoft帐户时,攻击不会成功。有可能是与所使用的中继工具有关,而与Microsoft帐户的"基本安全等级"(fundamental security level)无关。因为Microsoft帐户使用别名作为用户名(Microsoft accounts use aliases for usernames)。如果中继工具没能正确解决这个问题,那么这个问题可能就是攻击失败的原因。

甚至可以进一步自动执行SMB relay攻击。ntlmrelayx命令的-socks选项的作用是:保持"身份验证会话"(authentication sessions)处于active状态,并且通过SOCKS代理"链接"(chain)了命令(Solino, 2018)。联合国的Nicholas Kosovich先生与作者分享了这种方法。

6. Applying Extracted Hashes

Sections 4 和 5 介绍了各种hash提取的方法。Sections 6 解释如何利用获得到的hashes。
我们已经在Section 5.2中看到了如何中继NTLMv2 hashes以获得对主机的访问权限,这个步骤与上一步骤(在中间人攻击中获取hashes)是密不可分的。然而,还有许多其他"可被利用的"(vulnerable)协议、技术接受该NT hash进行身份验证。本Sections 6 将测试SMB、WMI、Kerberos和RDP来说明这种攻击。然而,据报道,SQSH (Duckwall & Campbell, 2012)、HTTP Negotiate Authentication/WIA (Panayi, 2018)和WinRM (Renard, 2017)也很容易受到攻击。

必须明白,"网络层面的PtH攻击"( the PtH attack over the network)可能会获取到什么"访问级别"(the level of access)的权限,是至关重要的。
当攻击者使用"域帐户"(domain accounts)时,通过PtH获得的"访问级别"对应于所攻击者使用的那个域帐户的特权级别。不过,在本地Windows帐户、微软帐户方面,还有一个明显的区别,这个注册表项HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy在Windows 10中默认不存在(Schroeder, 2017),当它存在并被启用时,可以使用“具有管理员权限的”本地管理员账户、Microsoft帐户来获得对主机的"特权访问"(privileged access)。但是使用默认设置的话,在连接时本地管理员帐户和Microsoft账户将被剥夺"管理员权限"。用那些帐户仍然可能进行PtH,例如,他们可以用来连接到一个"文件共享"(file share),但他们不授予"特权访问"(privileged access)。这个问题适用于本文讨论的所有网络攻击方法,包括NTLMv2中继攻击。

仍然可以使用这些帐户进行PtH,例如,可以将这些帐户用于连接到一个文件共享,但是这些帐户不提供"特权访问"权限。此问题适用于本文讨论了的所有的"网络层面的PtH攻击方法"(the PtH over the network attack methods),包括NTLMv2 relay攻击。

6.1. PtH over SMB

对网络层面的PtH攻击,主要使用SMB。
可以使用metasploit的PsExec模块,或者Pass-the-Hash toolkit中的 pth-winexe 和 pth-rpcclient等工具。
值得一提的是,与许多博客文章的内容相反,Sysinternals套件中的PsExec工具并不适合执行PtHattack (Renard, 2017)。

作者使用Metasploit的PsExec模块测试了PtH攻击。该工具首先使用已提供的"共享"(share)和"凭据"(credentials) 将"服务镜像"(service image)部署到目标机器上,然后调用DCE/RPC来启动已部署的服务。为了生效,SMB必须是可用且可达的,必须启用"文件和打印机共享"(File and Printer Sharing),并且必须禁用"简单文件共享"(Simple File Sharing)。Figure 20展示了使用domain_used1的hash的成功连接。


Figure 20 Pth Connection Using Domain Account

domain_used1是一个"特权帐户"(privileged account)。作者使用local_nonpriv重复测试,并在local_nonpriv能够访问到的一台"目标机器"上,配置了一个共享(而不是用默认的共享Admin$)。Figure 21展示了连接的日志。帐户成功连接到"目标机器",并且payload部署成功,PtH攻击成功了。但是,由于缺乏admin权限,该服务无法启动。


Figure 21 Pth Using Non-Privileged Account

值得一提的是,可以对已经得到的hashes进行"喷射"(spray)。即使用已经得到的hashes和一些常用密码的hashes,它们可能成功访问多台机器上的多个帐户。Crackmapexec可以用于此目的(Byt3bl33d3r, 2018)。

译者注:hashes spray可能很快导致帐户被锁定,因为帐户锁定策略常常是:在设定的时间段内只能进行有限次数(如3-5次)的失败尝试。所以,在进行Password Spraying类型的攻击时必须注意降低尝试登录的频率!

6.2. PtH over WMI

Invoke-TheHash使得通过WMI执行PtH攻击成为可能(Robertson, 2018)。
这种攻击的前提是需要凭据——被攻击主机上的一个管理员权限的帐户的凭据。执行攻击的用户可以是普通用户。 Figure 22展示了一个成功的连接,它在被攻击的机器上创建了一个文件夹。


Figure 22 Pth Using WMI

6.3. PtH over Kerberos

甚至Kerberos也可以接受NT hash,而不是明文密码。
这种攻击被称为Overpass-the-Hash,可以使用Mimikatz(Delpy, 2014)的sekurlsa::pth命令来执行。在这种攻击中,这个NT hash用于获得一个Kerberos票据(Kerberos ticket),该票据允许攻击者代表"被冒充的"(impersonated)用户访问网络资源。因为这种攻击使用"进程操纵"(process manipulation)。因此,正在执行该攻击的用户需要具有admin权限。图23显示了成功冒充了用户domain_used2


Figure 23 Overpass-the-Hash with Mimikatz

6.4. PtH over RDP

最后,如果企业使用了非默认的RDP配置,攻击者可以使用RDP执行PtH攻击。
要使这种攻击技术起作用的前提是,企业必须启用了Restricted Admin设置。Windows 10默认不允许Restricted Admin的RDP连接,但微软建议激活它们(见Section 7)。
当使用Restricted Admin模式建立连接时,服务器不会以任何可重用的形式接收用户的凭据。然而,这个配置的负面影响是产生了PtH攻击的可能性。在进行测试时,作者使用xfreerdp命令成功地建立一个RDP会话,该命令包含在Pass-the-Hash toolkit中(见Figure 24)。


Figure 24 Pth Using RDP

7. Protection

前面的小节介绍了许多利用密码hashes的攻击技术,这些技术在今天仍然是可行的。企业应该采用"纵深防御"(defense-in-depth)的方法来降低风险。企业的安全部首先需要防御"hash提取",需要使hash的利用更难。最后,应该能够及时监测到该类型事件。

7.1. Generic Security Measures

第一步,将操作系统升级到最新版本,并持续打后续的补丁。
建议使用Windows Enterprise/Education版本而不是Windows Pro版本(见Section 4)。

在实施专门针对PtH攻击的防御措施之前,部署通用的安全措施是必要的:
企业应该考虑给应用程序打补丁;
装上靠谱的杀毒软件;
设置足够强的密码复杂性策略;
利用"基于主机的防火墙"(host-based firewall);
检测网络上未经授权的设备;
应用多因素身份验证(Multi-Factor Authentication,MFA);
确保用户拥有的权限与他们的需求相对应,尤其是,可行的话,本地管理员(local administrators)不该具有debug权限;
用户们应该具备安全意识,当使用RDP时主动注销而不应该断开连接,这样就不会在LSASS内存中留下NT hashes;
...

这些措施使得任何渗透尝试,包括PtH攻击,难度大大提升。

7.2. Hash Protection

防御PtH攻击的最有效方法,首先是防止hashes被窃取。 Section 4.3 中已经分析了WDCG的有效性,展示了它为域账户提供了更高的保护级别。 但是,还有其他方法可以提高hashes的安全性。

有关PtH的终极目标是完全"阻止"(block)网络层面的NTLMv2并且只使用Kerberos进行身份验证。但是,这个"加固"(hardening)方法没有得到广泛应用,因为它会导致许多兼容性问题。

另一方面,Microsoft提供了几种全面的解决方案,试图通过限制用户权限、减少(存储凭据hashes的)系统的数量来解决该问题(Microsoft, 2016; Microsoft, 2019)。

译者注:Active Directory managed environments 即Active Directory administrative tier model, Enhanced Security Administrative Environment (ESAE)

人们应该考虑在Active Directory managed environments中引入"分区"(zoning),通过"限制用户的权限"(restricting privileges of users)、"加固现有帐户"(hardening existing accounts)可以进一步提高安全性。

  • "加固现有帐户"包括:
    • 权限访问管理 (Privileged Access Management, PAM)
    • 适当的管理(Just Enough Administration, JEA)
    • 受保护的用户安全组 (Protected Users security group)

最后,企业应该加强用于"特权访问"(privileged access)的系统,即"特权访问工作站"(Privileged Access Workstations,PAWs)。

这些解决方案通过减缓PtH第一步,来有效地阻挡"横向移动"(lateral movement)。不过,在管理、基础设施和日常运营方面,它们会带来额外的成本,还可能导致兼容性问题。

加固RDP是必要的。企业应该强制执行"网络级身份验证"(Network Level Authentication)来防止密码嗅探。同样,Section 6.4中讨论的Restricted Admin功能在用于"远程访问"(remote access)时也显著提高了管理员凭据的安全性。

LSASS进程也需要加固。 启用对LSASS的保护,可防止不受保护的进程与其交互。 但是,此更改可能会导致兼容性问题。

最后,企业可以采取几个步骤来减少中间人攻击的风险。所有内部系统都应该有有效的DNS条目记录,并且应该添加常用搜索系统的条目记录,例如WPAD服务器的条目记录(见Section 5.2)。或者,应该禁用WPAD。企业应该考虑禁用LLMNR和NetBIOS,阻止"外发的"(outgoing)SMB流量,并要求SMB Packet签名。企业应该在实施任何普遍的变更之前,彻底地测试这些解决方案。

7.3. PtH Prevention

根据Section 6,应该禁用LocalAccountTokenFilterPolicy设置,以减少泄漏NT hashes带来的不良影响。然而在某些情况下,这会产生一些"问题"(issues)。甚至微软也建议将其作为某些problems的解决方案(Schroeder, 2017)。

更好的解决方案是执行"本地管理员密码解决方案"(Local Administrator Password Solution, LAPS)。此防御措施确保了定期更改本地管理员密码。

此外,"身份验证策略"(Authentication Policies)可用于限制PtH攻击的影响。 使用这些策略,可以限制(使用给定的帐户进行身份验证的)主机,这样,除非从"管理控制台"(admin console)登录,否则攻击者将无法使用泄漏的管理员的密码hashes。

7.4. PtH Detection

  • 为了有效地检测到PtH攻击,企业应该应用这几种策略:
    • 1.首先,应该监视警报PtH tools的那些日志。存在于网络中的PtH工具当然需要调查。
    • 2.其次,应监测主机上的异常活动。使用Sysmon,可以检测到篡改LSASS进程的尝试、企图(Warren, 2019)。SACL是Windows中的一个进程,可以提供LSASS的高级审计(Metcalf, 2015b)。
    • 3.此外,在主机上搜索异常的"配置更改"(configuration changes)有助于检测攻击。监视的最佳选择是LocalAccountTokenFilterPolicyWDigest相关设置。
    • 4.主机之间的异常连接也可以表明攻击。人们应该寻找client-to-client或服务器到服务器的连接,以及来自同一单个IP地址的多个成功或失败的连接。
    • 5."蜜罐"(Honeypots) 和 honeycreds 是有用的。来自意外IP地址的域复制可能表明了DCSync攻击。
    • 6.最后,像Got-Responded之类的工具可被用来检测中间人攻击,如执行了NBT-NS,LLMNR或mDNS投毒的中间人攻击。

8. Future Research

本Paper特别关注了"攻击者可获取主机访问权限"这种场景的PtH攻击。

未来的研究可以通过测试Section 7中讨论的安全措施的有效性,来扩展研究结果。

未来的研究可以识别针对这些保护的攻击:
例如绕过SMB Packet签名的攻击;
在WDCG下可进行的额攻击;
...

未来的研究可能包括相关的攻击技术:
例如通过物理访问进行的攻击;
从域控制器中做hash提取;
NTLMv2破解;
对Kerberos的攻击;
从流行的应用程序中提取凭据;

未来的研究可能包括 更多办法:
从"凭据管理器"(Credential Manager)中得到明文密码;
LSA Secrets;
受保护的存储(Protected Storage);
组策略首选项文件(Group Policy Preference files);
...

未来的研究可能包括 更多协议:
Section 6介绍了使用4种协议的PtH攻击。以后可以使用SQSH,HTTP Negotiate Authentication/IWA,WinRM执行更多的测试。测试还可以涵盖RDP对中间人攻击的"脆弱性"(vulnerability)。

9. Conclusions

本文分析了PtH攻击在windows 10 v1903环境下的可行性。
本文展示了几种hash提取技术。
本文演示了在哪些情况下攻击者可以使用这些hashes进行身份验证(各种协议下执行PtH攻击的条件和方法)。
本文说明了一个企业可以考虑使用的"安全管控"(security controls)措施,可以最大程度降低PtH攻击的风险。

最终,做了的这些测试证明了PtH攻击仍然是一个真正的威胁,每个企业都需要直面这种风险。

References

Abraham, J. (2016). Broadcast Name Resolution Poisoning / WPAD attack vector.
Retrieved August 31, 2019, from https://www.praetorian.com/blog/broadcastname-resolution-poisoning-wpad-attack-vector

Baggett, M. (2013). SMB Relay demystified and NTLMv2 pwnage with Python. Retrieved
September 1, 2019, from https://pen-testing.sans.org/blog/2013/04/25/smb-relaydemystified-and-ntlmv2-pwnage-with-python

Berg, L. (2019). What is DCSync? An introduction. Retrieved August 31, 2019, from
https://blog.stealthbits.com/what-is-dcsync/

Byt3bl33d3r. (2017). Practical guide to NTLM Relaying in 2017 (a.k.a getting a foothold
in under 5 minutes). Retrieved August 31, 2019, from
https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-akagetting-a-foothold-in-under-5-minutes.html

Byt3bl33d3r. (2018). CrackMapExec - SMB command reference. Retrieved
September 11, 2019, from https://github.com/byt3bl33d3r/CrackMapExec/wiki/SMB-Command-Reference

Chandel, R. (2017). 4 ways to capture NTLM hashes in network. Retrieved
August 31, 2019, from https://www.hackingarticles.in/4-ways-capture-ntlmhashes-network/

Damele, B. (2011a). Dump Windows password hashes efficiently - Part 1. Retrieved
July 12, 2019, from https://bernardodamele.blogspot.com/2011/12/dumpwindows-password-hashes.html

Damele, B. (2011b). Dump Windows password hashes efficiently - Part 2. Retrieved
July 12, 2019, from https://bernardodamele.blogspot.com/2011/12/dumpwindows-password-hashes_16.html

Damele, B. (2011c). Dump Windows password hashes efficiently - Part 5. Retrieved
July 14, 2019, from https://bernardodamele.blogspot.com/2011/12/dumpwindows-password-hashes_28.html

Delaunay, J. C. (2017). DPAPI exploitation during pentest and password cracking.
Retrieved July 12, 2019, from https://www.synacktiv.com/ressources/univershell_2017_dpapi.pdf

Delpy, B. (2014). Overpass-the-hash. Retrieved September 2, 2019, from
http://blog.gentilkiwi.com/securite/mimikatz/overpass-the-hash

Deneut, T. (2018). Retrieving NTLM hashes and what changed in Windows 10. Retrieved
July 3, 2019, from https://www.insecurity.be/blog/2018/01/21/retrieving-ntlmhashes-and-what-changed-technical-writeup/

Duckwall, A., & Campbell, C. (2012). PTH with MSSQL and FreeTDS/SQSH. Retrieved
September 2, 2019, from https://passing-the-hash.blogspot.com/2012/08/pth-withmssql-and-freetdssqsh.html

Ewaida, B. (2010). Pass-the-Hash attacks: tools and mitigation. SANS Institute Information Security Reading Room.

Fortuna, A. (2018). Retrieving NTLM hashes without touching LSASS: the “Internal Monologue” attack. Retrieved August 24, 2019, from
https://www.andreafortuna.org/2018/03/26/retrieving-ntlm-hashes-withouttouching-lsass-the-internal-monologue-attack/

Gombos, P. (2018). LM, NTLM, Net-NTLMv2, oh my! A pentester's guide to Windows
hashes. Retrieved July 11, 2019, from https://medium.com/@petergombos/lmntlm-net-ntlmv2-oh-my-a9b235c58ed4

Green, A. (2017). Windows 10 authentication: the end of pass the hash? Retrieved
July 6, 2019, from https://www.varonis.com/blog/windows-10-authentication-theend-of-pass-the-hash/

Januszkiewicz, P. (2017). Cached credentials: important facts that you cannot miss.
Retrieved July 13, 2019, from https://cqureacademy.com/blog/windows-internals/cached-credentials-important-facts

Joyce, K. (2019a). Defender Credential Guard: protecting your hashes. Retrieved August 30, 2019, from https://blog.stealthbits.com/defender-credential-guard-protecting-your-hashes/

Metcalf, S. (2015a). Mimikatz DCSync usage, exploitation, and detection. Retrieved
August 31, 2019, from https://adsecurity.org/?p=1729

Metcalf, S. (2015b). Unofficial guide to Mimikatz & command reference. Retrieved
September 6, 2019, from https://adsecurity.org/?p=2207

Microsoft. (2014). Mitigating Pass-the-Hash (PtH) attacks and other credential theft
techniques. Retrieved September 6, 2019, from
https://www.microsoft.com/en-us/download/details.aspx?id=36036

Microsoft. (2016). Protected Users security group. Retrieved September 6, 2019, from
https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/protected-users-security-group

Microsoft. (2017). Network security: Restrict NTLM: NTLM authentication in this
domain. Retrieved July 13, 2019, from
https://docs.microsoft.com/enus/windows/security/threat-protection/security-policy-settings/network-security

-restrict-ntlm-ntlm-authentication-in-this-domain
Microsoft. (2017). Protect derived domain credentials with Windows Defender
Credential Guard. Retrieved August 30, 2019, from
https://docs.microsoft.com/en-gb/windows/security/identity-protection/credential-guard/credential-guard

Microsoft. (2019). Active Directory administrative tier model. Retrieved
September 6, 2019, from
https://docs.microsoft.com/en-us/windowsserver/identity/securing-privileged-access/securing-privileged-access-reference-material

Microsoft (n.d.-a) Compare Windows 10 editions. Retrieved August 30, 2019, from
https://www.microsoft.com/en-us/WindowsForBusiness/Compare

Microsoft (n.d.-b). Windows 7 End of Support 365. Retrieved July 6, 2019, from
https://www.microsoft.com/en-us/microsoft-365/windows/end-of-windows-7-support

Munro, K. (2013). Pass the hash. SC Magazine: For IT Security Professionals. Panayi, C. (2018). Passing-the-Hash to NTLM authenticated web applications. Retrieved September 2, 2019, from
https://labs.mwrinfosecurity.com/blog/pth-attacks-against-ntlm-authenticated-web-applications/

Joyce, K. (2019b). WDigest clear-text passwords: stealing more than a hash. RetrievedSeptember 3, 2019, from
https://blog.stealthbits.com/wdigest-clear-text-passwords-stealing-more-than-a-hash/

Lundeen, R. (2014). MSCash hash primer for pentesters. Retrieved July 12, 2019, from
https://webstersprodigy.net/2014/02/03/mscash-hash-primer-for-pentesters/

Metcalf, S. (2015a). Mimikatz DCSync usage, exploitation, and detection. Retrieved
August 31, 2019, from https://adsecurity.org/?p=1729

Metcalf, S. (2015b). Unofficial guide to Mimikatz & command reference. Retrieved
September 6, 2019, from https://adsecurity.org/?p=2207

Microsoft. (2014). Mitigating Pass-the-Hash (PtH) attacks and other credential theft
techniques. Retrieved September 6, 2019, from https://www.microsoft.com/en-us/download/details.aspx?id=36036

Microsoft. (2016). Protected Users security group. Retrieved September 6, 2019, from
https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/protected-users-security-group

Microsoft. (2017). Network security: Restrict NTLM: NTLM authentication in this domain. Retrieved July 13, 2019, from
https://docs.microsoft.com/enus/windows/security/threat-protection/security-policy-settings/network-security-restrict-ntlm-ntlm-authentication-in-this-domain

Microsoft. (2017). Protect derived domain credentials with Windows Defender
Credential Guard. Retrieved August 30, 2019, from
https://docs.microsoft.com/en-gb/windows/security/identity-protection/credential-guard/credential-guard

Microsoft. (2019). Active Directory administrative tier model. Retrieved
September 6, 2019, from https://docs.microsoft.com/en-us/windowsserver/identity/securing-privileged-access/securing-privileged-access-reference-material

Microsoft (n.d.-a) Compare Windows 10 editions. Retrieved August 30, 2019, from
https://www.microsoft.com/en-us/WindowsForBusiness/Compare

Microsoft (n.d.-b). Windows 7 End of Support 365. Retrieved July 6, 2019, from
https://www.microsoft.com/en-us/microsoft-365/windows/end-of-windows-7-support

Munro, K. (2013). Pass the hash. SC Magazine: For IT Security Professionals.
Panayi, C. (2018). Passing-the-Hash to NTLM authenticated web applications. Retrieved
September 2, 2019, from https://labs.mwrinfosecurity.com/blog/pth-attacks-against-ntlm-authenticated-web-applications/

Renard, J. (2017). Puff Puff PSExec. Retrieved July 5, 2019, from
https://www.toshellandback.com/2017/02/11/psexec/

Robertson, K. (2018). Invoke-TheHash. Retrieved September 2, 2019, from
https://github.com/Kevin-Robertson/Invoke-TheHash

Ronin. (2014). Passing the hash with remote desktop. Retrieved September 2, 2019, from
https://www.kali.org/penetration-testing/passing-hash-remote-desktop/

Schroeder, W. (2017). Pass-the-Hash is dead: long live LocalAccountTokenFilterPolicy.
Retrieved September 1, 2019, from https://posts.specterops.io/pass-the-hash-is-dead-long-live-localaccounttokenfilterpolicy-506c25a7c167

Shamir, E. (2018). Internal monologue attack: retrieving NTLM hashes without touching
LSASS. Retrieved July 14, 2019, from https://github.com/eladshamir/Internal-Monologue

Siddhu, Y. (2016). Cracking NTLMv2 responses captured using Responder. Retrieved
August 27, 2019, from https://zone13.io/post/cracking-ntlmv2-responses-captured-using-responder/

Solino, A. (2019). Playing with relayed credentials. Retrieved September 9, 2019, from
https://www.secureauth.com/blog/playing-relayed-credentials

Stankovic, B. (2017). Stealing Windows credentials using Google Chrome. Retrieved
September 11, 2019, from https://defensecode.com/news_article.php?id=21

Strand, J. (2018a). Computer and Network Hacker Exploits Part 3. In SEC504_4_D03_01 | Hacker tools, techniques, exploits, and incident handling. SANS Institute.
Strand, J. (2018b). Workbook. In SEC504_W_D03_01 | Hacker tools, techniques,exploits, and incident handling. SANS Institute.
VandenBrink, R. (2019). Mitigations against Mimikatz style attacks. Retrieved September 7, 2019, from https://isc.sans.edu/forums/diary/Mitigations+against+Mimikatz+Style+Attacks/24612/

Warren, J. (2019). How to detect Pass-the-Hash attacks. Retrieved September 6, 2019, from https://blog.stealthbits.com/how-to-detect-pass-the-hash-attacks/

Willett, T. (2016). Hacking the local passwords on a Windows system. Retrieved July 13, 2019, from https://pigstye.net/forensics/password.html

点击收藏 | 2 关注 | 1 打赏
  • 动动手指,沙发就是你的了!
登录 后跟帖