-> Back to Writeups
Security Incident Report

macOS Endpoint Compromise: Trojanized Installer & Data Exfiltration

TLP:CLEAR
Report ID SIR-2026-06-23-04 Classification Simulated / Training Environment
Analyst F. Nanos Date of Report 2026-06-23
Severity High Status Closed (Contained)
Affected Asset 1x macOS workstation (developer endpoint)
This report documents a simulated incident from a training environment (TryHackMe, Honeynet Collapse series). Specific artifact values, timestamps, and file paths are generalized or redacted for public publication; the analytical structure and findings reflect the actual investigation performed.

1. Executive Summary

The affected user downloaded and executed a trojanized installer masquerading as an AI development tool, sourced from a domain impersonating a legitimate vendor. Upon execution, the application requested broad filesystem access through the operating system's privacy-permission framework, established persistence via a disguised auto-start mechanism, and executed a script that harvested high-value local files (credentials, private keys, recently modified documents) for exfiltration to an attacker-controlled server disguised as a legitimate update service. The affected user independently noticed anomalous behavior and initiated inquiry prior to formal incident detection. No evidence was found linking this incident to a targeted campaign against the organization; it is assessed as an opportunistic, single-endpoint compromise.

2. Scope & Methodology

Analysis was performed against a forensic disk image (read-only, no live system access) using a macOS-specific automated artifact parsing suite, supplemented by manual inspection of recovered files. Parser modules were selected based on the artifact categories relevant to the suspected attack lifecycle (delivery, permission abuse, persistence) rather than a full sweep, to prioritize investigative speed while maintaining coverage of all categories in scope.

# Image mount and root verification
sudo apfs-fuse -v 4 <image> <mount_point>
ls -la <mount_point>

# Targeted artifact parsing
python3 mac_apt.py MOUNTED <verified_root> \
    QUARANTINE SAFARI CHROMIUM TCC AUTOSTART INSTALLHISTORY \
    -o <output_dir>

# Manual review
sqlite3 <output.db> ".tables"
sqlite3 <output.db> -header -column "SELECT * FROM <table>;"

3. Technical Findings

3.1   Initial Access & Delivery

Browser artifact analysis identified a download event for an installer package sourced from a domain impersonating a legitimate AI development tool vendor, delivered to the user's Downloads directory. System package-installation records corroborated execution within approximately one minute of download completion, consistent with immediate execution post-download.

3.2   Permission Abuse

Query of the operating system's centralized privacy-permission ledger, filtered to the installed application's bundle identifier, identified a sequence of folder-access grant requests (three sensitive user directories) issued within a narrow time window immediately following installation. This request pattern is inconsistent with the incremental, on-demand access model typically exhibited by legitimate applications in this software category, and is assessed as reconnaissance behavior.

3.3   Persistence

Automated parsing of auto-start configuration locations returned a parser error on a file within the user's LaunchAgents directory, a location the operating system expects to contain only structured property-list job descriptors. Manual inspection confirmed the file was a plain shell script disguised with a directory placement designed to evade casual review. This is assessed as the primary persistence mechanism.

3.4   Collection & Exfiltration

Direct inspection of the persistence script (recovered unencrypted from disk) revealed complete payload logic: recursive search of common user file-storage locations for recently modified files above a defined size threshold and matching high-value extensions (documents, cloud credentials, private keys, certificates), staging and compression of matched files, exfiltration via HTTP POST to a remote host disguised as an operating-system update service, and cleanup of staging artifacts with decoy status messages presented to the user to mask the activity as legitimate application processing.

3.5   User-Reported Corroboration

Browser search-history artifacts independently corroborated the incident timeline, showing the affected user researching symptoms consistent with compromise (unexpected application relaunch behavior, data-theft concerns related to AI productivity tools) prior to formal incident detection.

4. Indicators of Compromise

Type Indicator Context
Delivery domain[redacted, lookalike vendor domain]Installer source
C2 domain[redacted, masquerading as OS update service]Exfiltration destination
Persistence path~/Library/LaunchAgents/[redacted].shDisguised non-plist script
Bundle ID[redacted]Installed application identifier

5. MITRE ATT&CK Mapping

Technique ID Technique Tactic
T1204User ExecutionExecution
T1548Abuse Elevation Control MechanismPrivilege Escalation
T1543.001Create or Modify System ProcessPersistence
T1083 / T1005Discovery / Data from Local SystemDiscovery, Collection
T1041Exfiltration Over C2 ChannelExfiltration
T1036MasqueradingDefense Evasion

6. Recommendations

  1. Deploy endpoint detection coverage for non-plist files created within LaunchAgents/LaunchDaemons directories.
  2. Implement application allow-listing or notarization enforcement for developer/AI-tooling software categories, which currently receive lower scrutiny than general productivity software.
  3. Alert on TCC permission grant sequences requesting multiple sensitive directories within a short time window post-installation.
  4. Extend security awareness guidance to explicitly cover AI-tooling installer risk, given the current absence of user intuition around this category.

7. Investigator's Notes

Initial automated parsing failed against the image with a generic installation-detection error. Root cause was an incorrect assumed mount path: the actual macOS volume root sat one directory level below the mount point, a known behavior of some FUSE-based APFS mounting tools. This was resolved through manual directory verification prior to re-running automated tooling, which then completed without further issue. This is now a standing first step applied to any unfamiliar forensic tool: confirm ground truth manually before trusting automated path detection.

END OF REPORT : SIR-2026-06-23-04
Full technical detail, exact artifact values, and challenge-identifying information intentionally generalized for public publication. Happy to walk through the complete investigation in more depth in conversation: get in touch.