seccon_published

-- Views

March 03, 26

スライド概要

SECCON 14 電脳会議にて行った「APTシナリオに基づいたMicrosoft Entra ID環境における攻撃手法の分析と実践」の資料です。

profile-image

ギャルゲー風セキュリティブログ作りにハマってます。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

APTシナリオに基づいた Microsoft Entra ID環境における 攻撃手法の分析と実践

2.

Entra環境への 模擬攻撃を通じて 現代インフラの基礎を 理解する

3.

禁止事項 • 資料、成果物等の二次配布 • 本Workshopで学んだことの悪用

4.

本日のシナリオ Midnight Blizzard (APT29) • 背後にロシアが関与すると される脅威アクター • a.k.a. NOBELIUM, Cozy Bear 本シナリオは、2023年末から2024年1月にかけて、ロシアの脅威アクターであるMidnight Blizzardによって行われた、Microsoftの企業環境への実際の侵害シナリオをベースとする。 マルチテナントであるMicrosoftのテスト環境に所属するユーザをパスワードスプレーで侵害後 、本番の企業環境へホップし、最終的にメールの窃取を行ったシナリオとなっている。

5.

example.local stg-example.local ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

6.

Q. そもそもEntraって なに?

7.

A. MSが提供するセキュリティ 関連製品ファミリ

8.

Q. どうしてEntraを学 ばないといけないの?

10.

A. MSがEntraを推して いるから

11.

• 現代エンタープライズにおけるクラウドベース の認証基盤として、そのほとんどがEntraを採 用している。 • 多くのエンタープライズがAcrive Directoryを 採用している。 • オンプレADからEntraハイブリッド・Entraネ イティブ環境への移行が進んでいる。

12.

Entraハイブリッド/ネイティブ https://learn.microsoft.com/jajp/entra/identity/devices/concept-hybrid-join

13.

ハンズオンパート

14.

シナリオの全体像 stg-example.local example.local ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

15.

ハンズオンの進め方 1 2 スライドと講義 ベースでインプッ ト 手順書を見ながら 手を動かして攻撃 ×8

16.

ハンズオン時の心構え • 詰まったら周りの人かチューターに聞く • 漠然とコマンドを打たない • どのユーザがどの権限を持って何に対して何 をしようとしているかを理解しながらコマン ドを打つ 範馬刃牙 第10巻「第82話:食事の極意」より

17.

STEP1 AiTM攻撃による 初期侵害

18.

stg-example.local example.local ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

19.

従来のフィッシングによるアカウント侵害 MFAが有効だと攻撃者は認証が完了しな い https://www.trendmicro.com/ja_jp/jp-security/25/j/securitytrend-20251003-01.html

20.

AiTMって? • Adversary-in-the-Middle攻撃のこ と • MFAをバイパスできる https://www.trendmicro.com/ja_jp/jp-security/25/j/securitytrend-20251003-01.html

21.

Evilginxについて 標的となるWebサイトの認 証フローを中継し、認証済み のCookie、パスワード、ユ ーザ名を窃取することができ る。 https://help.evilginx.com/

22.

M365をターゲットとした phishletの例 ターゲットとなるサイトの認 証フローをyamlで定義する ことで、様々なサイトを模倣 したフィッシングサイトを作 れる

23.

ESTSAUTHと ESTSAUTHPERSISTENT

24.

ESTSAUTH ESTSAUTH PERSISTENT • SSOを容易にするた めのユーザのセッシ ョン情報が含まれる 一時的なセッション ・トークン • ブラウザを閉じると このトークンは破棄 される • ブラウザを閉じても 有効期限内であれば 保持され続ける • 「サインイン状態を 維持しますか?」に YESでログインすると 発行される • デフォルトの有効期 限は90日間

25.

AiTMによるMFAバイ パスの防御方法 • FIDO2準拠のパスキーを用いた認証を使用する • ブラウザのパスワードマネージャーを使用する • 条件付きアクセス (CAP)で、認証を許可するデバイスを 絞る etc... https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoftbrand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf https://learn.microsoft.com/ja-jp/entra/identity/devices/protecting-tokens-microsoft-entra-id

26.

STEP2 AzureHound BloodHoundによる内部探索

27.

② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

28.

Hound Familyについて AzureHound → 情報を収集するツール BloodHound → 収集した情報を可視化するプラットフォーム https://bloodhound.specterops.io/collect-data/cecollection/azurehound

29.

デバイスコードフロー • アクセストークンを取得するためのフロー。 • ブラウザがない環境で実行されても認可の要求ができる 。 https://qiita.com/TakahikoKawasaki/items/78eff94cef9274113 1f0#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB

30.

accesstoken • 認可を担当。 • JWT (JASON Web Token)形式で、b64URLデコード で内容を確認可能。 • Directory.ReadWrite.All, RoleManagement.ReadWrite.Directoryといった権 限が付与されていることも確認可能。 • 有効期限は1時間であり、これが切れるとリソースへのア クセスができなくなる。 https://datatracker.ietf.org/doc/html/rfc6749#section-1.4

