域渗透基础知识二¶
LM Hash 和 NTLM Hash¶
在 Windows 中是不会保存明文密码的,只会保存密码的哈希值。 其中本机用户的密码哈希是放在 本地的 SAM 文件 里面,域内用户的密码哈希是存在域控的 NTDS.dit 文件 里面。在渗透测试中,通常可从 Windows 系统中的 SAM 文件和域控的 NTDS.dit 文件中导出所有用户的Hash。导出来的哈希经常会看到这样的格式:
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
其中的AAD3B435B51404EEAAD3B435B51404EE是LM Hash,31D6CFE0D16AE931B73C59D7E0C089C0是NTLM Hash。
LM Hash¶
LM Hash 的全称为 LAN Manager Hash,这是 Windows 中最早用的加密算法。
NTLM Hash¶
NTLM 身份验证 Windows 的 NTLM 认证就是利用 NTLM Hash 进行的认证,可以分为 本地认证 和 网络认证 两种方式。NTLM 的网络认证,既可用于域内的认证服务,又可用于工作组环境。NTLM 有 NTLMv1 、NTLMv2 、NTLMsession v2 三个版本,目前使用最多的是NTLMv2版本。
NTLM 本地认证 本地登录时,用户的密码存储在 %SystemRoot%\system32\config\SAM 这个文件里。当用户输入密码进行本地认证的过程中,所有的操作都是在本地进行的。他其实就是将用户输入的密码转换为NTLM Hash,然后与SAM中的NTLM Hash进行比较。当用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框。当winlogon.exe接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。(winlogon.exe即Windows Logon Process,是Windows NT用户登陆程序,用于管理用户登录和退出。lsass进程用于微软Windows系统的安全机制。它用于本地安全和登陆策略。)
简单横向¶
哈希传递攻击¶
该方法通过得到账户相关的密码散列值(通常是NTLM Hash)来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。同时,通过哈希传递攻击,攻击者不需要花时间破解密码散列值(进而获得密码明文)。
在 Windows 网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证 ),而微软自己的产品和工具显然不会支持这种攻击,于是,攻击者往往会使用第三方工具来完成任务。在 Windows Server 2012 R2 及之后版本的操作系统中,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。
实验
实验环境:
域控:windows server 2012 192.168.1.1
域成员机:windows 7 双网卡 192.168.1.11 192.168.191.188
kali:192.168.191.130
实验目的:拿下域控
实验过程:
1.利用漏洞获得Windows 7 系统权限
2.使用NPS进行内网穿透
3.利用kali下的msf或mimikatz进行哈希传递攻击
NPS工具介绍¶
一款轻量级、高性能、功能强大的内网代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用于访问内网网站、支付本地接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。一个轻量级、高性能、强大的内网穿透代理服务器,带有强大的web管理端。
项目地址:https://github.com/ehang-io/nps
搭建过程:
nps原理介绍¶
运行NPS服务的云服务器和运行NPS客户端的主机之间会创建一条TCP或UDP隧道,可以映射云服务器上的某个端口到客户端主机的指定端口,其他主机访问云服务器的这个端口的流量都会通过创建的这条隧道转发到映射的主机端口,实现内网穿透效果。