
A collection of scripts and documents to help future XProtect Remediator (XPR) research
A collection of scripts and documents to help future XProtect Remediator (XPR) research, presented at Black Hat USA 2025
This repository contains:
These scripts and documents were created for verification purposes of our reverse engineering of XPR. We hope that this repository will be useful for security researchers who conduct XPR analysis in the future and want to understand under what conditions remediation occurs.
NOTE: Please run these scripts in a virtualized environment.
To reveal <private> entries in the Unified Logs, follow the steps outlined in the article below.
Unified Logs: How to Enable Private Data
Navigate to cd TestSuite/<module_name> and execute ./run.sh.
cd TestSuite/Adload
./run.sh --test-case service
Some test cases require root privileges to run. However, they are basically designed to run with user privileges.
cd TestSuite/RedPine
sudo ./run.sh --test-case redpine
To reproduce XPR remediation/remediation, open a new terminal and run
/Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/XProtect
or
/Library/Apple/System/Library/CoreServices/XProtect.app/Contents/MacOS/XProtectRemediator<module_name> # (e.g., XProtectRemediatorAdload)
| Module Name | Verified Version(s) | Script | Document |
|---|---|---|---|
| Adload | 145 | ✅ | ✅ |
| BadGacha | 133, 145 | ✅ | ✅ |
| Bundlore | 149 | ✅ | ✅ |
| CardboardCutout | 145 | ✅ | |
| ColdSnap | 145 | ✅ | ✅ |
| Eicar | 145 | ✅ | ✅ |
| KeySteal | 145 | ✅ | ✅ |
| Pirrit | 145 | ✅ | ✅ |
| RedPine | 141 | ✅ | ✅ |
| RoachFlight | 145 | ✅ | |
| RankStank | 145 | ✅ | ✅ |
| SheepSwap | 145 | ✅ | ✅ |
| SnowDrift | 145 | ✅ | ✅ |
| WaterNet | 145 | ✅ | ✅ |
Koh M. Nakagawa (@tsunek0h) © FFRI Security, Inc. 2025