Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
osxcollector — 一个用于 OS X 的取证证据收集与分析工具包 | Kitploit
工具/GitHubGitHub/yelparchive/osxcollector
磁盘取证OSINT (开源情报)内存取证取证分析数字取证事件响应Archived
GitHubyelparchive/osxcollector

osxcollector

一个用于 OS X 的取证证据收集与分析工具包

查看仓库
1.9k2397年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

osxcollector

Build Status PyPI

OSXCollector 手册

OSXCollector 是一个面向 OS X 的取证证据收集与分析工具包。

取证收集

收集脚本在可能受感染的机器上运行,并输出描述目标机器的 JSON 文件。OSXCollector 从 plist、SQLite 数据库和本地文件系统中收集信息。

取证分析

借助取证收集的结果,分析师可以回答此类问题:

  • 这台机器被感染了吗?
  • 那个恶意软件是怎么进入的?
  • 如何防止和检测进一步的感染?

Yelp 对大多数 OSXCollector 运行结果进行自动化分析,将其输出转换为易读且可操作的摘要,仅聚焦于可疑内容。请查看 OSXCollector Output Filters 项目,了解如何充分利用 OSXCollector 输出的自动化分析。

执行收集

osxcollector.py 是一个独立的 Python 文件,在标准 OS X 机器上无需任何依赖即可运行。这使得在任何机器上运行收集都非常简单——无需纠结 brew、pip、配置文件或环境变量。只需将单个文件复制到机器上并运行即可:

sudo osxcollector.py 一条命令足矣。

root@kitploit:~
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz

如果你刚刚克隆了 GitHub 仓库,osxcollector.py 位于 osxcollector/ 目录下,因此需要按如下方式运行:

root@kitploit:~
$ sudo osxcollector/osxcollector.py

重要提示: 请确保 Mac OS X 机器上的 python 命令使用的是系统自带的默认 Python 解释器,而非被覆盖(例如通过 brew 安装的 Python 版本)。OSXCollector 依赖于一些 OS X 库的原生 Python 绑定,这些绑定在非系统原始安装的 Python 版本中可能不可用。 或者,你也可以显式指定要使用的 Python 版本来运行 osxcollector.py:

root@kitploit:~
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py

收集器输出的 JSON 文件以及一些有用的辅助文件(如系统日志)已被打包成 .tar.gz 文件,供分析师进一步处理。

osxcollector.py 还提供了许多有用的选项来改变收集的工作方式:

  • -i INCIDENT_PREFIX/--id=INCIDENT_PREFIX: 设置一个标识符,用作输出文件的前缀。默认值为 osxcollect。

    root@kitploit:~
    $ sudo osxcollector.py -i IncontinentSealord
    Wrote 35394 lines.
    Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
    

    给事件名称加入创意,可以让你在痛苦中轻松一笑。

  • -p ROOTPATH/--path=ROOTPATH: 设置运行收集时文件系统根目录的路径。默认值为 /。在磁盘镜像上运行收集时非常有用。

    root@kitploit:~
    $ sudo osxcollector.py -p '/mnt/powned'
    
  • -s SECTION/--section=SECTION: 仅运行完整收集的某一部分。可以多次指定。完整的 sections(板块)和 subsections(子板块)列表如下:

    • version
    • system_info

收集详情

收集器输出一个包含所有收集到的工件(artifacts)的 .tar.gz 文件。该归档文件中包含一个 JSON 文件,存有大部分信息。此外,还包含了目标系统日志中的一组有用日志。

通用字段

每条记录

JSON 文件的每一行记录一条“信息”。每条 JSON 记录中都有一些通用字段:

  • osxcollector_incident_id:所有记录共享的唯一 ID。
  • osxcollector_section:该记录所属的“板块”或数据类型。
  • osxcollector_subsection:该记录所属的“子板块”或更详细的数据类型描述。
文件记录

对于代表文件的记录,有一系列有用的字段:

  • atime:文件的访问时间。
  • ctime:文件的创建时间。
  • mtime:文件的修改时间。
  • file_path:文件的绝对路径。
  • md5:文件内容的 MD5 哈希值。
  • sha1:文件内容的 SHA1 哈希值。
  • sha2:文件内容的 SHA2 哈希值。

