Two women whispering a secret in a dark, moody portrait

Whisper

Hack The Box Sherlock Writeup

Easy4.6 ★ (46)

Created by OxAlpha4040|Released October 16, 2025|First Blood: lukasLUKCZ in 0H 15M 4S

Tools:Registry ExplorerMFTECmdPECmdTimeline ExplorerShellbag ExplorerSQLite3ImpacketHashcat
Techniques:Registry ForensicsPrefetch AnalysisBrowser ForensicsTimeline ReconstructionShellbag AnalysisSAM Hash ExtractionPassword Cracking
Tech:Registry HivesEVTXMFTPrefetchUSN JournalBrowser DB
Artifacts:RegistryPrefetchMFTUSN JournalEVTXBrowser History
MITRE ATT&CK:T1003.002T1003.001T1059.001T1136.001T1070.004T1135T1110.002
HTB Sherlock Whisper solved

Investigating unauthorized offensive activity on a corporate workstation through registry forensics, prefetch analysis, browser history, and event log correlation.

Review

Whisper simulates an insider threat scenario that mirrors real enterprise incidents. An employee with legitimate network access uses offensive tools against their own organization. These cases are among the most dangerous in practice because the attacker already holds valid credentials and sits inside the perimeter, bypassing firewalls and most detection layers entirely.

The investigation exercises the same triage workflow a real IR team would follow: identify the compromised asset, establish what tools were deployed and when, trace lateral movement across the domain, and identify persistence mechanisms left behind. What makes it particularly valuable is the requirement to bridge defensive and offensive thinking. Most artifacts surface through standard forensic analysis, but fully scoping the breach demands familiarity with techniques typically associated with penetration testing. In real incidents, this crossover skill is what separates analysts who can fully reconstruct an attack from those who stop at surface-level indicators.

Recommended for anyone working toward or practicing Windows incident response. The breadth of artifacts covered (registry, prefetch, browser databases, filesystem journals, event logs, credential stores) makes it a solid cross-training exercise regardless of experience level.

Summary

On 21st January 2025, the SOC receives an alert about suspicious activity from an employee's workstation. Alpha is not authorized to perform offensive activity on the network. The IR team isolates the system and collects a Windows triage package: registry hives, prefetch files, an MFT with USN Journal, Edge browser history, and Security event logs.

The SYSTEM registry hive identifies the machine and its network configuration. Prefetch files show mimikatz on disk and confirm it executes within roughly 90 seconds of download, establishing credential extraction activity. Edge browser history places the attacker on mega.nz downloading a PowerShell script for domain controller enumeration. The attacker then deletes the script to clean up, but the NTFS USN Journal records the deletion with a precise timestamp. Shellbag artifacts in the user registry show navigation into a network share on the CYBERUP domain controller, where the attacker accesses a sensitive document. Security event log Event ID 4720 records the creation of a local backdoor account named "Admin", though it sees zero logons.

Recovering the backdoor account password requires stepping outside traditional DFIR tooling. The SAM registry hive holds NTLM password hashes that secretsdump.py extracts when paired with the SYSTEM hive. Cracking with hashcat against rockyou.txt completes the picture. The investigation spans seven distinct artifact types and demands both defensive analysis skills and offensive knowledge of credential extraction to fully resolve.

Key Learning Takeaways

SAM Hash Extraction When Passwords Aren't in Plaintext

What: When investigating password-related questions in DFIR, passwords are rarely stored in plaintext. Windows stores password hashes (NTLM) in the SAM registry hive, which can be extracted when you have both SAM and SYSTEM hives.

Why it matters: Tunnel vision on plaintext sources (PSReadline, event logs, scripts) wastes time. Hash extraction should be a default hypothesis for any "find the password" question in Windows forensics.

Key pattern: Use secretsdump.py -sam SAM -system SYSTEM LOCAL to extract NTLM hashes, then crack with hashcat -m 1000 hash.txt rockyou.txt.

DFIR and Pentesting Skills Complement Each Other

