一个用来回答“那个恶意软件是怎么来的?”
osxcollector的Python项目详细描述
OSXcollector手册
OSXcollector是OSX的法医证据收集和分析工具包。
法医采集
集合脚本在可能受感染的计算机上运行,并输出一个描述目标计算机的json文件。osxcollector从plist、sqlite数据库和本地文件系统收集信息。
法医分析
有了鉴证收集,分析员可以回答这样的问题:
- 这台机器感染了吗?
- 那个恶意软件是怎么来的?
- 如何预防和检测进一步的感染?
yelp自动化了大多数osxcollector运行的分析,将其输出转换为一个易于阅读和操作的摘要,其中只包含可疑的内容。查看osxcollector输出过滤器项目,了解如何充分利用osxcollector的自动输出分析。
执行收集
osxcollector.py
是一个单独的python文件,运行时不依赖于标准的osx机器。这使得在任何机器上运行collection都变得非常容易——不用担心brew、pip、配置文件或环境变量。只需将单个文件复制到计算机上并运行它:
sudo osxcollector.py
就是全部。
如果您刚刚克隆了github存储库,那么osxcollector.py
位于osxcollector/
目录中,因此需要将其运行为:
重要提示:请确保Mac OS X计算机上的python
命令使用系统附带的默认python解释器,并且不会被重写,例如被通过brew安装的python版本重写。osxcollector依赖于一对用于os x库的本地python绑定,这些绑定在其他python版本中可能不可用,而在系统上最初安装的版本中可能不可用。
或者,可以运行osxcollector.py
显式指定要使用的python版本:
收集器的json输出以及一些有用的文件(如系统日志)已打包到a.tar.gz中,以便移交给分析人员。
osxcollector.py
因此有很多有用的选项可以更改colle的方式动作工作:
-i事件前缀
/--id=事件前缀
: 设置用作输出文件前缀的标识符。默认值为osxcollect
$ sudo osxcollector.py -i IncontinentSealord Wrote 35394 lines. Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
有创意地使用事件名称,这样就更容易在痛苦中开怀大笑。
-p根路径
/--路径=根路径
: 设置要在其上运行集合的文件系统根目录的路径。默认值为/
。这非常适合在磁盘图像上运行收藏。$ sudo osxcollector.py -p '/mnt/powned'
-s节
/--节=节
: 只运行完整集合的一部分。可以指定多次。章节和小节的完整列表为:版本
系统信息
kext
启动
启动代理
脚本添加
启动项
登录项
应用程序
应用程序
安装历史记录
隔离
下载
下载
电子邮件下载
旧电子邮件下载
chrome
历史记录
存档的历史记录
饼干
登录数据
热门网站
网络数据
数据库
本地存储
首选项
firefox
饼干
下载
formhistory
历史记录
签名
权限
加载项
扩展名
内容优先
健康报告
网络应用商店
json_文件
旅行
下载
历史记录
扩展名
数据库
本地存储
扩展名文件
帐户
系统管理员
系统用户
社交帐户
最近的项目
邮件
完整哈希
$ sudo osxcollector.py -s 'startup' -s 'downloads'
-c
/--收集cookies
: 收集cookies的值。 默认情况下,osxcollector不会转储cookie的值,因为它可能包含敏感信息(例如会话id)。-l
/--收集本地存储: 收集存储在Web浏览器本地存储中的值。 默认情况下,OSXCollector不会转储这些值,因为它们可能包含敏感信息。
-d
/--调试: 启用详细输出和python断点。如果OSxCollector有问题,请尝试此操作。
$ sudo osxcollector.py -d
收藏详情
收集器输出一个包含所有收集的工件的.tar.gz
。归档文件包含一个json文件,其中包含大部分信息。此外,还包括一组来自目标系统日志的有用日志。
常用键
每个记录
json文件的每一行记录1条信息。每个json记录中都有一些常见的键:
OSxCollector事件ID
:每个记录共享的唯一ID。OSxCollector_部分
:此记录保存的部分或数据类型。osxcollector_小节
:此记录所保存数据类型的小节或更详细的描述符。
文件记录
对于代表文件的记录,有许多有用的键:
atime
:文件访问时间。ctime
:文件创建时间。mtime
:文件修改时间。文件路径
:文件的绝对路径。md5
:文件内容的md5哈希。sha1
:sha1文件内容的哈希值。sha2
:文件内容的sha2散列。
对于代表下载文件的记录:
xattr wherefrom:包含下载文件的源URL和引用URL的列表。
xattr隔离:描述哪个应用程序下载了文件的字符串。
sqlite记录
对于表示sqlite数据库行的记录:
osxcollector_table_name
:行来自的表名。osxcollector_db_path
:指向sqlite文件的绝对路径。
对于表示与特定用户关联的数据的记录:
osxcollector_用户名
:用户的名称
时间戳
osxcollector尝试将时间戳转换为人类可读的日期/时间字符串,格式为yyyy-mm-dd hh:mm:ss
。它使用启发式方法自动识别各种时间戳:
- 从纪元开始的秒数
- 自纪元起的毫秒数
- 2001-01-01之后的秒数
- 1601-01-01之后的秒数
节
版本
部分
当前版本的OSxCollector。
系统信息
部分
收集有关系统的基本信息:
- 系统名称
- 节点名称
- 释放
- 版本
- 机器
kext
部分
从以下位置收集内核扩展:
/system/library/extensions
/库/扩展名
启动
部分
收集有关 启动代理, 启动守护进程,编写附加脚本, 启动项 以及其他登录项:
/system/library/launchagents
/system/library/launchdaemons
/library/launchagents
~/library/launchagents
/library/launchdaemons
/系统/库/脚本添加
/library/scriptingadditions
/系统/库/启动项
/库/启动项
~/library/preferences/com.apple.loginitems.plist
有关Max OS X启动的更多信息,请访问: http://www.malitive-streams.com/article/mac廑osx廑u startup.pdf
应用程序
部分
散列已安装的应用程序并从以下位置收集安装历史记录:
/应用程序
~/应用程序
/library/receipts/installhistory.plist
检疫
部分
隔离基本上是显示"你确定要运行此程序吗?"当用户试图打开从Internet下载的文件时。 有关更多详细信息,请查看苹果检疫支持说明: http://support.apple.com/kb/ht3662
本节还收集基于xprotect哈希的恶意软件检查的信息
用于隔离文件。层数为:
/系统/library/coreservices/coretypes.bundle/contents/resources/xprotect.plist
xprotect还为internet插件添加了最低版本。那层是在:
/system/library/coreservices/coretypes.bundle/contents/resources/xprotect.meta.plist
下载
部分
散列所有用户下载的文件:
~/下载
~/library/mail下载
~/library/containers/com.apple.mail/data/library/mail下载
chrome
部分
从Google Chrome Web浏览器收集以下信息:
- 历史记录
- 存档的历史记录
- 饼干
- 扩展名
- 登录数据
- 顶级网站
- 网络数据
此数据从 在Firefox配置文件中从不同的SQLite数据库收集信息: 此信息摘自 有关Firefox配置文件文件夹的详细信息,请参阅
http://kb.mozillazine.org/profile\u folder\uu firefox 在safari中从不同plist和sqlite数据库收集信息
简介: 收集有关用户帐户的信息: 散列邮件应用程序目录中的文件: 散列磁盘上的所有文件。所有的。默认情况下不会运行。必须用以下方式触发: 法医分析是一门艺术,也是一门科学。在阅读osxcollector的输出时,每个分析师都会看到一些不同的情况。这是分析变得有趣的一部分。 通常,收集是在目标计算机上执行的,因为有些事情是不可靠的:反病毒程序发现了一个它不喜欢的文件,deep packet inspect观察到一个callout,endpoint monitoring注意到一个新的启动项。这个初始警报的详细信息—文件路径、时间戳、哈希、域、IP等等—足够开始了。 只需在时间戳前后几分钟变灰即可,效果非常好: 在里面。像jq这样的工具可以非常有助于实现一些奇特的输出: osxcollector output filters项目包含处理和转换osxcollector输出的过滤器。过滤器的目标是使分析OSxCollector输出变得容易。 osxcollector的功能存储在一个文件中: 确保所有的osxcollector测试在编辑源代码之前通过。您可以使用: 对源代码进行更改后,再次运行 这项工作是在GNU通用公共许可下获得许可的,并派生了https://github.com/jipegit/osxauditor" rel="nofollow">https://github.com/jipegit/osxauditor 想了解更多有关OSX取证的信息吗? 其他一些有趣的工具:~/library/application support/google/chrome/default中提取
firefox
部分
~/library/application support/firefox/profiles
旅行
部分账户
部分/private/var/db/dslocal/nodes/default/groups/admin.plist
/private/var/db/dslocal/nodes/default/users
~/library/accounts/accounts3.sqlite
~/library/preferences/com.apple.recent items.plist
邮件
部分~/library/mail
~/library/mail下载
完整哈希
部分$ sudo osxcollector.py -s full_hash
基本手动分析
时间戳
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'
浏览器历史记录
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
0
单个用户
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
1
自动分析
开发技巧
osxcollector.py
。收集器应该在OS X的裸机安装上运行,而不需要任何附加的软件包或依赖项。进行测试
make test
以验证您的更改没有中断任何测试。许可证
博客文章
演示文稿
外部演示
资源
推荐PyPI第三方库