APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【CrowdStrike】API徹底解説 その3

自己紹介

こんにちは、エーピーコミュニケーションズiTOC事業部 BzD部 0-WANの田中と申します。
弊社でEDR製品を導入いただいたお客様のインシデント調査を主に担当しております。
その傍らプログラマーとしての経験と知識を生かしてセキュリティに関するウェブアプリケーションを設計構築するなどSOCチームのメンバーとして日々サイバーセキュリティと共に在るエンジニアです。

2025年は12回に渡ってCrowdStrikeの利用者視点で役に立つ情報をお伝えしています。

掲載月 トピック
1 2025/1 【CrowdStrike】FalconConsole徹底解説 その1
2 2025/2 【CrowdStrike】FalconConsole徹底解説 その2
3 2025/3 【CrowdStrike】FalconConsole徹底解説 その3
4 2025/4 【CrowdStrike】クエリー徹底解説 その1
5 2025/5 【CrowdStrike】クエリー徹底解説 その2
6 2025/6 【CrowdStrike】クエリー徹底解説 その3
7 2025/7 【CrowdStrike】API徹底解説 その1
8 2025/8 【CrowdStrike】API徹底解説 その2
9 2025/9 【CrowdStrike】API徹底解説 その3
10 2025/10 【CrowdStrike】Falcon Foundry徹底解説 その1
11 2025/11 【CrowdStrike】Falcon Foundry徹底解説 その2
12 2025/12 【CrowdStrike】Falcon Foundry徹底解説 その3

今回は「CrowdStrike Falcon」の強力な機能の一つであるFalconの「API」をPythonで利用する方法とAIエージェントとCrowdStrike Falconプラットフォームを接続するFalcon MCPについてご紹介いたします。

CrowdStrike APIとは

API (Application Programming Interface) とは、異なるソフトウェアやシステム間で機能を共有するための仕組みのことです。簡単に言うと、APIは「窓口」のようなもので、他のプログラムが提供する機能を利用するためのルールや手順を定めています。これにより、開発者は既存の機能を活用して効率的に開発を進めることができます。 CrowdStrike APIとはプログラム的にアクションを実行することができるプログラミングインターフェースで多くのエンドポイントが提供されています。 これらのAPIを利用するために複数言語のSDKが提供されていることも大きな特徴です。 Falcon SDKは、お好みの言語を使ってすべてのCrowdStrike APIエンドポイントと対話形式で操作するためのオープンソースのソリューションを提供しますfalcon.us-2.crowdstrike.com

SDKとは

SDK(Software Development Kit)とはソフトウェア開発キットの略で、アプリケーション開発に必要なツールやライブラリ、ドキュメントなどをまとめたものです。開発者はSDKを利用することで、ゼロから開発するよりも効率的に、そして短期間でアプリケーションを開発できます。Falconプラットフォーム利用者は最適な開発環境を利用して柔軟にAPIを組み込むことができます。

今回はPythonモジュール「FalconPy」を使って、CrowdStrike APIを活用する方法をご紹介します。

FalconPyとは

CrowdStrike Falcon SDK for Python はトークン管理を完全に抽象化するとともに、すべての CrowdStrike リージョンとのやり取り、カスタム接続および応答タイムアウト、プロキシのリストを介したリクエストのルーティング、SSL 検証の無効化、カスタム ヘッダー構成もサポートします。

CrowdStrike Falcon SDK for PythonはPython 3向けに開発されました。FalconPyの現在のバージョンは、Pythonバージョン3.7-3.13をサポートしています。github.com

インストール手順の詳細は、下記ドキュメントをご参照ください。(英語なので適宜ブラウザの翻訳機能をご利用ください。) github.com

以下に私がKali Linuxで仮想環境にインストールした時の方法をご紹介します。

# 仮想環境を作成するディレクトリに移動します (例: ホームディレクトリ)
cd ~

# 仮想環境を作成します (venv という名前で作成するのが一般的です)
python3 -m venv falcon_env

# 仮想環境をアクティベートします
source falcon_env/bin/activate

# 仮想環境がアクティベートされると、ターミナルのプロンプトの先頭に (falcon_env) のように表示されます。
# 次に、アクティベートされた仮想環境の中で pip を使用して crowdstrike-falconpy をインストールします。
pip install crowdstrike-falconpy

# 他にも必要なパッケージはまとめてインストールします。(オプション)
pip install -r requirements.txt

# インストールが完了したら、仮想環境内でPythonスクリプトを実行することで、crowdstrike-falconpy を利用できます。
# 仮想環境から抜けるには、以下のコマンドを実行します。
deactivate

# 実行例                                 
┌──(kali㉿kali)-[~]
└─$ cd ~

