应急响应 | MacOS取证速查:一文搞定响应取证所有需求
字数 1103 2025-08-20 18:18:23
macOS 取证响应全面指南
1. 系统信息收集
1.1 硬件和软件信息
system_profiler SPHardwareDataType # 硬件信息
system_profiler SPSoftwareDataType # 软件信息
sw_vers # 系统版本
1.2 网络信息
ifconfig -a # 网络接口配置
netstat -rn # 路由表
netstat -an # 活动网络连接
2. 用户和权限信息
2.1 用户活动
who # 当前登录用户
w # 活动用户
last # 登录历史
2.2 用户和组管理
dscl . list /Users # 所有用户
dscl . list /Groups # 所有组
dscl . read /Users/<username> # 特定用户详情
3. 进程和服务分析
3.1 进程监控
ps aux # 运行中进程
top -l 1 -n 0 # 进程资源使用
3.2 系统服务
launchctl list # 启动服务
4. 文件系统取证
4.1 文件查找
find / -type f -mtime -7 # 最近7天修改的文件
ls -alR /path/to/directory # 目录详细内容
4.2 文件完整性
shasum -a 256 /path/to/file # 计算文件哈希
sudo cmp /usr/bin/sudo /usr/bin/sudo.bak # 文件完整性检查
5. 日志分析
5.1 系统日志
log show --info --predicate 'process == "kernel"' --start '<date>' --end '<date>'
5.2 安全日志
log show --info --predicate 'subsystem == "com.apple.security"' --start '<date>' --end '<date>'
6. 网络活动分析
6.1 网络连接
lsof -i # 打开的网络连接
netstat -anp tcp # TCP连接及进程
6.2 网络配置
networksetup -listallhardwareports # 网络接口
networksetup -listallnetworkservices # 网络服务
7. 系统资源监控
7.1 内存使用
vm_stat # 内存统计
7.2 磁盘使用
df -h # 磁盘空间
du -sh /path # 目录大小
8. 安全设置检查
8.1 防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
8.2 系统完整性保护
csrutil status # SIP状态
9. 数据导出技术
9.1 系统快照
tmutil localsnapshot # 创建文件系统快照
9.2 系统报告
sudo sysdiagnose # 生成完整系统报告
10. 第三方取证工具
- KnockKnock - 检测持久性组件
- OSQuery - 系统信息查询
- KextViewr - 内核扩展查看器
11. 应急响应措施
11.1 进程控制
sudo kill -STOP <pid> # 暂停可疑进程
sudo kill -9 <pid> # 终止恶意进程
11.2 关键文件检查
cat /etc/hosts # hosts文件检查
cat /etc/rc.common # 启动脚本检查
12. 浏览器取证
12.1 Safari历史
sqlite3 ~/Library/Safari/History.db "SELECT * FROM history_items"
12.2 Chrome历史
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/History "SELECT * FROM urls"
13. 用户活动追踪
13.1 最近文件
defaults read com.apple.recentitems
13.2 应用使用记录
ls -lt ~/Library/Containers/com.apple.Preview/Data/Library/Autosave\ Information/
14. 系统配置审计
14.1 偏好设置
defaults read
14.2 网络共享
defaults read /Library/Preferences/SystemConfiguration/com.apple.smb.server
15. 计划任务检查
crontab -l # 用户计划任务
lpstat -t # 打印队列
16. 安全事件分析
log show --predicate 'eventMessage contains "Authentication"' --info
last -F <username> # 用户登录历史
17. 磁盘和分区信息
diskutil list # 磁盘分区
mount # 挂载点
18. 环境变量检查
printenv # 环境变量
nvram -p # 启动配置
19. 应用信息收集
ls /Applications # 已安装应用
mdls /Applications/Example.app # 应用元数据
20. 电源管理分析
pmset -g log # 电源事件
pmset -g log | grep -e " Sleep " -e " Wake " # 休眠唤醒记录
21. 加密状态检查
fdesetup status # FileVault状态
security list-keychains # 钥匙链
security dump-keychain # 钥匙链内容
22. 内核扩展检查
kextstat # 已加载扩展
kextstat | grep -i <extension_name> # 特定扩展
23. 无线设备分析
system_profiler SPBluetoothDataType # 蓝牙设备
system_profiler SPAirPortDataType # 无线网络
24. 系统更新状态
softwareupdate --history # 更新历史
softwareupdate --list # 可用更新
25. 端口和防火墙
sudo lsof -i -P -n | grep LISTEN # 监听端口
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps # 防火墙应用
26. 文件系统监控
sudo fs_usage # 实时文件系统活动
27. 共享服务检查
sudo launchctl list | grep -i "smb\|afp\|nfs" # 共享服务
sudo systemsetup -getremotelogin # 远程登录
28. 资源使用分析
sar -u 1 5 # CPU使用率
vm_stat # 内存统计
29. 审计日志分析
sudo cat /etc/security/audit_control # 审计配置
sudo praudit /var/audit/current # 审计日志
30. 错误报告检查
ls -lt /Library/Logs/DiagnosticReports/ # 系统错误报告
31. 启动日志分析
log show --predicate 'eventMessage contains "boot"' --info
32. 时间设置检查
systemsetup -gettimezone # 时区
systemsetup -getusingnetworktime # NTP状态
ntpdate -q # 时间同步
33. VPN和代理设置
scutil --nc list # VPN配置
scutil --proxy # 代理设置
34. 应用权限检查
tccutil list # 应用访问权限
35. 进程环境检查
ps eww <pid> # 进程环境变量
36. 硬件监控
sudo powermetrics --samplers smc | grep -i "CPU die temperature" # CPU温度
sudo powermetrics --samplers smc | grep -i "Fan" # 风扇速度
37. 外设连接检查
system_profiler SPUSBDataType # USB设备
system_profiler SPThunderboltDataType # Thunderbolt设备
自动化取证脚本
#!/bin/bash
# 创建取证目录
output_dir="forensic_data_$(date +%Y%m%d_%H%M%S)"
mkdir $output_dir
# 系统信息
system_profiler SPHardwareDataType > $output_dir/hardware_info.txt
system_profiler SPSoftwareDataType > $output_dir/software_info.txt
# 网络信息
ifconfig -a > $output_dir/network_info.txt
netstat -rn > $output_dir/routing_table.txt
# 用户信息
who > $output_dir/current_users.txt
dscl . list /Users > $output_dir/all_users.txt
# 进程信息
ps aux > $output_dir/running_processes.txt
launchctl list > $output_dir/loaded_services.txt
# 文件系统
find / -type f -mtime -7 > $output_dir/recently_modified_files.txt
# 日志
log show --info --predicate 'process == "kernel"' --start '2024-07-01' --end '2024-07-03' > $output_dir/kernel_logs.txt
# 浏览器历史
sqlite3 ~/Library/Safari/History.db "SELECT * FROM history_items" > $output_dir/safari_history.txt
# 安全设置
csrutil status > $output_dir/sip_status.txt
fdesetup status > $output_dir/filevault_status.txt
echo "取证数据已保存到 $output_dir"
脚本使用说明
- 将脚本保存为
collect_forensic_data.sh - 赋予执行权限:
chmod +x collect_forensic_data.sh - 运行脚本:
./collect_forensic_data.sh - 结果将保存在
forensic_data_YYYYMMDD_HHMMSS目录中
最佳实践建议
- 取证顺序:先收集易失性数据(内存、进程),再收集持久性数据
- 证据保全:对收集的数据计算哈希值,确保完整性
- 时间同步:记录取证时系统时间与标准时间的差异
- 全面记录:记录执行的每条命令及其输出
- 工具验证:使用前验证取证工具的完整性和可信度
本指南涵盖了macOS取证响应的所有关键方面,从系统信息收集到深入分析技术,提供了全面的命令参考和自动化脚本,可有效支持安全事件响应工作。