OS X Auditor

OS X Auditor 是一款免费的 Mac OS X 计算机取证工具。
OS X Auditor 会解析并对以下运行系统或待分析系统副本中的工件进行哈希处理:
- 内核扩展
- 系统代理和守护进程
- 第三方代理和守护进程
- 旧的、已弃用的系统和第三方启动项
- 用户的代理
- 用户下载的文件
- 已安装的应用程序
它提取:
- 用户的隔离文件
- 用户的 Safari 历史记录、下载记录、最常访问站点、LastSession、HTML5 数据库和本地存储
- 用户的 Firefox cookie、下载记录、表单历史记录、权限、位置记录和登录信息
- 用户的 Chrome 历史记录和归档历史记录、cookie、登录数据、最常访问站点、Web 数据、HTML5 数据库和本地存储
- 用户的社交和电子邮件账户
- 被审计系统曾连接过的 WiFi 接入点(并尝试对其进行地理定位)
它还会在 .plist 文件中查找可疑关键词。
它可以对每个文件的声誉进行验证,验证来源包括:
- Team Cymru 的 MHR
- VirusTotal
- 您自己的本地数据库
它可以将以下目录中的所有日志打包成一个 zip 文件:
- /var/log(-> /private/var/log)
- /Library/logs
- 用户的 ~/Library/logs
最后,结果可以:
- 以简单的 txt 日志文件形式呈现(便于您 cat-pipe-grep 操作…或直接 grep)
- 以 HTML 日志文件形式呈现
- 发送至 Syslog 服务器
作者
Jean-Philippe Teissier - @Jipe_ 及其他贡献者
开发状态
OS X Auditor 已不再维护 - 您不应该使用它
支持
OS X Auditor 最初是一个周末项目,现已不再维护。它已被 Yelp 的优秀团队 fork 并创建了 osxcollector。
我建议您使用 osxcollector (https://github.com/Yelp/osxcollector)
如何安装
只需从 GitHub 复制所有文件。
依赖
如果您计划在 Mac 上运行 OS X Auditor,您将通过 pyobjc 获得完整的 plist 解析支持(依赖于 OS X Foundation):
如果您无法安装 pyobjc,或计划在 Mac OS X 以外的操作系统上运行 OS X Auditor,则可能会在 plist 解析中遇到一些问题:
pip install biplist
pip install plist
当 Python 中提供本地 plist 模块后,这些依赖将被移除。
如何运行
- OS X Auditor 可在 python >= 2.7.2(2.7.9 也可以)下正常运行。由于 plist 的问题,目前不支持其他版本的 python。
- OS X Auditor 会尽量支持最新的 OS X 版本,并在旧版 OS X 上尽力工作。
- 如果您想在运行的系统上使用它,必须以 root 身份(或通过 sudo)运行,否则无法访问某些系统文件和其他用户的文件。
- 如果您通过环境变量使用 API 密钥(见下文),则需使用
sudo -E 来使用用户的环境变量。
输入 osxauditor.py -h 查看所有可用选项,然后使用所选选项运行。
例如 [sudo -E] python osxauditor.py -a -m -l localhashes.db -H log.html
设置环境变量
VirusTotal API:
export VT_API_KEY=aaaabbbbccccddddeeee
变更日志
0.4.3
0.4.2
0.4.1
- 变更:在 LaunchAgentPlist 中搜索通用后门
0.4
- 新增:从系统日志中提取事件(开机/关机、休眠/唤醒、sudo 命令、USB 设备、tty 打开/关闭),并创建(尚不可读的)时间线(-e/eventlogs)
- 新增:提取用户的登录项
- 新增:提取用户的最近项
- 新增:从 Safari 工件中提取 LastSession
- 新增:提取系统组和用户的详细信息
- 修复:错误的 os.path.join() 调用
- 修复:递归 ParsePackagesDir() 中的错误
0.3.1
- 新增:提供被审计系统的系统名称、版本和构建号
- 新增:分析已安装应用程序的能力(-i/--installedapps)
- 新增:从 Google Chrome 工件中提取归档历史记录
- 新增:人类可读的 HTML 日志报告 :)
- 修复:HTMLLog() 和 SYSLOGLog() 现在能够处理异常
- 修复:ParsePackagesDir() 现在是递归的,并且只尝试解析应用程序或内核扩展。同时增加了一些 DEBUG 输出
- 修复:大幅改进 UTF-8/UNICODE 处理
- 修复:ParsePackagesDir() 中忽略 .DS_Store 和 .localized 文件
0.3
- 新增:通过 -b/--browsers 解析 Google Chrome 工件(历史记录和归档历史记录、Cookie、登录数据、最常访问站点、Web 数据、HTML5 数据库和本地存储)
- 新增:从机场偏好设置中提取被审计系统连接过的 Wi-Fi AP,并尝试使用 Geomena 进行地理定位(-A/--airportprefs)。必须使用 -g/--wifiapgeolocate 启用地理定位(或在代码中将 GEOLOCATE_WIFI_AP 设置为 True)。
- 新增:提取用户的社交和电子邮件账户(-U/--usersaccounts)
- 修复:能够处理锁定的 SQLite 数据库,尤其是在审计实时系统时
- 修复:移除哈希重复项
- 修复:更好地识别 HTML 输出中的 md5
- 变更:如果某个部分(启动项、包目录、数据库表等)为空,则明确说明,以澄清输出
- 变更:下载工件(-d/--downloads)现在包含新旧 Mail.app 的默认下载目录
0.2.1
- 变更/修复:实现 BigFileMd5() 函数以哈希非常大的文件,避免 MemoryError 异常并减少内存占用
- 修复:ParseQuarantines() 中来自 LSQuarantineEvent 的 UTF-8 条目
0.2
- 新增:将结果发送到远程 syslogd 服务器的能力(-S)
- 新增:创建被审计系统上所有日志文件的 zip 包的能力(-z)
- 变更:启动工件的分析现在包括旧的、已弃用的 StartupItems
- 变更:启动工件的分析现在包括 ScriptingAdditions
- 变更:隔离工件的分析现在包括 Mac OS X <= 10.6 系统的旧版 QuarantineEvents
- 变更:通过 Python ⟷ Objective-C 桥接(PyObjC)和 OS X Foundation 大幅改进 plist 处理
- 变更:部分选项参数有变化(-t, -l)
- 变更:许可证从 CC 改为 GPL
- 变更:调试级别在输出日志中更加一致
- 变更:对 Bootstrap CSS 做了小改动
- 变更:VirusTotal 查询现在采用批量模式
- 修复:ParseLaunchAgents() 中对同时包含 Program 和 ProgramArguments 键的 plist 文件的处理错误
0.1
设计与能力