对于代表已下载文件的记录:

  • xattr-wherefrom:包含下载文件的来源 URL 和引用 URL 的列表。
  • xattr-quarantines:描述哪个应用下载了该文件的字符串。
SQLite 记录

对于代表 SQLite 数据库某条记录的记录:

  • osxcollector_table_name:该记录所在的表名。
  • osxcollector_db_path:SQLite 文件的绝对路径。

对于代表与特定用户关联的数据的记录:

  • osxcollector_username:用户名。

时间戳

OSXCollector 尝试将时间戳转换为人类可读的日期/时间字符串,格式为 YYYY-mm-dd hh:MM:ss。它使用启发式方法自动识别各种时间戳:

  • 从 epoch 开始的秒数
  • 从 epoch 开始的毫秒数
  • 自 2001-01-01 开始的秒数
  • 自 1601-01-01 开始的秒数

板块(Sections)

version 板块

OSXCollector 的当前版本。

system_info 板块

收集系统的基本信息:

  • 系统名称
  • 节点名称
  • 发行版
  • 版本
  • 机器类型
kext 板块

从以下位置收集内核扩展:

  • /System/Library/Extensions
  • /Library/Extensions
startup 板块

收集关于以下启动项的信息: LaunchAgents、 LaunchDaemons、ScriptingAdditions、 StartupItems 以及其他登录项,来源包括:

  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons
  • /Library/LaunchAgents
  • ~/Library/LaunchAgents
  • /Library/LaunchDaemons
  • /System/Library/ScriptingAdditions
  • /Library/ScriptingAdditions
  • /System/Library/StartupItems
  • /Library/StartupItems
  • ~/Library/Preferences/com.apple.loginitems.plist

更多关于 Mac OS X 启动机制的信息可参考: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf

applications 板块

对已安装的应用程序进行哈希,并从以下位置收集安装历史:

  • /Applications
  • ~/Applications
  • /Library/Receipts/InstallHistory.plist
quarantines 板块

隔离区(Quarantines)基本上包含了当用户尝试打开从互联网下载的文件时显示“你确定要运行这个吗?”所需要的信息。更多细节请参考 Apple 支持对隔离区的解释: http://support.apple.com/kb/HT3662

本板块还收集 XProtect 基于哈希的恶意软件检查信息(针对隔离文件)。plist 文件位于: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist

XProtect 还会为互联网插件添加最低版本要求。该 plist 文件位于: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

downloads 板块

对所有用户的已下载文件进行哈希,来源包括:

  • ~/Downloads
  • ~/Library/Mail Downloads
  • ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
chrome 板块

从 Google Chrome 网络浏览器中收集以下信息:

  • 历史记录
  • 归档历史记录
  • Cookies
  • 扩展程序
  • 登录数据
  • 最常访问的网站
  • 网络数据

这些数据提取自 ~/Library/Application Support/Google/Chrome/Default

firefox 板块

从 Firefox 配置文件中的不同 SQLite 数据库收集信息:

  • Cookies
  • 下载记录
  • 表单历史
  • 历史记录
  • 登录信息
  • 权限
  • 附加组件
  • 扩展
  • 内容偏好
  • 健康报告
  • Webapps 商店

这些信息提取自 ~/Library/Application Support/Firefox/Profiles

更多关于 Firefox 配置文件文件夹的信息请参见 http://kb.mozillazine.org/Profile_folder_-_Firefox

safari 板块

从 Safari 配置文件中的不同 plist 和 SQLite 数据库收集信息:

  • 下载记录
  • 历史记录
  • 扩展
  • 数据库
  • 本地存储
accounts 板块

收集关于用户账户的信息:

  • 系统管理员:/private/var/db/dslocal/nodes/Default/groups/admin.plist
  • 系统用户:/private/var/db/dslocal/nodes/Default/users
  • 社交账户:~/Library/Accounts/Accounts3.sqlite
  • 用户最近项目:~/Library/Preferences/com.apple.recentitems.plist
mail 板块

对邮件应用目录中的文件进行哈希:

  • ~/Library/Mail
  • ~/Library/Mail Downloads
full_hash 板块

对磁盘上所有文件进行哈希。全部文件。默认情况下不执行此操作。必须通过以下命令触发:

root@kitploit:~
$ sudo osxcollector.py -s full_hash

