一个用来回答“那个恶意软件是怎么来的?”

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浏览器收集以下信息:

  • 历史记录
  • 存档的历史记录
  • 饼干
  • 扩展名
  • 登录数据
  • 顶级网站
  • 网络数据

此数据从~/library/application support/google/chrome/default中提取

firefox部分

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

  • 饼干
  • 下载
  • 形成历史
  • 历史记录
  • 签名
  • 权限
  • 附加组件
  • 扩展名
  • 内容首选项
  • 健康报告
  • webapps商店

此信息摘自~/library/application support/firefox/profiles

有关Firefox配置文件文件夹的详细信息,请参阅 http://kb.mozillazine.org/profile\u folder\uu firefox

旅行部分

在safari中从不同plist和sqlite数据库收集信息 简介:

  • 下载
  • 历史记录
  • 扩展名
  • 数据库
  • 本地存储
账户部分

收集有关用户帐户的信息:

  • 系统管理员:/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

基本手动分析

法医分析是一门艺术,也是一门科学。在阅读osxcollector的输出时,每个分析师都会看到一些不同的情况。这是分析变得有趣的一部分。

通常,收集是在目标计算机上执行的,因为有些事情是不可靠的:反病毒程序发现了一个它不喜欢的文件,deep packet inspect观察到一个callout,endpoint monitoring注意到一个新的启动项。这个初始警报的详细信息—文件路径、时间戳、哈希、域、IP等等—足够开始了。

时间戳

只需在时间戳前后几分钟变灰即可,效果非常好:

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

浏览器历史记录

在里面。像jq这样的工具可以非常有助于实现一些奇特的输出:

$ 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 output filters项目包含处理和转换osxcollector输出的过滤器。过滤器的目标是使分析OSxCollector输出变得容易。

开发技巧

osxcollector的功能存储在一个文件中:osxcollector.py。收集器应该在OS X的裸机安装上运行,而不需要任何附加的软件包或依赖项。

确保所有的osxcollector测试在编辑源代码之前通过。您可以使用:进行测试

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

许可证

这项工作是在GNU通用公共许可下获得许可的,并派生了https://github.com/jipegit/osxauditor" rel="nofollow">https://github.com/jipegit/osxauditor

博客文章

演示文稿

外部演示

资源

想了解更多有关OSX取证的信息吗?

其他一些有趣的工具:

  • knockknock是一个命令行python脚本,显示设置为在每次启动时自动执行的持久os x二进制文件。
  • grr-谷歌快速响应:事件响应的远程现场取证
  • osquery-sql驱动的操作系统检测、监视和分析

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将文本文件和代码数据读入多维数组   java如何更改列表视图的文本颜色   协议缓冲区解析。Java中的原型文件   java如何在camel中使用加号?   java JAXRS/Jersey资源路径会尊重继承吗?   单击提交按钮时的java重定向由于某些原因被阻止。(JSF2.0)   Java 1.6和桌面的windows问题。开()   数组Java返回(值)错误   java如果给定单个行和列的总和,如何用随机数填充m x n矩阵?   java枚举抛出构造函数错误   java自动启动AppEngine灵活服务器   用于超大数快速乘法的biginteger Java库   java为什么会发生这种情况?(使用数组、增量)   java Wicket 1.5页面参数为空   web服务是连接。连接java。木卫一。URL有“+”时FileNotFoundException   java语法中用于区分>>(右移运算符)和嵌套泛型List<List<String>>的技巧   客户端服务器BufferedWriter未写入。txt文件[JAVA]   jodatime转换java。双击org。乔达。时间瞬间