Python-digital-forensics-network
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ハッシュ値を含む最新のハッシュリストが取得されます。