freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

应急响应 | MacOS取证速查:一文搞定响应取证所有需求
2024-07-03 18:06:58

前言

在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

使用说明

  1. 将上述脚本保存为collect_forensic_data.sh

  2. 给予脚本执行权限:

    chmod +x collect_forensic_data.sh
  3. 运行脚本:

    ./collect_forensic_data.sh

该脚本将在当前目录下创建一个名为forensic_data_YYYYMMDD_HHMMSS的目录,其中包含所有收集到的信息。您可以根据需要修改脚本以包含其他命令或收集特定信息。

结尾

本文提供了详尽的macOS响应取证速查指南和自动化脚本,以帮助您高效地收集和分析系统信息。无论是系统信息收集、用户和权限信息、网络活动分析,还是日志文件和文件系统审计,都涵盖了取证过程中可能需要的各个方面。希望这些工具和命令能够帮助您在面对安全事件时更加从容应对,迅速获取所需的关键信息

# 应急响应 # macOS # macOS系统 # 安全应急响应 # 应急响应与溯源反制
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录