31.

refreshtoken • アクセストークンを取得するために必要なトークン • アクセストークンが無効になった時に、新しいアクセス トークンを取得するために使われる。 https://datatracker.ietf.org/doc/html/rfc6749#section-1.4

32.

STEP3 アプリの乗っ取りと 本番テナントへのホップ

33.

② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

34.

Entraにおけるアプリとは? • アプリは箱や設計図のイメージ。SPはその設計図から 作られるアプリの実体。 • アプリをEntraテナントに登録すると、ホームテナン トにアプリとSPが自動で作成される。 • アプリを登録する時、アプリがシングルテナントかマ ルチテナントかを選択できる。 https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoftbrand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf

35.

Entraにおけるアプリとは? アプリ=設計図 ≒クラス SP=設計図から 作られる実体 ≒インスタンス https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoftbrand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf

36.

アプリが攻撃者に狙われる理由 • ユーザでないアカウントは放置されやすい (アプリ等を含む、 51%のワークロードIDが、作られた後放置されている) • 開発時のテストのためといった理由で、強い権限が付与されや すい • アプリは対話的ではなく、MFAが有効でない https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoftbrand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf

37.

アプリの所有者とシークレット

40.

STEP4 本番テナントでの高権 限ユーザの作成

41.

stg-example.local example.local ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

42.

UPNについて • User Principal Name • ユーザアカウント名@ドメイン名 の形式。 • 一意の値である必要がある。 • Entra IDによるログイン時に必要になるユーザ名という認識で OK https://datatracker.ietf.org/doc/html/rfc2822

43.

ユーザ作成権限及び権限割 り当てのロールについて

44.

MS Graph • EntraやM365等の、MSのクラウドサービスにアクセスできる APIのこと。 • https://graph.microsoft.com がエンドポイントになる。 • もともとはAzure AD Graph APIというものがあったが、2024 年 9 月に廃止・移行が開始した。 • Azure AD Graph時代はoutlook.office.com/apiや api.onedrive.comといったエンドポイントがバラバラだった。 https://learn.microsoft.com/ja-jp/graph/overview

45.

MS Graph https://learn.microsoft.com/ja-jp/graph/overview

46.

Directory.ReadWrite.All • アプリにこの権限を付与すると、テナント内のユーザー・グルー プといったデータの読み取り及び書き込みができるようになる。 ただし、ユーザまたはグループの削除はできない。 https://learn.microsoft.com/ja-jp/graph/permissions-reference

47.

RoleManagement. ReadWrite.Directory • アプリにこの権限を付与すると、テナント内のユーザー・グルー プといったデータのに対してRBAC設定の読み取り・管理ができ るようになる。 https://learn.microsoft.com/ja-jp/graph/permissions-reference

48.

STEP5 テストテナントにおけ る永続化

49.

stg-local.example example.local ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

50.

アプリ作成による永続化 • 既存のアプリではなく新しくアプリを作ることで、ステルス性が 上がり、より長期間の攻撃が可能になる。 • アプリを作成する際、マルチテナントのアプリかシングルテナン トのアプリかを選択できる。

51.

STEP6 アプリへの権限付与

52.

stg-local.example local.example ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

53.

高権限を付与する際の流れ 1. アプリに権限を付与する 2.アプリのrequiredResourceAccess に、権限を要求してい るという情報が入る 3.管理者の同意を待つ (今回は本番テナント側の管理者同意) 4.管理者が権限の付与に同意する 5.管理者のいるテナント側に、アプリが要求していた権限を持つ SPが作成される

54.

STEP7 管理者の同意

55.

stg-local.example local.example ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

56.

アプリへの権限付与時の 管理者同意について 強力な権限は、付与するときにそのテナントの 管理者による同意が必要。

57.

管理者同意で何が起きるのか • マルチテナントアプリから要求されたアクセ ス許可に対して管理者が同意すると、アプリ が存在しない方のテナントでもSPが作成され る。 • 同意時に、クライアントアプリケーションに 要求された権限を確認し、管理者が同意する ことで初めてアプリが実体として使えるよう になる。 https://learn.microsoft.com/ja-jp/entra/identity-platform/application-consentexperience

58.

STEP8 メールの窃取

59.

stg-local.example local.example ② AH/BHによる内部探索 ① ③ 所有しているアプリ のハイジャック フィッシング 初期侵害ユーザ ⑥ OAuth app ⑤ 作成 Directory.Read Write.All RoleManageme nt.ReadWrite.Di rectory ④ Service Principal ⑦ 管理者同意 管理者ユーザ 権限付与 ⑧ Mail.Read 窃取 OAuth app 作成 Service Principal

60.

Mail.Read • 全てのユーザのメールボックスからメールを 取得することができる。

61.

質疑応答・ディスカッション