slides/speaker-notes/00-course-deck-notes.md

Speaker Notes - 00 Course Deck

對應 slides/student/00-course-deck.md。這份是講師看的,不放進學生版輸出。

Slide 1 - Title

Slide 2 - 這門課要解決的問題

Slide 3 - 課程主線

Slide 4 - 身分平面與資源平面

Slide 5 - Entra ID Directory Model

Slide 6 - Azure Resource Model

Slide 7 - Token 是攻擊鏈的中心

Slide 8 - Token 使用邊界

Slide 9 - Initial Access:本課只做可控情境

Slide 10 - Password Spraying:只做風險與偵測

Slide 11 - Device Code vs OAuth Consent

Slide 12 - Controlled OAuth Consent Lab

Slide 13 - Recon:先知道自己看得到什麼

Slide 14 - ROADtools / ROADrecon Flow

Slide 15 - AADInternals 的定位

Slide 16 - AzureHound:先當可視化候選

Slide 17 - Recon 要產出的不是資料量

Slide 18 - Lateral Movement:常見判斷點

Slide 19 - Application / Service Principal Abuse

Slide 20 - App Roles and Assignments

Slide 21 - Persistence Candidates

Slide 22 - Lecture-only Until Verified

Slide 23 - Persistence:先保留兩到三個主題

Slide 24 - Azure Resource Abuse:三個主要實驗方向

Slide 25 - Storage:Management Plane vs Data Plane

Slide 26 - Key Vault:Secrets Access Boundary

Slide 27 - Managed Identity:Resource Identity

Slide 28 - Deployment History and Hidden Assumptions

Slide 29 - Resource Abuse Decision Questions

Slide 30 - 防禦邊界不是口號

Slide 31 - Conditional Access:先問 Scope

Slide 32 - MFA Type Matters

Slide 33 - Device Compliance Boundary

Slide 34 - Token Protection and Residual Risk

Slide 35 - Defensive Observation Checklist

Slide 36 - 把控制對回攻擊鏈

Slide 37 - Learning, Not Flags

Slide 38 - Lab Chain Draft

Slide 39 - 完成標準

Slide 40 - References

Original Markdown source
# Speaker Notes - 00 Course Deck

對應 `slides/student/00-course-deck.md`。這份是講師看的,不放進學生版輸出。

## Slide 1 - Title

- 開場要講清楚:這不是 Azure 管理課,也不是 AD 重訓;核心是「拿到雲端身分後如何擴張」。
- 可以順手說明 6 小時會取捨,heavy hybrid 內容先當 optional。

## Slide 2 - 這門課要解決的問題

- John 風格:先問攻擊鏈,不先背產品名詞。
- 這頁用來把 IT / security 背景的人拉到同一條線。
- 不要一開始就講工具,先講決策點。

## Slide 3 - 課程主線

- 這是整天的地圖。每一段都要能回到「identity -> token -> graph/resource -> persistence/resource abuse」。
- 如果時間不夠,Cross-tenant / hybrid theft 不要硬塞,保留成補充。

## Slide 4 - 身分平面與資源平面

- 現場常見誤解:有 Azure Reader 不等於能讀 blob data;有 Contributor 也不一定直接讀 Key Vault secret,但可能有路徑改 data plane access。
- 這頁要替 Storage / Key Vault lab 鋪路。

## Slide 5 - Entra ID Directory Model

- 用「Application 是藍圖、Service Principal 是租戶裡真正被授權的實體」這句話先打底。
- Ownership 是後面 app/SP abuse 的關鍵,不要只把它講成管理便利功能。
- 這頁先不深入 Graph API,只讓學生知道後面 recon 要找哪些物件與關係。

## Slide 6 - Azure Resource Model

- 強調 resource group 方便管理,但不是像 network segment 那樣的強隔離邊界。
- 先埋 management plane / data plane 的伏筆,後面 Storage 和 Key Vault 會反覆回來看。
- 可以用一個問題帶過:我能改資源設定,是否等於我能讀裡面的資料?

## Slide 7 - Token 是攻擊鏈的中心

- 不需要講成 OAuth protocol deep dive。
- 重點是:token 不是抽象名詞,它決定攻擊者能打哪個 resource、多久、能不能 refresh。
- PRT 講到知道它是 device/broker SSO 的核心即可,深入 theft 放 optional。

## Slide 8 - Token 使用邊界

- Delegated vs app-only 要用「使用者上下文」與「應用程式自己」來講,避免學生只記名詞。
- 帶學生看防禦問題:policy 到底卡在 token 發行、resource 呼叫,還是 role assignment?
- 這頁接到後面 OAuth consent phishing 與 app role abuse 很自然。

