// HackTheBox  ·  writeup

Fruitzy

HackTheBox Easy AmcacheParserEvtxECmdMFTECmdsqlite3dissect.ntfsVirusTotal
DFIR

Scenario

In this Sherlock, players will analyze a real, ongoing phishing campaign designed to deliver remote access malware, which was investigated by the author of the Sherlock, CyberJunkie. The attack involves phishing, which ultimately installs an RMM tool on the system for remote access.

Executive Summary

A freshly registered domain served a phishing email posing as a party invitation. The victim clicked the link, was bounced through a PHP redirector, and downloaded an executable from a cloud storage CDN in Edge. They ran it, got no invitation, and scanned it with Microsoft Defender, which found nothing. In the background the executable had already installed a legitimate commercial RMM agent as a Windows service, giving the actor remote access, and the agent’s binaries carried backdated modification times that disagree with the NTFS filename timestamps. The whole chain sits in a KAPE triage collection: the mailbox message, Edge history, Amcache, Defender and System event logs, and the $MFT.

Artifacts

Timestamp note: the evidence zip holds a VHDX whose NTFS boot sector has zeroed jump bytes, so 7z, ntfs-3g and udisks refuse it. Patch a copy of the volume image and extract with dissect.ntfs; the original stays untouched.

python3 -I -m dissect.ntfs.tools.extract fs/0.img work/ntfs

Resource Development

Q10 — Pivoting back to the malicious link, when was the domain registered?

Take the registrable domain from the redirector URL in Q2 and query its RDAP record through rdap.org. The registration event gives the creation date and time, about two weeks before the victim ran the payload, so the infrastructure was purpose-built for this campaign. Reference: https://rdap.org/domain/pomi.digital.

curl -s https://rdap.org/domain/pomi.digital | python3 -c 'import json,sys; print([e for e in json.load(sys.stdin)["events"] if e["eventAction"]=="registration"])'

Tip: WHOIS output often rounds to the date. RDAP gives the full timestamp this answer format needs.

Click to reveal answer 2026-02-20 01:06:05

Initial Access

Q1 — What is the Subject/topic of the Phishing email?

Open the .eml in the collection and read the Subject: header. The lure is a social invitation attributed to a named sender, which fits the scenario’s “no invitation appeared” later on.

grep -m1 '^Subject:' *.eml
Click flag to reveal Special Party Invitation from JANET CARNAHAN
Q2 — What is the malicious URI that the malicious link redirected to?

Edge’s History database records where the click led. The downloads table stores a tab_url, the page the download was started from, which is the redirect target. The visits table shows the same URL one hop after the email link.

sqlite3 History "select tab_url, target_path from downloads"

Gotcha: the downloads row also holds the final CDN host that actually serves the payload. That is where the file came from, not where the link redirected to, and it was rejected. The answer is the tab_url, a PHP endpoint.

Click to reveal answer https://pomi.digital/premium/windows_download.php
Q3 — What is the name of the downloaded file?

Same downloads table, target_path column. Only one executable was downloaded in the session and it sits in the user’s Downloads folder.

sqlite3 History "select target_path, total_bytes from downloads"
Click flag to reveal premium.exe

Execution

Q4 — When was the downloaded file executed by the victim according to Amcache?

Parse Amcache.hve and find the entry for the file from Q3. The FileKeyLastWriteTimestamp on its InventoryApplicationFile or file entry is the execution time Amcache gives you.

AmcacheParser -f Amcache.hve --csv work/amcache
Click to reveal answer 2026-03-04 16:44:33
Q5 — What is the SHA256 hash of the malicious executable downloaded from the phishing Website?

Amcache stores only the SHA1 of the file. Pull it from the same row as Q4, then look the SHA1 up on VirusTotal, whose file page lists the SHA256 and the detection names used in Q11.

