GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

Yelp

osxcollector – OS X用のフォレンジックな証拠収集と解析ツールキット

投稿日:

OS X用のフォレンジックな証拠収集と解析ツールキット http://yelp.github.io/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.pyosxcollector/ディレクトリの中にあるので、次のように実行する必要があります。

$ 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の派生物の下でライセンスされています

ブログの投稿

プレゼンテーション

外部プレゼンテーション

リソース

OS Xのフォレンジックについてもっと知りたいですか?

その他の興味深いツールのいくつか:

  • KnockKnock – KnockKnockは、起動時に自動的に実行するように設定された永続的なOS Xバイナリを表示するコマンドラインPythonスクリプトです。
  • Grr – Googleの迅速な対応:インシデント対応のためのリモートのライブフォレンジック
  • osquery – SQLを使用したオペレーティングシステムの計測、監視、および分析







-Yelp

執筆者: