视窗身份认证及其应用

2020-01-22 14:22 来源:科创网

原标题:视窗身份认证与利用理念

1,视窗身份认证基础1,认证过程

a,本地用户认证

执行本地登录认证时,操作系统将使用用户输入的密码作为证书,与系统中的密码进行比较和验证。

系统的内部操作过程如下

winlogon . exe-Receiving User Input-lsass . exe-(Authentication)

首先,在用户注销、重新启动并锁定屏幕后,操作系统会让winlogon显示登录界面,即输入框接收输入并将密码给予lsass进程,lsass进程会将明文密码加密到NTLM哈希中,以对SAM数据库进行比较和验证。

winlogon.exe是一个用于管理用户登录和注销的视窗NT用户登录程序。

微软视窗系统的lsass安全机制。它用于本地安全和登录策略。程序的运行内存将以一定的明文概率记录用户输入的散列值。

b,MSCACHE(域缓存凭据)

MSCACHE,也称为域缓存凭据、DCC、域缓存凭据。它功能是将域证书域授权信息缓存在机器的本地注册表中。

默认情况下,窗口操作系统将自动缓存并记录最后10个密码哈希值。当域控制器不可访问时,系统将检查缓存的最后一个密码哈希值,以使用系统对用户进行身份验证。

应该注意的是,这里的哈希是指mscache哈希,或者说dcc哈希,根据操作系统的版本,它分为dcc1哈希和dcc2哈希。Vista先保存dcc1,后保存dcc2。这两种哈希生成算法是不同的。但NTLM的哈希算法也不是。因此,导出的域缓存的哈希是不能用于 PTH ,只能用来破解

这些密码哈希值缓存在以下注册表设置HKEY _ LOCAL _ MACHINE \ SECURITY \ CACHE

f18a2b97b0454211b17785f544b7fe06.jpeg

建议通过设置以下安全设置来防止密码的本地缓存将其值设置为0。

本地策略组编辑器-计算机配置-窗口设置-本地策略-安全选项-交互式登录前要缓存的日志数-0

583897df4e064e738f47b0ba76f2989a.jpeg

2,lsass和SAM文件

a,以及lsass.exe程序

lsass.exe是系统中的重要进程。它们是微软视窗系统的安全机制。它用于本地安全和登录策略。萨姆的功能在lsass.exe是固定的,但lsass.exe不仅进行本地身份认证。所有由本地和远程身份正确验证的用户信息都将存储在lsass.exe的内存中。

由于WDigest协议,XP–WIN 8.0和SERVER 2003–SERVER 2012 R1纯文本密码存储在一些旧版本的windows操作系统的lsass.exe进程中。考虑到安全因素,在windows操作系统的后续版本中,默认情况下将禁用此协议。针对旧版本操作系统的KB2871997补丁的正式发布允许用户决定是否禁用该协议。

Modify Disables需要修改注册表HKEY _ LOCAL _ MAChine \ SYSTEM \ CURRENT CONtrol SET \ CONtrol \ SECURITy PROVIDERS \ Wdigest通过将协商和使用登录密钥的值设置为0,可以完全禁用此协议。

1047a6382aee48189360287e71790f71.jpeg

此外,系统中存储的用户凭据也由lsass.exe管理。导出程序内存时,它们将同时导出,密码将以明文形式保存。

e25af1eb075646539fc78205dd023380.jpeg

6dc696c62ede466cbaf0cac1bb470374.jpeg

b,SAM文件

SAM,或“安全帐户管理器”,是windows操作系统用来管理用户帐户安全性的一种机制。

安全帐户管理器帐户管理基于安全标识。安全标识在创建帐户的同时创建。一旦帐户被删除,安全标识也将被删除。安全标识符是唯一的,即使相同的用户名每次创建时都获得完全不同的安全标识符。因此,一旦删除一个帐户,其安全标识将不再存在,即使该帐户是用相同的用户名重建的,它也会被赋予不同的安全标识,并且不会保留原始权限。

SAM是一个数据库文件,用于存储windows操作系统的密码。为了避免明文密码的泄露,存储在SAM文件中的是经过一系列算法处理的明文密码的哈希值分为LM哈希和NTLM哈希。当用户执行身份验证时,输入的哈希值将与存储在SAM文件中的哈希值进行比较。在域控制器上 SAM 文件相当于活动目录数据库文件 ntds.dit.

值得注意的是,ntds.dit不等于SAM文件,尽管当服务器升级到域控制时,SAM中的本地用户将默认升级到相应级别的域用户或域管理员。但是,应该注意的是,SAM文件仍然存在,并且仍然可以配置本地管理员的设置。

