Python-digital-forensics-python-digital-network-forensics
Pythonデジタルネットワークフォレンジック-I
この章では、Pythonを使用してネットワークフォレンジックを実行する際の基礎について説明します。
ネットワークフォレンジックについて
ネットワークフォレンジックは、情報収集、証拠収集、または侵入検知を目的として、ローカルおよびWAN(ワイドエリアネットワーク)の両方のコンピューターネットワークトラフィックの監視と分析を扱うデジタルフォレンジックのブランチです。 ネットワークフォレンジックは、知的財産の盗難や情報漏洩などのデジタル犯罪の調査に重要な役割を果たします。 ネットワーク通信の写真は、次のように調査員がいくつかの重要な問題を解決するのに役立ちます-
- どのWebサイトにアクセスしましたか?
- ネットワークにはどのようなコンテンツがアップロードされていますか?
- ネットワークからどのようなコンテンツがダウンロードされましたか?
- どのサーバーにアクセスしていますか?
- 誰かが会社のファイアウォールの外に機密情報を送信していますか?
インターネットエビデンスファインダー(IEF)
IEFは、コンピューター、スマートフォン、タブレットなどのさまざまなデジタルメディアで見つかったデジタル証拠を検索、分析、および提示するためのデジタルフォレンジックツールです。 これは非常に人気があり、数千人の法医学専門家によって使用されています。
IEFの使用
IEFは人気があるため、科学捜査の専門家によってかなり使用されています。 IEFの用途のいくつかは次のとおりです-
- その強力な検索機能により、複数のファイルまたはデータメディアを同時に検索するために使用されます。
- また、新しいカービング手法により、RAMの未割り当て領域から削除されたデータを回復するためにも使用されます。
- 調査者が、開かれた日に元の形式でWebページを再構築する場合は、IEFを使用できます。
- また、論理ディスクボリュームまたは物理ディスクボリュームの検索にも使用されます。
Pythonを使用してIEFからCSVにレポートをダンプする
IEFはSQLiteデータベースにデータを保存し、次のPythonスクリプトはIEFデータベース内の結果テーブルを動的に識別し、それぞれのCSVファイルにダンプします。
このプロセスは、以下に示す手順で実行されます
- まず、拡張子が.dbのSQLiteデータベースファイルであるIEF結果データベースを生成します。
- 次に、そのデータベースを照会して、すべてのテーブルを識別します。 *最後に、この結果テーブルを個々のCSVファイルに書き込みます。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
Pythonスクリプトの場合、次のように必要なライブラリをインポートします-
今、私たちはIEFデータベースファイルへのパスを提供する必要があります-
今、私たちは次のようにIEFデータベースの存在を確認します-
さて、以前のスクリプトで行ったように、カーソルを介してクエリを実行するには、次のようにSQLiteデータベースと接続します-
次のコード行は、データベースからテーブルの名前を取得します-
次に、テーブルからすべてのデータを選択し、カーソルオブジェクトで* fetchall()*メソッドを使用して、テーブルのデータ全体を含むタプルのリストを変数に保存します-
今、* CSV_Writer()*メソッドを使用して、CSVファイルにコンテンツを書き込みます-
上記のスクリプトは、IEFデータベースのテーブルからすべてのデータを取得し、選択したCSVファイルに内容を書き込みます。
キャッシュデータの操作
IEF結果データベースから、IEF自体で必ずしもサポートされていない情報を取得できます。 ヤフー、グーグルなどの電子メールサービスプロバイダーから、キャッシュされたデータ、情報のバイプロダクトを取得できます。 IEF結果データベースを使用します。
以下は、IEFデータベースを使用して、Google ChromeでアクセスされるYahooメールからキャッシュされたデータ情報にアクセスするためのPythonスクリプトです。 手順は、最後のPythonスクリプトの手順とほぼ同じであることに注意してください。
まず、次のようにPythonに必要なライブラリをインポートします-
ここで、最後のスクリプトで行われたように、コマンドラインハンドラーが受け入れる2つの位置引数とともにIEFデータベースファイルへのパスを指定します-
今、次のようにIEFデータベースの存在を確認します-
今、カーソルを介してクエリを実行するために、次のようにSQLiteデータベースとの接続を行います-
次のコード行を使用して、Yahoo Mailの連絡先キャッシュレコードのインスタンスを取得できます-
さて、次のように変数に保存される上記のクエリから返されたタプルのリスト-
ここでは、結果リストを設定するために* process_contacts()を使用するだけでなく、各連絡先キャッシュレコードを繰り返し処理し、 json.loads()*を使用してテーブルから抽出したJSONデータをさらに操作-
今、会社、タイトル、メモについては、以下に示すようにgetメソッドが使用されます-
今、次のように結果リストにメタデータと抽出されたデータ要素のリストを追加しましょう-
今、* CSV_Writer()*メソッドを使用して、CSVファイルにコンテンツを書き込みます-
上記のスクリプトの助けを借りて、IEFデータベースを使用して、Yahooメールからキャッシュされたデータを処理できます。