フィッシングはあらゆる組織に影響を及ぼしており、セキュリティ運用(SecOps)チームは、メールインフラにおける未知の脅威を迅速に修復・防止する必要があります。こうした脅威に対抗するため、Swimlaneの研究チームはオープンソースのセキュリティ対策ツールを開発しました。 ピュー セキュリティ チームと IT チームが Python を使用して Microsoft Exchange Web サービス (EWS) と対話できるようにします。.
なぜピューなの?
組織は、電子メール環境における悪質なフィッシング メールとの戦いを続けていますが、セキュリティ チームと IT チームには、ユーザーのメールボックスに現在何が入っているかを把握する能力が限られています。. ピュー セキュリティ チームと IT チームに制御権を戻し、脅威をより迅速に修復できるようにするために作成されました。.
オンプレミスのMicrosoft ExchangeとMicrosoft Office 365には、PowerShellまたはC#ベースのプログラムを使用してプログラム的にアクセスできます。これは、Windowsオペレーティングシステムのみで作業している場合に最適です。さらに、macOSまたは*nixベースのシステムでPowerShell Coreを使用している場合は、リモートセッションを作成してExchange環境に接続できます。.
これらはすべて素晴らしい選択肢ですが、 ピュー クロスプラットフォームであり、Python 2 および 3 と連携して、オンプレミスの Exchange (2010 ~ 2019) と Office 365 の両方の Exchange Web サービスと直接対話します。仲介者やコンパイルされたコードは存在しないため、py-ews は高速です。.
Exchange Web Services SOAP XMLを利用することで、Exchange eDiscoveryやその他のEWSサービスエンドポイントと直接やり取りできます。この記事の執筆時点では、py-ewsは以下のエンドポイントをサポートしています。
- 検索可能なメールボックスを取得する: 検索するアクセス権を持つ環境内のすべてのメールボックスを自動的に識別します。.
- 検索メールボックス: Microsoftの 高度なクエリ構文 環境内の単一またはすべてのメールボックスを検索できます。.
- アイテムを削除: メール アイテムに対して、HardDelete、SoftDelete、または MoveToDeletedItems を実行できます。.
- 自動検出: 自動検出を使用すると、EWS と通信するときに単一のエンドポイントを呼び出すことができます。.
- 名前解決: ユーザーの電子メール アドレスを詳細なユーザー オブジェクトに変換し、そこからプロパティを取得します。.
- 受信トレイルールを取得: 単一のメールボックスの受信トレイルールを決定します。.
eDiscoveryエンドポイントを使用するには、 発見管理 権利の範囲内 交換. Py-ewsはユーザー/メールボックスを偽装する機能もサポートしていますが、 なりすまし Exchange 内での権利。.
シナリオ
多くのセキュリティチームは、お客様のように、環境内における悪意のあるメールへの対応を必要としています。py-ews を使用すると、Exchange 環境内のメールボックスのリストを取得し、検索して、特定された悪意のあるメールを削除できます。.
py-ews を使用してこれを行う方法の例を次に示します。
from pyews import UserConfiguration from pyews import GetSearchableMailboxes from pyews import SearchMailboxes from pyews import DeleteItem userconfig = UserConfiguration( '[email protected]', 'Password1234' ) # アカウントの権限に基づいて検索可能なメールボックスを取得します referenceid_list = [] for mailbox in GetSearchableMailboxes(userconfig).response: referenceid_list.append(mailbox['ReferenceId']) # すべての referenceid_list アイテムを検索してみましょう messages_found = [] for search in SearchMailboxes('subject:account', userconfig, referenceid_list).response: messages_found.append(search['MessageId']) # 特定のメッセージを削除する場合は、DeleteItem # クラスを次のように呼び出しますが、messages_found リスト全体を渡すこともできます deleted_message_response = DeleteItem(messages_found[2], userconfig).response
Py-ewsは以下で入手可能です ピピ 現在、pip install pyews を実行することでインストールできます。.
会話を続ける
SecOps Hubは、セキュリティプロフェッショナルが集まり、SecOps戦略、インシデント対応のベストプラクティス、そしてセキュリティオーケストレーション、自動化、レスポンス(SOAR)を活用したSecOpsの簡素化方法について議論するコミュニティです。この会話を続け、ぜひ今日のような会話にも参加してください!

