はじめに
今日のデジタル時代では、デバイスやシステムによって生成される膨大な量のデータは、セキュリティ担当者にとって課題であると同時にチャンスでもあります。 サイバー攻撃の傾向に関する価値ある、または実用的な洞察を得るためには、大量のデータを分析するには、正確なツールと方法論が必要です。
データ分析のタスクを掘り下げる前に、次のような疑問を抱くかもしれません。
- 具体的にどのような疑問に答えようとしているのか、また必要なデータを持っているのか?
- 関連するデータはすべてどこにありますか?
- このデータにアクセスするにはどうすればよいですか?
- データにアクセスする際、データを理解し整理するためにどのような手順が必要ですか?
- データの抽出、解釈、または視覚化に最も効果的なツールはどれですか?
- 生データをすぐに分析すべきか、それとも処理されるまで待つべきか?
- 最も重要なのは、データからどのような実用的な洞察を導き出すことができるかということです。
これらの質問があなたの心に響くなら、あなたは正しい道を進んでいます。 Google Cloud の世界へようこそ。Google Cloud では、これらのクエリに対処し、包括的なレポートを作成するプロセスをご案内します。
このアプローチには、次の順序でいくつかの手順が含まれます。
探検: まず、自由に使えるデータを徹底的に理解することから始めます。 このフェーズでは、明らかにすることを目的とした潜在的な洞察を特定し、必要なデータの可用性を検証します。
抽出: ここでは、分析に最も関連性の高い最新の情報に焦点を当てて、必要なデータを収集します。
前処理と変換: この段階では、分析用のデータを準備します。 これには、データの正規化 (クリーニング、整理、構造化) が含まれ、データをさらに処理する準備ができていることを確認します。
トレンド分析: 私たちの脅威の調査結果と観察の大部分は、この取り組みから得られています。 処理されたデータのパターン、傾向、異常を分析します。 時系列分析や集約などの手法を使用して、時間の経過に伴う脅威の進化を理解し、さまざまなプラットフォーム間での重大なサイバー攻撃を強調表示します。
削減: このステップでは、データを最も関連性の高い要素に抽出し、最も重要で洞察に満ちた側面に焦点を当てます。
プレゼンテーション: 最後のステップは、調査結果を提示することです。 Google Workspace のツールを活用して、インサイトを明確かつ簡潔に、視覚的に魅力的な方法で表示することを目指しています。
結論: この旅を振り返りながら、適切な分析ツールを持つことの重要性について説明します。 Google Cloud Platform(GCP)がサイバー脅威データの分析に理想的な環境を提供し、生データを有意義な分析情報に変換する方法に焦点を当てます。
データ探索: 利用可能なデータの特定
高度な分析に飛び込む前に、調査対象のデータランドスケープを理解して準備する必要があります。
これが私たちのアプローチです。
- 利用可能なデータの特定: 最初のステップは、どのデータがアクセス可能かを確認することです。 これには、マルウェア現象、エンドポイントの異常、クラウド信号などが含まれます。これらのデータ型が使用可能であることを確認することは不可欠です。
- データ ストアの検索: データの正確な位置を特定するため。 データベース、データレイク、その他のストレージソリューションのいずれにデータが存在するかを知ることは、その後の分析プロセスを効率化するのに役立ちます。
- データへのアクセス: 必要なデータセットにアクセスするために必要な権限または資格情報があることを確認することが重要です。 そうでない場合は、リソース所有者を特定してアクセスを要求する必要があります。
- データスキーマの理解: データの構造を理解することは非常に重要です。 スキーマを把握しておくと、分析プロセスを効果的に計画するのに役立ちます。
- データ品質の評価: 徹底的な分析と同様に、データの品質を評価することは非常に重要です。 データがセグメント化され、意味のあるトレンド分析に十分な詳細さがあるかどうかを確認します。
このフェーズでは、分析が強固で現実的な基盤に基づいていることを確認します。 Global Threat Reportのようなレポートでは、次のような豊富で適切なデータセットに依存しています。
- クラウド信号データ: これには、特にAWS、GCP、Azureなどのクラウドプラットフォームに焦点を当てた、グローバルなセキュリティ情報およびイベント管理(SIEM)アラートからのデータが含まれます。 このデータは、多くの場合 、公開検出ルールから取得されます。
- エンドポイント アラート データ:グローバルなElastic Defendアラートから収集されたデータには、さまざまなパブリックエンドポイントの動作ルールが組み込まれています。
- マルウェア データ: これには、 MalwareScore と公開 YARAルールで強化されたグローバルなElastic Defendアラートからのデータが含まれます。
各データセットは、 MITRE ATT&CKなどのフレームワーク、Elastic Stackの詳細、顧客インサイトなど、コンテキストに応じて分類され、強化されています。 BigQuery や Google Cloud Storage(GCS)バケットなど、Google Cloud Platform のストレージ ソリューションは、分析のための堅牢なインフラストラクチャを提供します。
また、関連性と正確性を確保するために、年次報告書の 365 日以内のデータを除いて、データの "鮮度" しきい値を設定することも重要です。
最後に、偏りのない視点を提供するデータを選択することを忘れないでください。 内部データの除外または含めることは、可視性との関連性に基づいて、意図的かつ戦略的な決定である必要があります。
要約すると、適切なツールとデータセットを選択することは、包括的で洞察に満ちた分析を作成するための基本です。 それぞれの選択肢は、データ分析の全体的な有効性に独自の貢献をし、最終的な洞察が価値と影響力の両方を持つことを保証します。
抽出:データ分析の最初のステップ
必要なデータを特定して特定したら、分析の次のステップは、ストレージソリューションからこのデータを抽出することです。 このフェーズは、その後の詳細な分析の舞台を設定するため、非常に重要です。
データ抽出ツールと手法
データ抽出には、Python、R、Go、Jupyter Notebook、Looker Studio など、さまざまなツールやプログラミング言語を利用できます。 各ツールには独自の利点があり、その選択は解析の特定のニーズによって異なります。
データ抽出の取り組みでは、 BigQuery、 Colab Notebooks、 バケット、 Google Workspace を組み合わせて必要なデータを抽出することで、最も成功を収めることができました。 Colab Notebooks は、Jupyter Notebook と同様に、Google のクラウド環境内で動作し、他の Google Cloud サービスとシームレスに統合できます。
BigQuery によるデータのステージングとクエリ
分析プロセスでは、BigQuery を使用してデータセットを「ステージング」することが重要です。 これには、BigQuery クエリを使用してオブジェクトを作成および保存し、チーム全体で再利用および共有できるようにすることが含まれます。 これを実現するには、 CREATE TABLE ステートメントを使用して、エンドポイントの動作アラート、顧客データ、ルール データなどの複数の データセット を 1 つの包括的なデータセットに結合できます。
この統合されたデータセットは、この目的のために特別に指定された BigQuery テーブル(この例では「Global Threat Report」データセットと呼びます)に保存されます。 このアプローチは、クラウドシグナルとマルウェアデータセットの両方を含む、さまざまなタイプのデータに一貫して適用されます。
たとえば、新しく作成されたデータ テーブルの名前は elastic.global_threat_report.ep_behavior_raw
になります。 BigQuery によって定義されたこの命名規則は、データセットを効果的に整理して配置するのに役立ち、これは抽出プロセスの後続の段階で重要です。
このプロセスで使用される BigQuery クエリの例は、次のようになります。
CREATE TABLE elastic.global_threat_report.ep_behavior_raw AS
SELECT * FROM ...
エクスポートされたデータセット テーブルへの BigQuery クエリの図
また、BigQuery の EXPORT DATA ステートメントを使用して、テーブルを Parquet ファイル形式で Google Cloud Storage(GCS)バケットにエクスポートするなど、テーブルを他の GCP サービスに転送します。
EXPORT DATA
OPTIONS (
uri = 'gs://**/ep_behavior/*.parquet',
format = 'parquet',
overwrite = true
)
AS (
SELECT * FROM `project.global_threat_report.2023_pre_norm_ep_behavior`
)
ステージングされたデータセットをロードするためのColab Notebooks
Colab Notebook は、データ抽出プロセスを整理するのに役立ちます。 これにより、GitHubやGoogleドライブなどのプラットフォームに保存されているデータスクリプトに簡単にアクセスして管理できます。
認証と承認には Google Workspace の認証情報を使用するため、BigQuery や Colab Notebooks など、さまざまな Google Cloud サービスへのアクセスが簡素化されます。 認証の処理方法の基本的な例を次に示します。
Google Cloud サービス間の認証と認可の図
Jupyter Notebook やデータフレームを初めて使用する場合は、これらのツールに慣れるのに時間を費やすと便利です。これらは、データアナリストのツールキットの基本であり、効率的なコード管理、データ分析、および構造化を可能にします。 これらのツールを使いこなすことは、効果的なデータ分析の鍵となります。
Google Colab でノートブックを作成したら、カスタム テーブル (project.global_threat_report.ep_behavior_raw など) を抽出する準備が整います BigQuery から。 その後、このデータは、データの操作と分析を容易にするPythonライブラリであるPandas Dataframesにロードされます。 Python で大規模なデータセットを処理するのは難しい場合がありますが、Google Colab は堅牢な仮想コンピューティング リソースを提供します。 必要に応じて、これらのリソースを Google Cloud Marketplace または Google Cloud Console を通じてスケールアップできるため、大規模なデータセットでも効率的に処理できます。
データ分析に不可欠なPythonライブラリ
当社のデータ分析プロセスでは、それぞれが特定の目的を果たすさまざまなPythonライブラリを利用しています。
図書館 | 説明 |
---|---|
日時 | データ内の日付と時刻に関連するすべての操作を処理するために不可欠です。 これにより、分析のために日付と時刻の情報を操作および書式設定できます。 |
google.auth | 認証とアクセス権限を管理し、Google Cloud サービスへの安全なアクセスを確保します。 これは、データやサービスにアクセスできるユーザーを制御するための鍵となります。 |
google.colab.auth | Google Colab ノートブック内で Google Cloud サービスにアクセスするための認証を提供し、クラウドベースのリソースへの安全な接続を可能にします。 |
google.cloud.bigquery | Google Cloud の BigQuery サービスで大規模なデータセットを管理するためのツール。 これにより、大量のデータを効率的に処理および分析できます。 |
google.cloud.storageの | Google Cloud Storage でデータを保存および取得するために使用されます。 これは、クラウド内のさまざまなデータファイルを処理するための理想的なソリューションです。 |
グスプレッド | Google スプレッドシートとの対話を容易にし、スプレッドシート データの操作と分析を容易にします。 |
gspread.dataframe です.set_with_dataframe | Pandas データフレームと Google スプレッドシート間でデータを同期し、これらの形式間でのシームレスなデータ転送と更新を可能にします。 |
matplotlib.pyplot.plt | チャートやグラフを作成するためのMatplotlibライブラリのモジュール。 データをグラフ形式で視覚化し、パターンや傾向を理解しやすくするのに役立ちます。 |
pandas | Pythonでのデータ操作と分析のための基本的なツール。 数値テーブルと時系列を操作するためのデータ構造と操作を提供します。 |
pandas.gbq.to_gbq | Pandas データフレームから Google BigQuery にデータを直接転送できるため、このクラウドベースの分析プラットフォームにデータを移動するプロセスが効率化されます。 |
pyarrow.parquet.pq | Parquet 形式 (大規模なデータセットでの使用に最適化された列指向ストレージファイル形式) でデータを効率的に保存および取得できます。 |
シーボーン | Matplotlibに基づくPython視覚化ライブラリで、魅力的で情報量の多い統計グラフィックを描画するための高レベルのインターフェイスを提供します。 |
次に、BigQuery で認証を行い、前に示したようにデータセットにアクセスするための承認を受け取ります。 Google Workspaceの資格情報を使用すると、BigQueryやその他のGoogleCloudサービスに簡単にアクセスできます。 通常、このプロセスには、認証用の単純なコード スニペットが含まれます。
from google.colab import auth
from google.cloud import bigquery
auth.authenticate_user()
project_id = "PROJECT_FROM_GCP"
client = bigquery.Client(project=project_id)
認証が完了したら、データへのアクセスと操作に進むことができます。 Google Colab と Google Cloud サービスの統合により、このプロセスが簡素化され、効率的かつ安全になります。
分析前のColab Notebooksの整理
Jupyter Notebook を使用する場合は、事前にノートブックを整理することをお勧めします。 データの処理と操作にはさまざまな段階が必要であり、整理された状態を維持することで、反復可能で包括的なプロセスを作成できます。
ノートブックでは、Jupyter Notebook ヘッダーを使用してコードを体系的に整理します。 この構造により、明確な区画化と折りたたみ可能なセクションの作成が可能になり、複数のステップを必要とする複雑なデータ操作を処理する場合に特に役立ちます。 この整然とした組織は、ノートブックを効率的にナビゲートするのに役立ち、データの抽出と分析プロセスの各ステップに簡単にアクセスでき、管理しやすいものになります。
さらに、ノートブックのワークフローは直線的に見えるかもしれませんが、多くの場合、より動的です。 データアナリストは、遭遇するデータや結果に基づいて必要に応じて異なるセクション間をジャンプするマルチタスクに頻繁に関与します。 さらに、1つのステップで発見された新しい洞察が別のステップのプロセスに影響を与え、ノートブックを完成させる前にいくつかのやり取りにつながる可能性があります。 |
BigQueryデータセットをデータフレームに抽出する
ノートブックの構造を確立し、BigQuery で正常に認証したら、次のステップは必要なデータセットを取得することです。 このプロセスは、包括的な調査に必要な主要コンポーネントを選択するのと同様に、これらの情報源からの情報が分析の基礎を形成するため、レポートの残りの部分の基礎を設定します。
BigQuery からデータを取得する方法の例を次に示します。
import datetime
current_year = datetime.datetime.now().year
reb_dataset_id = f'project.global_threat_report.{current_year}_raw_ep_behavior'
reb_table = client.list_rows(reb_dataset_id)
reb_df = reb_table.to_dataframe()
このスニペットは、一般的なデータ取得プロセスを示しています。 まず、関心のあるデータセットを定義します (Global Threat Report で、 project.global_threat_report.ep_behavior_raw
今年のデータセットを使用します)。 次に、BigQuery クエリを使用して、このデータセットからデータを選択し、Pandas DataFrame に読み込みます。 このDataFrameは、その後のデータ分析ステップの基盤として機能します。
BigQuery から Pandas データフレームにデータを抽出するための Colab Notebook スニペット
このプロセスは、抽出フェーズの完了を示します。 BigQuery をうまく操作して、必要なデータセットを選択して取得し、データフレーム内のノートブックに読み込むことができました。 抽出フェーズは、データを収集するだけでなく、より深い分析のための基盤を設定するため、極めて重要です。 これは、より大きな発見の旅の最初のステップであり、データからより詳細な洞察を明らかにする変革フェーズにつながります。
要約すると、データジャーニーのこの部分は、単にデータセットを収集するだけではありません。それは、その後の詳細な分析のためにそれらを構造的に準備することです。 抽出フェーズを整理して実行するためのこの細心の注意を払ったアプローチは、データ分析の後続の段階で導き出そうとしている変革的な洞察の舞台を設定します。
前処理と変換:データ分析の重要なフェーズ
生データから実用的なインサイトへの移行には、データ処理における一連の重要なステップが含まれます。 データを抽出した後は、分析のためにデータを精製することに焦点が移ります。 サイバーセキュリティデータセットには、誤検知や異常など、さまざまな形態のノイズが含まれていることが多く、正確で関連性のある分析を確実にするためには、これらのノイズに対処する必要があります。
データの前処理と変換の主な段階:
- データクリーニング: この段階では、NULL 値の入力、データのミスアライメントの修正、およびデータ・タイプの検証を行って、データ・セットの整合性を確保します。
- データエンリッチメント: この手順では、データセットに追加のコンテキストを追加します。 たとえば、VirusTotalなどのソースからのマルウェアの評判など、サードパーティのデータを組み込むと、分析の深さが向上します。
- 正常化: このプロセスでは、データを標準化して一貫性を確保しますが、これはエンドポイントマルウェアアラートなどのさまざまなデータセットにとって特に重要です。
- 異常検出: 外れ値や誤検知を特定して修正することは、データセットの精度を維持するために重要です。
- 特徴の抽出: 分析のためにさらに抽出できる、意味のある一貫性のあるデータポイントを特定するプロセス。
データクリーニングの技術を取り入れる
データクリーニングは、特にサイバーセキュリティにおいて、包括的な分析のためにデータセットを準備するための基本的なステップです。 このプロセスには、データの整合性と信頼性を確保するための一連の技術的なチェックが含まれます。 具体的な手順は次のとおりです。
-
MITRE ATT&CKフレームワークへのマッピング: データセット内のすべての検出ルールと対応ルールが、MITRE ATT&CKフレームワークの対応する戦術と手法に正確にマッピングされていることを確認します。 このチェックには、NULL 値や、データがフレームワークとどのように整合しているかの不整合を探すことが含まれます。
-
データ型の検証: データセット内のデータ型が適切で一貫性があることを確認します。 たとえば、タイムスタンプは標準化された日時形式にする必要があります。 この手順には、文字列形式を datetime オブジェクトに変換したり、数値が正しい形式であることを確認したりすることが含まれる場合があります。
-
重要なデータの完全性: データセットから重要な情報が欠落していないことを確認します。 これには、エンドポイントの動作ログにSHA256ハッシュや実行可能ファイル名などの重要な要素が存在するかどうかのチェックが含まれます。 このようなデータがないと、分析が不完全または偏りが生じる可能性があります。
-
データ形式間の標準化: データセット全体のデータ形式の標準化を評価して実装し、均一性を確保します。 これには、テキスト形式の正規化、大文字と小文字の一貫性の確保、日付と時刻の表現の標準化が含まれる場合があります。
-
重複エントリの識別: XDRエージェントIDやクラスタIDなどの一意の識別子を調べることで、重複するエントリを特定して削除します。 このプロセスには、関数を使用して重複を検出して削除し、各データエントリの一意性を確保することが含まれる場合があります。
-
無関係な内部データの除外: 誤ってデータセットに含まれていた可能性のある内部データを見つけて削除します。 この手順は、内部バイアスや無関係な情報が分析に影響を与えるのを防ぐために重要です。
データのクリーニングまたは「データのスクラブ」は、ワークフロー全体で継続的な作業であることに注意することが重要です。 データの層を剥がし、さまざまな洞察を得るためにデータを整理し続けると、追加の変更を特定することが期待されます。
データクリーニングにPandasを活用
Pythonの Pandas ライブラリは、サイバーセキュリティのコンテキストでのデータクリーニングに特に役立ついくつかの機能を提供します。 これらの方法には、次のようなものがあります。
DataFrame.isnull()
またはDataFrame.notnull()
欠損値を識別します。DataFrame.drop_duplicates()
をクリックして、重複する行を削除します。- タイムスタンプ形式を標準化するための
pd.to_datetime()
などのデータ型変換方法。 - ブールインデックスを使用して、特定の基準に基づいて無関係なデータを除外します。
データセットを完全に理解することは、適切なクリーニング方法を決定するために不可欠です。 クリーニングや変換が必要な特定の領域を特定するために、データセットを事前に探索する必要がある場合があります。 その他の便利な方法とワークフローについては、 この Real Python ブログを参照してください。
特徴抽出とエンリッチメント
特徴の抽出とエンリッチメントは、特にサイバーセキュリティの文脈において、データ分析の中核的なステップです。 これらのプロセスには、データセットの変換と拡張が含まれ、分析の有用性を高めます。
- 既存のデータから新しいデータを作成します。 ここでは、既存のデータを変更または使用して、列や行を追加します。
- 第三者から新しいデータを追加します。 ここでは、既存のデータをサードパーティの RESTful API のクエリ参照として使用し、データセットに追加できる追加データで応答します。
特徴抽出
具体的な例を掘り下げてみましょう。 Elasticがコミュニティ と共有 している公開済みのYARA署名が大量に提示されていると想像してみてください。 これらのシグネチャは、データセット内の一部のエンドポイント マルウェア アラートをトリガーします。 ルール名に基づいて一貫した命名規則が観察されており、もちろん、生データには [ OperationsSystem_MalwareCategory_MalwareFamily
] が表示されます。 これらの名前は、より具体的な洞察を提供するために分解できます。 Pandasを活用することで、データを専門的にスライス&ダイスすることができます。 BigQuery を使用したデータセットのステージング フェーズでこれを行うことを好む場合は、 SPLIT 句と OFFSET 句を組み合わせても同様の結果が得られます。
df[['OperatingSystem', 'MalwareCategory', 'MalwareFamily']] = df['yara_rule_name'].str.split('_', expand=True)
YARAデータによる特徴抽出
データ分析での特徴抽出には、他にもアプローチ、方法、プロセスがあります。 利害関係者の要望/ニーズを参照し、データを探索して、抽出に何が必要で、どのように必要かを判断することをお勧めします。
データエンリッチメント
データエンリッチメントは、サイバーセキュリティデータセットの深さとコンテキストを強化します。 効果的なアプローチの 1 つは、外部データ ソースを統合して、既存のデータに対する追加の視点を提供することです。 これは、サイバーセキュリティアラートを理解し、解釈する上で特に価値があります。
データエンリッチメントの例: VirusTotal レピュテーションデータの統合 サイバーセキュリティにおけるデータエンリッチメントの一般的な方法には、 VirusTotal (VT)などの外部の脅威インテリジェンスサービスからのレピュテーションスコアを組み込むことが含まれます。 このプロセスには通常、次のものが含まれます。
- レピュテーションデータの取得: VT の API キーを使用して、バイナリの SHA256 ハッシュなど、データセット内の一意の識別子に基づいてレピュテーションデータをクエリできます。
import requests
def get_reputation(sha256, API_KEY, URL):
params = {'apikey': API_KEY, 'resource': sha256}
response = requests.get(URL, params=params)
json_response = response.json()
if json_response.get("response_code") == 1:
positives = json_response.get("positives", 0)
return classify_positives(positives)
else:
return "unknown"
この関数では、 classify_positives
は、ファイルに悪意のあるフラグを付けたウイルス対策エンジンの数に基づいてレピュテーションを分類するカスタム関数です。
- 評価データをデータセットに追加する: その後、VirusTotal から取得した評価データは、既存のデータセットに統合されます。 これは、DataFrame 内の関連する各エントリに
get_reputation
関数を適用することによって行われます。
df['reputation'] = df['sha256'].apply(lambda x: get_reputation(x, API_KEY, URL))
ここでは、 reputation
という名前の新しい列がデータフレームに追加され、VirusTotal での検出率に基づいて各バイナリに関する情報の追加レイヤーが提供されます。
このデータエンリッチメントの方法は、サイバーセキュリティの脅威データを強化するために利用できる多くのオプションの1つにすぎません。 堅牢なヘルパー機能を利用し、外部データリポジトリを活用することで、アナリストはデータセットを大幅に充実させることができます。 このエンリッチメントにより、データをより包括的に理解できるようになり、より多くの情報に基づいた微妙な分析が可能になります。 ここで示す手法は、サイバーセキュリティデータ分析をさらに洗練させることができる、より広範な高度なデータ操作方法の一部です。
正常化
特に、エンドポイントアラートやクラウドSIEM通知など、サイバーセキュリティのさまざまなデータセットを扱う場合、データを最大限に活用するために正規化が必要になる場合があります。
正規化について: 正規化の核心は、異なるスケールで測定された値を共通のスケールに調整し、それらが比例して表現されるようにし、冗長性を減らすことです。 サイバーセキュリティの文脈では、これは、イベントやアラートを意図せずに重要性を増幅または減少させない方法で表現することを意味します。
エンドポイントマルウェアデータセットについて考えてみましょう。 マルウェアのファミリーやカテゴリに基づいて感染の傾向を分析する場合、正確な表現を目指しています。 ただし、エンドポイントに 1 つのマルウェアが感染すると、XDR (Extended Detection and Response) システムによっては複数のアラートが生成される場合があります。 これを放置すると、脅威の状況に対する私たちの理解が大幅に歪められる可能性があります。 これに対抗するために、XDRソリューションの一部としてデプロイされるElasticエージェントを検討します。 各エンドポイントには一意のエージェントがあり、マルウェアが検出された場合に 1 つの感染インスタンスを表します。 したがって、このデータセットを正規化するには、一意のエージェントIDに基づいて「フラット化」または調整します。 つまり、私たちの分析では、アラートの生の数ではなく、特定のマルウェアファミリーまたはカテゴリの影響を受ける一意のエージェントIDの数を考慮します。
一意のエージェントによるマルウェア アラートの正規化の視覚化の例
上の画像に示されているように、トレンド分析に備えてマルウェアのデータを正規化しないことを選択した場合、主要な調査結果は不正確な情報を示しています。 この不正確さは、一般的なYARAルール、単一のエンドポイントで繰り返しフラグが立てられたプログラム操作など、多数のデータの不整合に起因する可能性があります。
アプローチの多様化: 一方、エンドポイントの動作アラートやクラウドアラート(AWS、GCP、Azure、Google Workspace、O365などのプラットフォームから)を処理する場合、正規化のアプローチが異なる場合があります。 これらのデータセットには独自のニュアンスがあり、マルウェアアラートに使用されるような「フラット化」技術を必要としない場合があります。
正規化オプションの概念化: 正規化の目標は、データの冗長性を減らすことであることを忘れないでください。 後で戻って微調整する必要がある場合に備えて、操作をできるだけアトミックに保つようにしてください。 これは、正規化と標準化の両方を実行する場合に特に当てはまります。 これらを分離するのが難しい場合があり、2つの間を行ったり来たりしなければならない場合があります。 アナリストには、これらに対する豊富なオプションがあります。 値が 0 から 1 の範囲にシフトおよび再スケーリングされる Min-Max スケーリングから、値が 0 と平均からの標準偏差を中心とする Z スコア正規化 (または標準化) まで。手法の選択は、データの性質と分析の特定の要件によって異なります。
本質的に、正規化により、サイバーセキュリティ分析が公平な競争条件に基づいていることが保証され、利害関係者は過度の歪みなしに脅威環境を正確に把握できます。 これは、トレンド分析の前に重要なステップです。
異常検知:データ分析のプロセスを洗練させる
サイバーセキュリティ分析の領域では、異常検出に対する画一的なアプローチは存在しません。 このプロセスは、手元にあるデータの特定の特性に大きく依存します。 主な目標は、分析を歪める可能性のある外れ値を特定して対処することです。 これには、データセットのニュアンスを理解することが重要である、動的で適応性のある方法論が必要です。
サイバーセキュリティにおける異常検出には、さまざまなタイプのデータ不規則性に適したさまざまな手法と方法論を探求することが含まれます。 戦略は、単一の方法を厳密に適用するのではなく、データを深く理解して、各状況に最も適した手法を選択することです。 柔軟性と適応性に重点が置かれており、選択したアプローチがデータに対して最も明確で正確な洞察を提供できるようにします。
統計的手法 – 分析のバックボーン:
統計分析は、特にサイバーセキュリティデータの場合、異常検出のための常にオプションのアプローチです。 データの固有の分布と中心的な傾向を理解することで、標準から逸脱した値を強調することができます。 シンプルでありながら強力な方法であるZスコアは、標準偏差の観点から平均からデータポイントまでの距離を測定します。
import numpy as np
# Derive Z-scores for data points in a feature
z_scores = np.abs((df['mitre_technique'] - df['mitre_technique'].mean()) / df['mitre_technique'].std())
outliers = df[z_scores > 3] # Conventionally, a Z-score above 3 signals an outlier
なぜこれが重要なのか: この方法により、データポイントの偏差の重要性を定量的に測定できます。 このような外れ値は、平均などの集計メトリックを大幅に歪めたり、機械学習モデルのトレーニングに悪影響を及ぼしたりする可能性があります。 外れ値は常に削除されるべきではないことを忘れないでください。すべては文脈の問題です! 場合によっては、特定の外れ値を探している場合もあります。
キーライブラリ: 上記の NumPy を利用していますが、 SciPy は複雑な統計演算にも使用できます。
アグリゲーションとソート – レイヤーの解明:
多くの場合、データはレイヤーで表されます。 ハイレベルな視点から始めて、徐々に詳細に掘り下げることで、不整合や異常を見つけることができます。 MITRE ATT&CK戦術などのカテゴリ別に集計し、さらに深く掘り下げると、手法からルールロジック、アラートコンテキストへと進むにつれて、より詳細な情報や潜在的な異常が徐々に明らかになります。
# Aggregating by tactics first
tactic_agg = df.groupby('mitre_tactic').size().sort_values(ascending=False)
ここから、最も一般的な戦術を特定し、カウントが最も多い戦術を選択できます。 次に、この戦術のデータをフィルタリングして、最も一般的な戦術に関連する最も一般的な手法を特定します。 テクニックは戦術よりも具体的であることが多いため、観察している内容についてより多くの説明が追加されます。 同じアプローチに従って、この特定の手法をフィルタリングし、ルールごとに集計し、その検出ルールを確認してより多くのコンテキストを得ることができます。 ここでの目標は、データセットを歪めている可能性のある「ノイズの多い」ルールを見つけることであり、したがって、関連するアラートを削除する必要があります。 このサイクルは、外れ値が取り除かれ、パーセンテージがより正確に表示されるまで繰り返すことができます。
なぜこれが重要なのか: この階層化された分析アプローチにより、あらゆる手段が講じられることが保証されます。 一般的なものから具体的なものへとナビゲートすることで、矛盾を体系的に排除します。
キーライブラリ: パンダスは依然としてヒーローであり、データを扱う雑用を巧みにこなす能力を備えています。
視覚化 – 明瞭さのレンズ:
人間の目は、適切な視覚的表現の助けを借りて、最も複雑なアルゴリズムでさえ見逃す可能性のあるものを直感的に検出できる場合があります。 たとえば、箱ひげ図は、データの中心的な傾向と広がりを示すだけでなく、外れ値を明確にマークします。
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 8))
sns.boxplot(x='Malware Family', y='Malware Score', data=df)
plt.title('Distribution of Malware Scores by Family')
plt.show()
サンプルデータセットからの家族別のマルウェア配布スコアの視覚化例
なぜこれが重要なのか: ビジュアライゼーションは、抽象的なデータを具体的なインサイトに変換します。 それは、ニーズに応じて、全体的かつきめ細かい視点を提供します。
キーライブラリ: Matplotlib の上に構築された Seaborn は、データを視覚的なストーリーに変えることに優れています。
機械学習 – 高度なガード:
従来の方法では不十分な場合、機械学習が介入し、異常に対する予測レンズを提供します。 多くのアルゴリズムは既知のパターンを分類するように設計されていますが、ディープラーニングのオートエンコーダーのように、「正常な」データを再現することを学習し、偏差を異常としてマークするものもあります。
なぜこれが重要なのか: データの複雑さが増すにつれて、異常を構成するものの境界が曖昧になります。 機械学習は、データとともに進化する適応ソリューションを提供します。
主要なライブラリ: Scikit-learn は、ユーザーフレンドリーで古典的な機械学習技術の宝庫であり、 PyTorch はディープラーニングの力をテーブルにもたらします。
データ分析における異常検出の完成度を高めることは、練習と反復を通じて複雑なスキルを磨くことと似ています。 このプロセスには試行錯誤が伴うことが多く、反復するたびにアナリストのデータセットに対する知識が深まります。 この漸進的な理解は、最終的な分析が堅牢で洞察に満ちたものであることを保証するための鍵です。 データ分析では、探索と改良の旅は、最終的な結果自体と同じくらい価値があります。
詳細なトレンド分析に進む前に、データが徹底的に前処理され、変換されていることを確認することが非常に重要です。 細心の注意を払った作業において精度と信頼性が不可欠であるのと同様に、データ分析においても同様に重要です。 意味のある洞察を導き出すための基礎から異常をクリーニング、正規化、強化、および除去する手順。 これらの慎重な準備がなければ、分析はわずかに不正確なものから著しく誤解を招くものまでさまざまです。 データが適切に精製され、歪みがない場合にのみ、その真の価値が明らかになり、トレンド分析における信頼性の高い実用的な洞察につながります。
トレンド分析:データのパターンを明らかにする
脅威アクターが戦術、技術、手順(TTP)を絶えず進化させるサイバーセキュリティのダイナミックな分野では、新たな脅威に先手を打つことが重要です。 トレンド分析は、この点で重要なツールとして機能し、サイバー脅威のパターンと行動を経時的に特定して理解する方法を提供します。
MITRE ATT&CKフレームワークを利用することで、サイバーセキュリティの専門家は、これらの進化する脅威を分析および分類するための構造化された標準化されたアプローチを利用できます。 このフレームワークは、攻撃手法のパターンを体系的に特定するのに役立ち、防御側は敵対者の行動の変化を効果的に予測して対応することができます。
トレンド分析は、MITRE ATT&CKフレームワークのレンズを通して、生のサイバーセキュリティテレメトリを実用的なインテリジェンスに変換します。 これにより、アナリストは攻撃戦略の進化を追跡し、それに応じて防御メカニズムを適応させることで、サイバーセキュリティ管理における積極的なスタンスを確保できます。
まず、大まかな概要から始める: 集計と並べ替え
分析を俯瞰から始めることが最も重要です。 このパノラマの視点により、より詳細な手法や基本的な検出ルールを掘り下げる前に、まずプレイ中の広範な戦術を特定することができます。
主な戦術: MITRE ATT&CKの戦術に基づいてデータを集約することで、敵が傾倒している包括的な戦略を見極めることができます。 これにより、初期アクセス、実行、または流出など、彼らの主な目的が描かれます。
top_tactics = df.groupby('mitre_tactic').size()
.sort_values(ascending=False)
テクニックにズームインする: 目立つ戦術を特定したら、その戦術に関連する手法に注意を向けることができます。 これにより、敵対者の特定の手口が明らかになります。
chosen_tactic = 'Execution'
techniques_under_tactic = df[df['mitre_tactic'] == chosen_tactic]
top_techniques = techniques_under_tactic.groupby('mitre_technique').size()
.sort_values(ascending=False)
検出ルールとロジック: 特定の手法にスポットライトを当てたら、アラートをトリガーした検出ルールを特定して、さらに深く掘り下げる時が来ました。 これにより、検出された内容が表示されるだけでなく、検出ロジックを確認することで、フラグが立てられた正確な動作とパターンも理解できます。
chosen_technique = 'Scripting'
rules_for_technique = techniques_under_tactic[techniques_under_tactic['mitre_technique'] == chosen_technique]
top_rules = rules_for_technique
.groupby('detection_rule').size().sort_values(ascending=False)
この階層的なカスケード アプローチは、タマネギの皮をむくのに似ています。 各レイヤーで、より複雑な詳細が明らかになり、視点が洗練され、洞察が鮮明になります。
時間の力:時系列分析
サイバーセキュリティの領域では、時間は単なる指標ではありません。それは物語です。 タイムスタンプは見落とされがちですが、インサイトの宝庫です。 時系列分析では、時間の経過に伴うイベントをプロットし、敵対者のキャンペーン、特定の攻撃ウェーブ、または休眠期間を示す可能性のあるパターン、スパイク、または小康状態を明らかにすることができます。
たとえば、エンドポイントマルウェアのアラートを経時的にプロットすることで、敵対者の稼働時間を明らかにしたり、同期したマルチベクトル攻撃にスポットライトを当てたりすることができます。
import matplotlib.pyplot as plt
# Extract and plot endpoint alerts over time
df.set_index('timestamp')['endpoint_alert'].resample('D').count().plot()
plt.title('Endpoint Malware Alerts Over Time')
plt.xlabel('Time')
plt.ylabel('Alert Count')
plt.show()
時系列分析では、「いつ」を強調するだけでなく、多くの場合、特定のスパイクや異常の背後にある「理由」についての洞察が得られます。 これは、外部イベント (新しいエクスプロイトのリリースなど) を内部データの傾向に関連付けるのに役立ちます。
相関分析
異なるデータセット間の関係を理解することで、貴重な洞察を得ることができます。 たとえば、あるタイプのアラートの急増は、システム内の別のタイプのアクティビティと相関している可能性があり、多段階の攻撃キャンペーンや迂回戦略に光を当てることができます。
# Finding correlation between an increase in login attempts and data exfiltration activities
correlation_value = df['login_attempts'].corr(df['data_exfil_activity'])
この分析は、pandas corrの助けを借りて、一見孤立した複数の活動が協調的な攻撃チェーンの一部であるかどうかを識別するのに役立ちます。
また、相関関係はメトリック駆動型である必要もありません。 脅威を分析する際には、古い調査結果と新しい調査結果を比較することで、価値と新しい洞察を簡単に見つけることができます。
機械学習と異常検出
膨大な量のデータがあるため、手動分析は実用的ではなくなります。 機械学習は、人間の目から逃れる可能性のあるパターンや異常を特定するのに役立ちます。 Isolation ForestやK-nearest neighbor(KNN)などのアルゴリズムは、一般的に関連するデータの偏差やクラスターを見つけるために一般的に使用されます。
from sklearn.ensemble import IsolationForest
# Assuming 'feature_set' contains relevant metrics for analysis
clf = IsolationForest(contamination=0.05)
anomalies = clf.fit_predict(feature_set)
ここでは、異常変数が標準から逸脱したデータポイントにフラグを立て、アナリストが異常な動作を迅速に特定するのに役立ちます。
行動パターンとエンドポイントデータ分析
検出ルールから収集されたエンドポイントの行動データを分析することで、より広範な脅威の状況、サイバーキャンペーン、または進化する攻撃者のTTPを示す可能性のある包括的なパターンと傾向を発掘できます。
戦術進行パターン: 検出された一連の行動を経時的に監視することで、敵対者が攻撃チェーンをどのように移動するかのパターンを特定できます。 たとえば、初期アクセス手法の後に実行、そして横移動が続くという一貫した傾向がある場合、それは一般的な攻撃者のプレイブックが採用されていることを示しています。
コマンドライントレンド分析: 悪意のあるコマンドライン引数内でも、特定のパターンやシーケンスが発生する可能性があります。 最も頻繁に検出される悪意のある引数を監視することで、好まれる攻撃ツールやスクリプトに関する洞察を得ることができます。
例:
# Most frequently detected malicious command lines
top_malicious_commands = df.groupby('malicious_command_line').size()
.sort_values(ascending=False).head(10)
プロセスインタラクションの傾向: 個々の親子プロセス関係は悪意のあるものである可能性がありますが、これらの相互作用の傾向を見極めると、マルウェアキャンペーンや攻撃者のTTPが広がっていることを示唆している可能性があります。 たとえば、エンドポイントの大きなサブセットが同じ異常なプロセスインタラクションを示している場合、それは共通の脅威を示唆している可能性があります。
時間的な動作パターン: 他のタイプのデータと同様に、エンドポイントの行動データの時間的側面は啓発的です。 特定の悪意のある動作の頻度とタイミングを分析すると、攻撃者の運用時間やキャンペーンの期間を示唆できます。
例:
# Analyzing frequency of a specific malicious behavior over time
monthly_data = df.pivot_table(index='timestamp', columns='tactic', values='count', aggfunc='sum').resample('M').sum()
ax = monthly_data[['execution', 'defense-evasion']].plot(kind='bar', stacked=False, figsize=(12,6))
plt.title("Frequency of 'execution' and 'defense-evasion' Tactics Over Time")
plt.ylabel("Count")
ax.set_xticklabels([x.strftime('%B-%Y') for x in monthly_data.index])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
注: この画像はサンプル データからのものであり、Global Threat Report からのものではありません
エンドポイントの行動データをマクロレベルで集約して分析することで、孤立した脅威を特定するだけでなく、波、傾向、新たなパターンを特定することができます。 この広範な視点により、サイバーセキュリティチームは、大規模なサイバー脅威をより効果的に予測、準備、および対抗することができます。
これらはトレンド分析の実行方法の例の一部ですが、正しいアプローチも間違ったアプローチもありません。 すべてのアナリストには、自分や利害関係者が尋ねたいと思う可能性のある独自の好みや一連の質問があります。 ここでは、アナリストがトレンド分析を行う際にサイバーセキュリティデータについて持つ可能性のある追加の質問やクエリをいくつか紹介します。
- 今四半期に敵対者が利用した上位3つの戦術は何か?
- 最もトリガーされている検出ルールと、共通のスレッドはありますか?
- エンドポイントアラートには、敵対者のタイムゾーンを示唆する時間ベースのパターンはありますか?
- クラウドへのより多くのサービスの移行に伴い、クラウドアラートはどのように進化しましたか?
- どのマルウェアファミリーが蔓延しており、その原因は何でしょうか?
- データパターンは、年末に向けて活動が増加するなど、季節性を示唆していますか?
- 外部イベントとサイバー活動の急増との間に相関関係はありますか?
- アラートと攻撃の点で、平日のデータは週末とどのように異なりますか?
- どの組織資産が最もターゲットを絞られており、その防御は最新の状態ですか?
- 特権アカウント間で内部の脅威や異常な動作の兆候はありますか?
サイバーセキュリティにおけるトレンド分析は、ダイナミックなプロセスです。 いくつかの基本的なテクニックと質問を並べましたが、この広大な領域にアプローチする方法は無数にあります。 各アナリストには好み、ツール、方法論があり、それはまったく問題ありません。 その本質は、脅威にさらされる各エコシステムの絶え間なく変化する脅威の状況を認識しながら、私たちのアプローチに絶えず進化し、適応することにあります。
削減:明確さのための合理化
データ分析の初期段階を進んだ後、次の段階である削減に入ります。 このステップは、包括的なデータを洗練し、より消化しやすく、焦点を絞った形式に集約することです。
これまでの分析の道のりを振り返ります。
- 抽出: 最初のフェーズでは、Google Cloud環境を設定し、分析に関連するデータセットを選択しました。
- 前処理と変換: この段階で、データはColabノートブック内で抽出、処理、変換され、詳細な分析の準備が整いました。
- トレンド分析: このフェーズでは、サイバー攻撃の戦術、手法、マルウェアに関する詳細な洞察が得られ、分析の中核を形成しました。
Colab Notebooksの詳細なデータは、アナリストにとっては広範で有益ですが、より広範なオーディエンスにとっては複雑すぎる可能性があります。 したがって、削減フェーズでは、この情報をより簡潔でアクセスしやすい形式に抽出することに重点を置いています。 その目的は、調査結果を明確で理解しやすいものにし、さまざまな部門や利害関係者間で効果的に伝達および活用できるようにすることです。
主要なデータポイントの選択と集計
調査結果を効果的に伝えるためには、聴衆のニーズに合わせてプレゼンテーションを調整する必要があります。 すべてのステークホルダーが、収集したデータの完全な深さを必要としているわけではありません。多くの人は、最も実用的なポイントを強調する要約版を好みます。 ここで、データの選択と集約が重要になり、最も重要な要素に焦点を当て、それらをアクセス可能な形式で提示します。
Pandas を使用してデータセットを集約および凝縮する方法の例を、エンドポイントの動作の主要な側面に焦点を当てています。
required_endpoint_behavior_cols = ['rule_name','host_os_type','tactic_name','technique_name']
reduced_behavior_df = df.groupby(required_endpoint_behavior_cols).size()
.reset_index(name='count')
.sort_values(by="count", ascending=False)
.reset_index(drop=True)
columns = {
'rule_name': 'Rule Name',
'host_os_type': 'Host OS Type',
'tactic_name': 'Tactic',
'technique_name': 'Technique',
'count': 'Alerts'
}
reduced_behavior_df = reduced_behavior_df.rename(columns=columns)
このコードとプロセスの注目すべき側面の 1 つは、その柔軟性です。 たとえば、ニーズに合わせて調整されたさまざまなデータポイントでデータをグループ化できます。 敵対者が使用する一般的な戦術を特定することに興味がありますか? MITRE ATT&CK戦術でグループ化。 偽装された悪意のあるバイナリに光を当てたいですか? 抽出を再検討して、ファイルパス、Defense Evasionのフィルタリング、集約などのElastic Common Schema(ECS)フィールドを追加して、よく踏まれるパスを明らかにします。 このアプローチにより、啓発的でありながら、分析の起源を理解したいステークホルダーに合わせた、圧倒的に豊富ではないデータセットを作成することができます。
このプロセスでは、ルール名、ホスト OS タイプ、MITRE ATT&CKの戦術と手法などの関連カテゴリごとにデータをグループ化し、発生回数をカウントします。 この方法は、データ内で最も一般的なパターンと傾向を特定するのに役立ちます。
削減されたデータセットを取得するためのデータ集計の図例
アクセシビリティのために縮小されたデータをGoogleスプレッドシートにエクスポートする
削減されたデータは、メモリにデータフレームとして格納され、エクスポートする準備が整いました。 これらの洞察を共有するためのプラットフォームとしてGoogleスプレッドシートを使用しているのは、その幅広いアクセシビリティとユーザーフレンドリーなインターフェースによるものです。 Google Sheetsにデータをエクスポートするプロセスは、Google Cloudサービスとの統合により、簡単かつ効率的です。
以下は、Colab ノートブックから Python を使用してデータを Google スプレッドシートにアップロードする方法の例です。
auth.authenticate_user()
credentials, project = google.auth.default()
gc = gspread.authorize(credentials)
workbook = gc.open_by_key("SHEET_ID")
behavior_sheet_name = 'NAME_OF_TARGET_SHEET'
endpoint_behavior_worksheet = workbook.worksheet(behavior_sheet_name)
set_with_dataframe(endpoint_behavior_worksheet, reduced_behavior_df)
数行の簡単なコードで、データ分析結果をGoogleスプレッドシートに効果的に転送できました。 このアプローチは、そのアクセシビリティと使いやすさにより広く使用されています。 ただし、データを表示する方法は他にも複数あり、それぞれが異なる要件と対象ユーザーに適しています。 たとえば、 Looker のようなプラットフォームを選択して、処理されたデータをより動的なダッシュボード形式で表示することを選択する人もいます。 この方法は、インタラクティブで視覚的に魅力的なデータのプレゼンテーションを作成する場合に特に便利です。 これにより、Jupyter Notebook で作業している人など、データ分析の技術的な側面に精通していない可能性のある利害関係者でも、分析情報を簡単に理解し、価値を引き出すことができます。
このデータ削減と表示の合理化されたプロセスは、クラウドSIEMアラート、エンドポイント動作アラート、マルウェアアラートなど、さまざまなタイプのデータセットに適用できます。 目的は同じで、データを簡素化し、集中させて明確で実用的な洞察を得ることです。
プレゼンテーション: インサイトの紹介
データセットを細心の注意を払って改良した後、次は最終段階であるプレゼンテーションに焦点を当てます。 ここでは、Google スプレッドシートや Looker などのプラットフォームできちんと整理されたデータセットを、情報量が多く魅力的な形式に変換します。
詳細な分析のためのピボットテーブル
ピボットテーブルを使用すると、トレンド分析の結果の包括的な概要を作成できます。 これらのテーブルを使用すると、データを多次元的に表示でき、一般的なMITRE ATT&CKの戦術、選択した手法、推奨されるマルウェアファミリなど、サイバーセキュリティのさまざまな側面に関する洞察を得ることができます。
データビジュアライゼーションへのアプローチには、次のものが含まれます。
- MITRE ATT&CK戦術の広範な概要: 一般的な視点から始めて、ピボットテーブルを使用して、サイバー脅威で採用されているさまざまな戦術を概観します。
- 詳細な内訳: このパノラマビューから、一般的な戦術ごとに個別のピボットテーブルを作成し、各手法と特定の検出ルールの詳細な分析に分岐して、さらに深く掘り下げます。
この系統的なプロセスは、検出ロジックとアラートの複雑さを明らかにするのに役立ち、サイバー脅威の状況のストーリーを効果的に伝えます。
コンテクスト・レポート情報への集約を示すダイアグラム
オーディエンス全体のアクセシビリティ: 当社のデータプレゼンテーションは、データサイエンスに精通している人から、より直接的な理解を好む人まで、幅広い聴衆に対応するように設計されています。 Google Workspace エコシステムは、これらの分析情報の共有を促進し、ピボットテーブル、縮小されたデータセット、その他の要素に、レポート作成プロセスに関与するすべての人が簡単にアクセスできるようにします。
ビジュアライゼーションのレポートへの統合: たとえば、Google ドキュメントでレポートを作成する場合、Google スプレッドシートのグラフと表の統合はシームレスです。 この統合により、データセットまたはピボット テーブルの変更がレポート内で簡単に更新され、プレゼンテーションの効率と一貫性が維持されます。
プレゼンテーションを聴衆に合わせて調整する: データインサイトのプレゼンテーションは、情報を伝えるだけではありません。それは、視覚的に魅力的で消化しやすい方法でそれを行うことです。 より技術に精通した視聴者にとっては、ダイナミックなチャートと機能を備えたインタラクティブなColabノートブックが理想的かもしれません。 一方、マーケティング チームやデザイン チームにとっては、Looker で適切にデザインされたダッシュボードの方が適している可能性があります。 重要なのは、プレゼンテーションが明確で簡潔で、視覚的に魅力的であり、聴衆の特定の好みやニーズに合わせて調整されていることを確認することです。
結論:データ分析の旅を振り返る
結論として、サイバー脅威データの分析において、私たちがナビゲートしてきた領域を振り返ることは価値があります。 この旅にはいくつかの重要な段階があり、それぞれが最終的な洞察に大きく貢献しました。
Google のクラウド エコシステムを巡る旅
これまでの道のりは、GCP、GCE、Colab Notebooks、Google Workspace など、いくつかの Google Cloud サービスを通じて進みました。 それぞれが極めて重要な役割を果たしました。
データ探索: まず、答えを出したいサイバー関連の一連の質問から始め、利用可能な膨大なデータセットを調査しました。 このブログでは、BigQuery で利用できるテレメトリーのみに焦点を当てました。 データ抽出: まずは素データを抽出し、BigQueryを活用して大量のデータを効率的に処理しました。 抽出は、BigQuery と Colab ノートブックの両方から行われました。 データ ラングリングと処理: Pythonとpandasライブラリの力を活用して、シェフが巧みに食材を準備するように、このデータをクリーニング、集約、洗練しました。 トレンド分析: 次に、いくつかの方法論を使用して、改革されたデータセットのトレンド分析を行い、敵の戦術、手法、手順に関する貴重な洞察を経時的に収集しました。 削減: トレンド分析のバックボーンから、さまざまなデータセットをターゲットとするデータポイントごとに集約し、ステークホルダーや同僚にプレゼンテーションする準備をしました。 プレゼンテーションへの移行: データ分析からWebブラウザ内でのプレゼンテーションへの移行が容易なことで、ツールの俊敏性が強調され、シームレスなワークフローが促進されました。
ワークフローのモジュール性と柔軟性
私たちのアプローチの本質的な側面は、ワークフローのモジュール性でした。 データの抽出からプレゼンテーションまでの各フェーズには、Google Cloud エコシステムの交換可能なコンポーネントが用意されており、特定のニーズに合わせてプロセスを調整できます。
汎用性の高いツール: Google Cloud Platform にはさまざまなツールとオプションが用意されており、データの保存、分析、プレゼンテーションを柔軟に行うことができます。 カスタマイズされた分析パス: 分析の特定の要件に応じて、さまざまなツールや方法を適応させて選択し、各データセットに合わせたアプローチを確保することができました。 認証と承認: Google Cloud のエコシステムにエンティティが組み込まれているため、さまざまなツール、サイト、データなどへのアクセスはすべて簡単で、サービス間の移行がスムーズでした。
オーケストレーションとツールの同期
私たちの技術スキルと選択したツールとの間の相乗効果は重要でした。 この調和により、分析プロセスがこのプロジェクトにとって効果的であるだけでなく、より効率的で洞察に満ちた将来の分析の基礎を築くことができました。 これらのツールは、技術的な複雑さに巻き込まれることなく、意味のある洞察を導き出すことに焦点を当て、私たちの能力を強化するために使用されました。
要約すると、このデータ分析の旅では、適切なツールと手法を活用する、よく考えられたアプローチの重要性、およびサイバー脅威データ分析の要求を満たすための適応性が強調されました。 最終的な結果は、単なる一連の調査結果ではなく、進化し続けるサイバーセキュリティ分野での将来のデータ分析の取り組みに適用できる洗練された方法論です。
行動喚起:独自のデータ分析の旅に出発する
分析ワークスペースの準備ができました! Google Cloud やその他のデータ分析プラットフォームでは、どのような革新的なアプローチやエクスペリエンスを活用できますか? データ分析の領域は広大で多様であり、各アナリストは独自のタッチをもたらしますが、基本的な方法と原則は普遍的です。
その目的は、現在の分析プロジェクトで優れた成果を上げることだけでなく、技術を継続的に強化し、適応させることです。 この継続的な改良により、データ分析における今後の取り組みがさらに生産的で、啓発的で、インパクトのあるものになることを保証します。 Google Cloud でデータ分析の世界を探検しましょう。
このトピックに関するフィードバックやエンゲージメントをお待ちしています。 ご希望の場合は、Elasticの公開 #security Slackチャンネルにお気軽にお問い合わせください。