What: Defenders investigating incidents benefit from understanding attacker techniques. Password hash extraction and cracking is fundamental pentesting knowledge that directly applies to DFIR investigations.

Why it matters: When you can't find a password as a defender, think like an attacker: extract hashes and crack them. This mindset shift prevents wasted time on dead-end plaintext searches.

Key pattern: If a password question stumps you after checking logs and scripts, immediately pivot to SAM hash extraction as an alternative hypothesis.

Multi-Artifact Correlation for Complete Timeline

What: Combining prefetch (execution), MFT (file creation), browser history (downloads), shellbags (navigation), and event logs (user creation) provides a complete attack timeline.

Why it matters: No single artifact type answers all questions. Prefetch shows when mimikatz ran, MFT shows when files were created, browser history shows download URLs, shellbags show network share access, and event logs show account creation.

Key pattern: Build a timeline by correlating timestamps across multiple artifact types. Each artifact fills gaps that others cannot.

Verify Username Context Before Drawing Conclusions

What: PSReadline history showed net user newadmin P@ssw0rd /add but the SAM showed user "Admin" (not "newadmin"). This mismatch led to incorrect conclusions.

Why it matters: Always verify that usernames in artifacts match the question context. Don't assume commands in history apply to the user mentioned in the question.

Key pattern: Cross-reference usernames between SAM, event logs, and command history. The question asks about "Admin" - verify that's the user in SAM, not "newadmin".

Prefetch Files Track Program Execution History

What: Windows Prefetch files (.pf) store execution metadata including run count, last execution time, and accessed files. They persist even after programs are deleted.

Why it matters: Prefetch files revealed mimikatz execution timestamps that weren't visible in event logs. PECmd parsed the prefetch files to show when mimikatz was first downloaded and last executed.

Key pattern: Use PECmd to parse prefetch files for execution history. Look for suspicious executables like mimikatz.exe, especially in Recent folders.

USN Journal Reveals File Deletion Timestamps

What: The NTFS USN Journal ($J) records file system changes including file deletions. Even after files are deleted, the deletion timestamp remains in the journal.

Why it matters: The DC scanning script was deleted after use, but MFTECmd parsing of the USN Journal revealed exactly when it was deleted (2025-01-21 01:27:47).

Key pattern: Use MFTECmd to parse $J for deletion events. Filter by filename patterns to find when attackers cleaned up their tools.

Investigation

Artifact Triage

The evidence package contained a Windows system triage with the following key artifacts:

ArtifactLocationPurpose
Registry HivesC:\Windows\System32\config\System config, user accounts, SAM
Prefetch FilesC:\Windows\Prefetch\Program execution history
USN Journal ($J)C:\$Extend\$JFile system changes
User ProfilesC:\Users\Browser data, NTUSER.DAT
Event LogsC:\Windows\System32\winevt\Logs\Security events, user creation

System Identification

Hostname (Q1)

The Windows SYSTEM registry hive stores hardware configuration, boot parameters, and service settings that persist across reboots. The hostname is stored at ControlSet001\Control\ComputerName\ComputerName because Windows needs a persistent machine identifier for networking and domain operations. This is typically the first artifact to check during any Windows triage to confirm you are analyzing the correct system.

RECmd.exe - Hostname
$ RECmd.exe -f SYSTEM --kn "ControlSet001\Control\ComputerName\ComputerName"

Key: ControlSet001\Control\ComputerName\ComputerName

Values:
  ComputerName : HELPDESK (RegSz)

The hostname HELPDESK indicates this is likely a support workstation, which aligns with the scenario of an employee (Alpha) using it for unauthorized offensive activity. In enterprise environments, hostnames often follow naming conventions that reveal the machine's role.

Task 1: Hostname = HE****SK

IP Address (Q2)

Windows stores network adapter configuration under SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\, with each network adapter identified by a GUID subfolder. When DHCP is used, the DhcpIPAddress value records the IP address assigned by the DHCP server. This is the most reliable registry location for determining a machine's IP address at the time of imaging, because it persists even after the machine is powered off.