┌──(kali㉿kali)-[~]
└─$ source falcon_env/bin/activate

┌──(falcon_env)─(kali㉿kali)-[~]
└─$ python
Python 3.13.2 (main, Feb  5 2025, 01:23:35) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import falconpy
>>> print(falconpy.__version__)
1.5.0

CrowdStrikeのAPIキーを取得する

メニューの「サポートおよびリソース | APIクライアントおよびキー」からAPIクライアント作成画面に行って右上の「APIクライアントの作成」ボタンをクリックします。

CrowdStrikeのAPIキーを取得

APIクライアントの作成

必要事項を入力してクライアントを作成します。

クライアント作成

必ずClientIdとClientSecretをコピーして安全な場所に保管してください。

ClientIdとClientSecretをコピー

FalconPyをターミナルから呼び出す

ホスト情報を取得してみます。 コマンドの使い方は以下を参照ください。 falconpy.io

>>> # CrowdStrike API Hosts クラス生成
>>> from falconpy import Hosts
>>> falcon = Hosts(client_id="(上で取得したクライアントIDを指定してください)",
...                client_secret="(上で取得したクライアントシークレットを指定してください)"
...                )

>>> # ホスト名を指定してaid(デバイスID)のリストを取得
>>> host_name = "(ホスト名を指定してください)"
>>> d_ret = falcon.query_devices_by_filter(filter=f"hostname:'{host_name}*'")
>>> d_ret
{'status_code': 200, 'headers': {*****}, 'body': {'meta': {*****}, 'resources': [*****], 'errors': []}}

>>> # 取得したaidのリストから詳細情報を取得
>>> if d_ret['body']['resources'] != []:
...     aid = d_ret["body"]["resources"][0]
 >>> aid
'*****'
>>> id_list = [aid]

>>> # GetDeviceDetails実行
>>> response = falcon.get_device_details(ids=id_list)
>>> response['body']['resources'][0]['os_product_name']
'Windows 11 Pro'

Falcon MCP

2025年8月27日(水) にクラウドストライク合同会社主催、アマゾン ウェブ サービス ジャパン合同会社共催で開催されたワークショップ「CrowdStrike on AWS 実践型ワークショップ 」に参加してきました。

チャンネルソリューションアーキテクトの菅村氏によるセッションでFalcon MCPのデモをみて衝撃をうけました。

セッションで紹介された主なポイントは以下の通りです。

  • パブリックビュー中
  • AWS Bedrock AgentCoreとのネイティブ統合も提供
  • 現在はRead権限のみ(検知インシデント情報・センサーの情報など)
  • ChatGPTなど生成AIからCrowdStrikeのAPIでとれる情報やAWSのコマンドを実行ができる
  • CHARLOTTE AI管理コンソールで利用できる
  • Falcon MCPは無償で利用できる

話題となっているMCPについて知識を深めるために今回デモを作成しましたのでご紹介します。

MCPは「Model Context Protocol(モデル・コンテキスト・プロトコル)」の略で、大規模言語モデル(LLM)が外部のツールやデータベース、サービスなどと「共通のやり方」で接続するための標準プロトコルです。2024年にAnthropic社によって提唱され、AIが学習データ以外に最新情報や企業固有の知識を活用できるよう、柔軟で安全な連携を可能にし、AIの活用範囲を広げる技術規格です。

Falcon MCPについては以下のように説明されています。

falcon-mcpは、AIエージェントとCrowdStrike Falconプラットフォームを接続するモデルコンテキストプロトコル(MCP)サーバーであり、エージェントワークフローにおけるインテリジェントなセキュリティ分析を実現します。検知、インシデント、挙動といった重要なセキュリティ機能へのプログラムによるアクセスを提供し、高度なセキュリティ運用と自動化の基盤を構築します。

重要 🚧 パブリックプレビュー:このプロジェクトは現在パブリックプレビュー段階にあり、活発に開発が進められています。安定版1.0リリースまでに機能や性能が変更される可能性があります。調査やテストは推奨しますが、本番環境へのデプロイは避けてください。最終リリースの改善のため、GitHub Issuesを通じて皆様からのフィードバックをお待ちしております。 github.com

MCPサーバとMCPクライアント

今回はデモ用にDockerを使って環境を構築しました。

デモ環境の構成

MCPサーバはFalcon MCPのビルド済みイメージを使用し、クライアントはPythonで3種類作成しました。

DockerでMCPサーバとMCPクライアントを起動

1つ目はmcp_meta.pyで、リソース一覧とその内容を取得してファイルに出力します。

リソース一覧

リーソースのドキュメントファイル例