grep -i premium.exe work/amcache/*UnassociatedFileEntries.csv

Tip: this is why Amcache is worth parsing even when the sample itself is gone: the hash survives and VirusTotal can be searched by SHA1.

Click flag to reveal af240a2c2a4b42e3a130f47ccaab9aa2e20a1a586bc959ee9efd7475055ea7e3
Q11 — Utilizing threat intelligence sources, what is another name for the executable that was initially downloaded?

From Q5 the hash is known, so open it on VirusTotal and read the Names list on the Details tab. Besides premium.exe there is a short random-looking alternate filename the same binary has been submitted under.

Click flag to reveal 5bxrx.exe
Q6 — The user executed the file, but no invitation appeared or was found. They then used Microsoft Defender to scan the file. When was this scan initiated?

Parse the Defender Operational log and look for the scan-start event (ID 1000) with the scan type Custom Scan. A custom scan is the user right-clicking the file, so it is the manual scan, not a scheduled or quick one. The event lands about three and a half minutes after the Amcache execution time.

EvtxECmd -d work/ntfs/evtx --csv work/evtx
Click to reveal answer 2026-03-04 16:48:00

Persistence

Q7 — The malware installed a Remote Monitoring and Management (RMM) tool as a backdoor for potential remote access. What was the service name?

Service installs are System event 7045. Filter the EvtxECmd output for it around the execution time from Q4 and read the service name and image path. The new service appears seconds after the payload ran.

EvtxECmd -d work/ntfs/evtx --csv work/evtx
Click flag to reveal CentraStage
Q9 — What is the name of the company whose product is the RMM tool?

CentraStage is the original name of the Datto RMM agent, so the vendor follows from the service name in Q7. This is reference knowledge, not something read from an artifact.

Click flag to reveal Datto

Defense Evasion

Q8 — The malicious backdoor installation time stomped the RMM executables. What was the modified timestamp set to these executables?

Parse the $MFT and look at the RMM agent executables from Q7. The $STANDARD_INFORMATION modified time is set to a date weeks before the infection, while the $FILE_NAME timestamps still show the real creation one second after execution. That mismatch is the timestomp, and the $SI modified value is the answer.

MFTECmd -f '$MFT' --csv work/mft

Gotcha: Explorer and dir only show the $SI values, so the files look old and benign. Compare against $FN to see when they were really written.

Click to reveal answer 2026-02-09 07:56:40

Attack Summary

PhaseAction
Resource DevelopmentPhishing domain registered
Initial AccessParty-invitation email with a link to the domain
Initial AccessLink redirects through a PHP endpoint to a CDN-hosted executable
ExecutionVictim runs the download; Amcache records it
ExecutionVictim scans the file with Defender and finds nothing
PersistenceExecutable installs the Datto RMM agent as a service
Defense EvasionAgent executables timestomped to an earlier date

Forensic Timeline

Timestamp (UTC)Event
2026-02-09 07:56:40Timestomped $SI modified time on the RMM executables
2026-02-20 01:06:05pomi.digital registered
2026-03-04 16:44:33Download executed, per Amcache
2026-03-04 16:44:34RMM executables actually written ($FN)
2026-03-04 16:48:00Manual Defender custom scan started

IOCs

TypeValue
Domainpomi[.]digital
URLhxxps[://]pomi[.]digital/premium/windows_download[.]php
URL (payload host)hxxps[://]pub-d8a802dcdc114798b560cd3f305ee158[.]r2[.]dev/invite/premium.exe
Filepremium.exe (also 5bxrx.exe)
SHA256af240a2c2a4b42e3a130f47ccaab9aa2e20a1a586bc959ee9efd7475055ea7e3
ServiceCentraStage

MITRE ATT&CK

TechniqueIDDescription
Acquire Infrastructure: DomainT1583.001Phishing domain registered about two weeks before use
Phishing: Spearphishing LinkT1566.002Party-invitation email with a link to the redirector
User Execution: Malicious FileT1204.002Victim ran the downloaded executable
Create or Modify System Process: Windows ServiceT1543.003RMM agent installed as a service
Remote Access SoftwareT1219Datto RMM used as the remote access channel
Indicator Removal: TimestompT1070.006RMM executables given an earlier modified time

Defender Takeaways

Block or alert on RMM installs you did not deploy. A 7045 for an RMM agent on a machine that is not managed by that vendor is a clean, low-noise detection. Allowlist the RMM products you own and alert on every other one.

Treat newly registered domains in email links as suspicious. The phishing domain was about two weeks old when it was used. Mail gateways that score on domain age or hold such links for detonation would have caught this before the click.

Compare $SI and $FN timestamps when hunting. The actor backdated the agent files, but the $FILE_NAME attributes still hold the real write time. A check for $SI earlier than $FN on files in program directories finds this class of timestomping.

A clean Defender scan is not a clean file. The victim’s manual scan found nothing because the payload was a legitimate signed RMM agent behind a thin loader. Detection has to key on behaviour, such as an unexpected service install right after a download, rather than on signatures alone.

Conclusion

The actor never needed custom malware: a convincing invitation, a throwaway domain and a legitimate RMM agent gave them persistent remote access that signature scanning would not flag. The evidence that gave it away was behavioural, a service install seconds after a download and file timestamps that contradict each other.