Github: https://github.com/Yelp/osxcollector
OSXCollectorマニュアル
OSXCollectorは、OSXの法医学的証拠収集ツールです。
フォレンジックコレクション
コレクションスクリプトは、潜在的に感染したマシン上で実行され、ターゲットマシンを記述するJSONファイルを出力します。 OSXCollectorは、plist、SQLiteデータベース、およびローカルファイルシステムから情報を収集します。
フォレンジック分析
法医学コレクションを武器に、アナリストは次のような質問に答えることができます:
- このマシンは感染していますか?
- そのマルウェアはどうやってそこに行きましたか?
- どのようにして感染を防止し、さらに検出することができますか?
Yelpは、ほとんどのOSXCollectorの分析を自動化して、その出力を、疑わしいものだけを簡単に読みやすく実行可能な要約に変換します。 自動OSXCollector出力分析を最大限に活用する方法を学ぶには、 OSXCollector Output Filtersプロジェクトを参照してください。
コレクションの実行
osxcollector.py
は、標準のOSXマシンに依存せずに動作する単一のPythonファイルです。 これにより、任意のマシン上でコレクションを実行することが非常に簡単になります。ビール、ピップ、設定ファイル、または環境変数を使用することは避けられません。 1つのファイルをマシンにコピーして実行するだけです。
sudo osxcollector.py
はそれsudo osxcollector.py
です。
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
GitHubリポジトリをクローンしたばかりの場合、 osxcollector.py
はosxcollector/
ディレクトリの中にあるので、次のように実行する必要があります。
$ sudo osxcollector/osxcollector.py
重要: Mac OS Xマシンのpython
コマンドが、システムに付属のデフォルトのPythonインタプリタを使用していることを確認してください。たとえば、brewを使用してインストールされたPythonバージョンなどで上書きされません。 OSXCollectorは、OS Xライブラリ用のいくつかのネイティブPythonバインディングに依存しています。これは、システムにもともとインストールされているPython以外のバージョンでは利用できない可能性があります。 あるいは、使用するPythonのバージョンを明示的に指定してosxcollector.py
を実行することもできます。
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
コレクタのJSON出力は、システムログのような有用なファイルとともに、アナリストへのハンドオフのために.tar.gzにバンドルされています。
osxcollector.py
には、コレクションの仕組みを変更するための多くの便利なオプションがあります。
-
-i INCIDENT_PREFIX
/--id=INCIDENT_PREFIX
:出力ファイルの接頭辞として使用される識別子を設定します。 デフォルト値はosxcollect
です。$ sudo osxcollector.py -i IncontinentSealord Wrote 35394 lines. Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
インシデント名を使用して創造的になると、痛みを笑うことが容易になります。
-
-p ROOTPATH
/--path=ROOTPATH
:コレクションを実行するファイルシステムのルートへのパスを設定します。 デフォルト値は/
です。 これは、ディスクイメージの収集を実行するのに最適です。$ sudo osxcollector.py -p '/mnt/powned'
-
-s SECTION
/--section=SECTION
:完全なコレクションの一部だけを実行します。 複数回指定することができます。 セクションとサブセクションの完全なリストは次のとおりです。-
version
-
system_info
-
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
$ sudo osxcollector.py -s 'startup' -s 'downloads'
-
-
-c
/--collect-cookies
:クッキーの値を収集します。 デフォルトでは、OSXCollectorは機密情報(セッションIDなど)を含む可能性があるため、クッキーの値をダンプしません。 -
-l
/--collect-local-storage
:ウェブブラウザのローカルストレージに保存されている値を収集します。 デフォルトでは、OSXCollectorは機密情報を含む可能性があるため、値をダンプしません。 -
-d
/--debug
:冗長な出力とPythonのブレークポイントを有効にします。 OSXCollectorに問題がある場合は、これを試してみてください。$ sudo osxcollector.py -d
コレクションの詳細
コレクタは、収集されたすべてのアーティファクトを含む.tar.gz
を出力します。 アーカイブには大部分の情報を含むJSONファイルが含まれています。 さらに、ターゲットシステムログからの有用なログのセットも含まれています。
共通鍵
すべてのレコード
JSONファイルの各行には1つの情報が記録されます 。 すべての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
の形式で人間が読める日付/時刻文字列に変換しようとします。 ヒューリスティックを使用して、さまざまなタイムスタンプを自動的に識別します。
- エポックからの秒数
- エポックからのミリ秒
- 2001年1月1日以降の秒数
- 1601-01-01からの秒数
セクション
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
Max OS Xの起動に関する詳細は、こちらをご覧ください : http : //www.malicious-streams.com/article/Mac_OSX_Startup.pdf
applications
セクション
インストールされたアプリケーションをハッシュし、以下の場所からインストール履歴を収集します。
-
/Applications
-
~/Applications
-
/Library/Receipts/InstallHistory.plist
quarantines
セクション
検疫は、基本的に、「これを実行してもよろしいですか?」と表示するために必要な情報です。 ユーザーがインターネットからダウンロードしたファイルを開こうとしているときです。 詳細については、Quarantineの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ウェブブラウザから以下の情報を収集します。
- 歴史
- アーカイブされた履歴
- クッキー
- 拡張機能
- ログインデータ
- トップサイト
- Webデータ
このデータは~/Library/Application Support/Google/Chrome/Default
から抽出され~/Library/Application Support/Google/Chrome/Default
firefox
セクション
Firefoxプロファイル内のさまざまなSQLiteデータベースから情報を収集します:
- クッキー
- ダウンロード
- フォーム履歴
- 歴史
- サインオン
- アクセス許可
- アドオン
- 拡張機能
- コンテンツの設定
- 健康に関するレポート
- Webappsストア
この情報は、 ~/Library/Application Support/Firefox/Profiles
から抽出され~/Library/Application Support/Firefox/Profiles
Firefoxプロファイルフォルダの詳細については、 http://kb.mozillazine.org/Profile_folder_-_Firefoxを参照してください。
safari
セクション
Safariプロファイル内のさまざまなplistsと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
セクション
ディスク上のすべてのファイルをハッシュします。 すべての これはデフォルトでは実行されません。 次のようにトリガされなければなりません:
$ sudo osxcollector.py -s full_hash
基本的なマニュアル分析
法医学的分析は、芸術のビットと科学のビットです。 OSXCollectorからの出力を読むときには、すべてのアナリストが少し違った話をするでしょう。 それは分析を楽しくするものの一部です。
一般的には、何かが嫌なのでコレクションが実行されます。アンチウイルスは好きではないファイルを見つけ、深いパケット検査でコールアウトを観察し、エンドポイントの監視は新しいスタートアップアイテムに気付きました。 この初期アラートの詳細 – ファイルパス、タイムスタンプ、ハッシュ、ドメイン、IPなど – これで十分です。
タイムスタンプ
タイムスタンプの前後で数分間grepするだけで大丈夫です:
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'
ブラウザ履歴
それはそこにある。 jqのようなツールは素晴らしい出力をするのに非常に役立ちます:
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'
単一ユーザ
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'
自動分析
OSXCollector Output Filtersプロジェクトには、 OSXCollectorの出力を処理して変換するフィルタが含まれています。 フィルタの目的は、OSXCollectorの出力を簡単に分析できるようにすることです。
開発のヒント
OSXCollectorの機能は、1つのファイルosxcollector.pyに格納されています。 コレクタは、追加のパッケージや依存関係なしで、OS Xのネイキッドインストールで実行する必要があります。
ソースコードを編集する前に、すべてのOSXCollectorテストに合格していることを確認してください。 次のようにしてテストを実行することができます: make test
ソースコードを変更した後、再度make test
実行して、変更がテストを破らなかったことを確認します。
ライセンス
この作品は、GNU General Public Licenseとhttps://github.com/jipegit/OSXAuditorの派生物の下でライセンスされています
ブログの投稿
- OSXCollector: Ivan LeichtlingによるOS Xのフォレンジックコレクションと自動分析
プレゼンテーション
- OSXCollector: Kuba Sendor @ BruCON 0x07によるOS Xの自動フォレンジックエビデンスの収集と分析
- 腐ったリンゴを搾取する:OSXCollectorを使ったMac OS Xの自動フォレンジック&解析( Senda @ BSides Manchester 2015)
- Ivan Leichtling @ MacbrainedのAugust Meet-UpによるOSXCollector
- OSXCollector – Ivan Leichtling @ OpenNSMによるOS Xの自動フォレンジックエビデンスコレクションと分析
- OSXCollector – Ivan Leichtling @ Duo Tech Talk( ブログ記事 )によるOS Xの自動フォレンジックエビデンスコレクションと分析
外部プレゼンテーション
- OSX考古学:OSXCollectorとStrataのインディアナジョーンズになるには Chris Henderson&Justin Larson @ SAINTCon 2015
リソース
OS Xのフォレンジックについてもっと知りたいですか?
- Sarah Edward’s mac4n6.com – Macの法医学に最適なプレゼンテーション。
その他の興味深いツールのいくつか:
- KnockKnock – KnockKnockは、起動時に自動的に実行するように設定された永続的なOS Xバイナリを表示するコマンドラインPythonスクリプトです。
- Grr – Googleの迅速な対応:インシデント対応のためのリモートのライブフォレンジック
- osquery – SQLを使用したオペレーティングシステムの計測、監視、および分析