フォレンジック分析:既知のファイルの周りに修正されたすべてのファイルを探す

フォレンジック分析:既知のファイルの周りに修正されたすべてのファイルを探す

あまりきれいではないインストーラ(Adobe Acrobat Reader DC)が、私のUnix(Mac OS X)のさまざまな場所に多くのファイルをインストールしました。

この大規模なインストールプロセスの開始時にインストールされたと確信する参照ファイルがありますがApplication、このインストールプロセスは2分もかかりませんでした。

そして:

ls -lc /Application

この参照ファイルの正しい生成時間を確認できます。

-rwxrwxr-x  3 root  wheel  102 Dec 24 18:39 /Application

この情報に基づいてfind被害規模を推定する簡単なコマンドを作成しました。

find / -newermt '12/24/2015 18:37' ! -newermt '12/24/2015 18:41' -ls

この方法では、このインストーラによって変更または生成されたすべてのファイルとは異なるファイルのみが一覧表示されていることを確認できます。

(秘密は次のとおりです。find最初の5分の範囲と次の5分の範囲に対して同じことを行い、空であることを確認します。正直に言うと幸運です。静かなこの時に。 )

次の2つの便利な日付を計算するために、この方法の一般的で簡単なフォレンジックスクリプトをどのように作成できますかfind

Dec 24 18:39    →    12/24/2015 18:37, 12/24/2015 18:41

ベストアンサー1

誤ったインストーラとジャンクウェアを処理するためにこのツールが必要だったので、次のように書きました。

crater

誤動作するソフトウェアによって発生したダメージを評価します。

#!/bin/sh
# shell script to search for files created or modified around
# a reference modified file (known impact on the file system) 
# default time interval to search is 5 minutes

_cn=`basename $0`

USAGE="Usage: ${_cn} impact_reference_file [delay_around_impact_in_minutes]"

case $# in
1|2)
        _ref_file="$1"
        ;;
*)
        echo "${USAGE}" >&2
        exit 2
        ;;
esac

_ref_date=`ls -ldT "${_ref_file}" | awk '{printf ("%s %2s %s %s\n", $6, $7, $8, $9)}'`

_minutes=${2:-5}
_seconds=`expr ${_minutes} \* 60`
_format="+%m/%d/%Y %H:%M:%S"

echo "\treference date:\t${_ref_date}"

# convert reference date in seconds since the epoch
# so as to make arithmetic on it

_ref_date_epoch=`date -j -f "%b %e %T %Y" "${_ref_date}" "+%s"`
_beg_date_epoch=`expr ${_ref_date_epoch} - ${_seconds}`
_end_date_epoch=`expr ${_ref_date_epoch} + ${_seconds} + 1`
_log="/var/log/${_cn}_`date -r ${_ref_date_epoch} +%d-%m-%Y_%H:%M:%S`.log"
echo "\tlog: \t\t${_log}"

# convert back to the format for find
_beg_date=`date -r ${_beg_date_epoch} "${_format}"`
_end_date=`date -r ${_end_date_epoch} "${_format}"`

echo "\tbeginning time:\t${_beg_date}"
echo "\tending time:\t${_end_date}"

find / -xdev -newerct "${_beg_date}" ! -newerct "${_end_date}" -ls >${_log}

awk '{n++; s+=$7}END{printf ("\timpact:\t\t%d files\t\t%d bytes\n", n, s) }' ${_log}

インストール方法:

  • 上記のソースコードを貼り付けてください。crater.sh
  • make crater

使用方法:

/usr/bin/sudo ./crater impact_reference_file delay_around_impact_in_minutes

例:

/usr/bin/sudo ./crater /Applications/Adobe\ Reader.app
Password:
        reference date: Dec 29 16:11:56 2015
        log:            /var/log/crater_29-12-2015_16:11:56.log
        beginning time: 12/29/2015 16:06:56
        ending time:    12/29/2015 16:16:57
        impact:         1518 files              298217339 bytes

互換性:

FreeBSD、MacOS X、Linuxでテストされています。

おすすめ記事