应急响应 | MacOS取证速查:一文搞定响应取证所有需求
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
前言
在macOS系统上进行响应取证(Incident Response)时,快速获取和分析系统信息是至关重要的。取证过程涉及多个方面的检查和数据收集,以确保能够全面了解系统状态和潜在的安全威胁。本文将为您提供一份详细的macOS响应取证速查指南,包括关键命令和步骤,以及一个自动化脚本,以便您高效地进行取证工作。
MacOS取证速查
在macOS系统上进行响应取证(Incident Response)时,快速获取和分析系统信息是至关重要的。以下是macOS响应取证的速查指南,包括一些关键命令和步骤:
1. 系统信息收集
收集基本系统信息
system_profiler SPHardwareDataType
system_profiler SPSoftwareDataType
sw_vers
收集网络信息
ifconfig -a
netstat -rn
netstat -an
2. 用户和权限信息
列出当前登录用户
who
w
last
列出系统中的所有用户和组
dscl . list /Users
dscl . list /Groups
列出特定用户的详细信息
dscl . read /Users/<username>
3. 进程和服务信息
列出当前运行的进程
ps aux
top -l 1 -n 0
查看启动项和加载的服务
launchctl list
4. 文件和目录信息
查找最近修改的文件
find / -type f -mtime -7
列出特定目录的内容
ls -alR /path/to/directory
5. 日志文件
查看系统日志
log show --info --predicate 'process == "kernel"' --start '<start_date>' --end '<end_date>'
查看应用程序日志
log show --info --predicate 'subsystem == "com.apple.security"' --start '<start_date>' --end '<end_date>'
6. 网络活动分析
列出打开的网络连接
lsof -i
查看活动网络连接及其进程信息
netstat -anp tcp
7. 内存和磁盘使用情况
查看内存使用情况
vm_stat
查看磁盘使用情况
df -h
du -sh /path/to/directory
8. 安全和隐私设置
查看系统防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
查看系统完整性保护状态
csrutil status
9. 数据导出
导出文件系统快照
tmutil localsnapshot
创建系统报告
sudo sysdiagnose
10. 常用工具
Third-Party Tools
KnockKnock: 用于查找持久性组件(如启动项、内核扩展等)。
OSQuery: 用于收集和查询系统信息的跨平台工具。
KextViewr: 用于查看已加载的内核扩展。
11. 恢复和响应
隔离可疑进程
sudo kill -STOP <pid>
终止恶意进程
sudo kill -9 <pid>
12. 关键系统文件检查
检查hosts文件
cat /etc/hosts
检查系统启动文件
cat /etc/rc.common
cat /etc/rc.local
cat /etc/launchd.conf
13. 浏览器历史记录
查看Safari浏览器历史记录
sqlite3 ~/Library/Safari/History.db "SELECT * FROM history_items"
查看Chrome浏览器历史记录
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/History "SELECT * FROM urls"
14. 最近打开的文件和应用
查看最近打开的文件
defaults read com.apple.recentitems
查看最近使用的应用
ls -lt ~/Library/Containers/com.apple.Preview/Data/Library/Autosave\ Information/
15. 系统配置和偏好设置
列出系统偏好设置
defaults read
查看网络共享设置
defaults read /Library/Preferences/SystemConfiguration/com.apple.smb.server
16. 打印队列和任务
查看打印队列
lpstat -t
列出计划任务(crontab)
crontab -l
17. 文件完整性检查
计算文件的SHA256哈希值
shasum -a 256 /path/to/file
检查关键系统文件的完整性
sudo cmp /usr/bin/sudo /usr/bin/sudo.bak
18. 安全事件日志
查看安全事件日志
log show --predicate 'eventMessage contains "Authentication"' --info
查看特定用户的登录历史
last -F <username>
19. 磁盘和文件系统
列出磁盘和分区信息
diskutil list
检查文件系统使用情况
du -ah /path/to/directory | sort -rh | head -n 10
20. 网络配置和连接
查看网络接口配置
networksetup -listallhardwareports
列出所有网络服务
networksetup -listallnetworkservices
21. 环境变量和系统配置
查看系统环境变量
printenv
检查系统启动配置
nvram -p
22. 应用程序信息
列出已安装的应用程序
ls /Applications
获取特定应用的详细信息
mdls /Applications/Example.app
23. 关键系统事件
查看电源事件日志
pmset -g log
查看休眠和唤醒日志
pmset -g log | grep -e " Sleep " -e " Wake "
24. 加密和安全设置
检查FileVault状态
fdesetup status
查看系统关键链(Keychain)信息
security list-keychains
security dump-keychain
25. 内核扩展和驱动
列出已加载的内核扩展
kextstat
查看特定内核扩展的信息
kextstat | grep -i <extension_name>
26. 蓝牙和无线网络信息
查看蓝牙设备信息
system_profiler SPBluetoothDataType
查看无线网络信息
system_profiler SPAirPortDataType
27. 安全补丁和更新状态
查看已安装的安全补丁
softwareupdate --history
检查系统更新状态
softwareupdate --list
28. 打开端口和防火墙配置
列出所有打开的端口
sudo lsof -i -P -n | grep LISTEN
查看防火墙配置
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
29. 文件系统审计和监控
启用文件系统监控(使用fs_usage)
sudo fs_usage
查看文件系统活动日志
log show --predicate 'eventMessage contains "file"' --info
30. 共享和远程访问
查看共享服务状态
sudo launchctl list | grep -i "smb\|afp\|nfs"
检查远程登录和远程管理设置
sudo systemsetup -getremotelogin
sudo systemsetup -getremoteappleevents
sudo systemsetup -getcomputernames
31. 系统资源使用
查看CPU使用情况
sar -u 1 5
查看内存使用情况
vm_stat
32. 检查挂载点和磁盘使用
列出当前挂载点
mount
查看特定挂载点的使用情况
df -h /Volumes/<VolumeName>
33. 系统审计日志
查看审计日志配置
sudo cat /etc/security/audit_control
查看审计日志
sudo praudit /var/audit/current
34. 应用和用户活动监控
使用活动监视器查看系统资源
open /Applications/Utilities/Activity\ Monitor.app
使用Console应用查看系统日志
open /Applications/Utilities/Console.app
35. 检查系统完整性保护(SIP)
查看SIP状态
csrutil status
36. 检查EFI和固件信息
查看EFI版本
system_profiler SPHardwareDataType | grep 'Boot ROM Version'
查看固件版本
system_profiler SPHardwareDataType | grep 'SMC Version (system)'
37. 电源管理和电池信息
查看电池信息
system_profiler SPPowerDataType
查看电源管理设置
pmset -g
38. 检查系统错误报告
列出最近的系统错误报告
ls -lt /Library/Logs/DiagnosticReports/
查看特定错误报告
cat /Library/Logs/DiagnosticReports/<report_name>
39. 系统启动日志
查看启动日志
log show --predicate 'eventMessage contains "boot"' --info
40. 系统时钟和时间设置
查看当前时间设置
systemsetup -gettimezone
systemsetup -getusingnetworktime
检查时间同步状态
ntpdate -q
41. 检查VPN和代理设置
查看VPN配置
scutil --nc list
查看代理设置
scutil --proxy
42. 检查应用程序权限
查看应用程序访问权限
tccutil list
43. 查看进程环境变量
列出进程的环境变量
ps eww <pid>
44. 检查应用程序日志
查看应用程序特定日志
log show --predicate 'subsystem == "<subsystem_name>"' --info
45. 收集硬件监控信息
查看温度传感器信息
sudo powermetrics --samplers smc | grep -i "CPU die temperature"
查看风扇速度
sudo powermetrics --samplers smc | grep -i "Fan"
46. 使用内建工具监控系统
启动系统活动监视器
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.syslogd.plist
47. 检查共享文件夹
列出所有共享文件夹
sudo sharing -l
48. 收集无线网络扫描结果
扫描周围的无线网络
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
49. 收集外部设备信息
列出所有连接的USB设备
system_profiler SPUSBDataType
列出所有连接的Thunderbolt设备
system_profiler SPThunderboltDataType
自动化脚本
#!/bin/bash
# 创建一个目录来保存取证数据
output_dir="forensic_data_$(date +%Y%m%d_%H%M%S)"
mkdir $output_dir
# 收集系统信息
echo "Collecting system information..."
system_profiler SPHardwareDataType > $output_dir/hardware_info.txt
system_profiler SPSoftwareDataType > $output_dir/software_info.txt
sw_vers > $output_dir/os_version.txt
# 收集网络信息
echo "Collecting network information..."
ifconfig -a > $output_dir/network_info.txt
netstat -rn > $output_dir/routing_table.txt
netstat -an > $output_dir/network_connections.txt
# 收集用户和权限信息
echo "Collecting user and permissions information..."
who > $output_dir/current_users.txt
w > $output_dir/active_users.txt
last > $output_dir/login_history.txt
dscl . list /Users > $output_dir/all_users.txt
dscl . list /Groups > $output_dir/all_groups.txt
# 收集进程和服务信息
echo "Collecting process and services information..."
ps aux > $output_dir/running_processes.txt
top -l 1 -n 0 > $output_dir/top_processes.txt
launchctl list > $output_dir/loaded_services.txt
# 收集文件和目录信息
echo "Collecting file and directory information..."
find / -type f -mtime -7 > $output_dir/recently_modified_files.txt
ls -alR /path/to/directory > $output_dir/directory_listing.txt
# 收集日志文件
echo "Collecting log files..."
log show --info --predicate 'process == "kernel"' --start '2024-07-01' --end '2024-07-03' > $output_dir/kernel_logs.txt
log show --info --predicate 'subsystem == "com.apple.security"' --start '2024-07-01' --end '2024-07-03' > $output_dir/security_logs.txt
# 收集浏览器历史记录
echo "Collecting browser history..."
sqlite3 ~/Library/Safari/History.db "SELECT * FROM history_items" > $output_dir/safari_history.txt
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/History "SELECT * FROM urls" > $output_dir/chrome_history.txt
# 收集最近打开的文件和应用
echo "Collecting recent files and applications..."
defaults read com.apple.recentitems > $output_dir/recent_items.txt
ls -lt ~/Library/Containers/com.apple.Preview/Data/Library/Autosave\ Information/ > $output_dir/recent_apps.txt
# 收集磁盘和文件系统信息
echo "Collecting disk and file system information..."
df -h > $output_dir/disk_usage.txt
du -sh /path/to/directory > $output_dir/directory_usage.txt
diskutil list > $output_dir/disk_info.txt
# 收集环境变量和系统配置
echo "Collecting environment variables and system configuration..."
printenv > $output_dir/environment_variables.txt
nvram -p > $output_dir/nvram_settings.txt
# 检查FileVault状态
echo "Checking FileVault status..."
fdesetup status > $output_dir/filevault_status.txt
# 检查系统防火墙状态
echo "Checking Firewall status..."
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate > $output_dir/firewall_status.txt
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode >> $output_dir/firewall_status.txt
# 收集关键链信息
echo "Collecting keychain information..."
security list-keychains > $output_dir/keychains.txt
security dump-keychain > $output_dir/keychain_dump.txt
# 收集内核扩展信息
echo "Collecting kernel extensions..."
kextstat > $output_dir/kernel_extensions.txt
# 收集蓝牙和无线网络信息
echo "Collecting Bluetooth and Wi-Fi information..."
system_profiler SPBluetoothDataType > $output_dir/bluetooth_info.txt
system_profiler SPAirPortDataType > $output_dir/wifi_info.txt
# 收集已安装的安全补丁
echo "Collecting security updates..."
softwareupdate --history > $output_dir/security_updates.txt
# 收集打开的端口和防火墙配置
echo "Collecting open ports and firewall configuration..."
sudo lsof -i -P -n | grep LISTEN > $output_dir/open_ports.txt
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps > $output_dir/firewall_apps.txt
# 收集文件系统活动日志
echo "Collecting file system activity log..."
log show --predicate 'eventMessage contains "file"' --info > $output_dir/file_system_activity.txt
# 收集共享和远程访问设置
echo "Collecting sharing and remote access settings..."
sudo launchctl list | grep -i "smb\|afp\|nfs" > $output_dir/sharing_services.txt
sudo systemsetup -getremotelogin > $output_dir/remote_login.txt
sudo systemsetup -getremoteappleevents >> $output_dir/remote_login.txt
sudo systemsetup -getcomputernames > $output_dir/computer_names.txt
# 收集系统资源使用信息
echo "Collecting system resource usage..."
sar -u 1 5 > $output_dir/cpu_usage.txt
vm_stat > $output_dir/memory_usage.txt
# 收集挂载点和磁盘使用信息
echo "Collecting mount points and disk usage..."
mount > $output_dir/mount_points.txt
df -h /Volumes/ > $output_dir/disk_volumes_usage.txt
# 收集系统审计日志
echo "Collecting audit logs..."
sudo cat /etc/security/audit_control > $output_dir/audit_control.txt
sudo praudit /var/audit/current > $output_dir/audit_logs.txt
# 收集系统错误报告
echo "Collecting system error reports..."
ls -lt /Library/Logs/DiagnosticReports/ > $output_dir/system_error_reports.txt
echo "Data collection completed. All data saved to $output_dir."
# 结束脚本
exit 0
使用说明
将上述脚本保存为
collect_forensic_data.sh
。给予脚本执行权限:
chmod +x collect_forensic_data.sh
运行脚本:
./collect_forensic_data.sh
该脚本将在当前目录下创建一个名为forensic_data_YYYYMMDD_HHMMSS
的目录,其中包含所有收集到的信息。您可以根据需要修改脚本以包含其他命令或收集特定信息。
结尾
本文提供了详尽的macOS
响应取证速查指南和自动化脚本,以帮助您高效地收集和分析系统信息。无论是系统信息收集、用户和权限信息、网络活动分析,还是日志文件和文件系统审计,都涵盖了取证过程中可能需要的各个方面。希望这些工具和命令能够帮助您在面对安全事件时更加从容应对,迅速获取所需的关键信息
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录