データ収集-2

参考書籍 : 実践bashによるサイバーセキュリティ対策


ファイルシステム上での検索
1, ファイル名による検索
findを使ってファイル名による検索を行う。
passwordという単語を含むファイル名を検索し、エラーを抑制する例を示す。

$ find /home -name '*password*' 2>/dev/null

2, 隠しファイルの検索
隠しファイルは検索逃れのために用いられることもあるので、隠しファイルも検索する必要がある。
Linuxにおいては、隠しファイルは.(ピリオド)から始まるので、次のように検索する。

$ find /home -name '.*'

Windowsにおいては、ファイル属性で検索する

> dir c:\ /S /A:H

/Sオプションにより、dirはディレクトリを再帰的に検索する。
/A:Hオプションにより、隠し属性ファイルの一覧が表示される。

3, findコマンドについて
findコマンドは-execオプションで、検索した各ファイルにコマンドを実行することができる。
findコマンドで検索したファイルの属性を表示(attrib)し、その中から隠しファイルのみを表示するには、次のようにする。

$ find /c -exec attrib '{}' \; | egrep '^.{4}H.*'

execは{}を見つかったファイル名に変更するため、'{`}' \;でファイル名を表示する。
egrepで5番目の文字がHであるもの(隠しファイル)を抽出する。


・ファイルサイズによる検索
通常ありえないサイズのファイルを検索するなど
5GB以上のファイルを検索するには、次のようにする。

$ find /home -size +5G

ファイルサイズが上位5つのファイルを検索するには、複数のコマンドを組み合わせる。

$ find / -type f -exec ls -s '{}' \; | sort -n -r | head -5

sortの-rオプションを外せば、小さいファイルを検索できる。
lsコマンドでも最大サイズのファイルを検索できる。findを使わないので、効率的になる。

$ ls / -R -s | sort -n -r | head -5

lsに-Rオプションで、ディレクトリを再帰的に表示する。


・時刻による検索
インシデント調査のときなど、最近変更があったファイルを探すときに役立つ。
最近5分以内に変更されたファイルを検索するには、次のようにする。

$ find /home -mmin -5

直近24時間以内に変更されたファイルも検索できる。

$ find /home -mtime -1

変更後48時間"以上経過"(48時間以上変更されていない)したファイルは次のように検索する。

$ find /home -mtime +2

mtimeオプションに+も-もつけなかった場合は、ちょうどを意味する。


・ファイル内容の検索
grepコマンドで、ファイル内容を検索することができる。
passwordという文字列を含むファイルを検索するには、次のようにする。

$ grep -i -r /home -e 'password'

iオプションで大文字小文字の区別をせずに検索する。
grepとfindを組み合わせて、カレントディレクトリのファイルにgrepでマッチングができる。

$ find /home -type f -exec grep 'password' '{}' \; -exec cp '{}' . \;

cpコマンドを使い、マッチしたファイルをカレントディレクトリにコピーすることも可能


・ファイル形式による検索
拡張子は任意に変更可能なので、拡張子ではなくfileコマンドでファイル形式による検索をする。
fileコマンドはマジックナンバーを調べることで、ファイル形式を特定する。

$ file title.png
title.png: PNG image data, 644 x 905, 8-bit/color RGBA, non-interlaced

fileコマンドの出力に正規表現を用いて、ファイル形式による検索をする。


・メッセージダイジェスト値による検索
一般的なハッシュアルゴリズムとして、MD5, SHA-1, SHA-256がある。
sha1sumコマンドで、SHA-1メッセージダイジェストを計算できる。

$ sha1sum title.png
d705afea3199b0534b5ad34791d5ec69938fa051 *title.png

ファイルの内容が少しでも異なれば、メッセージダイジェストは全く別のものになる。
なので、ファイルが同一であるかを調べることができる。