保存在% Systemroot % \ System32 \ Config \ SAM

SAM中的SAM文件保存在注册表

HKEY _ LOCAL _ MACHINE \ SAM \ SAMHKEY _ LOCAL _ MACHINE \ SECURITY \ SAM

在正常情况下,SAM文件被锁定,不能直接访问、复制或移动。只有系统用户权限可以读写文件。出于安全原因,

d86985c4a5524653b8ac1babe54d8325.jpeg

在以后的windows SYSTEM中被SAM文件中的bootkey加密,bootkey保存在此系统文件下。因此,单个SAM文件无法正常读取。如果需要解密,则需要加载相应系统的系统文件。

SAM文件中的内容存储类似于Unix/Linux系统中passwd和shadow文件的组合,只是不太直观和清晰。

SAM中的哈希密码存储格式为用户名: RID : LM-哈希值: NT-哈希值,如

Administrator 336050336 aad 3 b 435 b 51404 EEA AD 3B 435 b 51404 ee :72 ca 7e 650537443 CC ACAE 4d 2f 71 f 5:

此内容字符串表示

用户名任何长度的输入也称为预映射预图像,它通过哈希算法转换成固定长度的输出。输出是哈希值。

为了确保用户凭据的安全性,密码不会直接以明文形式存储在windows操作系统中。加密算法加密后生成的哈希将仅被保留。由于该算法是不可逆的,用户凭证的安全性可以得到最大程度的保护。

在windows操作系统中有两组加密方法来加密和生成密码哈希LM哈希和NtHash。

目前使用的主要加密方法是ntLM哈希(哈希),其中NTLM的全名是“NT局域网管理器”。NTLM也是一个网络认证协议,NTLM哈希(哈希)之间的关系是NTLM网络认证协议使用NTLM哈希作为认证的基本证书。换句话说,NTLM和NTLM哈希相互对应。

a,LM Hash

LM Hash的全名是lanmanash,它是windows使用的最早的加密算法,由IBM设计。

LM哈希是废弃,因为它使用DES加密密钥作为硬编码算法,并且有缺陷,但是为了确保系统兼容性LM哈希没有被删除,可以选择是否打开它。

对于早期系统,如XP和server 2003,LM哈希默认用于加密,或者可以手动设置为NTLM哈希。此后,服务器2008和win7等操作系统默认禁用LM哈希。

LM哈希默认情况下在后续版本的窗口中存储为空,即AAD3 b 435 b 51404 EEA AD 3B 435 b 51404 EE

1。生成规则

1。用户密码最多不超过14个字符。

2。用户密码被转换成大写。

假设明文密码是“欢迎”。首先将所有密码转换为大写“欢迎”,然后将大写密码字符串转换为二进制字符串

“欢迎”-57454**34F4D45

3。如果密码少于14个字节,则添加0×00以弥补14个字节。

"欢迎"-57454 * * 34 F4 d 450000000000000000

4。定长密码分为两个7字节部分,分别由str_to_key函数处理,得到两组8字节数据

