Python-digital-forensics-quick-guide
Pythonデジタルフォレンジック-はじめに
この章では、デジタルフォレンジックとは何か、およびその歴史的レビューを紹介します。 また、実生活でデジタルフォレンジックを適用できる場所とその制限についても理解します。
デジタルフォレンジックとは何ですか?
デジタルフォレンジックは、電子デバイスに存在するデジタル証拠を分析、検査、識別、および回復するフォレンジックサイエンスの分野として定義できます。 一般に、刑法および私的調査に使用されます。
たとえば、誰かが電子デバイス上のデータを盗む場合に、デジタルフォレンジックが証拠を抽出することに頼ることができます。
デジタルフォレンジックの簡単な歴史的レビュー
コンピュータ犯罪の歴史とデジタルフォレンジックの歴史的レビューは、このセクションで以下のように説明されています-
1970年代〜1980年代:最初のコンピューター犯罪
この10年以前は、コンピューター犯罪は認められていません。 しかし、それが起こることになっている場合、当時の既存の法律はそれらに対処しました。 その後、1978年にフロリダのコンピューター犯罪法で最初のコンピューター犯罪が認められました。これには、コンピューターシステム上のデータの不正な変更または削除に対する法律が含まれています。 しかし、時間の経過とともに、技術の進歩により、犯されるコンピューター犯罪の範囲も増加しました。 著作権、プライバシー、児童ポルノに関連する犯罪に対処するために、他のさまざまな法律が可決されました。
1980年代から1990年代:開発の10年
この10年は、デジタルフォレンジックの開発10年でした。これは、クリフストールがMarkus Hessという名前のハッカーを追跡した最初の調査(1986年)によるものです。 この期間に、2種類のデジタルフォレンジック分野が開発されました。1つ目は、趣味としてそれを採用した実践者が開発したアドホックツールとテクニックの助けを借りて、2つ目は科学コミュニティによって開発されました。 1992年には、「コンピューターフォレンジック」という用語が学術文献で使用されました。
2000s-2010s:標準化の10年
デジタルフォレンジックが特定のレベルにまで発展した後、調査の実行中に従うことができる特定の標準を作成する必要がありました。 したがって、さまざまな科学機関や機関がデジタルフォレンジックのガイドラインを公開しています。 2002年に、デジタル証拠に関する科学作業部会(SWGDE)は、「コンピューターフォレンジックのベストプラクティス」という名前の論文を発表しました。 キャップのもう一つの羽毛は、欧州主導の国際条約であり、*「サイバー犯罪に関する条約」*は43カ国によって署名され、16カ国によって批准されました。 そのような基準の後でも、研究者によって特定されたいくつかの問題を解決する必要があります。
デジタルフォレンジックのプロセス
1978年に初めてコンピューター犯罪が発生して以来、デジタル犯罪活動は大幅に増加しています。 この増加により、それらに対処するための構造化された方法が必要です。 1984年に、正式なプロセスが導入され、その後、多数の新しく改善されたコンピューターフォレンジック調査プロセスが開発されました。
コンピュータフォレンジック調査プロセスには、以下で説明する3つの主要なフェーズが含まれます-
フェーズ1:展示品の取得またはイメージング
デジタルフォレンジックの最初のフェーズでは、デジタルシステムの状態を保存して、後で分析できるようにします。 写真や血液サンプルなどを撮ることに非常によく似ています。 犯罪現場から。 たとえば、ハードディスクまたはRAMの割り当て済み領域と未割り当て領域のイメージをキャプチャすることが含まれます。
フェーズ2:分析
このフェーズの入力は、取得フェーズで取得されたデータです。 ここでは、証拠を特定するためにこのデータを調べました。 この段階では、次の3種類の証拠が得られます-
- * Inculpatory証拠*-これらの証拠は、特定の歴史をサポートしています。
- 除外証拠-これらの証拠は、特定の歴史と矛盾しています。
- 改ざんの証拠-これらの証拠は、システムが識別を回避するために調整されたことを示しています。 削除されたファイルを回復するために、ファイルとディレクトリの内容を調べることが含まれます。
フェーズ3:プレゼンテーションまたはレポート
名前が示すように、このフェーズでは調査の結論と対応する証拠を提示します。
デジタルフォレンジックの応用
デジタルフォレンジックは、デジタルデバイスに含まれる証拠の収集、分析、および保存を扱います。 デジタルフォレンジックの使用は、アプリケーションによって異なります。 前述のように、それは主に次の2つのアプリケーションで使用されています-
刑法
刑法では、裁判所で仮説を支持または反対するために証拠が収集されます。 法医学の手順は、犯罪捜査で使用される手順と非常に似ていますが、法的要件と制限が異なります。
民間調査
主に企業の世界では、民間調査にデジタルフォレンジックを使用しています。 これは、従業員が会社のポリシーに違反する違法行為をコンピューターで実行している可能性があると企業が疑っている場合に使用されます。 デジタルフォレンジックは、企業または個人がデジタル不正行為を調査する際に取る最適なルートの1つです。
デジタルフォレンジックの枝
デジタル犯罪はコンピューターだけに限定されませんが、ハッカーや犯罪者はタブレット、スマートフォンなどの小さなデジタルデバイスを使用しています。 非常に大規模でも。 一部のデバイスには揮発性メモリがあり、その他のデバイスには不揮発性メモリがあります。 したがって、デバイスの種類に応じて、デジタルフォレンジックには次の分岐があります-
コンピューターフォレンジック
デジタルフォレンジックのこの部門は、コンピューター、組み込みシステム、USBドライブなどの静的メモリを扱います。 ログからドライブ上の実際のファイルまでの幅広い情報は、コンピューターフォレンジックで調査できます。
モバイルフォレンジック
これは、モバイルデバイスからのデータの調査を扱います。 このブランチは、モバイルデバイスに位置に関する有用な情報を提供するのに役立つ組み込みの通信システムがあるという意味で、コンピューターフォレンジックとは異なります。
ネットワークフォレンジック
これは、情報収集、証拠収集、または侵入検知を目的とした、ローカルおよびWAN(ワイドエリアネットワーク)の両方のコンピューターネットワークトラフィックの監視と分析を扱います。
データベースフォレンジック
デジタルフォレンジックのこの部門は、データベースとそのメタデータのフォレンジック研究を扱っています。
デジタルフォレンジック調査に必要なスキル
デジタルフォレンジック検査官は、ハッカーの追跡、盗まれたデータの回復、コンピューター攻撃を追跡してソースに戻り、コンピューターに関する他の種類の調査を支援します。 以下で説明するように、デジタルフォレンジック試験官になるために必要な主要なスキルの一部-
優れた思考能力
デジタルフォレンジック調査員は優れた思想家でなければならず、出力を取得するための特定の割り当てにさまざまなツールや手法を適用できる必要があります。 彼/彼女は異なるパターンを見つけて、それらの間の相関関係を作ることができなければなりません。
技術的なスキル
この分野にはネットワーク、デジタルシステムの相互作用の知識が必要なため、デジタルフォレンジック試験官には優れた技術スキルが必要です。
サイバーセキュリティへの情熱
デジタルフォレンジックの分野はすべてサイバー犯罪を解決することであり、これは退屈な作業であるため、エースのデジタルフォレンジック調査員になるには多くの情熱が必要です。
コミュニケーションスキル
さまざまなチームと連携し、不足しているデータや情報を抽出するには、優れたコミュニケーションスキルが必要です。
レポート作成に熟練
取得と分析の実装が成功した後、デジタル法医学検査官は、すべての調査結果を最終レポートとプレゼンテーションに言及する必要があります。 したがって、彼/彼女はレポート作成の優れたスキルと細部への注意を持っている必要があります。
制限事項
ここで説明するように、デジタルフォレンジック調査には特定の制限があります-
説得力のある証拠を作成する必要がある
デジタルフォレンジック調査の大きな失敗の1つは、データが簡単に改ざんされる可能性があるため、審査官が法廷での証拠に必要な基準を遵守する必要があることです。 一方、法医学捜査官は、法廷で説得力のある証拠を提示するために、法的要件、証拠の取り扱い、および文書化手順に関する完全な知識を持っている必要があります。
調査ツール
デジタル調査の有効性は、デジタル法医学審査官の専門知識と適切な調査ツールの選択に完全に依存しています。 使用するツールが指定された基準に準拠していない場合、法廷で、裁判官は証拠を否定することができます。
聴衆の技術的知識の欠如
もう1つの制限は、一部の個人がコンピューターフォレンジックに完全に精通していないことです。したがって、多くの人々はこの分野を理解していません。 調査員は、誰もが結果を理解できるように、調査結果を裁判所に確実に伝える必要があります。
Cost
デジタル証拠を作成して保存することは非常に費用がかかります。 したがって、このプロセスは、費用を支払う余裕のない多くの人々によって選択されることはありません。
Pythonデジタルフォレンジック-はじめに
前の章では、デジタルフォレンジックの基本、その利点と制限について学びました。 この章では、このデジタルフォレンジック調査で使用している重要なツールであるPythonを快適に使用できるようにします。
Pythonがデジタルフォレンジックに適している理由
Pythonは人気のあるプログラミング言語であり、サイバーセキュリティ、侵入テスト、デジタルフォレンジック調査のツールとして使用されます。 Pythonをデジタルフォレンジックのツールとして選択する場合、タスクを完了するために他のサードパーティソフトウェアは必要ありません。
デジタルフォレンジックプロジェクトに最適なPythonプログラミング言語のユニークな機能のいくつかを以下に示します-
- シンタックスのシンタックス-Pythonのシンタックスは他の言語に比べて単純であるため、デジタルフォレンジックの学習と使用が容易になります。
- 包括的な組み込みモジュール-Pythonの包括的な組み込みモジュールは、完全なデジタルフォレンジック調査を実行するための優れた支援です。
- ヘルプとサポート-オープンソースのプログラミング言語であるPythonは、開発者とユーザーのコミュニティから優れたサポートを受けています。
Pythonの機能
Pythonは、高レベルで、解釈された、インタラクティブでオブジェクト指向のスクリプト言語であり、次の機能を提供します-
- 習得が容易-Pythonは、より少ないキーワードと最も単純な構造を持つため、開発者にとって使いやすく、習得が容易な言語です。
- 表現力豊かで読みやすい-Python言語は本質的に表現力があります。したがって、そのコードはより理解しやすく、読みやすくなります。
- クロスプラットフォーム互換-Pythonはクロスプラットフォーム互換の言語であるため、UNIX、Windows、Macintoshなどのさまざまなプラットフォームで効率的に実行できます。
- インタラクティブモードプログラミング-Pythonはプログラミング用のインタラクティブモードをサポートしているため、コードのインタラクティブなテストとデバッグを行うことができます。
- さまざまなモジュールと関数を提供します-Pythonには、スクリプト用に豊富なモジュールと関数のセットを使用できる大きな標準ライブラリがあります。
- 動的型チェックをサポート-Pythonは動的型チェックをサポートし、非常に高レベルの動的データ型を提供します。
- * GUIプログラミング*-PythonはGUIプログラミングをサポートして、グラフィカルユーザーインターフェイスを開発します。
- 他のプログラミング言語との統合-Pythonは、C、C ++、JAVAなどの他のプログラミング言語と簡単に統合できます。
Pythonをインストールする
Pythonディストリビューションは、Windows、UNIX、Linux、Macなどのさまざまなプラットフォームで利用できます。 プラットフォームごとにバイナリコードをダウンロードするだけです。 プラットフォームのバイナリコードが利用できない場合、ソースコードを手動でコンパイルできるようにCコンパイラが必要です。
このセクションでは、さまざまなプラットフォームでのPythonのインストールについて詳しく説明します。
UnixおよびLinuxでのPythonインストール
以下に示す手順に従って、Unix/LinuxマシンにPythonをインストールできます。
- ステップ1 *-Webブラウザを開きます。 www.python.org/downloads/を入力して入力します
- ステップ2 *-Unix/Linuxで利用可能なzip形式のソースコードをダウンロードします。
- ステップ3 *-ダウンロードした圧縮ファイルを解凍します。
ステップ4 *-オプションをカスタマイズする場合は、 *Modules/Setup file を編集できます。
- ステップ5 *-インストールを完了するには、次のコマンドを使用します-
上記の手順を正常に完了すると、Pythonは標準の場所 /usr/local/bin にインストールされ、ライブラリは /usr/local/lib/pythonXX にインストールされます(XXはPythonのバージョンです)。
WindowsでのPythonインストール
次の簡単な手順に従って、WindowsマシンにPythonをインストールできます。
- ステップ1 *-Webブラウザーを開きます。 www.python.org/downloads/を入力して入力します
ステップ2 *-Windowsインストーラー *python-XYZ.msi ファイルをダウンロードします。XYZはインストールする必要のあるバージョンです。
- ステップ3 *-インストーラファイルをローカルマシンに保存した後、MSIファイルを実行します。
- ステップ4 *-ダウンロードしたファイルを実行し、Pythonインストールウィザードを起動します。
MacintoshでのPythonインストール
Mac OS XにPython 3をインストールするには、 Homebrew という名前のパッケージインストーラーを使用する必要があります。
あなたはあなたのシステム上にそれを持っていない場合、Homebrewをインストールするために次のコマンドを使用することができます-
あなたがパッケージマネージャを更新する必要がある場合、それは次のコマンドの助けを借りて行うことができます-
さて、次のコマンドを使用して、システムにPython3をインストールします-
PATHを設定する
Pythonインストールのパスを設定する必要がありますが、これはUNIX、WINDOWS、MACなどのプラットフォームによって異なります。
Unix/Linuxでのパス設定
次のオプションを使用して、Unix/Linuxでパスを設定できます-
- * cshシェルを使用している場合*- setenv PATH "$ PATH:/usr/local/bin/python" と入力し、Enterを押します。
- * bashシェルを使用する場合(Linux)- *export ATH = "$ PATH:/usr/local/bin/python" と入力し、Enterを押します。
- * shまたはkshシェルを使用している場合*- PATH = "$ PATH:/usr/local/bin/python" と入力し、Enterを押します。
Windowsでのパス設定
コマンドプロンプトで「 path%path%; C:\ Python 」と入力し、Enterキーを押します。
Pythonを実行する
次の3つの方法のいずれかを選択して、Pythonインタープリターを起動できます-
方法1:インタラクティブインタープリターを使用する
コマンドラインインタープリターまたはシェルを提供するシステムは、Pythonの起動に簡単に使用できます。 たとえば、Unix、DOSなど。 以下の手順に従って、対話型インタープリターでコーディングを開始できます-
ステップ1 *-コマンドラインで *python と入力します。
- ステップ2 *-以下に示すコマンドを使用して、インタラクティブインタープリターですぐにコーディングを開始します-
方法2:コマンドラインからスクリプトを使用する
アプリケーションでインタープリターを呼び出すことにより、コマンドラインでPythonスクリプトを実行することもできます。 以下に示すコマンドを使用できます-
方法3:統合開発環境
システムにPythonをサポートするGUIアプリケーションがある場合、そのGUI環境からPythonを実行できます。 さまざまなプラットフォーム用のIDEの一部を以下に示します-
- Unix IDE -UNIXにはPython用のIDLE IDEがあります。
- Windows IDE -WindowsにはPythonWinがあります。これは、GUIとともにPythonの最初のWindowsインターフェイスです。
- Macintosh IDE -Macintoshには、メインWebサイトから入手可能なIDLE IDEがあり、MacBinaryまたはBinHex’dファイルとしてダウンロードできます。
アーティファクトレポート
ローカルシステムでのPythonコマンドのインストールと実行に慣れたので、フォレンジックの概念について詳しく説明します。 この章では、Pythonデジタルフォレンジックのアーティファクトの処理に関連するさまざまな概念について説明します。
レポート作成の必要性
デジタルフォレンジックのプロセスには、第3フェーズとしてのレポートが含まれます。 これは、デジタルフォレンジックプロセスの最も重要な部分の1つです。 次の理由により、レポートの作成が必要です-
- それは、デジタル法医学審査官が調査プロセスとその調査結果を概説する文書です。
- 優れたデジタルフォレンジックレポートを別の審査官が参照して、同じリポジトリで同じ結果を得ることができます。
- これは、デジタル証拠の1と0で見つかった事実を含む技術的および科学的な文書です。
レポート作成の一般的なガイドライン
レポートは、読者に情報を提供するために書かれており、強固な基盤から始めなければなりません。 調査者は、一般的なガイドラインや標準を使用せずにレポートを作成すると、調査結果を効率的に提示するのが困難になります。 デジタルフォレンジックレポートを作成する際に従う必要があるいくつかの一般的なガイドラインを以下に示します-
- 概要-読者がレポートの目的を確認できるように、レポートには情報の簡単な概要が含まれている必要があります。
- 使用するツール-目的を含め、デジタルフォレンジックのプロセスを実行するために使用されたツールに言及する必要があります。
- リポジトリ-誰かのコンピューターを調査し、証拠の概要と、電子メール、内部検索履歴などの関連資料の分析を調査した後、ケースが明確に提示されるようにレポートに含める必要があるとします。
- 弁護士への推奨事項-レポートには、レポートの調査結果に基づいて調査を続行または中止するためのアドバイスが必要です。
異なるタイプのレポートの作成
上記のセクションでは、デジタルフォレンジックのレポートの重要性と、それを作成するためのガイドラインについて知りました。 さまざまな種類のレポートを作成するためのPythonの形式のいくつかを以下で説明します-
CSVレポート
レポートの最も一般的な出力形式の1つは、CSVスプレッドシートレポートです。 以下に示すように、Pythonコードを使用して、処理されたデータのレポートを作成するCSVを作成できます-
まず、スプレッドシートを書くための便利なライブラリをインポートします-
今、次のメソッドを呼び出します-
次のグローバル変数を使用して、サンプルデータタイプを表します-
次に、さらに操作を進めるためのメソッドを定義しましょう。 ファイルを「w」モードで開き、newlineキーワード引数を空の文字列に設定します。
上記のスクリプトを実行すると、report1.csvファイルに保存されている次の詳細が取得されます。
Name | Age | City | Designation |
---|---|---|---|
Ram | 32 | Bhopal | Managerh |
Raman | 42 | Indore | Engg |
Mohan | 25 | Chandigarh | HR |
Parkash | 45 | Delhi | IT |
Excelレポート
レポートのもう1つの一般的な出力形式は、Excel(.xlsx)スプレッドシートレポートです。 テーブルを作成し、Excelを使用してグラフをプロットすることもできます。 以下に示すように、Pythonコードを使用して、処理されたデータのレポートをExcel形式で作成できます。
まず、スプレッドシートを作成するためのXlsxWriterモジュールをインポートします-
次に、ワークブックオブジェクトを作成します。 このために、Workbook()コンストラクターを使用する必要があります。
次に、add_worksheet()モジュールを使用して新しいワークシートを作成します。
次に、次のデータをワークシートに書き込みます-
あなたはこのデータを反復処理し、次のように書くことができます-
次に、close()メソッドを使用してこのExcelファイルを閉じます。
上記のスクリプトは、次のデータを持つreport2.xlsxという名前のExcelファイルを作成します-
Ram | 32 | Bhopal |
Mohan | 25 | Chandigarh |
Parkash | 45 | Delhi |
調査取得メディア
調査員は、調査結果を正確に思い出したり、調査のすべての部分をまとめるために、詳細な調査メモを用意することが重要です。 スクリーンショットは、特定の調査のために実行された手順を追跡するのに非常に役立ちます。 次のPythonコードの助けを借りて、スクリーンショットを撮り、将来の使用のためにハードディスクに保存することができます。
まず、次のコマンドを使用してpyscreenshotという名前のPythonモジュールをインストールします-
今、示されているように必要なモジュールをインポートします-
スクリーンショットを取得するには、次のコード行を使用します-
次のコード行を使用して、指定された場所にスクリーンショットを保存します-
今、あなたはグラフとしてスクリーンショットをポップアップしたい場合は、次のPythonコードを使用することができます-
Pythonデジタルモバイルデバイスフォレンジック
この章では、モバイルデバイス上のPythonデジタルフォレンジックと関連する概念について説明します。
前書き
モバイルデバイスフォレンジックは、モバイルデバイスの取得と分析を行い、調査対象のデジタル証拠を回復するデジタルフォレンジックの分野です。 モバイルデバイスには、位置に関する有用な情報を提供するのに役立つ組み込みの通信システムがあるため、このブランチはコンピューターフォレンジックとは異なります。
デジタルフォレンジックではスマートフォンの使用が日々増加していますが、それでもその不均一性のために非標準であると考えられています。 一方、ハードディスクなどのコンピューターハードウェアは標準と見なされ、安定した分野としても開発されています。 デジタルフォレンジック業界では、スマートフォンなどの一時的な証拠を持つ非標準デバイスに使用される技術について多くの議論があります。
モバイルデバイスから抽出可能なアーティファクト
最新のモバイルデバイスは、コールログまたはSMSメッセージのみを持つ古い電話と比較して、多くのデジタル情報を所有しています。 したがって、モバイルデバイスは、ユーザーに関する多くの洞察を調査員に提供できます。 モバイルデバイスから抽出できるいくつかのアーティファクトは以下のとおりです-
- メッセージ-これらは、所有者の心の状態を明らかにすることができ、調査員に以前の未知の情報を提供することもできる便利なアーティファクトです。
- ロケーション履歴-ロケーション履歴データは、人の特定の場所について検証するために調査員が使用できる有用なアーティファクトです。
- インストールされているアプリケーション-インストールされているアプリケーションの種類にアクセスすることにより、調査員はモバイルユーザーの習慣と思考についての洞察を得ます。
エビデンスのソースとPythonでの処理
スマートフォンには、主要な証拠のソースとしてSQLiteデータベースとPLISTファイルがあります。 このセクションでは、Pythonで証拠のソースを処理します。
PLISTファイルの分析
PLIST(プロパティリスト)は、特にiPhoneデバイスにアプリケーションデータを保存するための柔軟で便利な形式です。 拡張子 .plist を使用します。 バンドルとアプリケーションに関する情報を保存するために使用されるこの種のファイル。 XML と binary の2つの形式を使用できます。 次のPythonコードは、PLISTファイルを開いて読み取ります。 これに進む前に、独自の Info.plist ファイルを作成する必要があることに注意してください。
まず、次のコマンドで biplist という名前のサードパーティライブラリをインストールします-
今、plistファイルを処理するためにいくつかの有用なライブラリをインポートします-
さて、メインメソッドの下で次のコマンドを使用して、plistファイルを変数に読み込むことができます-
これで、この変数からコンソール上のデータを読み取るか、直接印刷することができます。
SQLiteデータベース
SQLiteは、モバイルデバイスのプライマリデータリポジトリとして機能します。 SQLiteは、自己完結型のサーバーなしのゼロ構成のトランザクションSQLデータベースエンジンを実装するインプロセスライブラリです。 それはゼロ構成のデータベースであり、他のデータベースとは異なり、システムで構成する必要はありません。
初心者またはSQLiteデータベースに慣れていない場合は、リンクlink:/sqlite/index [www.finddevguides.com/sqlite/index]をたどることができます。さらに、リンクlink:/sqlite/sqlite_python [www.finddevguidesをたどることができます。 .com/sqlite/sqlite_python] PythonでSQLiteの詳細を知りたい場合に備えて。
モバイルフォレンジック中に、モバイルデバイスの sms.db ファイルを操作して、 message テーブルから貴重な情報を抽出できます。 Pythonには、SQLiteデータベースと接続するための sqlite3 という名前の組み込みライブラリがあります。 次のコマンドで同じものをインポートできます-
今、次のコマンドの助けを借りて、データベースに接続できます、モバイルデバイスの場合は sms.db と言います-
ここで、Cはデータベースオブジェクトとやり取りできるカーソルオブジェクトです。
今、特定のコマンドを実行する場合、たとえば* abcテーブル*から詳細を取得する場合、次のコマンドを使用して実行できると仮定します-
上記のコマンドの結果は cursor オブジェクトに保存されます。 同様に、* fetchall()*メソッドを使用して、操作可能な変数に結果をダンプできます。
次のコマンドを使用して、 sms.db のメッセージテーブルの列名データを取得できます-
ここで、SQLite環境内のさまざまな環境変数と状態フラグを制御するために使用される特別なコマンドであるSQLite PRAGMAコマンドを使用していることに注意してください。 上記のコマンドでは、* fetchall()*メソッドは結果のタプルを返します。 各列の名前は、各タプルの最初のインデックスに保存されます。
今、次のコマンドの助けを借りて、すべてのデータについてテーブルを照会し、 data_msg という名前の変数に格納できます-
上記のコマンドは変数にデータを保存し、さらに* csv.writer()*メソッドを使用してCSVファイルに上記のデータを書き込むこともできます。
iTunesのバックアップ
iPhoneのモバイルフォレンジックは、iTunesによって作成されたバックアップで実行できます。 科学捜査官は、iTunesを通じて取得したiPhoneの論理バックアップの分析に依存しています。 iTunesはAFC(Appleファイル接続)プロトコルを使用してバックアップを取ります。 また、バックアッププロセスでは、エスクローキーレコード以外のiPhone上の内容は変更されません。
さて、デジタルフォレンジックの専門家がiTunesバックアップのテクニックを理解することがなぜ重要なのかという疑問が生じます。 iPhoneを同期するためにコンピューターを使用すると、iPhone上のほとんどの情報がコンピューターにバックアップされる可能性が高いため、iPhoneの代わりに容疑者のコンピューターに直接アクセスできる場合は重要です。
バックアップのプロセスとその場所
Apple製品がコンピューターにバックアップされるたびに、iTunes製品と同期され、デバイスの一意のIDを持つ特定のフォルダーが作成されます。 最新のバックアップ形式では、ファイルはファイル名の最初の2つの16進文字を含むサブフォルダーに保存されます。 これらのバックアップファイルには、info.plistのようないくつかのファイルがあり、Manifest.dbという名前のデータベースとともに役立ちます。 次の表は、iTunesのバックアップのオペレーティングシステムによって異なるバックアップの場所を示しています-
OS | Backup Location |
---|---|
Win7 | C:\Users\[username]\AppData\Roaming\AppleComputer\MobileSync\Backup\ |
MAC OS X | ~/Library/Application Suport/MobileSync/Backup/ |
PythonでiTunesバックアップを処理するには、まずオペレーティングシステムごとに、バックアップの場所にあるすべてのバックアップを識別する必要があります。 次に、各バックアップを反復処理し、データベースManifest.dbを読み取ります。
今、次のPythonコードの助けを借りて、同じことができます-
まず、次のように必要なライブラリをインポートします-
今、2つの位置引数、すなわちiTunesバックアップと目的の出力フォルダを表すINPUT_DIRとOUTPUT_DIRを提供します-
今、次のようにログを設定します-
今、次のようにこのログのメッセージ形式を設定します-
次のコード行は、* os.makedirs()*関数を使用して、目的の出力ディレクトリに必要なフォルダーを作成します-
今、次のようにmain()関数に提供された入力および出力ディレクトリを渡します-
さて、入力フォルダに存在するすべてのバックアップを識別するために* backup_summary()関数をさらに呼び出す main()*関数を記述します-
今、次のようにコンソールに各バックアップの概要を印刷します-
次に、Manifest.dbファイルの内容をdb_itemsという名前の変数にダンプします。
さて、バックアップのディレクトリパスを取る関数を定義しましょう-
さて、SQLite3を使用して、cという名前のカーソルでデータベースに接続します-
次に、次のように* create_files()*メソッドを定義します-
ここで、 db_items 辞書の各キーを反復処理します-
今、次のようにバックアップファイルをコピーするために* shutil.copyfile()*メソッドを使用します-
上記のPythonスクリプトを使用すると、出力フォルダーに更新されたバックアップファイル構造を取得できます。 pycrypto pythonライブラリを使用して、バックアップを復号化できます。
Wi-Fi
モバイルデバイスは、どこでも利用可能なWi-Fiネットワークを介して接続することにより、外の世界に接続するために使用できます。 デバイスがこれらのオープンネットワークに自動的に接続される場合があります。
iPhoneの場合、デバイスが接続されたオープンWi-Fi接続のリストは、 com.apple.wifi.plist という名前のPLISTファイルに保存されます。 このファイルには、Wi-Fi SSID、BSSID、および接続時間が含まれます。
Pythonを使用して標準のCellebrite XMLレポートからWi-Fiの詳細を抽出する必要があります。 そのためには、Wi-Fiネットワークの名前を使用してデバイスの場所を見つけるのに使用できる一般的なプラットフォームである、Wireless Geographic Logging Engine(WIGLE)のAPIを使用する必要があります。
WIGLEのAPI
WIGLEから無料のAPIを取得するには、WIGLEのウェブサイトhttps://wigle.net/accountに登録する必要があります。 WIGELのAPIを介してユーザーデバイスとその接続に関する情報を取得するためのPythonスクリプトについては、以下で説明します-
まず、さまざまなことを処理するために次のライブラリをインポートします-
次に、2つの位置引数、つまり INPUT_FILE と OUTPUT_CSV を指定します。これらはそれぞれ、Wi-Fi MACアドレスを持つ入力ファイルと目的の出力CSVファイルを表します-
これで、次のコード行は、入力ファイルが存在し、ファイルであるかどうかを確認します。 そうでない場合は、スクリプトを終了します-
今、次のようにメインに引数を渡します-
今、私たちは次のようにXMLファイルを解析します-
今、次のようにルートの子要素を反復処理します-
次に、値のテキストに「ssid」文字列が存在するかどうかを確認します-
今、私たちは次のように無線LAN辞書にBSSID、SSIDとタイムスタンプを追加する必要があります-
XMLパーサーよりもはるかに単純なテキストパーサーを以下に示します-
さて、リクエストモジュールを使用して* WIGLE API 呼び出しを行い、 query_wigle()*メソッドに移動する必要があります-
実際には、WIGLE APIコールには1日あたりの制限があります。その制限を超えると、次のようなエラーが表示されます。
ここで、* prep_output()*メソッドを使用して、辞書を簡単に書き込み可能なチャンクにフラット化します-
さて、次のようにこれまでに収集したすべてのデータにアクセスします-
これで、* write_csv()*関数を使用して、この章の以前のスクリプトで行ったように、出力をCSVファイルに書き込むことができます。
埋め込みメタデータの調査
この章では、Pythonデジタルフォレンジックを使用した埋め込みメタデータの調査について詳しく学習します。
前書き
埋め込みメタデータは、同じファイルに格納されているデータに関する情報であり、そのデータによって記述されたオブジェクトを持っています。 つまり、デジタルファイル自体に保存されているデジタル資産に関する情報です。 常にファイルに関連付けられており、分離することはできません。
デジタルフォレンジックの場合、特定のファイルに関するすべての情報を抽出することはできません。 一方、埋め込みメタデータは、調査に重要な情報を提供します。 たとえば、テキストファイルのメタデータには、作成者に関する情報、その長さ、作成日、およびそのドキュメントに関する短い要約が含まれる場合があります。 デジタル画像には、画像の長さ、シャッター速度などのメタデータが含まれる場合があります。
メタデータ属性を含むアーティファクトとその抽出
このセクションでは、メタデータ属性を含むさまざまなアーティファクトとPythonを使用した抽出プロセスについて学習します。
オーディオとビデオ
これらは、メタデータが埋め込まれた2つの非常に一般的なアーティファクトです。 このメタデータは、調査目的で抽出できます。
次のPythonスクリプトを使用して、オーディオまたはMP3ファイルとビデオまたはMP4ファイルから共通の属性またはメタデータを抽出できます。
このスクリプトには、mutagenという名前のサードパーティのPythonライブラリをインストールする必要があります。これにより、オーディオファイルとビデオファイルからメタデータを抽出できるようになります。 それは、次のコマンドの助けを借りてインストールすることができます-
このPythonスクリプトのためにインポートする必要がある便利なライブラリのいくつかは次のとおりです-
コマンドラインハンドラーは、MP3またはMP4ファイルへのパスを表す1つの引数を取ります。 その後、次のようにファイルへのハンドルを開くために* mutagen.file()*メソッドを使用します-
次に、2つのハンドルを使用する必要があります。1つはMP3からデータを抽出し、もう1つはMP4ファイルからデータを抽出します。 次のようにこれらのハンドルを定義できます-
今、私たちは次のようにこのMP4ファイルを反復処理する必要があります-
上記のスクリプトは、MP3ファイルとMP4ファイルに関する追加情報を提供します。
画像
画像には、ファイル形式に応じて異なる種類のメタデータが含まれる場合があります。 ただし、ほとんどの画像にはGPS情報が埋め込まれています。 サードパーティのPythonライブラリを使用して、このGPS情報を抽出できます。 あなたは同じことをするために使用できる次のPythonスクリプトを使用することができます-
まず、次のように* Python Imaging Library(PIL)*という名前のサードパーティのPythonライブラリをダウンロードします-
これは、画像からメタデータを抽出するのに役立ちます。
また、画像に埋め込まれたGPSの詳細をKMLファイルに書き込むこともできますが、このために simplekml という名前のサードパーティPythonライブラリを次のようにダウンロードする必要があります-
このスクリプトでは、最初に次のライブラリをインポートする必要があります-
これで、コマンドラインハンドラーは、基本的に写真のファイルパスを表す1つの位置引数を受け入れます。
次に、座標情報を取り込むURLを指定する必要があります。 URLは gmaps および open_maps です。 また、PILライブラリによって提供される度分秒(DMS)タプル座標を10進数に変換する関数も必要です。 それは次のように行うことができます-
ここで、* image.open()*関数を使用して、ファイルをPILオブジェクトとして開きます。
さて、次のように simplekml ライブラリから kml オブジェクトを開始します-
次のように処理された情報から座標を印刷できるようになりました-
PDFドキュメント
PDFドキュメントには、画像、テキスト、フォームなど、さまざまなメディアがあります。 PDFドキュメントに埋め込まれたメタデータを抽出すると、結果データをExtensible Metadata Platform(XMP)と呼ばれる形式で取得する場合があります。 私たちは次のPythonコードの助けを借りてメタデータを抽出できます-
最初に、 PyPDF2 という名前のサードパーティPythonライブラリをインストールして、XMP形式で保存されたメタデータを読み取ります。 次のようにインストールできます-
今、PDFファイルからメタデータを抽出するために次のライブラリをインポートします-
これで、コマンドラインハンドラーは、基本的にPDFファイルのファイルパスを表す1つの位置引数を受け入れます。
今、我々は次のように利用可能なメタデータを含むオブジェクトを提供するために* getXmpMetadata()*メソッドを使用することができます-
- custom_print()*メソッドを使用して、title、creator、contributorなどの関連する値を抽出および印刷できます。 次のように-
また、次のように複数のソフトウェアを使用してPDFを作成する場合に* custom_print()*メソッドを定義することもできます-
また、次のようにソフトウェアによって保存された他のカスタムプロパティを抽出することができます-
上記のスクリプトはPDFドキュメントを読み取り、そのPDFが作成されたソフトウェアを使用して保存されたカスタムプロパティを含むXMP形式で保存されたメタデータを印刷します。
Windows実行可能ファイル
疑わしい、または不正な実行可能ファイルに遭遇する場合があります。 ただし、調査のためには、メタデータが埋め込まれているため便利です。 その場所、目的、製造業者、編集日などのその他の属性などの情報を取得できます。 次のPythonスクリプトの助けを借りて、コンパイル日、ヘッダーから有用なデータ、インポートされたシンボル、エクスポートされたシンボルを取得できます。
この目的のために、最初にサードパーティのPythonライブラリ pefile をインストールします。 それは次のように行うことができます-
これを正常にインストールしたら、次のように次のライブラリをインポートします-
これで、コマンドラインハンドラは、基本的に実行可能ファイルのファイルパスを表す1つの位置引数を受け入れます。 また、詳細で詳細な方法または単純化された方法で必要な場合でも、出力のスタイルを選択できます。 このためには、以下に示すようにオプションの引数を与える必要があります-
次に、PEクラスを使用して入力実行可能ファイルをロードします。 また、* dump_dict()*メソッドを使用して、実行可能データを辞書オブジェクトにダンプします。
以下に示すコードを使用して、埋め込みオーサーシップ、バージョン、コンパイル時間などの基本的なファイルメタデータを抽出できます-
次のようにヘッダーから有用なデータを抽出できます-
次に、以下に示すように、実行可能ファイルからインポートおよびエクスポートのリストを抽出します-
次に、以下に示すコードを使用して、 exports 、 names 、および addresses を印刷します-
上記のスクリプトは、基本的なメタデータ、Windows実行可能ファイルのヘッダーからの情報を抽出します。
Officeドキュメントのメタデータ
コンピューターでの作業のほとんどは、MS Officeの3つのアプリケーション(Word、PowerPoint、Excel)で行われます。 これらのファイルには膨大なメタデータが含まれており、そのメタデータにより、作成者や履歴に関する興味深い情報が公開されます。
2007形式のword(.docx)、excel(.xlsx)、およびpowerpoint(.pptx)のメタデータはXMLファイルに保存されていることに注意してください。 以下に示すPythonスクリプトを使用して、これらのXMLファイルをPythonで処理できます-
まず、以下に示すように必要なライブラリをインポートします-
次に、ファイルがZIPファイルかどうかを確認します。 それ以外の場合は、エラーが発生します。 今、ファイルを開き、次のコードを使用して処理するための重要な要素を抽出します-
今、メタデータの抽出を開始するための辞書を作成します-
- iterchildren()*メソッドを使用して、XMLファイル内の各タグにアクセスします-
同様に、ドキュメントの内容に関する統計情報を含むapp.xmlファイルに対してこれを行います-
上記のスクリプトを実行した後、特定のドキュメントに関するさまざまな詳細を取得できます。 このスクリプトは、Office 2007以降のバージョンのドキュメントにのみ適用できることに注意してください。
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メールからキャッシュされたデータを処理できます。
Pythonデジタルネットワークフォレンジック-II
前の章では、Pythonを使用したネットワークフォレンジックの概念のいくつかを扱いました。 この章では、Pythonを使用したネットワークフォレンジックをより深いレベルで理解しましょう。
美しいスープでWebページを保存
World Wide Web(WWW)は、独自の情報リソースです。 ただし、驚異的な速度でコンテンツが失われるため、そのレガシーはリスクが高くなります。 多くの文化遺産および学術機関、非営利団体、民間企業が、関連する問題を調査し、Webアーカイブの技術的ソリューションの開発に貢献してきました。
Webページの保存またはWebアーカイブは、World Wide Webからデータを収集し、データをアーカイブに保存し、将来の研究者、歴史家、一般の人々が利用できるようにするプロセスです。 ウェブページの保存にさらに進む前に、以下に示すように、ウェブページの保存に関連するいくつかの重要な問題を議論しましょう-
- * Webリソースの変更*-Webリソースは日々変化し続けており、これはWebページの保存の課題です。
- 大量のリソース-Webページの保存に関連する別の問題は、大量のリソースが保存されることです。
- 整合性-Webページは、その完全性を保護するために、不正な修正、削除、または削除から保護する必要があります。
- マルチメディアデータの取り扱い-Webページを保存している間、マルチメディアデータも処理する必要があり、これらを行うと問題が発生する可能性があります。
- アクセスの提供-保存のほかに、Webリソースへのアクセスを提供し、所有権の問題に対処する問題も解決する必要があります。
この章では、Webページの保存に Beautiful Soup という名前のPythonライブラリを使用します。
美しいスープとは?
Beautiful Soupは、HTMLおよびXMLファイルからデータを引き出すためのPythonライブラリです。 Webページ自体を取得できないため、スープオブジェクトを作成するには入力(ドキュメントまたはURL)が必要なため、 urlib で使用できます。 これについて詳しくはhttps://www.crummy.com/software/BeautifulSoup/bs4/doc/.[www.crummy.com/software/BeautifulSoup/bs4/doc/]で学ぶことができます。
それを使用する前に、次のコマンドを使用してサードパーティのライブラリをインストールする必要があることに注意してください-
次に、Anacondaパッケージマネージャーを使用して、Beautiful Soupを次のようにインストールできます-
Webページを保持するためのPythonスクリプト
Beautiful Soupと呼ばれるサードパーティのライブラリを使用してWebページを保存するためのPythonスクリプトはここで議論されています-
まず、次のように必要なライブラリをインポートします-
このスクリプトは2つの位置引数を取ることに注意してください。1つは保存されるURLであり、もう1つは以下に示すように望ましい出力ディレクトリです-
さて、ループにあるファイルとストリームハンドラを指定して、スクリプトのログを設定し、示されているように取得プロセスを文書化します-
さて、次のように目的の出力ディレクトリで入力検証を行いましょう-
ここで、次のように入力URLの追加の検証とともに実際の名前の前に不要な要素を削除することにより、Webサイトのベース名を抽出する* main()*関数を定義します-
次に、urlopen()メソッドを使用して、URLとの接続を開く必要があります。 次のようにtry-exceptブロックを使用してみましょう-
コードの次の行には、以下で説明する3つの関数が含まれます-
- * write_output()*は、最初のWebページを出力ディレクトリに書き込みます
- このWebページ上のリンクを識別する* find_links()*関数
- * recurse_pages()*関数は、Webページ上のすべてのリンクを反復して検出します。
さて、次のように* write_output()*メソッドを定義しましょう-
私たちは、Webページに関するいくつかの詳細を記録する必要があり、その後、次のように* hash_data()*メソッドを使用してデータのハッシュを記録します-
今、私たちは UTF-8 エンコードされたデータを読み取り、次のようにその SHA-256 ハッシュを生成する助けを借りて* hash_data()*メソッドを定義します-
さて、次のように* find_links()メソッドの下でWebページのデータから *Beautifulsoup オブジェクトを作成しましょう-
今、私たちは次のようにウェブサイトのURL、現在のリンクキュー、未検証のSSLコンテキストと出力ディレクトリの入力を提供することにより、* recurse_pages()*メソッドを定義する必要があります-
さて、次のようにリンク名、ページデータ、出力ディレクトリとカウンターを渡すことにより、ファイル内のアクセスされた各Webページの出力を書きます-
これで、WebサイトのURL、出力ディレクトリ、およびログファイルへのパスを指定してこのスクリプトを実行すると、将来の使用に使用できるWebページに関する詳細が取得されます。
ウイルスハンティング
法医学アナリスト、セキュリティ研究者、インシデント対応者が有用なソフトウェアとマルウェアの違いをどのように理解できるのか疑問に思ったことはありませんか? 答えは質問そのものにあります。なぜなら、ハッカーによって急速に生成されるマルウェアについて研究しなければ、研究者や専門家が有用なソフトウェアとマルウェアの違いを知ることはまったく不可能だからです。 このセクションでは、このタスクを実行するツールである VirusShare について説明します。
VirusShareは、セキュリティ研究者、インシデントレスポンダー、フォレンジックアナリストにライブの悪意のあるコードのサンプルを提供するマルウェアサンプルの最大規模の非公開コレクションです。 3,000万を超えるサンプルが含まれています。
VirusShareの利点は、自由に利用できるマルウェアハッシュのリストです。 誰でもこれらのハッシュを使用して非常に包括的なハッシュセットを作成し、それを使用して潜在的に悪意のあるファイルを識別することができます。 ただし、VirusShareを使用する前に、https://virusshare.comにアクセスして詳細を確認することをお勧めします。
VirusShareのハッシュリストは、X-waysやEnCaseなどのさまざまなフォレンジックツールで使用できます。 以下で説明するスクリプトでは、VirusShareからのハッシュリストのダウンロードを自動化して、改行区切りのハッシュリストを作成します。
このスクリプトでは、次のようにダウンロードできるサードパーティのPythonライブラリ tqdm が必要です-
このスクリプトでは、最初にVirusShareハッシュページを読み取り、最新のハッシュリストを動的に識別することに注意してください。 次に、進行状況バーを初期化し、目的の範囲のハッシュリストをダウンロードします。
まず、次のライブラリをインポートします-
このスクリプトは、ハッシュセットの目的のパスになる位置引数を1つ取ります-
さて、次のように標準入力検証を実行します-
ここで、引数として** kwargs を使用して* main()*関数を定義する必要があります。これにより、以下に示すように、指定されたキー引数をサポートするために参照できる辞書が作成されます。
ここで、* urlib.request.urlopen()*メソッドを使用してVirusShareハッシュページを開く必要があります。 私たちは次のようにtry-exceptブロックを使用します-
次に、ダウンロードしたページから最新のハッシュリストを特定します。 これを行うには、VirusShareハッシュリストへのHTML href タグの最後のインスタンスを検索します。 それは次のコード行で行うことができます-
今、私たちは次のようにループとプログレスバーを作成するために* tqdm.trange()*メソッドを使用します-
上記の手順を正常に実行した後、ハッシュセットテキストファイルをa +モードで開き、テキストファイルの最後に追加します。
上記のスクリプトを実行すると、テキスト形式のMD5ハッシュ値を含む最新のハッシュリストが取得されます。
メールを使用した調査
前の章では、ネットワークフォレンジックの重要性とプロセス、および関連する概念について説明しました。 この章では、デジタルフォレンジックにおける電子メールの役割とPythonを使用した調査について学習します。
調査における電子メールの役割
電子メールはビジネスコミュニケーションで非常に重要な役割を果たし、インターネット上で最も重要なアプリケーションの1つとして登場しました。 コンピュータからだけでなく、携帯電話やタブレットなどの他の電子機器からもメッセージだけでなくドキュメントを送信するのに便利なモードです。
電子メールのマイナス面は、犯罪者が会社に関する重要な情報を漏洩する可能性があることです。 したがって、デジタルフォレンジックにおける電子メールの役割は、近年増加しています。 デジタルフォレンジックでは、電子メールは重要な証拠と見なされ、電子メールヘッダー分析は、フォレンジックプロセス中に証拠を収集するために重要になりました。
捜査官は、電子メールの法医学を実行しながら、次の目標を持っています-
- 主な犯罪者を特定するには
- 必要な証拠を収集するには
- 調査結果を提示するには
- ケースを作成するには
メールフォレンジックの課題
現在の通信のほとんどは電子メールに依存しているため、電子メールフォレンジックは調査において非常に重要な役割を果たします。 ただし、電子メールの法医学調査員は、調査中に次の課題に直面する可能性があります-
偽のメール
電子メールフォレンジックの最大の課題は、ヘッダーなどの操作とスクリプト作成によって作成される偽の電子メールの使用です。 このカテゴリでは、犯罪者は一時的な電子メールも使用します。これは、登録されたユーザーが特定の期間が経過すると期限が切れる一時的なアドレスで電子メールを受信できるサービスです。
なりすまし
メールフォレンジックのもう1つの課題は、犯罪者が他人のメールを提示するために使用するなりすましです。 この場合、マシンは偽のIPアドレスと元のIPアドレスの両方を受け取ります。
匿名の再メール
ここで、電子メールサーバーは、さらに転送する前に電子メールメッセージから識別情報を取り除きます。 これは、電子メール調査の別の大きな課題につながります。
電子メールの法医学調査で使用される手法
メールフォレンジックは、送信の日付/時刻や送信者の意図などのその他の情報とともに、メッセージの実際の送信者と受信者を識別する証拠としての電子メールのソースとコンテンツの研究です。 これには、メタデータの調査、ポートスキャン、キーワード検索が含まれます。
電子メールの法医学調査に使用できる一般的な手法のいくつかは次のとおりです。
- ヘッダー分析
- サーバー調査
- ネットワークデバイス調査
- 送信者のメーラーの指紋
- ソフトウェア組み込み識別子
以下のセクションでは、電子メール調査のためにPythonを使用して情報を取得する方法を学習します。
EMLファイルからの情報の抽出
EMLファイルは、基本的にファイル形式の電子メールであり、電子メールメッセージの保存に広く使用されています。 これらは、Microsoft Outlook、Outlook Express、Windows Live Mailなどの複数の電子メールクライアント間で互換性のある構造化テキストファイルです。
EMLファイルには、電子メールヘッダー、本文コンテンツ、添付データがプレーンテキストとして保存されます。 base64を使用してバイナリデータをエンコードし、Quoted-Printable(QP)エンコードを使用してコンテンツ情報を保存します。 EMLファイルから情報を抽出するために使用できるPythonスクリプトは以下のとおりです-
まず、以下に示すように、次のPythonライブラリをインポートします-
上記のライブラリでは、EMQファイルからQPエンコードされた値をデコードするために quopri が使用されます。 base64でエンコードされたデータは、 base64 ライブラリを使用してデコードできます。
次に、コマンドラインハンドラーの引数を指定します。 以下に示すように、ここではEMLファイルへのパスになる引数を1つだけ受け入れることに注意してください-
ここで、オブジェクトのようなファイルを読み取るために、電子メールライブラリから* message_from_file()という名前のメソッドを使用する main()関数を定義する必要があります。 ここで、以下に示すコードに示すように、 *emlfile という名前の結果変数を使用して、ヘッダー、本文コンテンツ、添付ファイル、およびその他のペイロード情報にアクセスします-
ここで、* get_payload()メソッドを使用してメッセージ本文コンテンツを抽出する process_payload()*メソッドを定義する必要があります。 * quopri.decodestring()*関数を使用してQPエンコードデータをデコードします。 また、電子メールの保存を適切に処理できるように、コンテンツのMIMEタイプを確認します。 以下のコードを確認してください-
上記のスクリプトを実行した後、コンソールにさまざまなペイロードとともにヘッダー情報を取得します。
Pythonを使用したMSGファイルの分析
電子メールメッセージにはさまざまな形式があります。 MSGは、Microsoft OutlookおよびExchangeで使用されるこの種の形式の1つです。 MSG拡張子のファイルには、ヘッダーとメインメッセージ本文、およびハイパーリンクと添付ファイル用のプレーンASCIIテキストが含まれている場合があります。
このセクションでは、Outlook APIを使用してMSGファイルから情報を抽出する方法を学習します。 次のPythonスクリプトはWindowsでのみ機能することに注意してください。 このためには、次のように pywin32 という名前のサードパーティPythonライブラリをインストールする必要があります-
今、示されているコマンドを使用して、次のライブラリをインポートします-
ここで、コマンドラインハンドラーの引数を指定しましょう。 ここでは、2つの引数を受け入れます。1つはMSGファイルへのパスで、もう1つは次のように目的の出力フォルダーです-
次に、* main()関数を定義する必要があります。この関数では、 MAPI名前空間へのアクセスをさらに許可する Outlook API を設定するために、 win32com ライブラリを呼び出します。
次に、このスクリプトで使用しているさまざまな関数を定義します。 以下のコードは、* display_msg_attribs()*関数の定義を示しています。この関数を使用すると、件名、to、BCC、CC、サイズ、SenderName、送信済みなどのメッセージのさまざまな属性を表示できます。
次に、メッセージを反復処理して受信者の詳細を表示する* display_msg_recipeints()*関数を定義します。
次に、メッセージから本文コンテンツ、HTML、およびプレーンテキストを抽出する* extract_msg_body()*関数を定義します。
次に、添付データを目的の出力ディレクトリにエクスポートする* extract_attachments()*関数を定義します。
すべての機能が定義されたら、次のコード行ですべての属性をコンソールに出力します-
上記のスクリプトを実行した後、コンソールウィンドウでメッセージの属性とその添付ファイルを取得し、出力ディレクトリのいくつかのファイルを取得します。
Pythonを使用してGoogle TakeoutからMBOXファイルを構造化する
MBOXファイルは、内部に保存されたメッセージを分割する特別な形式のテキストファイルです。 多くの場合、UNIXシステム、Thunderbolt、およびGoogle Takeoutに関連して見つかります。
このセクションには、Google Takeoutsから取得したMBOXファイルを構造化するPythonスクリプトが表示されます。 ただし、その前に、GoogleアカウントまたはGmailアカウントを使用してこれらのMBOXファイルを生成する方法を知っておく必要があります。
GoogleアカウントメールボックスをMBX形式で取得する
Googleアカウントのメールボックスを取得することは、Gmailアカウントのバックアップを取ることを意味します。 バックアップは、個人的または職業上のさまざまな理由で取得できます。 GoogleはGmailデータのバックアップを提供することに注意してください。 GoogleアカウントのメールボックスをMBOX形式に取得するには、以下の手順に従う必要があります-
- [マイアカウント]ダッシュボードを開きます。
- [個人情報とプライバシー]セクションに移動し、[コンテンツリンクの制御]を選択します。
- 新しいアーカイブを作成するか、既存のアーカイブを管理できます。 [アーカイブの作成]リンクをクリックすると、含めるGoogleサービスごとにチェックボックスが表示されます。
- 製品を選択した後、リストから選択する配信方法とともに、アーカイブのファイルタイプと最大サイズを自由に選択できます。
- 最後に、このバックアップをMBOX形式で取得します。
Pythonコード
さて、上記のMBOXファイルは、以下に示すようにPythonを使用して構造化できます-
まず、次のようにPythonライブラリをインポートする必要があります-
MBOXファイルの解析に使用される mailbox ライブラリを除き、すべてのライブラリが以前のスクリプトで使用および説明されています。
次に、コマンドラインハンドラーの引数を指定します。 ここでは、2つの引数を受け入れます。1つはMBOXファイルへのパスで、もう1つは目的の出力フォルダーです。
ここで、* main()関数を定義し、そのパスを指定してMBOXファイルを解析できるように、メールボックスライブラリの *mbox クラスを呼び出します-
今、次のように*メールボックス*ライブラリのリーダーメソッドを定義します-
今、次のようにさらに処理するためのいくつかの変数を作成します-
次に、 tqdm を使用して進行状況バーを生成し、次のように反復プロセスを追跡します-
次に、天気メッセージにペイロードがあるかどうかを確認します。 それがあれば、次のように* write_payload()*メソッドを定義します-
次に、データを追加する必要があります。 次に、次のように* create_report()*メソッドを呼び出します-
上記のif-elseステートメントは理解しやすいことに注意してください。 今、私たちは次のように msg オブジェクトからファイル名を抽出するメソッドを定義する必要があります-
今、次のコード行の助けを借りて、実際にファイルをエクスポートできます-
さて、次のようにこれらのファイルの名前を正確に表すために*メッセージ*からファイル名を抽出する関数を定義しましょう-
これで、次のように* create_report()*関数を定義してCSVファイルを作成できます-
上記のスクリプトを実行すると、CSVレポートとディレクトリが添付ファイルでいっぱいになります。
Windows-Iの重要なアーティファクト
この章では、Microsoft Windowsのフォレンジックに関連するさまざまな概念と、調査プロセスで調査者が取得できる重要なアーティファクトについて説明します。
前書き
アーティファクトとは、コンピューターユーザーが実行したアクティビティに関連する重要な情報を持つコンピューターシステム内のオブジェクトまたは領域です。 この情報の種類と場所は、オペレーティングシステムによって異なります。 フォレンジック分析中、これらのアーティファクトは、調査員の観察の承認または不承認において非常に重要な役割を果たします。
フォレンジックのためのWindowsアーティファクトの重要性
Windowsのアーティファクトは、次の理由により重要であると想定しています-
- 世界のトラフィックの約90%は、Windowsをオペレーティングシステムとして使用しているコンピューターからのものです。 そのため、デジタルフォレンジック検査官にとって、Windowsアーティファクトは非常に重要です。
- Windowsオペレーティングシステムには、コンピューターシステムでのユーザーアクティビティに関連するさまざまな種類の証拠が保存されます。 これは、デジタルフォレンジックにとってWindowsアーティファクトの重要性を示すもう1つの理由です。
- 多くの場合、調査員は、ユーザーが作成したデータのような古い領域と従来の領域を中心に調査を展開します。 Windowsのアーティファクトは、システムが作成したデータやアーティファクトのような非伝統的な領域に調査を導くことができます。
- 調査担当者だけでなく、非公式の調査を行う企業や個人にも役立つ、大量のアーティファクトがWindowsによって提供されます。
- 近年のサイバー犯罪の増加は、Windowsアーティファクトが重要であるもう1つの理由です。
WindowsアーティファクトとPythonスクリプト
このセクションでは、Windowsアーティファクトとそれらから情報を取得するPythonスクリプトについて説明します。
ごみ箱
フォレンジック調査のための重要なWindowsアーティファクトの1つです。 Windowsのごみ箱には、ユーザーによって削除されたが、まだシステムによって物理的に削除されていないファイルが含まれています。 ユーザーがファイルをシステムから完全に削除したとしても、それは調査の重要なソースとなります。 これは、削除されたファイルから、審査官が元のファイルパスやごみ箱に送信された時刻などの貴重な情報を抽出できるためです。
ごみ箱の証拠の保存は、Windowsのバージョンに依存することに注意してください。 次のPythonスクリプトでは、2つのファイルを作成するWindows 7を扱います。リサイクルファイルの実際のコンテンツを含む $ R ファイルと、元のファイル名、パス、ファイルサイズを含む $ I ファイルファイルが削除されたとき。
Pythonスクリプトの場合、サードパーティのモジュール、つまり pytsk3、pyewf および unicodecsv をインストールする必要があります。 pip を使用してそれらをインストールできます。 次の手順に従って、ごみ箱から情報を抽出できます-
- まず、再帰メソッドを使用して $ Recycle.bin フォルダーをスキャンし、 $ I で始まるすべてのファイルを選択する必要があります。
- 次に、ファイルの内容を読み取り、使用可能なメタデータ構造を解析します。
- 次に、関連する$ Rファイルを検索します。
- 最後に、レビューのために結果をCSVファイルに書き込みます。
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートする必要があります-
次に、コマンドラインハンドラーの引数を指定する必要があります。 以下に示すように、ここでは3つの引数を受け入れることに注意してください。最初は証拠ファイルへのパス、2番目は証拠ファイルのタイプ、3番目はCSVレポートへの望ましい出力パスです-
ここで、すべての処理を処理する* main()関数を定義します。 次のように *$ I ファイルを検索します-
さて、 $ I ファイルが見つかった場合は、* process_dollar_i()関数に送信する必要があります。この関数は、以下に示すように、 *$ I ファイルのリストと tsk_util オブジェクトを受け入れます。
今、次のように$ Rファイルを検索します-
次に、* read_dollar_i()メソッドを定義して、 *$ I ファイルを読み取ります。つまり、メタデータを解析します。 * read_random()メソッドを使用して、署名の最初の8バイトを読み取ります。 署名が一致しない場合、これはnoneを返します。 その後、有効なファイルである場合は、 *$ I ファイルから値を読み取って展開する必要があります。
今、これらのファイルを抽出した後、以下に示すように* sizeof_fmt()*関数を使用して整数を人間が読める値に解釈する必要があります-
今、私たちは次のように* sizeof_fmt()*関数を定義する必要があります-
今、次のようにフォーマットされた日付と時刻に解釈された整数の関数を定義します-
今、私たちは次のように処理された結果をCSVファイルに書き込むために* write_csv()*メソッドを定義します-
上記のスクリプトを実行すると、$ Iおよび$ Rファイルからデータが取得されます。
ポストイット
Windows付箋は、ペンと紙で書くという現実の習慣を置き換えます。 これらのノートは、色、フォントなどのさまざまなオプションを使用してデスクトップに浮かびました。 Windows 7では、付箋ファイルはOLEファイルとして保存されるため、次のPythonスクリプトでは、このOLEファイルを調査して付箋からメタデータを抽出します。
このPythonスクリプトでは、サードパーティのモジュール、つまり olefile、pytsk3、pyewf 、unicodecsvをインストールする必要があります。 コマンド pip を使用してそれらをインストールできます。
付箋ファイルから情報を抽出するために、以下で説明する手順、つまり StickyNote.sn を実行できます-
- まず、証拠ファイルを開き、すべてのStickyNote.sntファイルを見つけます。
- 次に、OLEストリームからメタデータとコンテンツを解析し、RTFコンテンツをファイルに書き込みます。
- 最後に、このメタデータのCSVレポートを作成します。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、このスクリプト全体で使用されるグローバル変数を定義します-
次に、コマンドラインハンドラーの引数を指定する必要があります。 ここでは、3つの引数を受け入れることに注意してください。1つ目は証拠ファイルへのパス、2つ目は証拠ファイルのタイプ、3つ目は次のような望ましい出力パスです-
さて、以下に示すように、前のスクリプトに似た* main()*関数を定義します-
次に、結果のファイルを反復処理します。 次に、* parse_snt_file()関数を呼び出してファイルを処理し、次に write_note_rtf()*メソッドを使用してRTFファイルを書き込みます。
次に、このスクリプトで使用されるさまざまな関数を定義する必要があります。
まず、 pytsk ファイルオブジェクトを取得して、ファイルのサイズを読み取る* create_file_like_obj()関数を定義します。 次に、入力としてファイルのようなオブジェクトを受け入れ、付箋ファイルの読み取りと解釈に使用される parse_snt_file()*関数を定義します。
次に、次のように* write_note_rtf()*関数を定義してRTFファイルを作成します
次に、ネストされた辞書を、CSVスプレッドシートにより適した辞書のフラットリストに変換します。 * prep_note_report()関数を定義することにより実行されます。 最後に、 write_csv()*関数を定義します。
上記のスクリプトを実行した後、Sticky Notesファイルからメタデータを取得します。
レジストリファイル
Windowsレジストリファイルには、法医学アナリストにとって貴重な情報の宝庫のような多くの重要な詳細が含まれています。 これは、オペレーティングシステムの構成、ユーザーアクティビティ、ソフトウェアのインストールなどに関する詳細を含む階層型データベースです。 次のPythonスクリプトでは、 SYSTEM および SOFTWARE ハイブから共通のベースライン情報にアクセスします。
このPythonスクリプトでは、サードパーティのモジュール、つまり pytsk3、pyewf および registry をインストールする必要があります。 pip を使用してそれらをインストールできます。
私たちは、Windowsレジストリから情報を抽出するための以下の手順に従うことができます-
- 最初に、名前とパスで処理するレジストリハイブを見つけます。
- 次に、StringIOおよびレジストリモジュールを使用してこれらのファイルを開きます。
- 最後に、すべてのハイブを処理し、解析した値を解釈のためにコンソールに出力する必要があります。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは2つの引数を受け入れます-最初に証拠ファイルへのパス、2番目に証拠ファイルのタイプ、以下に示すように-
次のように /Windows/System32/config フォルダー内の SYSTEM および SOFTWARE ハイブを検索するための* main()*関数を定義します-
次に、レジストリファイルを開くための関数を定義します。 この目的のために、次のように pytsk メタデータからファイルのサイズを収集する必要があります-
今、次の方法の助けを借りて、私たちは SYSTEM> ハイブを処理できます-
今、私たちは次のようにフォーマットされた日付と時刻に整数を解釈するための関数を定義する必要があります-
今、次の方法の助けを借りて、*ソフトウェア*ハイブを処理できます-
上記のスクリプトを実行した後、メタデータをWindowsレジストリファイルに保存します。
Windows-IIの重要なアーティファクト
この章では、Windowsの重要なアーティファクトとPythonを使用した抽出方法について説明します。
ユーザー活動
さまざまなユーザーアクティビティを保存するための NTUSER.DAT ファイルを持つWindows。 すべてのユーザープロファイルには、 NTUSER.DAT のようなハイブがあります。このハイブには、そのユーザーに特に関連する情報と構成が保存されます。 したがって、法医学アナリストによる調査の目的には非常に有用です。
次のPythonスクリプトは、システム上のユーザーのアクションを調べるために NTUSER.DAT のキーの一部を解析します。 先に進む前に、Pythonスクリプトの場合、サードパーティのモジュール、つまり Registry、pytsk3 、pyewfおよび Jinja2 をインストールする必要があります。 pipを使用してインストールできます。
次の手順に従って、 NTUSER.DAT ファイルから情報を抽出できます-
- まず、システム内のすべての NTUSER.DAT ファイルを検索します。
- 次に、各 NTUSER.DAT ファイルの WordWheelQuery、TypePathおよびRunMRU キーを解析します。
- 最後に、 Jinja2 fmoduleを使用して、既に処理されたこれらのアーティファクトをHTMLレポートに書き込みます。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonモジュールをインポートする必要があります-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、3つの引数を受け入れます-最初は証拠ファイルへのパス、2番目は証拠ファイルのタイプ、3番目はHTMLレポートへの望ましい出力パスです、以下に示すように-
次に、示されているように、すべての NTUSER.DAT ファイルを検索するための* main()*関数を定義しましょう-
今、私たちは NTUSER.DAT ファイルでキーを見つけようとし、それを見つけたら、以下に示すようにユーザー処理機能を定義します-
今、次のように* write_html()*メソッドに辞書オブジェクトとそのパスを渡します-
次に、 pytsk ファイルハンドルを取得し、 StringIO クラスを介してRegistryクラスに読み込むメソッドを定義します。
今、私たちは次のように NTUSER.DAT ファイルから WordWheelQuery キーを解析して処理する関数を定義します-
ここで、次のように NTUSER.DAT ファイルから TypedPaths キーを解析および処理する関数を定義します-
今、私たちは次のように NTUSER.DAT ファイルから RunMRU キーを解析して処理する関数を定義します-
さて、次の機能はHTMLレポートの作成を処理します-
最後に、レポート用のHTMLドキュメントを作成できます。 上記のスクリプトを実行した後、NTUSER.DATファイルからHTMLドキュメント形式の情報を取得します。
LINKファイル
ショートカットファイルは、ユーザーまたはオペレーティングシステムが、頻繁に使用、ダブルクリック、または接続ストレージなどのシステムドライブからアクセスされるファイルのショートカットファイルを作成するときに作成されます。 このような種類のショートカットファイルは、リンクファイルと呼ばれます。 これらのリンクファイルにアクセスすることにより、調査員はこれらのファイルにアクセスした時間や場所などのウィンドウのアクティビティを見つけることができます。
これらのWindows LINKファイルから情報を取得するために使用できるPythonスクリプトについて説明しましょう。
Pythonスクリプトの場合、サードパーティのモジュール、つまり pylnk、pytsk3、pyewf をインストールします。 次の手順に従って、 lnk ファイルから情報を抽出できます。
- まず、システム内で lnk ファイルを検索します。
- 次に、ファイルを反復処理して、そのファイルから情報を抽出します。
- さて、最後にこの情報をCSVレポートに追加する必要があります。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、3つの引数を受け入れます。1つ目は証拠ファイルへのパス、2つ目は証拠ファイルのタイプ、3つ目はCSVレポートへの望ましい出力パスです(以下を参照)-
次に、 TSKUtil のオブジェクトを作成して証拠ファイルを解釈し、ファイルシステムを反復処理して、 lnk で終わるファイルを見つけます。 それは次のように* main()*関数を定義することで実行できます-
今、次のコードの助けを借りて、次のような関数を作成して lnk ファイルを反復処理します-
次に、2つの関数を定義する必要があります。1つは pytsk ファイルオブジェクトを開き、もう1つは以下に示すようにCSVレポートの作成に使用されます-
上記のスクリプトを実行した後、CSVレポートで検出された lnk ファイルから情報を取得します-
ファイルのプリフェッチ
アプリケーションが特定の場所から初めて実行されるたびに、Windowsは prefetch files を作成します。 これらは、アプリケーションの起動プロセスを高速化するために使用されます。 これらのファイルの拡張子は .PF で、*” \ Root \ Windows \ Prefetch” *フォルダーに保存されます。
デジタルフォレンジックの専門家は、ユーザーの詳細とともに、指定された場所からのプログラム実行の証拠を明らかにすることができます。 プリフェッチファイルは、プログラムが削除またはアンインストールされた後でもエントリが残るため、審査官にとって有用なアーティファクトです。
以下に示すように、Windowsプリフェッチファイルから情報を取得するPythonスクリプトについて説明しましょう-
Pythonスクリプトの場合、サードパーティのモジュール、つまり pylnk、pytsk3 および unicodecsv をインストールします。 前の章で説明したPythonスクリプトでこれらのライブラリを使用したことを思い出してください。
- まず、*。pf *拡張ファイルまたはプリフェッチファイルをスキャンします。
- 次に、署名検証を実行して、誤検知を排除します。
- 次に、Windowsプリフェッチファイル形式を解析します。 これは、Windowsバージョンによって異なります。 たとえば、Windows XPでは17、Windows VistaおよびWindows 7では23、Windows 8.1では26、Windows 10では30です。
- 最後に、解析結果をCSVファイルに書き込みます。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、2つの引数を受け入れます。1つ目は証拠ファイルへのパス、2つ目は証拠ファイルのタイプです。 また、プリフェッチファイルをスキャンするパスを指定するためのオプションの引数も受け入れます-
次に、 TSKUtil のオブジェクトを作成して証拠ファイルを解釈し、ファイルシステムを反復処理して、。pf *で終わるファイルを見つけます。 それは次のように main()*関数を定義することで実行できます-
次に、以下に示すように署名の検証を行うメソッドを定義します-
次に、Windowsプリフェッチファイルの処理を開始します。 ここでは、Windows XPプリフェッチファイルの例を取り上げています-
今、次のように構造体を使用して、プリフェッチされたファイル内に埋め込まれたデータを抽出します-
Windows XPのプリフェッチバージョンを提供しましたが、他のWindowsのプリフェッチバージョンに遭遇した場合はどうでしょうか。 その後、次のようにエラーメッセージを表示する必要があります-
今、次のようにCSVレポートに結果を書き込むための方法を定義します-
上記のスクリプトを実行した後、Windows XPバージョンのプリフェッチファイルからスプレッドシートに情報を取得します。
Windows-IIIの重要なアーティファクト
この章では、Windowsでのフォレンジック分析中に調査者が取得できるさらなる成果物について説明します。
イベントログ
Windowsイベントログファイルは、名前のとおり、ユーザーがコンピューターにログオンしたとき、プログラムでエラーが発生したとき、システムの変更、RDPアクセス、アプリケーション固有のイベントなどの重要なイベントを格納する特別なファイルです。 サイバー調査員は、システムのアクセスに関する多くの有用な履歴情報を提供するため、イベントログ情報に常に関心を持っています。 次のPythonスクリプトでは、従来のWindowsイベントログ形式と現在のWindowsイベントログ形式の両方を処理します。
Pythonスクリプトの場合、サードパーティのモジュール、つまり* pytsk3、pyewf、unicodecsv、pyevt、およびpyevt * xをインストールする必要があります。 イベントログから情報を抽出するには、以下に示す手順に従ってください-
- まず、入力引数に一致するすべてのイベントログを検索します。
- 次に、ファイル署名の検証を実行します。
- 次に、見つかった各イベントログを適切なライブラリで処理します。
- 最後に、出力をスプレッドシートに書き込みます。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、3つの引数を受け入れることに注意してください。1つ目は証拠ファイルへのパス、2つ目は証拠ファイルのタイプ、3つ目は処理するイベントログの名前です。
次に、イベントログと対話して、 TSKUtil オブジェクトを作成することにより、ユーザーが指定したパスの存在を照会します。 それは次のように* main()*メソッドの助けを借りて行うことができます-
今、私たちは現在のディレクトリにコンテンツ全体を書き込むメソッドを定義することによって署名検証を実行する必要があります-
最後に、次のようにスプレッドシートに出力を書き込む方法を定義します-
上記のスクリプトを正常に実行すると、スプレッドシートでイベントログの情報を取得します。
インターネットの歴史
インターネット履歴は、法医学アナリストにとって非常に役立ちます。ほとんどのサイバー犯罪はインターネット上でのみ発生するためです。 Windowsのフォレンジックについて説明しているように、Internet Explorerからインターネット履歴を抽出する方法を見てみましょう。InternetExplorerはデフォルトでWindowsに付属しています。
Internet Explorerでは、インターネット履歴は index.dat ファイルに保存されます。 index.dat ファイルから情報を抽出するPythonスクリプトを見てみましょう。
以下の手順に従って、 index.dat ファイルから情報を抽出できます-
- 最初に、システム内で index.dat ファイルを検索します。
- 次に、ファイルを反復処理して、そのファイルから情報を抽出します。
- 次に、これらすべての情報をCSVレポートに書き込みます。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、2つの引数を受け入れることに注意してください。1つ目は証拠ファイルへのパス、2つ目は証拠ファイルのタイプです-
次に、 TSKUtil のオブジェクトを作成して証拠ファイルを解釈し、ファイルシステムを反復処理してindex.datファイルを見つけます。 それは次のように* main()*関数を定義することで実行できます-
今、index.datファイルの情報を現在の作業ディレクトリにコピーし、後でサードパーティのモジュールで処理できるようにする機能を定義します-
さて、組み込み関数、すなわち* check_file_signature()*の助けを借りて署名検証を実行するために次のコードを使用します-
次に、以下に示すように、CSVファイルで出力を印刷するメソッドを定義します-
上記のスクリプトを実行した後、CSVファイルのindex.datファイルから情報を取得します。
ボリュームシャドウコピー
シャドウコピーは、Windowsに含まれるコンピューターファイルのバックアップコピーまたはスナップショットを手動または自動で取得するためのテクノロジです。 ボリュームスナップショットサービスまたはボリュームシャドウサービス(VSS)とも呼ばれます。
これらのVSSファイルの助けを借りて、法医学の専門家は、システムが時間の経過とともにどのように変化したか、コンピューターに存在したファイルに関する履歴情報を得ることができます。 シャドウコピーテクノロジでは、シャドウコピーを作成および保存するために、ファイルシステムがNTFSである必要があります。
このセクションでは、フォレンジック画像に存在するシャドウコピーのボリュームへのアクセスに役立つPythonスクリプトを確認します。
Pythonスクリプトの場合、サードパーティのモジュール、つまり pytsk3、pyewf、unicodecsv、pyvshadow および vss をインストールする必要があります。 以下の手順に従って、VSSファイルから情報を抽出できます。
- 最初に、RAWイメージのボリュームにアクセスし、すべてのNTFSパーティションを特定します。
- 次に、シャドウコピーを繰り返し処理して情報を抽出します。
- ここで、最後にスナップショット内のデータのファイルリストを作成する必要があります。
Pythonコード
この目的のためにPythonコードを使用する方法を見てみましょう-
まず、次のPythonライブラリをインポートします-
次に、コマンドラインハンドラーの引数を指定します。 ここでは、2つの引数を受け入れます。1つ目は証拠ファイルへのパス、2つ目は出力ファイルです。
ここで、入力ファイルのパスの存在を検証し、ディレクトリを出力ファイルから分離します。
次に、 TSKUtil オブジェクトを作成して、証拠ファイルのボリュームを操作します。 それは次のように* main()*メソッドの助けを借りて行うことができます-
今、次のように解析されたボリュームシャドウファイルを探索するためのメソッドを定義します-
最後に、スプレッドシートに結果を書き込む方法を次のように定義します-
このPythonスクリプトを正常に実行すると、VSSにある情報をスプレッドシートに取得します。
ログベースのアーティファクトの調査
これまで、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レポートを生成できます。