PwnAuth で OAuth の悪用に光を当てる

序章

スピア フィッシング攻撃は、組織にとって最大のサイバー脅威の 1 つと見なされています。 1 人の従業員が資格情報を入力したり、マルウェアを実行したりするだけで、組織全体が侵害されます。そのため、企業はクレデンシャル ハーベスティングやペイロード主導のソーシャル エンジニアリング攻撃を防ぐために多大なリソースを費やしています。しかし、従来とは異なる、しかし同様に危険なソーシャル エンジニアリングの手法である OAuth の悪用にはあまり注意が払われていません。 OAuth の悪用攻撃では、被害者がサードパーティ アプリケーションに自分のアカウントへのアクセスを許可します。承認されると、アプリケーションは、資格情報を必要とせず、実施されている可能性のある 2 要素認証をバイパスすることなく、ユーザーのデータにアクセスできます。

本日、私はPwnAuthをリリースします。これは、組織やペネトレーション テスターが、OAuth 悪用ソーシャル エンジニアリング キャンペーンを検出して対応する能力をテストする機会を提供するプラットフォームです。このツールをリリースすることで、この脅威に対する認識を高め、セキュリティ コミュニティの検出能力を向上させ、防御側に対策を提供したいと考えています。

PwnAuth の使用を開始するには、GitHub にアクセスしてください。

OAuth とは

OAuth 2.0 は、「Web、モバイル、およびデスクトップ アプリケーションからシンプルかつ標準的な方法で安全な認証を可能にするオープン プロトコルです…」と説明されており、Amazon、Google、Facebook、およびMicrosoft は、サードパーティ アプリケーションにユーザー データへのアクセスを許可することを容易にするために使用します。簡単なファイル共有を可能にするために Microsoft OneDrive にアクセスするアプリケーションは、OAuth を活用するアプリケーションの例です。

例として OneDrive にアクセスするアプリケーションを使用して、OAuth 承認フローでいくつかの役割を定義してみましょう。

アプリケーション、または「クライアント」

アクセスを要求しているサードパーティ アプリケーション。この場合、OneDrive ファイルにアクセスしようとするアプリケーションが「クライアント」です。

API「リソース」

「クライアント」がアクセスしたいターゲット アプリケーション。この場合、Microsoft OneDrive API エンドポイントは「リソース」です。

「リソースオーナー」

アカウントの一部へのアクセスを許可する人。この場合、あなた。

認可サーバー

認可サーバーは、リソース所有者が同意を与えるか拒否するために使用するインターフェースを提供します。サーバーは、API リソースまたは別のコンポーネントと同じである可能性があります。この場合、Microsoft ログイン ポータルは「認証サーバー」です。

範囲

スコープは、サードパーティ アプリケーションが要求しているアクセスのタイプとして定義されます。ほとんどの API リソースは、アプリケーションが要求できるスコープのセットを定義します。これは、インストール時に Android 電話アプリケーションが要求するアクセス許可に似ています。この例では、アプリケーションが OneDrive ファイルとユーザー プロファイルへのアクセスを要求する場合があります。

OAuth 2.0 は、ユーザーとして対話するさまざまなアプリケーションを容易にするために、いくつかの異なる承認 “グラント タイプ” を提供します。この投稿では、OAuth を実装する Web アプリケーションで使用される「認証コード」グラント タイプに関心があります。以下は、認可フローの例です。

1. アプリケーションと要求されたスコープを識別するパラメーターを使用して、リソース所有者を承認サーバーに誘導する「同意」リンクが作成されます。

https://login.microsoftonline.com/auth
?response_type=コード
&client_id=123456789
&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback
&scope=mail.read+offline_access

2. リソース所有者には、アプリケーション名と要求されたスコープを示す承認プロンプトが表示されます。リソース所有者には、この承認リクエストを承認または拒否するオプションがあります。

3. 承認されると、承認サーバーは承認コードを使用してアプリケーションにリダイレクトします。

HTTP/1.1 200 OK
コンテンツ タイプ: アプリケーション/json
キャッシュ制御: no-store
プラグマ: no-cache

{
“access_token”:”aMQe28fhjad8fasdf”,
“token_type”:”ベアラー”,
“expires_in”:3600,
“refresh_token”:”OWWGE3YmIwOGYzYTlmM2YxNmMDFkNTVk”,
“スコープ”:”mail.read+offline_access”
}

4. 次に、アプリケーションは認証コードを使用して、認証サーバーからアクセス トークンを要求できます。アクセス トークンは、リソース所有者による追加のアクションなしで、一定期間、API リソースからユーザーのデータにアクセスするために使用できます。

虐待の余地

OAuth アプリケーションは、攻撃者がターゲットを侵害し、電子メール、連絡先、ファイルなどの機密データを収集するための理想的なベクトルを提供します。攻撃者は悪意のあるアプリケーションを作成し、取得したアクセス トークンを使用して、API リソースを介して被害者のアカウント データを取得する可能性があります。アクセス トークンは、ユーザーのパスワードを知っている必要がなく、2 要素の強制をバイパスします。さらに、攻撃者のアクセスを削除する唯一の方法は、OAuth アプリケーションへのアクセスを明示的に取り消すことです。 OAuth トークンを取得するために、攻撃者は被害者に「同意リンク」をクリックさせ、ソーシャル エンジニアリングを介してアプリケーションを承認させる必要があります。被害者とのやり取りはすべて、正当なリソース プロバイダー (Microsoft など) が所有するサイト上で行われるため、トレーニングを受けていないユーザーが正当な OAuth アプリケーションと悪意のあるアプリケーションを区別するのは難しい場合があります。