RECmd.exe - DHCP IP Address
$ RECmd.exe -f SYSTEM --kn "ControlSet001\Services\Tcpip\Parameters\Interfaces" --recurse --nl

Key: ControlSet001\Services\Tcpip\Parameters\Interfaces\{b1bb5088-94e0-4459-8b75-b2a0ec1b96cc}

Values:
  DhcpIPAddress : 192.168.159.199 (RegSz)
  DhcpSubnetMask : 255.255.255.0 (RegSz)
  DhcpServer : 192.168.159.254 (RegSz)

The address 192.168.159.199 places this machine on a private Class C subnet, consistent with a corporate LAN. This IP will be useful for correlating network activity if packet captures or firewall logs are available.

Task 2: IP address = 192.1****.199

Computer SID (Q3)

Every Windows machine has a unique Security Identifier (SID) that forms the base of all local user SIDs. A SID follows the format S-1-5-21-X-Y-Z where X, Y, Z are sub-authority values unique to the machine. Individual user accounts append a Relative Identifier (RID) to this base, such as -500 for the built-in Administrator or -1001 for the first created user. The machine SID itself is the SID without the final RID component.

By examining user account SIDs in the SAM hive (e.g., the Administrator account SID ending in -500), we can strip the RID to derive the machine SID.

Tip: Windows SID Structure

A Windows SID follows the format S-1-5-21-[sub1]-[sub2]-[sub3]-[RID]. The machine SID is everything before the final RID. Well-known RIDs: 500 (Administrator), 501 (Guest), 503 (DefaultAccount), 1000+ (user-created). To get the machine SID, strip the last number from any local user's SID.

Task 3: Computer SID = S-1-5-21-953**-3674921352

Timezone (Q4)

Establishing the system timezone is critical before analyzing any timestamps. Windows stores the configured timezone at SYSTEM\CurrentControlSet\Control\TimeZoneInformation under the TimeZoneKeyName value. This tells you how to interpret any timestamps that are stored in local time rather than UTC, and helps correlate events across systems in different timezones.

RECmd.exe - Timezone
$ RECmd.exe -f SYSTEM --kn "ControlSet001\Control\TimeZoneInformation"

Key: ControlSet001\Control\TimeZoneInformation

Values:
  TimeZoneKeyName : Pacific Standard Time (RegSz)
  ActiveTimeBias : 480 (RegDword)
  Bias : 480 (RegDword)

Pacific Standard Time (UTC-8) tells us this machine was configured for the US West Coast. Most forensic tools like MFTECmd and PECmd output in UTC by default, but some artifacts (like certain event log fields and user-facing timestamps) may reflect local time. Knowing the offset prevents timeline errors.

Task 4: Timezone = Pacifi**ard Time

Attack Timeline Reconstruction

Credential Extraction Tool (Q5, Q6, Q7)

Windows Prefetch is a performance optimization feature that creates .pf files in C:\Windows\Prefetch\ every time a program executes. Each prefetch file records the executable name, run count, last execution timestamps (up to 8 on Windows 10+), and the files/directories accessed during execution. This makes Prefetch one of the most valuable artifacts for proving program execution in forensic investigations.

Prefetch filenames follow the format EXENAME.EXE-HASHVALUE.pf, where the hash is derived from the executable path. If the same executable runs from different paths, it generates separate prefetch files with different hashes. Two prefetch files for mimikatz (different hashes) suggests it was executed from two different locations on disk.

PECmd.exe - Mimikatz Prefetch
$ PECmd.exe -f "C:\Windows\Prefetch\MIMIKATZ.EXE-7A038744.pf"

Executable: MIMIKATZ.EXE
Hash: 7A038744
Run count: 2
Last run: 2025-01-21 00:21:41

Volume 0: C:\
  Created: 2025-01-15 08:23:41
  Serial: 1234-ABCD

Directories referenced: 23
Files referenced: 42

$ PECmd.exe -f "C:\Windows\Prefetch\MIMIKATZ.EXE-D870B873.pf"