工件
用户
-
Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
-
Library/Preferences/com.apple.LaunchServices.QuarantineEvents
-
Library/Preferences/com.apple.loginitems.plist
-
Library/Mail Downloads/
-
Library/Containers/com.apple.mail/Data/Library/Mail Downloads
-
Library/Accounts/Accounts3.sqlite
-
Library/Containers/com.apple.mail/Data/Library/Mail/V2/MailData/Accounts.plist
-
Library/Preferences/com.apple.recentitems.plist
-
Firefox
- Library/Application Support/Firefox/Profiles/
- cookies.sqlite
- downloads.sqlite
- formhistory.sqlite
- places.sqlite
- signons.sqlite
- permissions.sqlite
- addons.sqlite
- extensions.sqlite
- content-prefs.sqlite
- healthreport.sqlite
- webappsstore.sqlite
- Library/Safari/
- Downloads.plist
- History.plist
- TopSites.plist
- LastSession.plist
- Databases
- LocalStorage
- Library/Application Support/Google/Chrome/Default/
- History
- Archived History
- Cookies
- Login Data
- Top Sites
- Web Data
- databases
- Local Storage
系统
- /System/Library/LaunchAgents/
- /System/Library/LaunchDaemons/
- /System/Library/ScriptingAdditions/
- /System/Library/StartupItems/Library/ScriptingAdditions/
- /System/Library/Extensions/
- /System/Library/CoreServices/SystemVersion.plist
- /Library/LaunchAgents/
- /Library/LaunchDaemons/
- /Library/StartupItems/
- /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
- /Library/logs
- /var/log
- /etc/localtime
- StartupParameters.plist
- /private/var/db/dslocal/nodes/Default/groups/admin.plist
- /private/var/db/dslocal/nodes/Default/users
待办事项
- 从 /private/var/db/dslocal/nodes/Default/users 提取用户信息
相关工作
Disk Arbitrator
Disk Arbitrator 是一款 Mac OS X 取证工具,旨在帮助用户在执行磁盘设备镜像时确保遵循正确的取证流程。Disk Arbitrator 本质上是磁盘仲裁框架的用户界面,该框架允许程序参与块存储设备的管理,包括文件系统的自动挂载。启用后,Disk Arbitrator 将阻止文件系统的挂载,以避免以读写方式挂载而破坏证据的完整性。
https://github.com/aburgh/Disk-Arbitrator
Volafox
volafox,即“Mac OS X 内存分析工具包”,基于python 2.x 开发
https://code.google.com/p/volafox/
Mandiant Memoryze(tm) for the Mac
Mac 版 Memoryze 是一款免费的内存取证软件,可帮助事件响应人员在 Mac 上发现内存中的恶意内容。Mac 版 Memoryze 可以获取和/或分析内存镜像。分析可以在离线内存镜像上或在线系统上进行。
http://www.mandiant.com/resources/download/mac-memoryze
Volatility MacMemoryForensics
https://code.google.com/p/volatility/wiki/MacMemoryForensics
许可证
OS X Auditor
Copyright (C) 2013-2015 Jean-Philippe Teissier
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
Bootstrap 和 JQuery 拥有各自的 GPL 兼容许可证。