深入研究Pass-the-Hash攻击与防御 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

深入研究Pass-the-Hash攻击与防御

申博_安全防护 申博 64次浏览 已收录 0个评论

概述

这篇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机器的管理员访问权限后首先要做的事情之一。他们可以使用这些散列进行离线分析,甚至在”传递散列”(PtH)攻击中直接访问系统。20多年来,攻击者一直在使用这种技术来促进横向移动(Ewaida, 2010)。
与散列提取和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理论

2.1 论文范围

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

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

为什么关注NT hashes ?
主机是以NT hashes的形式存储OS凭证的(参见第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 – 通过网络通信从已经控制的主机(在Section 4中进行了说明)或从另一个尚未控制的主机中提取哈希(在 Section 5 中进行了说明)
    • 2.gain access – 使用提取到的hashes来访问同一个机器、或不同的机器(在Section 6中进行了说明)

看下Figure 4 中的演示。

深入研究Pass-the-Hash攻击与防御
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)。

深入研究Pass-the-Hash攻击与防御
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时获得的结果。

深入研究Pass-the-Hash攻击与防御
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是错误的,身份验证也已成功!

深入研究Pass-the-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)。

深入研究Pass-the-Hash攻击与防御
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会在几分钟后清除凭据。 作者的测试也证实该说法。

深入研究Pass-the-Hash攻击与防御
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).

深入研究Pass-the-Hash攻击与防御
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。

深入研究Pass-the-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(见4.3节)。在这种情况下,”内心独白”只能提取NTLMv2 hashes。 尽管有此限制,在Mimikatz被阻止或容易检测到的环境中,”内心独白”(Internal Monologue)仍然是一种有用的技术。

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

深入研究Pass-the-Hash攻击与防御
Figure 14 Extraction of NTLMv1 Hashes with InternalMonologue

4.5. Summary of Findings

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

深入研究Pass-the-Hash攻击与防御
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。

深入研究Pass-the-Hash攻击与防御
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来设计中间人攻击(see Section 2.2). Figure 17 展示了攻击步骤。

深入研究Pass-the-Hash攻击与防御
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演示了攻击。

Java Runtime.getRuntime().exec由表及里

这篇文章主要目的在于学习前人文章,并从深入一点的角度探讨为什么Runtime.getRuntime().exec某些时候会失效这个问题。 问题复现 测试代码如下 import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class linux_cmd1 {
public static void main(String[] args) throws IOException {
String cmd = “cmd which you want to exec”;
InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int a = -1;

深入研究Pass-the-Hash攻击与防御
Figure 18 Responder Sending Poisoned Answers for WPAD

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

深入研究Pass-the-Hash攻击与防御
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的成功连接。

深入研究Pass-the-Hash攻击与防御
Figure 20 Pth Connection Using Domain Account

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

深入研究Pass-the-Hash攻击与防御
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展示了一个成功的连接,它在被攻击的机器上创建了一个文件夹。

深入研究Pass-the-Hash攻击与防御
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

深入研究Pass-the-Hash攻击与防御
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)。

深入研究Pass-the-Hash攻击与防御
Figure 24 Pth Using RDP

7. Protection

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

7.1. Generic Security Measures

第一步,将操作系统升级到最新版本,并持续打后续的补丁。
建议使用Windows Enterprise/Education版本而不是Windows Pro版本(参见第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


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明深入研究Pass-the-Hash攻击与防御
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址