## Slide 9 - Initial Access:本課只做可控情境

- Password spraying 不適合課堂做 heavy hands-on,避免節奏與風險失控。
- Working decision: OAuth consent 做主實驗,device code 留 threat context 或講師示範。
- 選 OAuth 的原因:後面可以直接接 application、service principal、app role assignment 與 consent review。
- Evilginx 可以講 threat model,不建議預設 hands-on,除非最後決定環境與授權都完整。

## Slide 10 - Password Spraying:只做風險與偵測

- 不要讓這段變成工具教學。重點是為什麼 spray 常見、為什麼偵測與預防要一起看。
- 可以提醒:有些偵測是看到成功密碼驗證後才會有強訊號,所以不能把「沒警報」當成「沒被打」。
- 如果學生問如何操作,拉回安全邊界:本課只討論偵測與防禦,不做大量登入嘗試。

## Slide 11 - Device Code vs OAuth Consent

- Device code flow 本身是正常設計,phishing 是濫用互動流程與使用者信任。
- OAuth consent 比較能讓學生理解「不是偷密碼也可以拿到資料存取」。
- 這頁要把 app-only permission 的危險性埋好,後面 app/SP abuse 會回來看。

## Slide 12 - Controlled OAuth Consent Lab

- 實驗只用 training tenant 和 controlled app,避免把 phishing 技巧做成可搬到外部的流程。
- 讓學生練看 prompt 與 permission,不要只按 Accept。
- Defender checkpoint 要包含 user consent settings 與 admin consent workflow,但不要設計成學生提交作業。

## Slide 13 - Recon:先知道自己看得到什麼

- ROADtools 是主線工具,AADInternals 做補充。
- 強調 low privilege 看不到全部,不是工具壞掉,是權限模型如此。
- Demo 時讓學生先看「自己看不到什麼」,比只看漂亮 graph 更有教育效果。

## Slide 14 - ROADtools / ROADrecon Flow

- 不要把這頁講成安裝教學;用 auth/gather/explore 對應到「token -> data -> question」。
- 如果沒有 lab infra,這頁可以用 sanitized screenshots 或 mock output 補。
- 強調 gather 的結果受權限限制,這是課程主題,不是失敗。

## Slide 15 - AADInternals 的定位

- AADInternals 可以很強,但容易把節奏帶成工具展示。
- 這頁定位它是 reference toolkit,主敘事仍是權限模型與觀察判斷。
- 若時間不夠,保留一個示範指令或 screenshot 即可。

## Slide 16 - AzureHound:先當可視化候選

- 目前先不承諾 hands-on,等 John 建 tenant 後驗證 permissions 和 collection path。
- 可以講 BloodHound 的價值:把關係轉成 attack path,而不是只列清單。
- 提醒學生:圖上沒有邊不等於沒有風險,可能只是 collection visibility 不足。

## Slide 17 - Recon 要產出的不是資料量

- 這頁是 Phase 3 收束:把 tool output 轉成 lateral movement 的 input。
- 引導學生列出 3 個 candidate paths,而不是追求匯出更多 JSON。
- 很適合接下一頁的 app/SP abuse。

## Slide 18 - Lateral Movement:常見判斷點

- 這頁是攻擊鏈轉折:從「我有 token」到「我能改什麼」。
- App owner、SP credential、app role assignment 需要用 source-map 補完整實驗來源。

## Slide 19 - Application / Service Principal Abuse

- 用「誰能改 app,誰就可能改變 app 的身份能力」來講。
- 先不教具體操作,教材重點是 owner、credential、permission、assignment 的風險位置。
- 這頁會需要後續補一張 app/SP 關係圖。

## Slide 20 - App Roles and Assignments

- 用 delegated vs application permission 回扣 Phase 1/2。
- `appRoleAssignment` 可以當觀察關鍵字,讓學生知道後面查什麼。
- 高權限 application permission 比 delegated permission 更需要審批與定期盤點。

## Slide 21 - Persistence Candidates

- 現階段先保留 SP persistence + OAuth consent persistence + device registration persistence。
- 等 lab infra 確認後只選兩個做深,其他留 lecture-only。
- 不要讓 persistence 章變成技巧堆疊,仍要回到防守者該撤什麼、查什麼。

## Slide 22 - Lecture-only Until Verified

- 用這頁管住範圍,避免現場被問題帶到 Entra Connect / ADFS / Lighthouse 細節。
- 可以說:這些不是不重要,是 6 小時課程不能全部安全又清楚地做完。

## Slide 23 - Persistence:先保留兩到三個主題

