Python-digital-forensics-investigation-of-log-based-artifacts
ログベースのアーティファクトの調査
これまで、Pythonを使用してWindowsでアーティファクトを取得する方法を見てきました。 この章では、Pythonを使用したログベースのアーティファクトの調査について学びましょう。
前書き
ログベースのアーティファクトは、デジタルフォレンジックの専門家にとって非常に役立つ情報の宝庫です。 情報を収集するためのさまざまな監視ソフトウェアがありますが、それらから有用な情報を解析するための主な問題は、大量のデータが必要なことです。
さまざまなログベースのアーティファクトとPythonでの調査
このセクションでは、さまざまなログベースのアーティファクトとPythonでの調査について説明します-
タイムスタンプ
タイムスタンプは、ログのアクティビティのデータと時間を伝えます。 これは、ログファイルの重要な要素の1つです。 これらのデータと時刻の値は、さまざまな形式で入力できることに注意してください。
以下に示すPythonスクリプトは、入力として生の日付時刻を取り、その出力として書式設定されたタイムスタンプを提供します。
このスクリプトでは、次の手順に従う必要があります-
- 最初に、データのソースとデータ型とともに生データ値を取る引数を設定します。
- 次に、異なる日付形式のデータに共通のインターフェースを提供するクラスを提供します。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonモジュールをインポートします-
さて、いつものように、コマンドラインハンドラーの引数を指定する必要があります。 ここでは、3つの引数を受け入れます。1つ目は処理する日付値、2つ目はその日付値のソース、3つ目はそのタイプです-
今、我々は、日付値、日付ソース、および値の型の引数を受け入れるクラスを定義する必要があります-
今、私たちはmain()メソッドのようにコントローラのように動作するメソッドを定義します-
ここで、Unixエポック時間とFILETIMEをそれぞれ処理する2つのメソッドを定義する必要があります-
上記のスクリプトを実行した後、タイムスタンプを提供することにより、変換された値を読みやすい形式で取得できます。
Webサーバーログ
デジタルフォレンジックエキスパートの観点から見ると、Webサーバーログは、ユーザーおよび地理的な場所に関する情報とともに有用なユーザー統計を取得できるため、もう1つの重要な成果物です。 以下は、情報を簡単に分析するために、Webサーバーのログを処理した後、スプレッドシートを作成するPythonスクリプトです。
まず、次のPythonモジュールをインポートする必要があります-
今、私たちはログから解析されるパターンを定義する必要があります-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、2つの引数を受け入れます。1つ目は処理するIISログ、2つ目は目的のCSVファイルパスです。
今、私たちはバルクログ情報のスクリプトを処理するmain()メソッドを定義する必要があります-
最後に、出力をスプレッドシートに書き込むメソッドを定義する必要があります-
上記のスクリプトを実行した後、スプレッドシートでWebサーバーベースのログを取得します。
YARAを使用して重要なファイルをスキャンする
YARA(Yet Another Recursive Algorithm)は、マルウェアの識別とインシデント対応のために設計されたパターンマッチングユーティリティです。 ファイルのスキャンにはYARAを使用します。 次のPythonスクリプトでは、YARAを使用します。
私たちは次のコマンドの助けを借りてYARAをインストールできます-
YARAルールを使用してファイルをスキャンするための以下の手順に従うことができます-
- まず、YARAルールを設定してコンパイルします
- 次に、単一のファイルをスキャンしてから、ディレクトリを反復処理して個々のファイルを処理します。
- 最後に、結果をCSVにエクスポートします。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonモジュールをインポートする必要があります-
次に、コマンドラインハンドラーの引数を指定します。 ここでは2つの引数を受け入れることに注意してください。1つ目はYARAルールへのパス、2つ目はスキャンするファイルです。
ここで、スキャンするヤラルールとファイルへのパスを受け入れるmain()関数を定義します-
今、ディレクトリを反復処理し、さらに処理するために別のメソッドに結果を渡すメソッドを定義します-
次に、2つの関数を定義します。 最初に* match()メソッドを使用してオブジェクトを *yrules し、別のメソッドはユーザーが出力ファイルを指定しない場合にその一致情報をコンソールに報告することに注意してください。 以下に示すコードを観察します-
最後に、以下に示すように、出力をCSVファイルに書き込むメソッドを定義します-
上記のスクリプトを正常に実行すると、コマンドラインで適切な引数を提供し、CSVレポートを生成できます。