拿到目标进行端口扫描
nmap -sV -sC 10.10.10.182
整理一下有价值的端口和服务:
53:DNS域名解析服务
88:Kerberos域身份认证
389:ldap目录服务
445:smb文件和打印共享
提供Kerberod服务,这可能是一个windows系统的域控制器
匿名登录尝试一下smb获取信息。
没有存储任何共享资源,没什么有价值的信息。
使用windapsearch工具尝试LDAP 查询枚举 Windows 域中的用户、组和计算机。
获取windapsearch:
git clone https://github.com/ropnop/windapsearch.git
安装依赖
pip install python-ldap
我们用windapsearch工具查询所有AD域用户的详细信息
./windapsearch.py -U --full --dc-ip 10.10.10.182
枚举后,分析获取的信息
发现Ryan Thompson用户存在userPrincipalName和cascadeLegacyPwd属性
cascadeLegacyPwd: clk0bjVldmE=
Base64解码结果:rY4n5eva
尝试用这个账户进行远程登录失败
尝试用此账号登录smb失败,能看到smb文件目录。
smbclient -L 10.10.10.182 -U r.thompson
Password for [WORKGROUP\r.thompson]:rY4n5eva
尝试使用smbmap查看可以访问哪个smb共享
smbmap -H 10.10.10.182 -u r.thompson -p 'rY4n5eva'
发现自定义共享Data是可读的,连接后找一下可利用的信息
/IT/Logs/DCs 目录下存储着dcdiag.log日志文件
下载查看一下,内容很常规,暂时不管
另外在/IT/Logs/Ark AD Recycle Bin 目录下存储着ArkAdRecycleBin.log日志文件
下载查看,记录了移除TempAdmin对象到回收站的日志
/IT/Email Archives 目录下存储着Meeting_Notes_June_2018.html文件
里面记载着临时用户TempAdmin的口令和管理员口令相同
另外在\IT\Temp\s.smith目录下有一个VNC注册表文件
了解到是TightVNC,并且给了密钥的十六进制形式,VNC使用硬编码的 DES 密钥来存储凭据
frizb/PasswordDecrypts:方便的存储密码解密技术 (github.com)
这里利用msf工具进行解密
msfconsole
irb
key="\x17\x52\x6b\x06\x23\x4e\x58\x07"
require 'rex/proto/rfb'
Rex::Proto::RFB::Cipher.decrypt ["6BCF2A4B6E5ACA0F"].pack('H*'), key
成功解密得到口令 sT333ve2
由于这个口令是在s.smith用户目录下获取的,因此猜测是一套账号口令,尝试远程登陆
ruby evil-winrm.rb -i 10.10.10.182 -u s.smith -p sT333ve2
登录成功,下面进行提权
查看当前用户s.smith的用户组信息
s.smith 登录时,会运行MapAuditDrive.vbs脚本
这个用户属于Audit Share用户组,所以访问一下smb的Audit共享文件夹
下载RunAudit.bat批处理文件查看一下内容
内容是调用 CascAudit.exe 可执行文件,目标是访问\\CASC-DC1下的Audit$共享,路径为DB\Audit.db的数据库文件。
下载Audit.db数据库文件,并查看其中存储的信息
有一个Ldap表中存储着用户名口令以及对应的域信息,口令base64解密为乱码,应该是被加密了
CascAudit.exe执行了某些操作指向了数据库的这个字段,我们用dnSpy对exe文件进行反编译
调用了Crypto.DecryptString方法对数据库的pwd字段进行了解密。exe中并没有说明这个方法如何实现的,可能是通过DLL文件加载的。在smb共享文件夹中,同目录下有一个CascCrypto.dll很有可能就包含实现方法。我们下载下来同样用dnSpy进行反编译一下。
发现是在用AES-CBC对称算法对其进行解密,在CascAudit.exe中,我们获取了密钥KEY,这里又获取了初始向量IV
key:c4scadek3y654321
iv:1tdyjCbY1Ix49842
我们用python写一个解密脚本
运行一下,解密得到pwd:w3lc0meFr31nd
现在我们拥有了一个用户的账号口令
user: arksvc
pwd: w3lc0meFr31nd
查看一下远程管理用户组中的成员是否包含这个用户
确认后,使用arksvc进行登录,列举当前用户组成员
arksvc属于AD Recycle Bin组,能够恢复被删除的Active Directory用户对象
前面提到的的ArkAdRecycleBin.log日志中,记录了删除的过程,我们查看一下回收站
下列命令用于检索已被删除的用户对象
Get-ADObject -ldapfilter "(&(objectclass=user)(isDeleted=TRUE))" -IncludeDeletedObjects
发现了日志中提到的TempAdmin用户,再进一步获取更多关于TempAdmin的信息
Get-ADObject -ldapfilter "(&(objectclass=user)(DisplayName=TempAdmin)(isDeleted=TRUE))" -IncludeDeletedObjects -Properties *
其中有一个字段为cascadeLegacyPwd存储着base64编码后的密码
解密得到真正的明文口令,Meeting_Notes_June_2018.html文件中提到这个被删除的临时用户TempAdmin的口令和管理员口令相同,所以尝试用这个口令登录管理员账号
成功拿下!