基本手动分析

取证分析既是一门艺术,也是一门科学。在阅读 OSXCollector 的输出时,每位分析师都会看到略有不同的故事。这正是分析的乐趣所在。

通常,对目标机器执行收集是因为某些可疑情况:反病毒软件发现了一个它不喜欢的文件,深度包检测观察到了外部回调,端点监控注意到新的启动项。这个初始告警的具体细节——文件路径、时间戳、哈希、域名、IP 等——就足以开始分析了。

时间戳

只需在某个时间戳前后几分钟进行简单 grep 就能获得良好效果:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'

浏览器历史记录

这些信息也在其中。像 jq 这类工具在进行一些高级输出时非常有用:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'

单用户

root@kitploit:~
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'

自动化分析

OSXCollector Output Filters 项目 包含用于处理和转换 OSXCollector 输出的过滤器。过滤器的目标是让 OSXCollector 输出的分析变得简单易行。

开发建议

OSXCollector 的功能存储在一个文件中:osxcollector.py。收集器应能在裸安装的 OS X 上运行,无需任何额外的包或依赖项。

在编辑源代码之前,确保所有 OSXCollector 测试都能通过。你可以使用 make test 运行测试。

对源代码进行更改后,再次运行 make test 以验证你的更改没有破坏任何测试。

许可证

本作品根据 GNU 通用公共许可证授权,是 https://github.com/jipegit/OSXAuditor 的衍生作品。

博文

  • OSXCollector: Forensic Collection and Automated Analysis for OS X 作者:Ivan Leichtling

演讲

  • OSXCollector: Automated forensic evidence collection & analysis for OS X 作者:Kuba Sendor @ BruCON 0x07
  • Squashing Rotten Apples: Automated forensics & analysis for Mac OS X with OSXCollector 作者:Kuba Sendor @ BSides Manchester 2015
  • OSXCollector 作者:Ivan Leichtling @ Macbrained 八月聚会
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X 作者:Ivan Leichtling @ OpenNSM
  • OSXCollector - Automated Forensic Evidence Collection & Analysis for OS X 作者:Ivan Leichtling @ Duo Tech Talk (博文)

外部演讲

  • OSX Archaeology: Becoming Indiana Jones with OSXCollector and Strata 作者:Chris Henderson 和 Justin Larson @ SAINTCon 2015

资源

想了解更多关于 OS X 取证吗?

  • Sarah Edward 的 mac4n6.com - 最佳 Mac 取证演讲资料。

其他一些有趣的工具:

  • KnockKnock - KnockKnock 是一个命令行 Python 脚本,显示设置为在每次启动时自动执行的持久化 OS X 二进制文件。
  • Grr - Google 快速响应:用于事件响应的远程实时取证
  • osquery - 基于 SQL 的操作系统检测、监控和分析工具
下载工具
  • kext
  • startup
    • launch_agents
    • scripting_additions
    • startup_items
    • login_items
  • applications
    • applications
    • install_history
  • quarantines
  • downloads
    • downloads
    • email_downloads
    • old_email_downloads
  • chrome
    • history
    • archived_history
    • cookies
    • login_data
    • top_sites
    • web_data
    • databases
    • local_storage
    • preferences
  • firefox
    • cookies
    • downloads
    • formhistory
    • history
    • signons
    • permissions
    • addons
    • extension
    • content_prefs
    • health_report
    • webapps_store
    • json_files
  • safari
    • downloads
    • history
    • extensions
    • databases
    • localstorage
    • extension_files
  • accounts
    • system_admins
    • system_users
    • social_accounts
    • recent_items
  • mail
  • full_hash
  • root@kitploit:~
    $ sudo osxcollector.py -s 'startup' -s 'downloads'
    
  • -c/--collect-cookies: 收集 cookie 的值。默认情况下,OSXCollector 不会导出 cookie 的值,因为其中可能包含敏感信息(如会话 ID)。

  • -l/--collect-local-storage: 收集 web 浏览器本地存储中的值。默认情况下,OSXCollector 不会导出这些值,因为它们可能包含敏感信息。

  • -d/--debug: 启用详细输出和 Python 断点。如果 OSXCollector 出现问题,可以尝试此选项。

    root@kitploit:~
    $ sudo osxcollector.py -d