> 文章列表 > HTB-Cascade

HTB-Cascade

HTB-Cascade

HTB-Cascade

  • 信息收集
  • 立足
  • s.smith -> arksvc
    • 使用脚本获取CascAudit.exe加密的密码明文
    • 修改IL指令获取
  • arksvc -> administrator

请添加图片描述

信息收集

在这里插入图片描述
在这里插入图片描述

查看smbclient。
在这里插入图片描述
rpcclient空密码连接并收集信息。
在这里插入图片描述
收集到用户列表,此外没有有意思的信息。

CascGuest
arksvc
s.smith
r.thompson
util
j.wakefield
s.hickson
j.goodhand
a.turnbull
e.crowe
b.hanson
d.burman
BackupSvc
j.allen
i.croft

用crackmapexec对smb和winrm跑一遍均没结果。

在这里插入图片描述
看看能从LDAP上收集些什么。
在这里插入图片描述

ldapsearch -H ldap://10.10.10.182 -x -s base -b '' "(objectclass=*)" "*"

在这里插入图片描述
发现DC=cascade,DC=local。

 ldapsearch -H ldap://10.10.10.182 -x -s sub -b 'DC=cascade,DC=local' "(objectclass=user)" "*"

在这里插入图片描述
有一个Ryan Thompson的用户以及此用户的cascadeLegacyPwd: clk0bjVldmE=。
在这里插入图片描述

在这里插入图片描述
返回rpc收集到的用户表可以看到有一位r.thompson,这会不会是ryan thompson的smb用户名呢?

在这里插入图片描述
没错。
在这里插入图片描述
使用r.thompson:rY4n5eva登录smb收集信息。
在这里插入图片描述
有这些share文件。

    ADMIN$          Disk      Remote AdminAudit$          Disk      C$              Disk      Default shareData            Disk      IPC$            IPC       Remote IPCNETLOGON        Disk      Logon server share print$          Disk      Printer DriversSYSVOL          Disk      Logon server share 

不出意外末尾带$都无法访问。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DCs\\dcdiag.log
在这里插入图片描述
Meeting_Notes_June_2018.html,从中可以获取到Steve Smith、TempAdmin:(password is the same as the normal admin account password)。在这里插入图片描述
什么叫和普通admin用户密码一样,是什么环境下的admin用户,继续看看吧。Temp\\s.smith\\VNC Install.reg里面可以知道Windows Registry Editor Version 5.00。
在这里插入图片描述
里面还有一句"Password"=hex:6b,cf,2a,4b,6e,5a,ca,0f将其转为字符串看看。
在这里插入图片描述
搜索得知VNC是经过DES加密。

echo -n 6bcf2a4b6e5aca0f| xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

获得密码。
在这里插入图片描述

立足

在这里插入图片描述
在这里插入图片描述
不出意外要先横向再纵向。
在这里插入图片描述

s.smith -> arksvc

收集s.smith用户信息。

在这里插入图片描述
可能Logon script的默认位置是Netlogon。

Logon script                 MapAuditDrive.vbs

想看看Shares目录,结果没权限。
在这里插入图片描述

可以通过smbclient查看NETLOGON。
在这里插入图片描述
使用s.smith的凭证登录smb看看。

在这里插入图片描述
在这里插入图片描述
下载当前目录下所有文件
在这里插入图片描述
以及X86和X64里面的文件
在这里插入图片描述
有如下文件。

RunAudit.bat文件类容如下,并且还有一个CascCrypto.dll文件,可能CascAudit.exe对这些文件做了什么处理。
在这里插入图片描述
逆向看看。
在这里插入图片描述使用dnspy32打开。
在这里插入图片描述

重点是这几句。//定义str、password、str2为三个空字段
string str = string.Empty;
string password = string.Empty;
string str2 = string.Empty;	using (SQLiteDataReader sqliteDataReader = sqliteCommand.ExecuteReader()) //数据库执行 ,并返回数据读取器{sqliteDataReader.Read();	//前进到结果集中的下一行str = Conversions.ToString(sqliteDataReader["Uname"]);	//获取Uname列的值并转化为字符串赋予strstr2 = Conversions.ToString(sqliteDataReader["Domain"]);	//同上string encryptedString = Conversions.ToString(sqliteDataReader["Pwd"]);	//也同上try{password = Crypto.DecryptString(encryptedString, "c4scadek3y654321");//重点来了将获得的encryptedString和c4scadek3y654321传入Crypto的DecryptString函数进行加密}catch (Exception ex){Console.WriteLine("Error decrypting password: " + ex.Message);return;}}