57454 * * 34 F4 d 45-str _ to _ key-56a 2528347 a 348 a `' 0000000000000-str _ to _ key-000000000000

5。这两组8字节的数据将被用作“KGS!

# $% "标准DES加密

' KGS!

# $ % '-4b 47532140232425 56a 2528347 a 348 a-4b 47532140232425-c 23413 A8 a1 e 7665 f 000000000000000000-4b 47532140232425-AAD3B 435 b 51404 EE

6的标准DES加密。加密的两组数据被简单拼接以获得最终的LM散列

LM散列: c 23413 A8 a1 e 7665 FAAD 3b 435 b 51404 ee

2。固有漏洞

1。首先,最大密码长度只能是14个字符

2。密码不区分大小写。在哈希值生成之前,所有密码都将被转换为大写

3。看看加密过程,可以看到DES被用在包中。如果密码强度小于7位,则第二个数据包的加密结果肯定是aad3b435b51404ee。如果lm哈希的结尾是aad3b435b51404ee,则很容易发现密码强度小于7位。

4.一个14个字符的密码被分成7个7个字符,并分别为这两半计算哈希值。这种哈希值计算方法使破解难度加倍,因为攻击者需要强行破解7个字符,而不是14个字符。这使得14字符密码的有效强度等于或两倍于7字符密码,并且密码的复杂性明显低于14字符密码的理论强度。

5。Des密码强度不高

b,Ntah

为了解决LM加密和认证方案固有的安全弱点,微软于1993年在视窗NT 3.1中引入了NTLM协议。

1。生成规则

不同于LM哈希算法。NT哈希不需要添加0×00来补充14个字节。

操作系统将把输入的明文信息转换成十六进制。Unicode转换后,它将调用MD4加密算法来加密加密结果。加密结果的十六进制是NT哈希。

以管理员为例,首先将管理员转换为十六进制。

admin-hex(十六进制)=61646d 696 e 61646d 696 e-unicode=6100406d 0069006 e 00 6100406d 0069006 e 00-标准MD4加密-209 c 6174 da 490 caeb 422 F3 fa 5a 7a e 634

获取最终NT哈希

NTLM Has h 3360 209 c 6174 da 490 caeb 422 F3 fa 5a e 634无法判断原始明文密码是否小于8个字节,也无法摆脱“KGS!

#$% " .MD4是一个真正的单向散列函数。耗尽明文作为数据源是非常困难的。

c,Mscache Hash

mscache hash是域用户登录域中的机器时留下的域缓存凭据的密码加密方法,也称为dcc散列,根据操作系统的不同版本分为dcc1散列和dcc2散列。Vista先保存dcc1,后保存dcc2。这两种哈希生成算法是不同的。此mscache哈希主要用于验证用户输入的密码。

1。工作原理

当机器可以连接到域控制器时,您使用域帐户登录机器。登录成功后(域控制器验证您的身份),系统将在注册表中保存您的凭据和授权信息。默认值是保存10个凭据(该值可以更改)。当保存的凭据超过10个时,新凭据将覆盖旧凭据。

这些凭据缓存在注册表中的用户可以在机器未连接到域控制时登录机器(仅交互式登录,如控制台或远程桌面)。当远程桌面时,应该注意的是,不能使用具有NLA功能的RDP客户端,但是应该使用旧的RDP客户端(例如在XP上的客户端),但是没有缓存在注册表中的用户不能登录。

MSCACHE的默认保存位置只能由系统权限读取。

2。生成规则

dcc1=md4 (nt哈希低位unicode(用户名))

dcc2=pbkdf2 (hmac-sha1,迭代,dcc1,LowerUnicode(用户名))

3。解密步骤

1。获取bootkey

2。解密LSA密钥

3。解密NLKM密钥

4。用NLKM密钥解密MSCACHE

文件。启动密钥分为4部分并存储在:

HKLM \系统\当前控制集\控制\ LSA \ JD

HKLM \系统\当前控制集\控制\ Lsa \偏斜1

HKLM \系统\当前控制集\控制\ Lsa \数据

HKLM \系统\当前控制集\控制\ LSA \ gbg

4,访问令牌

窗口令牌实际上称为访问令牌访问令牌,它是描述进程或线程安全的对象。不同的用户将在登录到计算机后生成访问令牌。当用户创建进程或线程时,该令牌将被持续使用,这解释了用户A在没有用户B许可的情况下创建进程。

访问令牌类型

主令牌

模拟令牌

正常情况下,用户双击运行程序并复制“explorer.exe”的访问令牌。

当用户注销时,系统会将主令牌切换到模拟令牌。直到机器重新启动,令牌才会被清除。

a,用户所属组的令牌组成的安全标识符

用户帐户

SID

标识当前登录会话的登录SID

用户或用户组拥有的权限列表

主组的所有者SID

SID

访问控制列表

访问令牌源

令牌是主令牌或模拟令牌

限制SID的可选列表

当前模拟级别

其他统计信息

b,安全标识符

安全标识符是唯一的字符串,可以代表帐户、用户组或登录名。通常它也有一个固定的样本号列表。例如,默认情况下,诸如“每个人”这样的内置帐户都有固定的SID。

SID :

域SID-用户标识

计算机SID-用户标识

SID列表的表达式将存储在域控制的广告或计算机本地帐户数据库中。

e1c6c07cae6f4c71bb9a19803dd15c4b.jpeg

c,用户权限和令牌

1。用户和权限

窗口操作系统底部用户权限的真正划分相对复杂,不仅仅是用户可见的公共或管理员权限。相同的权限组和不同的RID具有不同的权限。换句话说,初始默认管理员用户RID 500具有与普通管理员组用户不同的权限。管理员用户权限大于管理员组用户权限。具体来说,RID 500的用户权限大于普通管理员组用户的权限。因为系统本身并不识别用户名只识别用户的 RID。

的差异在远程访问过程中尤为明显。当使用哈希传递时,我们会发现如果目标服务器安装了kb2871997修补程序,那么哈希传递攻击将受到限制。只有 RID 500 的用户和本地管理员组的域用户不会受到影响。

这个问题的主要原因是用户帐户控制着UAC的令牌筛选机制。

2。受限令牌用于与windows vista之上的UAC

操作系统的任何非RID 500本地管理员帐户进行远程连接,无论是通过WMIPSEXEC还是其他方法,即使用户返回的令牌是本地管理员,也称为受限令牌已过滤的管理员令牌

受限令牌是主令牌或模拟令牌的子集,它们被修改以控制具有以下特征的特权或权限

它们的完整性级别设置为“中”。

管理员样本号和管理员类别样本号被标记为“仅拒绝”,而不是直接删除这些组。

除以下更改通知、关闭、取消停靠、创建工作集和时区外,所有权限都将被删除。

一般来说,在管理员组的非RID 500帐户登录后,所有没有通过UAC的权限都会被删除。RID 500帐户在登录后还以“完全令牌模式”运行所有具有完全管理权限的应用程序。UAC实际上并没有被使用。

对于本地“管理员”组中的域用户帐户,当具有域用户帐户的用户远程登录到窗口操作系统并且该用户是管理员组的成员时,时域用户将在具有完全管理员访问令牌的远程计算机上运行,并且用户的UAC将在会话的远程计算机上禁用。

3。关闭令牌过滤

如果HKLM \软件\微软\微软\当前版本\策略\系统\本地帐户令牌过滤策略条目存在(默认情况下不存在)并且配置为1,将向来自管理员所有本地成员的远程连接授予完全高完整性令牌。这意味着非RID 500帐户连接不会被过滤,哈希值

2可以成功传递。网络协议认证1。NTLM协议

NTLM是一种网络认证协议。这是一种基于挑战质询/响应认证机制的认证模式。本协议为只支持 windows 操作系统

应该注意,ntlm协议是一种嵌入式的协议很重要消息传输,它依赖于使用NTLM的上层协议,如SMBLDAPHTTP等。应该注意的是,与kerbreos不同,NTLM可以嵌入上层协议,也可以用作独立的应用层协议。Ntlm是一个只能嵌入上层协议的上层协议。消息的传输取决于使用NTLM的上层协议。

a,身份验证过程

1。三条重要消息

NTLM认证主要由三条消息

type 1 negotiation

type 2 challenge

type 3 authentication

协商组成,主要用于确认双方的协议版本。

质询是挑战质询/响应身份验证机制的类别。本节主要讨论该机制的运行过程。

验证身份验证主要是质询完成后身份验证的最后一步。

2。完成认证过程

5b5d049d3f9e4c70b8faf0ce60ebd6bf.jpeg

1。首先,用户客户端向服务器发送类型1消息,协商主要包括客户端支持和服务器请求的功能列表。

2。服务器在收到用户的请求后,会以类型2消息质询消息进行响应。该响应不仅包括以下列表

3.在接收到服务器的响应后,用户客户端用类型3消息验证回复质询。接收到质询后,用户客户端使用用户哈希和质询来执行加密操作以获得响应,然后将响应、用户名和质询发送到服务器。Challenge

服务器收到用户客户端发送的类型3消息后,它使用质询和用户哈希来加密响应2和类型3发送的响应进行比较。

1。如果用户哈希存储在域控制器中,那么没有用户哈希就无法计算响应2,也无法验证它。此时,服务器将通过netlogon协议联系域控制器以建立安全通道,然后将所有类型1、2和3发送到域控制器(此过程也称为直通身份验证过程)

2。域控制器使用质询和用户散列来加密并获得response2和type 3的响应,以比较结果并将其返回给服务器。

域控制远程身份验证

ecd428cb950943989477b754c18de2c2.jpeg

b,网络-ntlm哈希

类型3

1中有六种类型的响应。LMLNManager响应-由大多数旧客户端发送这是“原始”响应类型。

2。ntLM v1响应-这是由基于NT的客户端发送的,包括视窗2000和XP。

3。NTLM v2响应-在视窗NT服务包4中引入的较新的响应类型。它取代了支持NTLM版本2的系统上的NTLM响应。

4。LM v2响应–取代NTLM版本2系统上的LM响应。

5。NTLM2会话响应-该方案在协商NTLM2会话安全而不进行NTLMv2身份验证时,更改了LM NTLM响应的语义。

6。匿名响应-在建立匿名上下文时使用;没有提供实际的证书,也没有真正的身份验证。“保存根”字段显示在类型3消息中。

使用的六个加密过程与之前的质询/响应身份验证机制相同,不同于质询中的加密算法。

质询/响应身份验证机制类型3响应包含net-ntlmhasntlmv1响应和NTLMv2响应,它们对应于分成net-ntlmhasv1和net-ntlmhasv2的net-ntlmhashes。

net-ntlmhasv1的格式是用户名:3360主机名:lm响应:lm响应:challenge

net-ntlmhasv2的格式是用户名:3360 domain 3360 ch Allerge : hmac-MD 5: blob

在实际过程中使用响应消息中的 response 是最关键的部分因为它们向服务器证明客户端用户已经知道帐户密码。的哪个版本。

在大多数情况下,网络ntlm哈希v1由 LmCompatibilityLevel 决定只能在一些较旧的系统上看到。一个非常重要的原因是net-ntlmhasv1本身有缺陷。一旦获得网络NTLM v1已经废弃,它就是ntlmhasv1都能破解

1的响应生成方法。Net-NTLMv1

Net-NTLMv1分为两种方法:当NTLMSSP协商标志未设置会话安全标志位时的方法1,以及当标志位设置时的方法2。

与密码强度无关

1。NT哈希后跟5个字节0,总计21个字节

2。它被分成3组7字节,每7位后跟1位0,成为3个8字节DES密钥

3。步骤2中获得的3个密钥分别用于对8字节质询进行DES,以获得3组8字节密文,总计24字节密文,称为response

方法一

1。NT哈希后跟5个字节0,总计21个字节

2。它被分成3组7字节,每7位后跟1位0,成为3个8字节DES密钥

3。拼接8字节服务器质询和8字节客户端质询以找到其MD5,然后取MD5值的前8个字节

4。使用在步骤2中获得的3个密钥分别处理在步骤3中获得的8字节数据。DES加密获得三组8字节密文,它们形成24字节密文,称为response

2。Net-NTLMv2

1。在类型3消息的“目标名称”字段中,将Unicode大写用户名与Unicode身份验证目标指定的域名或服务器名称一起拼写出来。用户名将被转换为大写,身份验证目标区分大小写,并且必须与目标名称字段中显示的大小写相匹配。使用16字节的NTLM哈希作为密钥来获取值。

2。建立一个信息点。

3。使用16字节NTLMv2哈希作为密钥,将HMAC-MD5消息认证码算法加密为一个值(类型2的质询与Blob拼接)。获取16字节NTProofStr。

4。连接NTProofStr和Blob以形成响应。

c、LmCompatibilityLevel

此安全设置决定了用于网络登录的质询/响应身份验证协议。此选项会影响客户端使用的身份验证协议级别、协商会话安全级别以及服务器接受的身份验证级别。

类型3消息中的哈希类型由LmCompatibilityLevel决定。

发送LM NTLM响应:客户端使用LM和NTLM身份验证,并且永远不会使用NTLMv2会话安全域控制器接受LM、NTLM和NTLMv2身份验证。

发送LM NTLM-如果达成共识,使用NTLMv2会话安全:的客户端使用LM和NTLM身份验证,并且NTLMv2会话安全域控制器在服务器支持时接受LM、NTLM和NTLMv2身份验证。

仅发送NTLM响应:客户端仅使用NTLM身份验证,当服务器支持时,使用NTLMv2会话安全域控制器接受NTLM、NTLM和NTLMv2身份验证。

仅发送NTLMv2响应:客户端仅使用NTLMv2身份验证,NTLMv2会话安全域控制器在服务器支持时接受LM、NTLM和NTLMv2身份验证。

仅发送NTLMv2响应/拒绝LM:客户端仅使用NTLMv2身份验证,当服务器支持时,NTLMv2会话安全域控制器拒绝LM(仅接受NTLM和NTLMv2身份验证)。

仅发送NTLMv2响应/拒绝LM NTLM:客户端仅使用NTLMv2身份验证,当服务器支持时,NTLMv2会话安全域控制器拒绝LM和NTLM(仅接受NTLMv2身份验证)。

LmCompatibilityLevel在组策略中称为“网络安全:局域网管理器身份验证级别”。如果客户端和服务器的版本不匹配,将不会发送任何访问权限。

3。kerberos域认证

a,Kerberos协议概述

Kerberos是麻省理工学院提出的一种网络认证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。

此身份验证过程的实现不依赖于主机操作系统的身份验证,不需要基于主机地址的信任,不需要网络上所有主机的物理安全性,并且假设网络上传输的数据包可以任意读取、修改和插入。在上述情况下,Kerberos作为一种可信的第三方认证服务,通过诸如:共享密钥的传统加密技术来执行认证服务。

Kerberos协议中主要有三个角色

1。客户端访问服务(以下称为客户端或用户)

2。提供服务的服务器(以下简称服务)

3。KDC密钥分发中心密钥分发中心的kerberos测试工具简介

在该工具中,默认情况下,KDC服务安装在域的域控制中,而客户端和服务器是域中的用户或服务,如超文本传输协议服务、SQL服务。在Kerberos中,客户端是否可以访问服务器端服务由KDC发行的票据决定。

1。名词概念

方法二是网络对象相互访问的证书。

票据Ticket票证通过票证可以获得的票证是临时证书。

TGTTicket Granting Ticket票据授予服务。

TGSticket granting service负责管理账单、认证账单和分发* *然而,据统计,KDC不是一个独立的服务机构。它包括以下服务

身份验证服务:它为客户端生成

ticketgranding服务:它为客户端生成票证

服务。此外,需要引入一个类似于本机SAM的数据库广告。白名单的全名是帐户数据库,它存储所有客户端。只有白名单中的客户才能成功申请TGT。

物理上,广告和KDC都是域控制器域控制器。

b,身份验证过程

2060349d01574a318344f3a69d8f4c5c.jpeg

KDC客户端向KDC发送请求。明文密码将加密为哈希时间戳,使用客户端哈希加密,然后作为身份验证票证TGT请求中的身份验证因素发送到KDC。

1.AS-REQKDC用客户端哈希解密,如果结果正确,返回用krbtgt哈希加密的TGT票证。TGT包含PACPAC,其中包含客户端的sidClient组。

2.AS-REP当客户端请求票证授予服务TGS票证时,用户需要向KDC显示TGT数据。KDC将打开车票检查。如果KDC能开这张票并通过支票,TGT将被视为有效票。此时,TGT的数据将被复制以创建一张TGS票。

3.TGS-REQKDC使用目标服务帐户的哈希加密TGS票证,然后将结果发送给客户端。(只要TGT是正确的,无论用户是否有权访问服务,此步骤都会返回TGS票证)。

4.TGS-REP客户端访问目标服务并发送TGS票证来请求服务。

5.AP-REQ服务使用自己的散列来解密TGS钞票。如果解密正确,请将PAC带到KDC,检查客户端是否具有访问权限。KDC解密了PAC。获取客户端的sid及其所属的组,然后根据服务的ACL判断客户端是否有权访问该服务。

c,PAC

解释了如何证明客户机是客户机,而不是在最初由Kerberos设计的几个进程中被其他人模拟,但是没有声明客户机是否有权访问服务器服务,因为具有不同权限的用户可以在域中访问的资源不同。

所以微软在实现Kerberos来解决这个问题时加入了PAC的概念。PAC的全名是权限属性证书。

PAC可以理解为存储在TGT的一串支票信息,原则上由KDC哈希加密,以防止伪造和字符串修改。同时,尾部将有两个分别由KDC密码和服务器密码加密的数字签名,以防止数字签名的内容被篡改。

bfc2097d44dc405e84f6f3df68137736.jpeg

同时,PAC指定固定用户号和组号以及其他信息。接收到ST后,服务器的程序解密得到PAC,PAC将把PAC的数字签名发送给KDCKDC进行验证,并将结果以RPC返回代码的形式返回给服务器。

3。获取用户凭据

这里的术语“获取用户凭据”通常指可以直接使用的ntlm哈希或明文密码。其他加密方法的用户凭据超出了本讨论的范围。

1,本地用户凭据

a,crack

regsavehlm \ samc : \ Sam . hivereg savehlm \ system c : \ system。hive

b通过sam文件,获取lsass内存

1.procdump

procdump是微软提供的一款软件,它可以监控cpu峰值,帮助管理员检测异常数据。这是合法可信的软件,所以软件杀戮不会被拦截。

该软件可以通过使用其可读内存功能来捕获计算机用户的登录内存。具体命令如下

开始CMD procdump 64 . exe-接受Full马萨诸塞州lsass.exe存储路径为管理员\文件名

在生成的文件发出后,使用Mimikatz # Sekurlsa :3360 Mimikatz #破解

mimikatz # Sekurlsa :3360登录密码完整

2。创建转储文件

除了使用工具软件获取lsass.exe的内存之外,还可以在任务管理器中直接创建lsass.exe的转储文件,其效果与procdump生成的效果相同。

060d27a36fc54529a874bc15412fd71b.jpeg

2,域用户凭据

a,ntdsutil域快照

ntdsutil是命令行工具,是域控制器生态系统的一部分。其主要目的是使管理员能够轻松访问和管理视窗活动目录数据库。然而,渗透测试人员或红色团队成员经常滥用它来获取现有ntds.dit文件的快照。Ntdsutil可以直接在视窗服务器2008及以上版本中使用。

ntdsutil active instance ntdsifm createfull : \ ntdsutil quiet

afcfa366481d4c9f8d0fbcd06eac3479.jpeg

b,DiskShadow

DiskShadow是一个Microsoft签名的二进制文件,用于帮助管理员执行与卷影复制服务VSS相关的操作。这个二进制文件有两种交互模式,脚本将包含自动执行NTDS所需的所有命令。DIT提取过程。可以将以下行添加到脚本文件中,以创建新的卷影副本卷影副本装载新的驱动程序执行复制命令并删除卷影副本。

set context persistent nowriters添加卷c:别名somalias create expose % somalias % z : exec ' cmd . exe '/c copy z : \ Windows \ NTDs . ditc : \ NTDs \ NTDs . ditdelete shadows卷% somealias % reset

请注意,需要从C:\Windows\System32路径执行DiskShadow二进制文件。如果从另一个路径调用,脚本将无法正确执行,并且在保存脚本文件时无法选择UTF-8。必须选择ASCII编码,否则运行时会报告错误。

diskshadow.exe/S C : \ diskShadow . txt

2625ebd6b3d04f09b01d08eee8980e17.jpeg

系统注册表配置单元也应被复制,因为它包含解密NTDS文件内容所需的密钥。

reg.exe保存hklm \ system c : \ NTDs \ system . bak

c,vssadmin

卷影复制服务Vssadmin是微软视窗的一个组件服务,受视窗XP支持。管理员可以使用卷影复制服务来备份计算机卷和文件,即使操作系统正在使用这些资源。

1。备份方法

vssadmin create shaw/for=c : copy \ \?\全局根\设备\硬盘卷阴影复制[标识]\windows\ntds\ntds.dit复制\\?\全局根\设备\硬盘卷影复制[标识] \窗口\系统12 \配置\系统管理员删除阴影/阴影=[GUID]

硬盘卷影复制[标识]中的[标识]和[GUID]都是动态生成的,需要根据回声结果输入。下图

7a65acf8ef9d4284a19d7554d0bb0864.jpeg

显示[身份证]为1 "[身份证]为c 73089 a b-8634-457 c-8 ee 7-b8 c0ed 2432 ad。

0a363e8ef03e4603904739f0ced0c5b2.jpeg

2.windows server 03

如果系统是服务器03,您需要在执行后使用esentutl来修复NTD。

esentutil/reedb/8/d/osentutl/p . \ NTDS.DIT/8/o

250c2165cf27468089757559290c55fe.jpeg

6.AP-REP

d,Mimikatz

Mimikatz有一个函数dcsync使用目录复制服务DRS从ntds.dit文件中检索密码哈希值。这种技术消除了直接从域控制器进行身份验证的需要,因为它可以作为域管理员在域中的任何系统中执行,也可以从使用金卡连接到域控制器的任何服务器中执行。因此,这也是红队的标准技术。

lsad UMP 3360: dcsync/domain : aptlab . com/all/CSV

b8c4eb3637b748eca3251af9a5ea9c24.jpeg

通过使用/user参数指定域用户名Mimikatz,指定用户的所有帐户信息将被转储以包括哈希值。

lsadamp 3360: dcsync/domain : pentestab.local/user:test

de22ef23f377491c800a9a8db84860bb.jpeg

e,secretsdump

内容的远程窃取也可以通过使用impacket下的secretarddump模块来实现。同时,该工具支持哈希传输攻击。

python secrets dump-hashes : nt hash-just-dcdomain/DC \ $

IP addr 3,ntds文件解密

破解ntds文件的方法有许多软件,其中许多包括Impacket-secretsdump、Quarks PwDump等。

NtdsAudit工具是这里推荐的。Github下载地址

该工具可以非常有效地破解ntds文件,并导出所有域用户信息,以便于搜索域用户状态。

将ntds.dit文件和SYSTEM文件放在同一个目录中,执行命令

NtdsAudit.exe' NTDS。DIT '-S ' SYSTEM '-Ppwdump.txt-Users-CSvusers . csv

执行后,将生成两个文件pwdump . txt和users.csv,其中pwdump.txt是包含用户名和hashers的用户哈希文件,CSV文件是域用户的详细信息,包括帐户是否过期,是否是管理员最后一次修改密码的时间等。当

需要注意的是该操作必须在 windows server 2003 上执行。

需要注意的是该工具只能在win10server16未测试上执行。

使用不同的工具破解ntds文件时,需要注意最好使用与导出的ntds文件域控件具有相同操作系统版本的系统来破解,否则可能会出现故障。

4。其他方法

除了上述基本方法之外,还有许多其他方法的组合,例如使用网络NTLM散列v1、结合其他方法使用wmic、使用其他程序等。这里没有太多的扩展,感兴趣的学生可以自己学习。

4。NTLM议定书攻击思想1。hash transfer

hash transfer攻击pass hash缩写为PTH。

因为在NTLM身份验证期间,客户端使用用户的哈希而不是用户的密码来计算类型3中的响应。因此,当模拟用户登录时,它不需要用户明文密码,只需要用户散列。

微软于2014年5月13日发布了名为“更新以修复密码哈希漏洞”的密码更新补丁kb2871997,但一周后将标题改为“更新以改进凭据保护和管理”。同时,补丁还可以防止mimikatz抓取明文密码。

严格来说,哈希传输只是一个不需要输入密码的NTLM协议身份验证过程,所以它不是一个漏洞,而是一项技能。

a,Common Tool

Hash Delivery作为一种相对常见的攻击方法,有许多相应的工具。常见的有

1 . mimikatz

privilege :3360 debug sekurlsa 33603360 PTH/user : win 10/domain 3360 test . local/NTlm 33366 a 6293 BC 0 c 56 d7b 9731 e 2d 5506065 e4a

b65f1f7474f848f6af99f7515487b85d.jpeg

2 . impa cket

impa cket所有支持哈希传输。

PS exec . py

smbexec . py

atexec . py

wmeexec . py

dcmexec . py

python wmi exec . py-hash lmhash h : nThash username

IP address python wmi exec . py-hash : nThash username

IP address

3 . MSF

use exploit/windows/Smb/PSE xec _ psh

f341f3980894422f8574d143d65017ce.jpeg

4。钴撞击

624d4d578fb241a0a1befbab3c53e930.jpeg

2,信息收集

返回操作系统类型主机名网络bios名称和NTLM协议中类型2返回质询过程中的其他信息。然后,如果您向服务器发送类型1信息并收集类型2返回信息,您可以获得许多关于目标服务器的信息。

因为NTLM是一个嵌入式协议,消息的传输依赖于上层协议的使用,所以多种上层协议嵌入式NTLM协议可以用来发送获取信息的请求。最常见和最经典的是msf中的smb_version模块。当目标主机打开445或139时,它向服务器发送类型1请求,然后解析类型2响应。你可以收集一些信息。

0c12589e55c14c588372277b0441741a.jpeg

除了msf,还有python、c#和其他版本。

0083034bf6af48a49fd4e3ff4d2c4308.jpeg

3,中间人攻击

NTLM中继攻击是中间人攻击。因为ntlm协议是嵌入式协议,所以当NTLM的上层协议是中小企业时,NTLM中继是中小企业中继。如果上层协议是http,也可以称为http中继,但它们统称为ntlm中继。

a,ntlm中继

正常ntlm身份验证类型1类型2类型3过程的一般过程。

b259a2c1d70e43b1bf9fceaa069d43d3.jpeg

在中间人攻击过程中,攻击者充当中间人,将数据包(类型1)从客户端转发到服务器,将质询(类型2)从服务器转发到客户端。客户端计算出响应后,会将响应(类型3)转发给服务器,以验证在RS响应通过后授予攻击者的权限。

737f443b11fc41a2b73e4f3068e2f389.jpeg

b,跨协议中继

考虑到ntlm协议的特点,NTLM认证信息也可以从一个协议中提取出来,放入另一个协议中实现跨协议中继。

c、Relay和Reflet

考虑到ntlm协议的特点,NTLM认证信息也可以从一个协议中提取出来,放入另一个协议中实现跨协议中继。

如果清单服务器和目标是同一台机器,攻击者将把清单服务器的请求发送回清单服务器进行身份验证。这是什么是反射

反射reflect

在工作组环境中,工作组中的机器之间没有信任关系。每台机器的帐号和密码只保存在其SAM文件中,并将在此时转发给其他机器,这是没有意义的。

最有特色的是CVE-2018-8581。通过捕捉管理员哈希并将其反馈给自己,可以实现短期权限提升。

d,NTLM请求发起

由于这是一次中间人攻击,关键问题是如何发起请求。发起请求的方式有很多,但是使用条件相当苛刻,所以我们不会涉及太多细节。在这里,我们将只介绍最具可行性的一个。

标签: Hash Windows lsass