| name | macos-security-hardening |
| description | Guide for macOS security assessment, privilege escalation, and hardening. Use this skill whenever the user mentions macOS security, privilege escalation, TCC, SIP, file permissions, security auditing, or any macOS security-related task. This skill covers security architecture, attack surface analysis, TCC/SIP bypasses, and traditional privilege escalation techniques. |
macOS Security & Privilege Escalation
A comprehensive guide for assessing and understanding macOS security mechanisms, privilege escalation vectors, and hardening techniques.
Quick Start
When assessing a macOS system, follow this workflow:
- Gather system information - Version, architecture, users
- Check security protections - SIP, TCC status
- Enumerate attack surface - File permissions, services, installed apps
- Identify privilege escalation vectors - SUID binaries, writable files, TCC abuse
- Document findings - Create a structured report
macOS Security Architecture
Core Concepts
macOS security relies on several layered protections:
- SIP (System Integrity Protection): Protects system files and processes from modification, even by root
- TCC (Transparency, Consent, and Control): Controls app access to sensitive data (microphone, camera, files, etc.)
- Code Signing: Apps must be signed to run; unsigned apps are blocked or require user approval
- Gatekeeper: Verifies app signatures and quarantine status
- AMFI (Apple Mobile File Integrity): Enforces code signing at the kernel level
Check SIP Status
csrutil status
Check TCC Database
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "SELECT * FROM access;"
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "SELECT * FROM access WHERE client LIKE '%app_name%';"
Attack Surface Enumeration
File Permission Vulnerabilities
Root-owned processes writing to user-controllable files create privilege escalation opportunities:
find /usr /System /Library -perm -0002 -type f 2>/dev/null
find /usr /System /Library -user root -group wheel -perm -0020 -type f 2>/dev/null
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
find /usr /System /Library -perm -0002 -type d 2>/dev/null
Check for Vulnerable Installers
pkgutil --pkgs
pkgutil --pkg-info <package_id>
find / -name "*.pkg" -type f 2>/dev/null
File Extension & URL Scheme Handlers
defaults read com.apple.LaunchServices/com.apple.launchservices.secure
mdls -name kMDItemCFBundleIdentifier -name kMDItemContentType /Applications/*.app
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump
TCC Privilege Escalation
Understanding TCC
TCC controls access to:
- Microphone, camera, screen recording
- Accessibility features
- File system areas (Documents, Downloads, etc.)
- Contacts, calendar, reminders
- System preferences
TCC Bypass Techniques
- Inherit from privileged parent: Child processes inherit TCC permissions from parent
- Abuse signed apps: Use entitlements from signed applications
- Database manipulation: Modify TCC.db directly (requires SIP disabled)
- Accessibility API abuse: Use accessibility permissions to control other apps
Check TCC Permissions
tccutil list
tccutil reset All <app_bundle_id>
SIP Bypass Considerations
When SIP is Disabled
If SIP is disabled, you can:
- Modify system binaries
- Load unsigned kernel extensions
- Access protected system files
- Modify TCC database directly
Common SIP Bypass Vectors
Historical bypasses have exploited:
- Kernel vulnerabilities
- Code signing bypasses
- System call injection
- Memory corruption in system processes
Note: Modern macOS versions have significantly hardened against these attacks. Always check for the latest CVEs and patches.
Traditional Privilege Escalation
SUID/SGID Binary Abuse
find / -perm -4000 -type f 2>/dev/null | while read bin; do
echo "=== $bin ==="
which $bin 2>/dev/null || echo "Not in PATH"
done
Cron Jobs & LaunchDaemons
cat /etc/crontab
cat /etc/cron.d/*
ls -la /etc/cron.*
ls -la /Library/LaunchDaemons/
ls -la /System/Library/LaunchDaemons/
ls -la ~/Library/LaunchAgents/
ls -la /Library/LaunchAgents/
Writable System Files
find /usr /System /Library -writable -type f 2>/dev/null
find /usr/local/bin /usr/bin /bin -writable -type d 2>/dev/null
Security Hardening Recommendations
Disable Unnecessary Services
launchctl list
launchctl bootout system/<service_label>
Enable Full Disk Encryption
fdesetup status
sudo fdesetup enable
Configure Firewall
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
Audit User Accounts
df -H
grep -i sudo /etc/sudoers
grep -i sudo /etc/sudoers.d/*
last
Compliance & Standards
NIST macOS Security Baseline
Reference: https://github.com/usnistgov/macos_security
Key controls:
- Password policies
- Account management
- Audit logging
- File integrity monitoring
- Network security
CIS Benchmarks
Follow CIS macOS Benchmark for comprehensive hardening guidance.
Practical Assessment Workflow
Step 1: Initial Reconnaissance
sw_vers
uname -a
whoami
groups
id
sudo -l
Step 2: Security Status Check
csrutil status
tccutil list
fdesetup status
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
Step 3: Attack Surface Scan
Step 4: Exploitation Testing
Reporting Template
# macOS Security Assessment Report
## System Information
- macOS Version:
- Architecture:
- Current User:
## Security Protections
- SIP: [Enabled/Disabled]
- TCC: [Status]
- FileVault: [Enabled/Disabled]
- Firewall: [Enabled/Disabled]
## Findings
### Critical
- [List critical vulnerabilities]
### High
- [List high-severity issues]
### Medium
- [List medium-severity issues]
### Low
- [List low-severity issues]
## Recommendations
- [Prioritized remediation steps]
References
Important Notes
-
Legal Authorization: Only perform security assessments on systems you own or have explicit authorization to test.
-
Backup First: Always backup systems before making security changes.
-
Test in Isolation: Test privilege escalation techniques in isolated environments first.
-
Stay Updated: macOS security evolves rapidly. Check for the latest CVEs and patches.
-
Documentation: Document all findings and changes for audit purposes.