跟进函数查看内容。

public static string DecryptString(string EncryptedString, string Key){byte[] array = Convert.FromBase64String(EncryptedString);//将EncryptedString的base64转化为等价8位无符号整形数组Aes aes = Aes.Create(); //生成一个新的密码钥和vector (IV)aes.KeySize = 128;aes.BlockSize = 128;aes.IV = Encoding.UTF8.GetBytes("1tdyjCbY1Ix49842");	//吧1tdyjCbY1Ix49842转化为UTF8编码组aes.Mode = CipherMode.CBC;	//以CBC模式编码aes.Key = Encoding.UTF8.GetBytes(Key);//底下就是加密的一些过程string @string;using (MemoryStream memoryStream = new MemoryStream(array)){using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Read)){byte[] array2 = new byte[checked(array.Length - 1 + 1)];cryptoStream.Read(array2, 0, array2.Length);@string = Encoding.UTF8.GetString(array2);}}return @string;}

使用脚本获取CascAudit.exe加密的密码明文

根据分析可知CascAudit.exe对某个用户的PWD也就是password进行了AES的CBC模式加密。我们现在有了VI、KEY、还差Base64的密码。哎我数据库呢?重新下载好数据库后设置一个断点在PWD处运行即可获得我们需要的数据。
先在要断电的语句前面点一下添加断点。

在这里插入图片描述
接着调试,参数填写数据库的所在位置,中断于入口点。
在这里插入图片描述
在这里插入图片描述

一路F10跑下来获取PWD值。

在这里插入图片描述
当然也可以直接查看数据库内容
BQO5l5Kj9MdErXx6Q6AGOw==
在这里插入图片描述

from Crypto.Cipher import AES
import base64def decrypt(pwd, key, iv):cipher = AES.new(key, AES.MODE_CBC, iv)decryptByts = base64.b64decode(pwd)msg = cipher.decrypt(decryptByts)paddingLen = ord(msg[len(msg)-1])return msg[0:-paddingLen]if __name__ == "__main__":key = "c4scadek3y654321"iv = "1tdyjCbY1Ix49842"pwd ="BQO5l5Kj9MdErXx6Q6AGOw=="print decrypt(pwd, key, iv)

在这里插入图片描述

修改IL指令获取

找到加密的那条语句右键选择“编辑IL指令”。
在这里插入图片描述
找到那条加密语句单机选择“方法”,并找到EncryptString解密函数。
在这里插入图片描述
在这里插入图片描述
修改完成之后的样子。
在这里插入图片描述
在这里插入图片描述
最后一直F10到解密语句即可。
在这里插入图片描述

使用arksvc:w3lc0meFr31nd登录。
在这里插入图片描述

arksvc -> administrator

查看用户更多信息时发现了AD Recycle Bin。

在这里插入图片描述

AD Recycle Bin顾名思义,就是AD的回收桶,拥有恢复和删除的能力。前面我们从EMAIL知道有一个临时的admin密码和administrator是一样的,但是临时的admin账号密码在2018年底被删除了。去垃圾桶看看。

get-adobject -searchscope subtree -filter {displayname -eq “TempAdmin”} -includedeletedobjects 查看TempAdmin用户状况。
在这里插入图片描述
现在需要查看一下TempAdmin的更加详细的信息。在Microsoft learn官方文档有参数介绍,其中有一个-Properties参数用来查看指定对象属性,查看全部属性使用*。
在这里插入图片描述

Get-ADObject -Filter {samaccountName -eq "TempAdmin"} -IncludeDeletedObjects -Properties *

在这里插入图片描述
会得到cascadeLegacyPwd : YmFDVDNyMWFOMDBkbGVz。
在这里插入图片描述
使用administrator:baCT3r1aN00dles。
在这里插入图片描述