后续:MAC钓鱼后权限维持手段
字数 1580 2025-08-11 08:36:07
macOS权限维持技术:launchctl与plist文件详解
一、launchctl概述
launchctl是macOS系统的统一服务管理框架,用于启动、停止和管理守护进程、应用程序、进程和脚本。其主要功能包括:
- 创建开机自启的进程(包括守护进程)
- 管理后台服务的生命周期
- 实现权限维持和持久化控制
二、plist文件关键目录
plist文件(属性列表文件)是launchctl用来定义启动任务的核心配置文件,通常存放在以下目录:
-
用户级启动项:
~/Library/LaunchAgents:用户自定义的任务项/Library/LaunchAgents:管理员为用户定义的任务项(用户登录后执行)
-
系统级启动项:
/Library/LaunchDaemons:管理员定义的守护进程(系统启动即执行,无需用户登录)/System/Library/LaunchAgents:系统为用户定义的任务项/System/Library/LaunchDaemons:系统定义的守护进程
三、plist文件结构详解
基本plist文件模板:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.macports.repair</string>
<key>ProgramArguments</key>
<array>
<string>/tmp/chrome.app/Contents/MacOS/auto</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
关键键值说明
-
Label:
- 定义服务标识符
- 通常采用反向域名命名法(如
org.macports.repair) - 对应plist文件名(如
org.macports.repair.plist)
-
ProgramArguments:
- 定义要执行的程序路径和参数
- 数组结构,第一个元素为可执行文件路径,后续为参数
- 示例:
<array> <string>/path/to/your/command</string> <string>arg1</string> <string>arg2</string> </array>
-
RunAtLoad:
- 是否在加载时立即运行(开机/登录自启)
- 布尔值(
true/false),默认为false
-
KeepAlive:
- 是否保持进程持续运行(被杀后自动重启)
- 布尔值(
true/false),默认为false
四、launchctl命令操作
基本命令
-
加载启动任务:
launchctl load /Library/LaunchAgents/example.plist -
持久化加载(重启/登录后仍有效):
launchctl load -w /Library/LaunchAgents/example.plist -
停止并卸载任务(但重启后仍会加载):
launchctl unload /Library/LaunchAgents/example.plist -
完全卸载(包括重启后):
launchctl unload -w /Library/LaunchAgents/example.plist -
查看服务列表:
launchctl list sudo launchctl list # 查看需要root权限的服务
五、权限维持实战步骤
1. 准备恶意程序
- 将木马程序(如
chrome.app)放入指定目录(如/tmp/chrome.app/Contents/MacOS/auto)
2. 创建plist文件
在适当目录(如/Library/LaunchDaemons/)创建plist文件,内容参考上述模板
3. 加载持久化服务
sudo launchctl load -w /Library/LaunchDaemons/org.macports.repair.plist
4. 验证执行状态
- 检查
launchctl list输出 - 返回值为
0表示成功,非零值需检查路径等问题
六、高级技巧
-
隐藏性优化:
- 使用常见系统服务命名(如
com.apple.update) - 将恶意程序放在系统常用目录(如
/Library/Application Support/)
- 使用常见系统服务命名(如
-
多级持久化:
- 同时在
LaunchAgents和LaunchDaemons部署 - 用户登录和系统启动双重触发
- 同时在
-
反检测措施:
- 修改文件时间戳匹配系统文件
- 使用合法的代码签名证书
七、防御建议
-
监控关键目录:
- 定期检查
~/Library/LaunchAgents和/Library/LaunchDaemons - 使用
ls -la查看隐藏文件
- 定期检查
-
审计launchctl服务:
launchctl list | grep -v "com.apple" -
权限控制:
- 限制对系统级启动目录的写入权限
- 使用SIP(System Integrity Protection)保护系统目录
-
日志分析:
- 检查
/var/log/system.log中的launchd相关记录 - 使用终端命令
log show --predicate 'sender == "launchd"'
- 检查
通过深入理解launchctl机制和plist文件配置,安全研究人员可以更好地检测和防御macOS系统中的权限维持行为。