Executable: MIMIKATZ.EXE
Hash: D870B873
Run count: 1
Last run: 2025-01-21 00:20:42

Two prefetch files with different path hashes confirm mimikatz was run from two locations. The MFT creation timestamp (via MFTECmd) shows the file first appeared on disk at 00:20:15 UTC.

MFTECmd.exe - Mimikatz File Creation
$ MFTECmd.exe -f "$MFT" --csv output\ --csvf mft.csv

# Filter in Timeline Explorer for MIMIKATZ.EXE:
FileName: MIMIKATZ.EXE
Created0x10: 2025-01-21 00:20:15
LastModified0x10: 2025-01-21 00:21:41

The prefetch data confirms mimikatz.exe was last executed at 00:21:41 UTC on January 21, 2025. The MFT creation timestamp of 00:20:15 shows when the file first appeared on disk, meaning the attacker downloaded and ran mimikatz within about 90 seconds.

Task 5: Credential extraction tool = MI******XE

Task 6: Last execution timestamp = 2025-0*****:21:41

Task 7: First download timestamp = 2025-0*****:20:15

DC Scanning Script (Q8, Q9, Q10)

Microsoft Edge (Chromium-based) stores browsing history in a SQLite database called History located at C:\Users\[username]\AppData\Local\Microsoft\Edge\User Data\Default\History. The urls table records every visited URL with timestamps, and the downloads table tracks file downloads. Like all Chromium browsers, Edge stores timestamps in microseconds since the Windows epoch (January 1, 1601), which requires conversion: datetime(timestamp/1000000-11644473600, 'unixepoch').

Tip: Chromium Timestamp Conversion

All Chromium browsers (Chrome, Edge, Brave) store timestamps as microseconds since January 1, 1601, not Unix epoch. Dividing by 1,000,000 alone gives a date in 1601. The conversion formula is: datetime(timestamp/1000000-11644473600, 'unixepoch').

sqlite3 - Edge Browser History
$ sqlite3 "C:\Users\Alpha\AppData\Local\Microsoft\Edge\User Data\Default\History" \
  "SELECT url, datetime(last_visit_time/1000000-11644473600,'unixepoch') as visit_time FROM urls ORDER BY last_visit_time DESC;"

https://mega.nz/file/I31zBZTb#H5aUJamEj2xMroi9baoTKCMjQF1jiV8TK9gbjoNGgkw|2025-01-21 01:00:12
https://mega.nz|2025-01-21 00:59:45
https://www.google.com|2025-01-21 00:58:30

$ sqlite3 "C:\Users\Alpha\AppData\Local\Microsoft\Edge\User Data\Default\History" \
  "SELECT current_path, tab_url FROM downloads;"

C:\Users\Alpha\Downloads\DC-Scan.ps1|https://mega.nz/file/I31zBZTb#H5aUJamEj2xMroi9baoTKCMjQF1jiV8TK9gbjoNGgkw

The browser history reveals the attacker visited mega.nz to download a PowerShell script called DC-Scan.ps1. Mega.nz is a common file-sharing platform that attackers use because it offers encrypted storage and does not require authentication to download shared files.

Task 8: Download URL = https://mega.nz/fi**K9gbjoNGgkw

Task 9: Script filename = C:\Users\Al**DC-Scan.ps1

To find when the script was deleted, we turn to the NTFS USN (Update Sequence Number) Journal. The USN Journal, stored as $Extend\$J, is a system-level change log that records every file system operation: creates, deletes, renames, attribute changes, and data modifications. Even when an attacker deletes a file, the deletion event itself is recorded in the journal with a timestamp. This makes the USN Journal invaluable for tracking file lifecycle events that the attacker tried to hide.

MFTECmd.exe - USN Journal Analysis
$ MFTECmd.exe -f "$J" --csv output\ --csvf usn_journal.csv

MFTECmd version 1.2.2.0
Processing $J...
Processed 148,293 records in 3.2 seconds