- 不要四個都做,6 小時會爆。
- 建議最後選:Service Principal persistence + Device registration persistence;如果 OAuth lab 被選為主實驗,再加 consent persistence。

## Slide 24 - Azure Resource Abuse:三個主要實驗方向

- Storage + Key Vault 應該是必做,因為最能讓學生看到 resource plane 的差異。
- Managed Identity 視 lab VM 是否穩定;如果環境時間不夠,改成講師 demo。

## Slide 25 - Storage:Management Plane vs Data Plane

- 用 Storage 作為最直觀例子:看得到 account / 能改設定 / 能讀 blob 是三件事。
- 不要把 RBAC 講成抽象表格,講成攻擊者要找下一張門票。
- 後續需要一張 portal / CLI 教學截圖 backlog,作為講師輔助,不是學生提交物。

## Slide 26 - Key Vault:Secrets Access Boundary

- 這頁要避免過度承諾「有 Contributor 就能讀 secret」這種簡化說法。
- 重點是 attack path:能不能改 access、能不能部署會讀 secret 的 resource、能不能直接讀 data plane。
- 防守面要能指出 role assignment change 與 secret access log 這類觀察點。

## Slide 27 - Managed Identity:Resource Identity

- Managed Identity 很適合 demo,但如果 VM / scope 不穩,現場會拖時間。
- 先把概念講成「resource 也可以有 identity」,再連回 token。
- 如果之後有 lab,觀察重點是 token resource / role assignment / target resource access result,不設 mandatory submission。

## Slide 28 - Deployment History and Hidden Assumptions

- 這頁用來降風險:不要暗示 deployment history 一定會藏密碼。
- 教材先講 inspection boundary,真正 credential sample 等 John 建環境後再決定。
- 若沒有安全 sample artifact,這段保留為 lecture-only。

## Slide 29 - Resource Abuse Decision Questions

- 這頁是 Phase 5 收束:把 Azure resource access 轉成觀察 checklist。
- 讓學生用 management/data plane 分類每一個 claim。
- 很適合接防禦邊界章,因為每個 control 都要說清楚卡在哪一層。

## Slide 30 - 防禦邊界不是口號

- 不說「開 MFA 就安全」。要問哪種 MFA、哪個 grant control、scope 到哪些 apps、是否要求 compliant device。
- 這頁可以收束到 defender checklist。

## Slide 31 - Conditional Access:先問 Scope

- 這頁要讓學生停止把 CA 當作單一開關。
- 用 scope / conditions / grant controls / session controls 四段拆解。
- 如果現場有人問 bypass,先回到 policy 是否套到該 app 與該 identity。

## Slide 32 - MFA Type Matters

- 這頁可以很有 John 風格:不要說「開 MFA 就好」,要問哪種 MFA。
- 把 phishing-resistant MFA 講成降低特定攻擊成功率,不是保證無敵。
- AitM 討論可放這頁,但不進 hands-on。

## Slide 33 - Device Compliance Boundary

- 清楚拆註冊、加入、合規,不然學生會把 device 相關名詞混在一起。
- 接回前面的 device persistence candidate:真正的問題是 device claims 如何影響 CA。
- Defensive checklist 要提醒 stale devices 和 permissive join settings。

## Slide 34 - Token Protection and Residual Risk

- Token protection 是很好的收束,但要避免過度承諾。
- 強調 controls 需要支援條件,且不會自動修掉 OAuth grants 或 app role assignments。
- 這頁把 token、app、role 三條線收回來。

## Slide 35 - Defensive Observation Checklist

- 這頁很適合當課末 checklist,也可獨立做 handout。
- 讓學生用四類觀察思考:sign-in、directory、Azure resource、device。
- 後續可以補一張「incident review board」圖。

## Slide 36 - 把控制對回攻擊鏈

- 這是全課 recap 的核心 slide。
- 每一格都可以問學生:「如果你是 defender,去哪裡觀察或查證?」
- 如果時間不夠,這頁可以取代部分細節頁做快速總結。

## Slide 37 - Learning, Not Flags

- 這頁是 John 的教學立場:學生要學會,不是交 flag。
- 可以在第一個 lab 前先講一次,也可以課末再回收。
- 若助教協助課堂,提醒助教不要把 checkpoint 變成評分或 submission。

## Slide 38 - Lab Chain Draft

- 目前是 draft,不要對外承諾全部 hands-on。
- 等 lab infra 確認後,把 candidate 標成 mandatory / optional / instructor demo。

## Slide 39 - 完成標準

- 這頁可以作為課末 recap,也可以作為對外課程成果。

## Slide 40 - References

- 每章產出時都要回填 source ID。
- 沒 source 的內容先留在 parking lot,不要放進學生版。