Whisper
Hack The Box Sherlock Writeup
Created by OxAlpha4040|Released October 16, 2025|First Blood: lukasLUKCZ in 0H 15M 4S

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:
| Artifact | Location | Purpose |
|---|---|---|
| Registry Hives | C:\Windows\System32\config\ | System config, user accounts, SAM |
| Prefetch Files | C:\Windows\Prefetch\ | Program execution history |
| USN Journal ($J) | C:\$Extend\$J | File system changes |
| User Profiles | C:\Users\ | Browser data, NTUSER.DAT |
| Event Logs | C:\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 -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 -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 -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 -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:42Two 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 -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:41The 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 "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#H5aUJamEj2xMroi9baoTKCMjQF1jiV8TK9gbjoNGgkwThe 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 -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\DownloadsThe 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.
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 : AdministratorThe 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 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:::$ 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
| # | Question | Answer |
|---|---|---|
| 1 | Hostname? | HE****SK |
| 2 | IP address? | 192.1****.199 |
| 3 | Computer SID? | S-1-5-21-953**-3674921352 |
| 4 | Timezone? | Pacifi**ard Time |
| 5 | Credential extraction tool? | MI******XE |
| 6 | Last execution of tool? | 2025-0*****:21:41 |
| 7 | First download of tool? | 2025-0*****:20:15 |
| 8 | DC scan script URL? | https://mega.nz/fi**K9gbjoNGgkw |
| 9 | Script filename? | C:\Users\Al**DC-Scan.ps1 |
| 10 | Script deletion time? | 2025-0*****:27:47 |
| 11 | Shared file accessed? | \\CYBERUP\Users\Ad**Secret\Secret.xlsx |
| 12 | New user SID? | S-1-5-21-95311**674921352-1002 |
| 13 | New user login count? | 0 |
| 14 | New 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
| Technique | Resource |
|---|---|
| SAM Hash Extraction | MITRE ATT&CK - SAM (T1003.002) |
| LSASS Memory Dumping | MITRE ATT&CK - LSASS Memory (T1003.001) |
| Password Cracking | MITRE ATT&CK - Password Cracking (T1110.002) |
| Create Local Account | MITRE ATT&CK - Local Account (T1136.001) |
| PowerShell Execution | MITRE ATT&CK - PowerShell (T1059.001) |
| File Deletion | MITRE ATT&CK - File Deletion (T1070.004) |
| Network Share Discovery | MITRE ATT&CK - Network Share Discovery (T1135) |
| Registry Forensics | SANS Windows Forensic Analysis |
Tools
| Tool | Purpose | Usage |
|---|---|---|
| Registry Explorer | Registry hive analysis | System identification, user accounts |
| MFTECmd | MFT and USN Journal parsing | File timestamps, deletion events |
| PECmd | Prefetch file analysis | Program execution history |
| secretsdump.py | SAM/SYSTEM hash extraction | Password hash recovery |
| hashcat | Password hash cracking | NTLM hash cracking with wordlists |