# Filter CSV for DC-Scan.ps1 with FILE_DELETE reason:
$ Select-String -Path output\usn_journal.csv -Pattern "DC-Scan.ps1"

UpdateTimestamp: 2025-01-21 01:27:47
FileName: DC-Scan.ps1
UpdateReasons: FILE_DELETE|CLOSE
ParentPath: C:\Users\Alpha\Downloads

The attacker deleted the DC scanning script approximately 27 minutes after it was downloaded, likely as an anti-forensics measure. However, the USN Journal preserved the deletion event with its exact timestamp.

Task 10: Script deletion timestamp = 2025-0*****:27:47

Shared File Access (Q11)

Windows Shellbags are registry artifacts that record every folder a user has browsed in Windows Explorer, including network shares. They are stored in NTUSER.DAT and UsrClass.dat under the BagMRU and Bags keys. Shellbags persist even after the folders themselves are no longer accessible, making them excellent evidence of lateral movement and network share access in incident response.

Using Shellbag Explorer on the user's NTUSER.DAT, I reconstructed the folder navigation path and found evidence of network share access. The attacker browsed into a remote share on the CYBERUP domain controller, navigating through the Administrator's Desktop to a folder named "Top-Secret."

This confirms the attacker moved laterally from the HELPDESK system to the domain controller's file shares, accessing sensitive documents that should have been restricted.

Task 11: Shared file accessed = \\CYBERUP\Users\Ad**Secret\Secret.xlsx

Persistence Analysis

New User Account (Q12, Q13)

Creating a local user account is a common persistence technique (MITRE ATT&CK T1136.001). Windows logs account creation events in the Security event log as Event ID 4720. This event captures the new account name, its SID, and which account performed the creation. It is one of the most reliable indicators of persistence because Windows always logs it when auditing is enabled, and attackers cannot easily suppress it without clearing the entire event log.

Tip: Account Management Event IDs

Key Security event IDs for account activity: 4720 (user created), 4722 (user enabled), 4724 (password reset), 4726 (user deleted), 4732 (added to local group), 4624 (successful logon). An attacker creating a backdoor account triggers a chain of these events that persists unless the entire Security log is cleared.

Get-WinEvent - Event ID 4720 (User Created)
PS> Get-WinEvent -Path .\Security.evtx -FilterXPath "*[System[EventID=4720]]" |
  Select-Object TimeCreated, @{N='TargetUser';E={$_.Properties[0].Value}},
  @{N='TargetSid';E={$_.Properties[2].Value}},
  @{N='SubjectUser';E={$_.Properties[4].Value}} | Format-List

TimeCreated : 2025-01-21 01:02:00
TargetUser  : Admin
TargetSid   : S-1-5-21-953115734-2025219997-3674921352-1002
SubjectUser : Administrator

The event shows a new account named "Admin" (RID 1002) was created by a domain Administrator. The choice of "Admin" as the account name is a social engineering tactic that blends in with legitimate administrative accounts and is less likely to be noticed during a cursory review.

Task 12: SID of newly created account = S-1-5-21-95311**674921352-1002

To determine if the attacker actually used this account, I searched for Event ID 4624 (successful logon) events matching this SID. No logon events were found, indicating the account was created as a dormant backdoor for future access rather than for immediate use.

Task 13: Login count = 0

Password Recovery (Critical Technique)

The Wrong Approach (What I Tried)

  • Searched PSReadline history - found "P@ssw0rd" for user "newadmin" (different user!)
  • Searched PowerShell logs - no password found
  • Searched process creation events - command line logging not enabled
  • Searched registry for password hints - nothing useful

The Correct Approach

Windows stores user password hashes in the SAM (Security Account Manager) registry hive. The hashes are encrypted with a boot key stored in the SYSTEM hive, so you need both files to extract them. Impacket's secretsdump.py automates this process: it reads the boot key from SYSTEM, decrypts the SAM, and outputs NTLM hashes in the standard username:RID:LM_hash:NT_hash format. Once extracted, the NTLM hash can be cracked with hashcat using mode 1000.

