一.前言
PTH(Pass The Hash,哈希传递)攻击是一种很典型的内网渗透攻击方式。它是通过寻找账号相关的密码散列值(通常是NTLM哈希值)进行NTLM认证,在Windows中应用程序需要用户提供明文密码,最后调用LsalogonUser之类的API将密码进行转换,转换后在NTLM身份认证时将哈希值发送给远程服务器,而这个网络认证之间的过程其实并不需要明文密码。也就是说,利用这个机制,攻击者可以不提供明文密码,而是通过NTLM哈希或者LM哈希进行远程访问。
二.前文推荐
ATT&CK视角下的红蓝对抗:一. 隧道穿透技术详解
ATT&CK视角下的红蓝对抗:二. 内网探测协议出网
ATT&CK视角下的红蓝对抗:三. 内网常规隧道利用方法
ATT&CK视角下的红蓝对抗:四. 内网穿透之通过Earthworm(EW)进行隧道穿透
ATT&CK视角下的红蓝对抗:五. 内网穿透之利用HTTP协议进行隧道穿透
ATT&CK视角下的红蓝对抗:六.内网穿透之利用FRP进行隧道穿透
ATT&CK视角下的红蓝对抗:七.内网穿透之利用Venom进行隧道穿透
ATT&CK视角下的红蓝对抗:八.内网穿透之利用Termite进行隧道穿透
ATT&CK视角下的红蓝对抗:九.内网穿透之利用GRE协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十.内网穿透之利用DNS协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十一.内网穿透之利用SSH协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十二.内网穿透之Windows文件传输技术详解
ATT&CK视角下的红蓝对抗:十三.内网穿透之Linux文件传输技巧详解
ATT&CK视角下的红蓝对抗:十四.内网穿透之反弹流量分析与检测方法
ATT&CK视角下的红蓝对抗:十五.内网穿透之利用ICMP协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十六.横向移动之利用Windows计划任务进行横向移动
ATT&CK视角下的红蓝对抗:十七.横向移动之利用远程服务进行横向渗透
ATT&CK视角下的红蓝对抗:十八.横向移动之利用WinRM进行横向渗透
三. 哈希传递(Pass The Hash)
PTH(Pass The Hash,哈希传递)攻击是一种很典型的内网渗透攻击方式。它是通过寻找账号相关的密码散列值(通常是NTLM哈希值)进行NTLM认证,在Windows中应用程序需要用户提供明文密码,最后调用LsalogonUser之类的API将密码进行转换,转换后在NTLM身份认证时将哈希值发送给远程服务器,而这个网络认证之间的过程其实并不需要明文密码。也就是说,利用这个机制,攻击者可以不提供明文密码,而是通过NTLM哈希或者LM哈希进行远程访问。
而我们所要讲的PTH攻击可以说是基于NTLM认证缺陷的一种攻击方式,攻击者可以利用获取的用户密码哈希值来进行NTLM认证。
假设在域环境中,计算机登录时会使用相同的本地管理员账号和密码。那么攻击者就能利用PTH攻击的手段访问其他登录内网的计算机。通过这种攻击方式,攻击者不需要花时间破解密码哈希值来获取明文密码,而可以直接通过哈希值来实现对其他域内计算机的控制。这种攻击方法的实验拓扑图如图1-1所示,而实验环境参考表1-1。
表1-1实验环境
主机 | 域名 | IP地址 | NTLM 哈希值 |
---|---|---|---|
Kali 2022 | test.com | 192.168.1.9 , 10.10.10.2 | |
Windows server 2012 | test.com | 192.168.1.2 , 10.10.10.3 | 3766c17d09689c438a072a33270cb6f5 |
windows server 2008 | test.com | 192.168.1.3 , 10.10.10.4 | 3766c17d09689c438a072a33270cb6f5 |
Windows server 2008 | test.com | 192.168.1.4 , 10.10.10.5 | 3766c17d09689c438a072a33270cb6f5 |
1.使用crackmapexec进行PTH攻击
Crackmapexec是一款针对AD的后渗透工具,能帮助我们对大型AD网络的安全性进行评估。该工具是利用AD内置功能/协议达成目的的,能规避大多数终端防护/IDS/IPS解决方案。并且,该工具在Kali中安装的方法很简单,使用apt-get install crackmapexec命令即可安装,其他操作系统的安装方法可以参考官方文档。
该工具通常应用在后渗透阶段。假设我们在内网中已经控制了一台服务器(这里以Kali为例),就可以使用该工具对AD进行相关测试。该工具功能强大,可以查看帮助信息获取相关功能的使用方法,如图1-2所示。
下面演示如何使用crackmapexec工具,通过Crackmapexec smb -h命令,获取指定协议的相关帮助信息,如图1-3所示。
Kali系统自带Crackmapexec。直接在Kali中执行crackmapexec smb 192.168.1.2 -u Administrator -H 3766c17d09689c438a072a33270cb6f5 -d test.com -x whoami命令。其中参数包括:-u指定用户,-H指定哈希值,-d指定域,-x指定要执行的命令。此时已经获得权限,最后的执行结果如图1-4所示。
2.通过wmiexec对WMI进行PTH
PTH攻击除了通过SMB进行以外,还可以使用WMI进行。下面我们使用Impacket中的wmiexec进行PTH攻击。
在kali下载好Impacket后,执行python3 wmiexec.py -hashes 00000000000000000000000000000000:3766c17d09689c438a072a33270cb6f5 test.com/Administrator@192.168.1.2,执行结果如图1-5所示。
3.防御PTH攻击
对PTH攻击很难做到彻底防御,因为这个攻击方式本身利用了NTLM认证的特性,我们所做的只是降低PTH攻击的成功率,具体方法列举如下。
- 安装杀毒软件:通过安装杀毒软件防止攻击者用一些常规工具进行PTH攻击以及盗取哈希。
- 开启防火墙:通过开启防火墙的方式,禁止从445、135等端口进行通信。
- 将FilterAdministratorToken的值设置为1,限制本地administrator账户的远程登录。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!