域渗透-NTLM-1
域渗透-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版本
NTLMv1与NTLM v2最显著的区别就是Challenge与加密算法不同, 共同点就是加密的原料都是NTLM Hash, NTLM v1的Challenge有8位,NTLM v2的Challenge为16位; NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。
NTLMv1
在NTLM的身份验证过程中,涉及多个消息步骤,其中M1和M2是以下两个重要的消息: M1(客户端到服务器的消息): 客户端向服务器发送一个身份验证请求,这个请求包含客户端的随机数和NTLM标识信息。 服务器收到M1后,会生成一个随机挑战(Challenge)并发送回客户端。 M2(服务器到客户端的消息): 服务器将挑战和其他相关信息(如服务器标识)发送回客户端,要求客户端响应。 客户端使用其密码生成响应,并将该响应发送回服务器
工作流程↓
- 客户端发送M1:请求身份验证并发送用户信息。
- 当客户端要访问服务器上某个受保护的服务时,需要输入服务器的用户名和密码进行验证。此时客户端会在本地缓存一份服务器密码的NTLM hash,然后向服务器发送协商消息。
- 服务器响应M2:发送挑战及其他信息。
- 服务器收到客户端的协商信息后,生成并回复质询消息。该消息中包含了一个由服务端生成的16位随机值challenge,服务器也会在本地缓存该值。
- 客户端计算响应:客户端使用用户密码计算出一个响应值,并将其发送回服务器进行验证。
- 客户端收到质询消息后,会使用步骤1中缓存的服务器的NTLM hash对Challenge进行加密生成Response,接着再生成Net-NTLM hash=Challenge+Response+用户名等,再将Net-NTLM hash封装到身份验证消息中发往服务器。
- 服务器在收到身份验证消息后,用自己密码的NTLM hash对Challenge进行加密生成Response2,并比较Response2与Response是否一致。如果一致,就证明客户端掌握了服务器的密码,认证成功,否则认证失败。
NTLMv2
- 使用更强的哈希算法(如 HMAC-MD5),并引入了会话密钥。
- 引入了客户端和服务器之间的时间戳,增加了对重放攻击的抵抗能力。
- 提供了更复杂的身份验证机制,支持更大的密码长度。
适用性:被广泛用于 Windows NT 4.0 和更高版本,推荐在支持的环境中使用
Net-NTLM hash v2的格式如下
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 等),从而捕获和解码网络中传输的身份验证凭据。其主要功能包括:
- 捕获凭据:Responder 可以监听网络流量,并捕获 NTLM 和其他身份验证类型的凭据。
- 中间人攻击:它可以模拟各种服务,以诱使客户端发送认证请求,从而窃取用户名和密码。
- DNS Spoofing:Responder 可以对 DNS 查询进行欺骗,重定向请求到攻击者控制的服务。
- 提供虚假服务:例如,可以模拟 SMB 共享,让用户误认为他们连接的是合法服务。
使用
git clone https://github.com/lgandx/Responder sudo python3 Responder.py -I tun0
john
John the Ripper(通常简称为 John)是一个非常强大的密码破解工具,主要用于破解用户密码的哈希值。它最初设计用于破解 Unix 系统的密码文件(/etc/passwd
和 /etc/shadow
),但随着时间的推移,它变得越来越多功能,支持多种不同的加密算法和操作系统。
使用示例
基础命令: 例如,你有一个包含密码哈希的文件
hashes.txt
,可以通过以下命令开始破解:bash 复制代码 john hashes.txt John 会自动检测文件中的哈希类型并开始破解。
使用字典破解: 如果你有一个字典文件
passwords.txt
,可以使用以下命令进行字典攻击:bash 复制代码 john --wordlist=passwords.txt hashes.txt
查看破解进度: John 允许你在破解的过程中查看当前的进展情况:
bash 复制代码 john --status
显示破解结果: 破解成功后,可以使用以下命令查看破解的密码:
bash 复制代码 john --show hashes.txt
恢复中断的破解: 如果破解中断了,可以通过以下命令继续之前的破解过程:
bash 复制代码 john --restore
支持的哈希类型
John the Ripper 支持破解的哈希类型非常广泛,以下是一些常见的哈希类型:
- LM 和 NTLM(Windows)
- MD5、SHA-1、SHA-256、SHA-512(Unix/Linux)
- bcrypt、argon2
- Kerberos 5 TGT 数据包
- MS-CHAPv2 协议
- MySQL、PostgreSQL、Oracle 数据库密码
- PDF、ZIP、RAR 文件密码
如何获取哈希
在使用 John 之前,通常需要提取系统或文件中的密码哈希。例如:
- Linux/Unix 系统的哈希可以从
/etc/shadow
文件中提取。 - Windows 系统的 NTLM 哈希可以使用工具如 mimikatz 或 hashdump 提取。
- 压缩文件(如 ZIP、RAR)密码可以使用工具来提取哈希,之后再通过 John 破解。
我的使用↓
john -w=/usr/share/wordlists/rockyou.txt hash.txt -w : wordlist to use for cracking the hash
链接
evil-winrm -i 10.129.8.173 -u administrator -p badminton