このようなキャンペーンは初めてではないかもしれませんが、OAuth の悪用が最初にメディアの注目を集めたのは、2016 年の大統領選挙のときでした。 FireEye は、 M-TRENDS 2017 レポートで、APT28 が OAuth を悪用して米国の政治家の電子メールにアクセスしたことについて書いています。それ以来、FireEye は、Gmail 全体に拡散しようとするコモディティ ワームにこの手法が拡散するのを確認してきました。

PwnAuth

PwnAuth は、組織が OAuth 悪用キャンペーンを検出して対応する能力をテストしやすくするために作成した Web アプリケーション フレームワークです。 Web アプリケーションは、悪意のある OAuth アプリケーションを管理し、収集した OAuth トークンを保存し、API リソースと対話するための使いやすい UI をペネトレーション テスターに提供します。アプリケーションの UI とフレームワークは、追加のモジュールを作成することで、他の API リソースに簡単に拡張できるように設計されています。 OAuth アプリケーションを許可する任意のクラウド環境がターゲットになる可能性がありますが、現在、PwnAuth には、OAuth トークンをキャプチャし、それらのキャプチャされたトークンを使用して Microsoft Graph API との対話を容易にする悪意のある Office 365 アプリケーションをサポートするモジュールが付属しています。 Office 365 モジュール自体はさらに拡張される可能性がありますが、現在、次のものが提供されています。

  • メールメッセージを読む
  • ユーザーのメールボックスの検索
  • ユーザーの連絡先の読み取り
  • メッセージと添付ファイルのダウンロード
  • OneDrive の検索とファイルのダウンロード
  • ユーザーに代わってメッセージを送信する

インターフェイスは直感的で使いやすいように設計されています。 PwnAuth を使用するための最初のステップは、Microsoft アプリケーションを作成することです。次に、その情報を PwnAuth に入力する必要があります (図 1)。

Importing a Microsoft App into PwnAuth
図 1: Microsoft アプリを PwnAuth にインポートする

構成が完了すると、生成された「認証 URL」を使用して潜在的な被害者をフィッシングできます。クリックすると、PwnAuth は後で使用するために被害者の OAuth トークンをキャプチャします。被害者リストの例を図 2 に示します。

PwnAuth で被害者ユーザーを一覧表示する
図 2: PwnAuth での被害者ユーザーの一覧表示

PwnAuth が被害者の OAuth トークンを取得すると、被害者のデータへのアクセスを開始できます。たとえば、PwnAuth を使用して、文字列「password」を含むすべてのメッセージを被害者のメールボックスに照会します (図 3)。

被害者のメールボックスを検索する
図 3: 被害者のメールボックスの検索

使用方法の詳細については、 GitHub wikiを参照してください。

緩和策

当社の FireEye テクノロジー スタックには、潜在的に悪意のある OAuth 同意 URL を検出するためのネットワーク ベースの署名が含まれています。攻撃者は、検出してフラグを立てることができる特定のスコープを悪意のあるアプリに含める傾向があります。ソーシャル エンジニアリング トレーニング プログラムを実施している組織は、OAuth の悪用シナリオを既存のプログラムに追加して、この攻撃ベクトルについてユーザーをより適切に教育することができます。さらに、組織は、悪意のある OAuth アプリケーションの潜在的な影響を制限し、検出能力を高めるための措置を講じることができます。組織が利用できるオプションは、API リソースによって大きく異なりますが、一般的には次のものが含まれます。

  • サードパーティ アプリがリクエストできる API スコープを制限します。
  • 組織内のサードパーティ アプリを無効にします。
  • アプリケーションのホワイトリストまたはブラックリストを実装します。
  • 同意済みのすべてのアプリケーションについて、組織のユーザー ベースを照会します。
  • ユーザーの同意イベントをログに記録し、疑わしいアクティビティを報告します。

特に Office 365 は、管理者向けにいくつかのオプションを提供しています。

管理者がクラウド環境で悪意のある OAuth アプリケーションを探すのを支援するスクリプトのコレクションを作成しました。現在、Office 365 テナントを調査するスクリプトがあり、他のクラウド環境を追加する計画があります。

結論

OAuth 乱用攻撃は、攻撃者が組織の機密データへのアクセスを取得するために使用できる、危険で非伝統的なフィッシング手法です。より多くのサービスをクラウドに移行するにつれて、組織はサードパーティ アプリケーションへのアクセスを慎重にロックダウンし、監視と検出の戦略がアプリケーションの同意付与を確実にカバーするようにする必要があります。組織とセキュリティの専門家は、 PwnAuthを使用して、この新しいタイプの攻撃を検出して対応する能力をテストできます。

GitHub にアクセスして、今日から PwnAuth の使用を開始してください

参照: https://www.mandiant.com/resources/blog/shining-a-light-on-oauth-abuse-with-pwnauth

コメント

タイトルとURLをコピーしました