2つ目はmcp_client_streamable.pyで、以下のようにjson形式でパラメータを指定して実行すると、対応するCrowdStrikeのAPIがパラメータで指定したフィルタをかけた結果を返します。結果はファイルにも出力します。

# 有効モジュールの確認
python client/mcp_client_streamable.py '{"tool_name":"falcon_list_enabled_modules","parameters":{}}'

# モジュールを一覧表示
python client/mcp_client_streamable.py '{"tool_name":"falcon_list_modules","parameters":{}}'

# New high-severity endpoint alerts (numeric approach)
python client/mcp_client_streamable.py \
'{"tool_name":"falcon_search_detections","parameters":{"filter":"status:\"new\"+(severity:>=60+severity:<80)+product:\"epp\"","limit":5,"sort":"timestamp.desc"}}'

# 検知を少量取得(直近24h・中~高)
python client/mcp_client_streamable.py \
'{"tool_name":"falcon_search_detections","parameters":{"filter":"severity:>3+timestamp:>\"2025-09-29T00:00:00Z\"","limit":5,"sort":"timestamp.desc"}}'

# 1件の詳細を見る(上の結果のIDを使う)
# "composite_id": "*****"
python client/mcp_client_streamable.py \
'{"tool_name":"falcon_get_detection_details","parameters":{"ids":["*****"]}}'

# 検出検索のための包括的な FQL ドキュメントと例
python client/mcp_client_streamable.py '{"tool_name":"falcon_list_enabled_modules","parameters":{}}'

# ホスト
python client/mcp_client_streamable.py \
'{"tool_name":"falcon_search_hosts","parameters":{"filter":"last_seen:>\"2025-09-29T00:00:00Z\"","limit":5}}'

# Spotlight脆弱性
python client/mcp_client_streamable.py \
'{"tool_name":"falcon_search_vulnerabilities","parameters":{"filter":"status:\"open\"","limit":5}}'

出力ファイル例

3つ目はnl_llm_mcp.pyで、以下のように検索したい文章を指定して実行すると、OpenAIのAIエージェントが対応するCrowdStrikeのAPIが理解できるフィルタに変換して、MCPサーバに送信し結果を返します。結果はファイルにも出力します。

# 直近24時間の高い検知を10件
python client/nl_llm_mcp.py "直近24時間の高い検知を10件"

# 過去7日のインシデント
python client/nl_llm_mcp.py "過去7日のインシデント"

# 最近見たホストを5件
python client/nl_llm_mcp.py "last 7d hosts limit=5"

出力ファイル例

AIエージェントとしての処理の流れは以下のとおりです。

  • 目標設定: user_prompt(検索文)で指示を与える。
  • 思考・計画: LLMが指示を解釈し、使用するツールとパラメータを決定する。
  • 行動: falcon-mcpサーバーにリクエストを送信する。
  • 結果の観測: falcon-mcpサーバーがCrowdStrike APIから結果を取得し、クライアントに返す。
  • 報告: クライアントが結果を表示・保存する。

まとめ

今回は、Pythonモジュール「FalconPy」を利用してCrowdStrike APIを操作する方法とAIエージェントとCrowdStrike Falconプラットフォームを接続するFalcon MCPについてご紹介しました。

FalconPyを使えば、これまでGUIで一つ一つ確認していたデバイス情報の検索や、特定のインシデントに関する情報収集などをスクリプト化し、大幅に効率化できます。まずは簡単な情報取得から始め、将来的にはインシデント発生時の初動対応(調査、隔離など)を自動化するスクリプトを作成するなど、ぜひFalconPyを日々のセキュリティ運用に積極的に取り入れてみてください。

こちらではサンプルコードも提供されています。 github.com github.com

宣伝になりますがエーピーコミュニケーションズはSecurity Days Fall 2025およびCrowdTour25 Tokyoで講演とブース出展を行います。 私もブースにおりますので今回の内容を含めてご質問がありましたらぜひブースまでお越しください。 f2ff.jp go.crowdstrike.com

今後の連載の予定をご参考に興味があるトピックだけでもご覧いただければ幸いです。
少しでもサイバーセキュリティに興味を持っていただけるように楽しくお伝えしますのでお楽しみに。
最後まで読んでいただきありがとうございました。

0-WANについて

私たち0-WANは、ゼロトラスト製品を中心とした、マルチベンダーでのご提案で、お客様の経営課題解決を支援しております。 ゼロトラストってどうやるの?製品を導入したけれど使いこなせていない気がする等々、どんな内容でも支援いたします。 お気軽にご相談ください。

問い合わせ先、0-WANについてはこちら。 www.ap-com.co.jp

一緒に働いて頂ける仲間も募集しています

今までの経験を活かして、私たちと一緒にゼロトラスト分野で活躍しませんか? www.ap-com.co.jp