はじめに
刑事ドラマとかで事件現場を鑑識が証拠保全しているけれど,セキュリティの侵害を受けたパソコンの証拠を保全するのがフォレンジック. 今回は,Mac用のフォレンジックツールのAutoMacTCを使って,何ができるか確認してみる.
AutoMacTC(Automated macOS Triage Collector)
AutoMacTCは,セキュリティツール会社のCrowdStrike社が提供している無料のツールで,Pythonで作成されている. AutoMacTCで取得したフォレンジックデータは,分析者が利用しやすいようにレポートされるらしい.
入手
githubで公開されている.
AutoMacTC: Automated Mac Forensic Triage Collector
https://github.com/CrowdStrike/automactc
githubからプログラムを取得する。
mewtwo:~ ujpadmin$ git clone https://github.com/CrowdStrike/automactc🆑 Cloning into 'automactc'... remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (6/6), done. remote: Total 255 (delta 1), reused 1 (delta 0), pack-reused 249 Receiving objects: 100% (255/255), 238.49 KiB | 409.00 KiB/s, done. Resolving deltas: 100% (118/118), done. mewtwo:~ ujpadmin$
cloneした内容を確認.
mewtwo:~ ujpadmin$ cd automactc🆑 mewtwo:automactc ujpadmin$ ls -la🆑 total 112 drwxr-xr-x 9 ujpadmin staff 306 5 18 16:35 . drwxr-xr-x+ 17 ujpadmin staff 578 5 18 16:35 .. drwxr-xr-x 12 ujpadmin staff 408 5 18 16:35 .git -rw-r--r-- 1 ujpadmin staff 5200 5 18 16:35 CHANGELOG.md -rw-r--r-- 1 ujpadmin staff 1288 5 18 16:35 LICENSE -rw-r--r-- 1 ujpadmin staff 13687 5 18 16:35 README.md -rw-r--r-- 1 ujpadmin staff 24736 5 18 16:35 automactc.py🈁 drwxr-xr-x 6 ujpadmin staff 204 5 18 16:35 licenses drwxr-xr-x 27 ujpadmin staff 918 5 18 16:35 modules mewtwo:automactc ujpadmin$
Pythonのインストール先と、バージョンを確認.
mewtwo:automactc ujpadmin$ which python🆑 /usr/bin/python🈁 mewtwo:automactc ujpadmin$ /usr/bin/python --version🆑 Python 2.7.16🈁 mewtwo:automactc ujpadmin$
モジュールを確認する
AutomacTCによるフォレンジックは,モジュール制のようで,どのような情報を取得できるか,モジュール一覧を取得することができる.
mewtwo:automactc ujpadmin$ sudo /usr/bin/python automactc.py -l🆑 Modules available for use: pslist (v1.0.0) lsof (v1.0.0) netstat (v1.0.0) asl (v1.0.2) autoruns (v1.0.2) bash (v1.0.2) chrome (v1.0.4) coreanalytics (v1.0.2) dirlist (v1.0.2) firefox (v1.0.2) installhistory (v1.0.0) mru (v1.0.2) quarantines (v1.0.2) quicklook (v1.0.1) safari (v1.0.3) spotlight (v1.0.2) ssh (v1.0.2) syslog (v1.0.0) systeminfo (v1.0.4) terminalstate (v1.0.0) users (v1.1.0) utmpx (v1.0.0) mewtwo:automactc ujpadmin$
名前から想像できるようなものもあれば,macOS独自実装のQuickLookは,何をフォレンジックするのか想像もつかないけれど.
レポートの調整
収集を実行されたモジュールごとに,AutomacTCはログファイルを作成する. デフォルトの出力形式はCSVだが,-fmtで,json形式を指定することができる.
automactc.py -m all -fmt json
また,-ntオプションを使うことで,取得したデータのファイルを圧縮しないように設定できる.
全ての情報を取得する
最初は,全ての情報を取得してみる.
mewtwo:automactc ujpadmin$ sudo /usr/bin/python automactc.py -m all🆑 Password:🆑 automactc : INFO Started automactc (v. 1.0.0.3) at 2020-05-18 07:45:38.767498+00:00. automactc : INFO Going to run in low CPU priority mode. automactc : INFO RunID: QveKGc4MVw automactc : INFO Running PSLIST (v1.0.0) automactc : ERROR mod_live_1_pslist_v100 failed: ['Traceback (most recent call last):\n File "automactc.py", line 351, in modExec\n import_module(modImport)\n File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module\n __import__(name)\n File "/Users/ujpadmin/automactc/modules/mod_live_1_pslist_v100.py", line 74, in <module>\n module()\n File "/Users/ujpadmin/automactc/modules/mod_live_1_pslist_v100.py", line 59, in module\n proc_start = parser.parse(\' \'.join(item[5:9])).replace(tzinfo=None).isoformat()+\'Z\'\n File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py", line 697, in parse\n return DEFAULTPARSER.parse(timestr, **kwargs)\n File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil/parser.py", line 310, in parse\n ret = default.replace(**repl)\nValueError: hour must be in 0..23\n'] automactc : INFO Running LSOF (v1.0.0) automactc : INFO Running NETSTAT (v1.0.0) automactc : INFO Running ASL (v1.0.2) automactc : INFO Running AUTORUNS (v1.0.2) automactc : INFO Running BASH (v1.0.2) automactc : INFO Running CHROME (v1.0.4) automactc : INFO Running COREANALYTICS (v1.0.2) automactc : INFO Running DIRLIST (v1.0.2) dirlist : INFO Wrote 224230 lines in 0:09:48.715896 automactc : INFO Running FIREFOX (v1.0.2) automactc : ERROR mod_firefox_v102 failed: ['Traceback (most recent call last):\n File "automactc.py", line 351, in modExec\n import_module(modImport)\n File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module\n __import__(name)\n File "/Users/ujpadmin/automactc/modules/mod_firefox_v102.py", line 241, in <module>\n module(firefox_location)\n File "/Users/ujpadmin/automactc/modules/mod_firefox_v102.py", line 215, in module\n get_firefox_version(c)\n File "/Users/ujpadmin/automactc/modules/mod_firefox_v102.py", line 56, in get_firefox_version\n ver = config.get(\'Compatibility\',\'lastversion\')\n File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ConfigParser.py", line 607, in get\n raise NoSectionError(section)\nNoSectionError: No section: \'Compatibility\'\n'] automactc : INFO Running INSTALLHISTORY (v1.0.0) automactc : INFO Running MRU (v1.0.2) automactc : INFO Running QUARANTINES (v1.0.2) automactc : INFO Running QUICKLOOK (v1.0.1) automactc : INFO Running SAFARI (v1.0.3) automactc : INFO Running SPOTLIGHT (v1.0.2) automactc : INFO Running SSH (v1.0.2) automactc : INFO Running SYSLOG (v1.0.0) automactc : INFO Running SYSTEMINFO (v1.0.4) automactc : INFO Running TERMINALSTATE (v1.0.0) automactc : INFO Running USERS (v1.1.0) automactc : INFO Running UTMPX (v1.0.0) automactc : INFO Finished program at 2020-05-18 07:55:36.612120+00:00. automactc : INFO Total runtime: 0:09:57.844622. mewtwo:automactc ujpadmin$
一部エラーになった,5分程度かかった.
取得したデータを確認する
AutoMacTCを実行した結果は,GZIPファイルで保存されているので,その中身を確認する.
$ ls -lah🆑 total 10M drwxr-xr-x 13 ujpadmin staff 442 5 19 01:09 . drwxr-xr-x+ 22 ujpadmin staff 748 5 19 00:57 .. -rw-r--r-- 1 ujpadmin staff 8.1K 5 19 00:04 .DS_Store drwxr-xr-x 12 ujpadmin staff 408 5 18 16:35 .git -rw-r--r-- 1 ujpadmin staff 5.1K 5 18 16:35 CHANGELOG.md -rw-r--r-- 1 ujpadmin staff 1.3K 5 18 16:35 LICENSE -rw-r--r-- 1 ujpadmin staff 14K 5 18 16:35 README.md -rw-r--r-- 1 root staff 9.9M 5 18 23:58 forensics_tar.gz🈁 -rw-r--r-- 1 ujpadmin staff 25K 5 18 16:35 automactc.py drwxr-xr-x 6 ujpadmin staff 204 5 18 16:35 licenses drwxr-xr-x 50 ujpadmin staff 1.7K 5 18 16:55 modules drwxr-xr-x 14 ujpadmin staff 476 5 18 18:14 pokemonsay drwxr-xr-x 5 ujpadmin staff 170 5 18 17:12 report [mewtwo:ujpadmin 01:09:51 ~/automactc ] $
tar xvfでGZIPファイルを展開する. 展開したファイルは次の通り.(ファイル名が長いのでリネーム)
$ ls -la🆑 total 77584 drwxr-xr-x 30 ujpadmin staff 1020 5 19 01:10 . drwxr-xr-x 13 ujpadmin staff 442 5 19 01:10 .. -rw-r--r-- 1 ujpadmin staff 1154822 5 18 23:48 forensics_asl.csv -rw-r--r-- 1 ujpadmin staff 260688 5 18 23:48 forensics_autoruns.csv -rw-r--r-- 1 ujpadmin staff 20971 5 18 23:48 forensics_bash.csv -rw-r--r-- 1 ujpadmin staff 160 5 18 23:48 forensics_browser_chrome_downloads.csv🈁 -rw-r--r-- 1 ujpadmin staff 1390 5 18 23:48 forensics_browser_chrome_history.csv🈁 -rw-r--r-- 1 ujpadmin staff 253 5 18 23:48 forensics_browser_chrome_profiles.csv🈁 -rw-r--r-- 1 ujpadmin staff 383 5 18 23:58 forensics_browser_firefox_downloads.csv🈁 -rw-r--r-- 1 ujpadmin staff 7657 5 18 23:58 forensics_browser_firefox_history.csv🈁 -rw-r--r-- 1 ujpadmin staff 3499 5 18 23:58 forensics_browser_safari_downloads.csv🈁 -rw-r--r-- 1 ujpadmin staff 944727 5 18 23:58 forensics_browser_safari_history.csv🈁 -rw-r--r-- 1 ujpadmin staff 42074 5 18 23:48 forensics_coreanalytics.csv -rw-r--r-- 1 ujpadmin staff 63843663 5 18 23:58 forensics_dirlist.csv -rw-r--r-- 1 ujpadmin staff 7143 5 18 23:58 forensics_installhistory.csv -rw-r--r-- 1 ujpadmin staff 1213133 5 18 23:48 forensics_lsof.csv -rw-r--r-- 1 ujpadmin staff 14770 5 18 23:58 forensics_mru.csv -rw-r--r-- 1 ujpadmin staff 2335 5 18 23:48 forensics_netstat.csv -rw-r--r-- 1 ujpadmin staff 29418 5 18 23:48 forensics_pslist.csv -rw-r--r-- 1 ujpadmin staff 4193 5 18 23:58 forensics_quarantines.csv -rw-r--r-- 1 ujpadmin staff 29264 5 18 23:58 forensics_quicklook.csv -rw-r--r-- 1 ujpadmin staff 25970 5 18 23:58 forensics_runtime.log -rw-r--r-- 1 ujpadmin staff 42 5 18 23:58 forensics_spotlight.csv -rw-r--r-- 1 ujpadmin staff 45 5 18 23:58 forensics_ssh.csv -rw-r--r-- 1 ujpadmin staff 833361 5 18 23:58 forensics_syslog.csv -rw-r--r-- 1 ujpadmin staff 357 5 18 23:58 forensics_systeminfo.csv -rw-r--r-- 1 ujpadmin staff 601157 5 18 23:58 forensics_terminalstate.csv -rw-r--r-- 1 ujpadmin staff 4329 5 18 23:58 forensics_users.csv -rw-r--r-- 1 ujpadmin staff 649 5 18 23:58 forensics_utmpx.csv -rw-r--r-- 1 root staff 10327108 5 18 23:58 forensics_tar.gz $
ブラウザは,Safari,Chrome,Firefoxに対応.Microsoft Edgeなどには対応してない模様.
ログファイルの説明
asl | Apple System Log Managerのログファイル. |
autoruns | launchdによる自動起動プロセスのログ. |
bash | コマンドヒストリを実行日時ごとに取得. |
browser_chrome_downloads | Google Chromeのダウンロードリスト. |
browser_chrome_history | Google Chromeの訪問履歴. |
browser_chrome_profiles | Google Chromeのプロファイル. |
browser_firefox_downloads | Mozilla Firefoxのダウンロードリスト. |
browser_firefox_history | Mozilla Firefoxの訪問履歴. |
browser_safari_downloads | Safariのダウンロード履歴. |
browser_safari_history | Safariの訪問履歴 |
coreanalytics | Apple診断プログラムの実行内容 |
dirlist | ディスク全体のファイルとディレクトリリスト. |
installhistory | プログラムのインストール履歴. |
lsof | コマンド実行時のファイルオープンリスト. |
mru | SFLとMRUのplistを解析.SFLはSharedFileList.MRUは,Most Recentry Usedのことで,最近のアプリ実行履歴. |
netstat | ネットワーク情報 |
pslist | プロパティリスト. |
quarantines | ダウンロードしたファイルの状態.一部は,WindowsのZoneInfoに近い感じ. |
quicklook | Quicklooksのデータベース. |
runtime.log | AutoMacTCの実行ログ? |
spotlight | macOSに付いている全文検索エンジンのSpotLightのトップ検索. |
ssh | 各ユーザーのknown_hostsおよびauthorized_keysファイルの解析 |
syslog | macosの場合,syslog.logファイルの解析. |
systeminfo | 現在のIPアドレスやMacのシリアルNo.やホスト名など. |
terminalstate | Terminalの保存状態のファイル. |
users | システム上の現在のユーザーと削除されたユーザーのリスト |
utmpx | 端末上のユーザーセッションのリスト) |