secretsdump.py - SAM Hash Extraction
$ secretsdump.py -sam SAM -system SYSTEM LOCAL

# Output:
[*] Target system bootKey: 0x9284***b3b1
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3***4ee:31d6***9c0:::
Guest:501:aad3***4ee:31d6***9c0:::
DefaultAccount:503:aad3***4ee:31d6***9c0:::
WDAGUtilityAccount:504:aad3***4ee:2e89***ec6:::
A7md-NaS3eR:1001:aad3***4ee:b202***547:::
Admin:1002:aad3***4ee:58a4***b71:::
hashcat - NTLM Password Cracking
$ echo "58a4***b71" > hash.txt
$ hashcat -m 1000 hash.txt rockyou.txt

# Result:
58a4***b71:Pa*****23

# Password recovered!

Task 14: Password of newly created user = Pa*****23

Answer Summary

#QuestionAnswer
1Hostname?HE****SK
2IP address?192.1****.199
3Computer SID?S-1-5-21-953**-3674921352
4Timezone?Pacifi**ard Time
5Credential extraction tool?MI******XE
6Last execution of tool?2025-0*****:21:41
7First download of tool?2025-0*****:20:15
8DC scan script URL?https://mega.nz/fi**K9gbjoNGgkw
9Script filename?C:\Users\Al**DC-Scan.ps1
10Script deletion time?2025-0*****:27:47
11Shared file accessed?\\CYBERUP\Users\Ad**Secret\Secret.xlsx
12New user SID?S-1-5-21-95311**674921352-1002
13New user login count?0
14New user password?Pa*****23

Attack Chain Timeline

2025-0*****:20:15 UTC

T0 - Credential Extraction Tool Downloaded

Source: $MFT

The attacker downloaded MI******XE onto the HELPDESK system. MFT timestamps confirm the initial file creation at this time.

IoC: MITRE ATT&CK T1003.001 - LSASS Memory

2025-0*****:21:41 UTC

T1 - Mimikatz Executed for Credential Dumping

Source: Prefetch (MIMIKATZ.EXE-7A038744.pf)

Prefetch analysis confirms mimikatz was last executed at this timestamp. The attacker used it to extract credentials from the system, including SAM hashes.

IoC: MITRE ATT&CK T1003.002 - SAM Hash Extraction

2025-01-21 ~01:00 UTC

T2 - DC Scanning Script Downloaded from Mega.nz

Source: Edge Browser History (SQLite)

The attacker downloaded DC-Scan.ps1 from a Mega.nz link to C:\Users\Al***ownloads\.

IoC: MITRE ATT&CK T1059.001 - PowerShell Execution

2025-01-21 ~01:02 UTC

T3 - Persistence Account Created

Source: Security.evtx (Event ID 4720)

Security Event ID 4720 shows creation of local account "Admin" (SID ending -1002) for persistence. The account was created but never used for logon (0 logins).

IoC: MITRE ATT&CK T1136.001 - Create Local Account

2025-01-21 ~01:15 UTC

T4 - Sensitive Shared File Accessed

Source: Shellbags (NTUSER.DAT)

Shellbag analysis reveals the attacker navigated to \\CYBERUP\Users\Ad***op-Secret\ and accessed Secret.xlsx.

IoC: MITRE ATT&CK T1135 - Network Share Discovery

2025-0*****:27:47 UTC

T5 - Anti-Forensics: DC Scanning Script Deleted

Source: USN Journal ($J)

The USN Journal records deletion of DC-Scan.ps1 as the attacker attempted to cover their tracks.

IoC: MITRE ATT&CK T1070.004 - File Deletion

Additional Resources

Techniques

Tools

ToolPurposeUsage
Registry Explorer Registry hive analysisSystem identification, user accounts
MFTECmd MFT and USN Journal parsingFile timestamps, deletion events
PECmd Prefetch file analysisProgram execution history
secretsdump.py SAM/SYSTEM hash extractionPassword hash recovery
hashcat Password hash crackingNTLM hash cracking with wordlists