域渗透-NTLM-1

HTTP API 服务在端口 5985 开放,通常指的是 Windows Remote Management (WinRM) 服务。WinRM 是 Microsoft 提供的用于远程管理 Windows 系统的协议和服务,它允许系统管理员通过网络远程访问和管理 Windows 机器。

5985:用于 HTTP 协议。

5986:用于 HTTPS 协议(加密的连接)。

常用指令

以下所有指令均为在域成员主机上执行的结果

  • 得到域控制器的IP
    • dsquery server
  • 得到域主机名
    • net group “domain controllers” /domain
    • 得到的机器后面多个$
  • 查询域管理用户
    • net group “domain admins”/domain
  • 查看所有域内用户
    • net user/domain
    • 特殊用户krbtgt(kerberos)身份验证的账户,获取该用户的hash就可以伪造票据进行票据攻击了
  • 查询当前登录域
    • net config workstation
  • 查询域密码策略
    • net accounts /domain
  • 查看补丁信息
    • wmic qfe
  • 查看操作系统类型
    • wmic os
  • 已知密码链接
    • 常用的做法有net use建立Ipc$连接、wmic指令连接、采用rdp方式连接、psexec链接、

NTLM版本

  1. NTLMv1与NTLM v2最显著的区别就是Challenge与加密算法不同,
    共同点就是加密的原料都是NTLM Hash,
    NTLM v1的Challenge有8位,NTLM v2的Challenge为16位;
    NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。
    

NTLMv1

  1. 在NTLM的身份验证过程中,涉及多个消息步骤,其中M1和M2是以下两个重要的消息:
    
    M1(客户端到服务器的消息):
    
    客户端向服务器发送一个身份验证请求,这个请求包含客户端的随机数和NTLM标识信息。
    服务器收到M1后,会生成一个随机挑战(Challenge)并发送回客户端。
    M2(服务器到客户端的消息):
    
    服务器将挑战和其他相关信息(如服务器标识)发送回客户端,要求客户端响应。
    客户端使用其密码生成响应,并将该响应发送回服务器
    

工作流程↓

  1. 客户端发送M1:请求身份验证并发送用户信息。
    • 当客户端要访问服务器上某个受保护的服务时,需要输入服务器的用户名和密码进行验证。此时客户端会在本地缓存一份服务器密码的NTLM hash,然后向服务器发送协商消息。
  2. 服务器响应M2:发送挑战及其他信息。
    • 服务器收到客户端的协商信息后,生成并回复质询消息。该消息中包含了一个由服务端生成的16位随机值challenge,服务器也会在本地缓存该值。
  3. 客户端计算响应:客户端使用用户密码计算出一个响应值,并将其发送回服务器进行验证。
    • 客户端收到质询消息后,会使用步骤1中缓存的服务器的NTLM hash对Challenge进行加密生成Response,接着再生成Net-NTLM hash=Challenge+Response+用户名等,再将Net-NTLM hash封装到身份验证消息中发往服务器。
  4. 服务器在收到身份验证消息后,用自己密码的NTLM hash对Challenge进行加密生成Response2,并比较Response2与Response是否一致。如果一致,就证明客户端掌握了服务器的密码,认证成功,否则认证失败。

NTLMv2

  • 使用更强的哈希算法(如 HMAC-MD5),并引入了会话密钥。
  • 引入了客户端和服务器之间的时间戳,增加了对重放攻击的抵抗能力。
  • 提供了更复杂的身份验证机制,支持更大的密码长度。

适用性:被广泛用于 Windows NT 4.0 和更高版本,推荐在支持的环境中使用

Net-NTLM hash v2的格式如下

  1. username::domain:challenge:HMAC-MD5:blob
    

NTLM Session v2

定义:NTLMv2 的一种扩展,进一步增强了会话的安全性。

安全性

  • 结合了 NTLMv2 的特性,提供了会话级别的保护,防止会话劫持。
  • 使用了更多的随机数和时间戳信息,以提高安全性。
  • 提供了更强的抗重放攻击能力和会话密钥管理。

适用性:适用于需要额外安全性的场合,尤其是在对数据保护要求较高的环境中。

NTLM在域环境中的认证

前三步和NTLM一样,就是第四步拆开了

4.服务器收到客户端发来的TYPE 3消息后,会将消息通过 Netlogon协议转发给域控制器。

5.域控制器根据TYPE 3消息中的用户名获取该用户名的NTLM hash,用NTLM hash对原始的Challenge进行加密并生成Response,然后将其与TYPE 3消息中Response对比。如果一致,就证明客户端掌握了服务器密码,认证成功,否则认证失败。

6.服务器根据域控返回的验证结果,对客户端进行相应的回复。

工具篇

Responder.py

在 Kali Linux 中,Responder.py 是一个用于进行网络协议攻击的工具,主要针对 Windows 网络环境。它通过伪装成一个网络服务(如 SMB、HTTP、DNS 等),从而捕获和解码网络中传输的身份验证凭据。其主要功能包括:

  1. 捕获凭据:Responder 可以监听网络流量,并捕获 NTLM 和其他身份验证类型的凭据。
  2. 中间人攻击:它可以模拟各种服务,以诱使客户端发送认证请求,从而窃取用户名和密码。
  3. DNS Spoofing:Responder 可以对 DNS 查询进行欺骗,重定向请求到攻击者控制的服务。
  4. 提供虚假服务:例如,可以模拟 SMB 共享,让用户误认为他们连接的是合法服务。

使用

  1. git clone https://github.com/lgandx/Responder
    
    sudo python3 Responder.py -I tun0
    

john

John the Ripper(通常简称为 John)是一个非常强大的密码破解工具,主要用于破解用户密码的哈希值。它最初设计用于破解 Unix 系统的密码文件(/etc/passwd/etc/shadow),但随着时间的推移,它变得越来越多功能,支持多种不同的加密算法和操作系统。

使用示例

  1. 基础命令: 例如,你有一个包含密码哈希的文件 hashes.txt,可以通过以下命令开始破解:

  2. bash
    
    
    复制代码
    john hashes.txt
    
    
    John 会自动检测文件中的哈希类型并开始破解。
    
  3. 使用字典破解: 如果你有一个字典文件 passwords.txt,可以使用以下命令进行字典攻击:

  4. bash
    
    
    复制代码
    john --wordlist=passwords.txt hashes.txt
    
  5. 查看破解进度: John 允许你在破解的过程中查看当前的进展情况:

  6. bash
    
    
    复制代码
    john --status
    
  7. 显示破解结果: 破解成功后,可以使用以下命令查看破解的密码:

  8. bash
    
    
    复制代码
    john --show hashes.txt
    
  9. 恢复中断的破解: 如果破解中断了,可以通过以下命令继续之前的破解过程:

  10. bash
    
    
    复制代码
    john --restore
    

支持的哈希类型

John the Ripper 支持破解的哈希类型非常广泛,以下是一些常见的哈希类型:

  • LMNTLM(Windows)
  • MD5SHA-1SHA-256SHA-512(Unix/Linux)
  • bcryptargon2
  • Kerberos 5 TGT 数据包
  • MS-CHAPv2 协议
  • MySQLPostgreSQLOracle 数据库密码
  • PDFZIPRAR 文件密码

如何获取哈希

在使用 John 之前,通常需要提取系统或文件中的密码哈希。例如:

  • Linux/Unix 系统的哈希可以从 /etc/shadow 文件中提取。
  • Windows 系统的 NTLM 哈希可以使用工具如 mimikatzhashdump 提取。
  • 压缩文件(如 ZIP、RAR)密码可以使用工具来提取哈希,之后再通过 John 破解。

我的使用↓

  1. john -w=/usr/share/wordlists/rockyou.txt hash.txt
    
    -w : wordlist to use for cracking the hash
    

链接

  1. evil-winrm -i 10.129.8.173 -u administrator -p badminton