> For the complete documentation index, see [llms.txt](https://firmianay.gitbook.io/cissp-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://firmianay.gitbook.io/cissp-notes/d5_identity_and_access_management.md).

# 域5：身份與訪問管理

* [域5：身份與訪問管理](#域5身份與訪問管理)
  * [D5-1：控制對資產訪問](#d5-1控制對資產訪問)
    * [一、控制物理和邏輯訪問](#一控制物理和邏輯訪問)
    * [二、CIA與訪問控制](#二cia與訪問控制)
  * [D5-2：管理標識和身份驗證](#d5-2管理標識和身份驗證)
    * [一、主體（subject）和客體（object）的區別](#一主體subject和客體object的區別)
    * [二、身份的註冊、證明和建立](#二身份的註冊證明和建立)
    * [三、授權和可問責性](#三授權和可問責性)
    * [四、身份驗證因素概要](#四身份驗證因素概要)
    * [五、你知道什麼](#五你知道什麼)
    * [六、你有什麼](#六你有什麼)
    * [七、你是什麼](#七你是什麼)
    * [八、多因素身份驗證（MFA）](#八多因素身份驗證mfa)
    * [九、無密碼身份驗證](#九無密碼身份驗證)
    * [十、裝置身份驗證](#十裝置身份驗證)
    * [十一、服務身份驗證](#十一服務身份驗證)
    * [十二、雙向身份驗證](#十二雙向身份驗證)
  * [D5-3：實施身份管理](#d5-3實施身份管理)
    * [一、單點登入（SSO）](#一單點登入sso)
    * [二、SSO和聯合身份](#二sso和聯合身份)
    * [三、憑據管理系統](#三憑據管理系統)
    * [四、憑據管理應用程式](#四憑據管理應用程式)
    * [五、指令碼訪問](#五指令碼訪問)
    * [六、會話管理](#六會話管理)
  * [D5-4：管理身份和訪問配置生命週期](#d5-4管理身份和訪問配置生命週期)
    * [一、配置和入職](#一配置和入職)
    * [二、取消配置和離職](#二取消配置和離職)
    * [三、定義新角色](#三定義新角色)
    * [四、賬戶維護](#四賬戶維護)
    * [五、賬戶訪問審查](#五賬戶訪問審查)
  * [D5-5：比較訪問控制模型](#d5-5比較訪問控制模型)
    * [一、比較許可權、權力和特權](#一比較許可權權力和特權)
    * [二、理解授權機制](#二理解授權機制)
    * [三、使用安全策略定義需求](#三使用安全策略定義需求)
    * [四、自主訪問控制（DAC）](#四自主訪問控制dac)
    * [五、非自主訪問控制（Non-DAC）](#五非自主訪問控制non-dac)
  * [D5-6：實施身份驗證系統](#d5-6實施身份驗證系統)
    * [一、在網際網路實施SSO](#一在網際網路實施sso)
    * [二、在內部網路實施SSO](#二在內部網路實施sso)
  * [D5-7：理解訪問控制攻擊](#d5-7理解訪問控制攻擊)
    * [一、常見訪問控制攻擊](#一常見訪問控制攻擊)
    * [二、核心保護方法](#二核心保護方法)

## D5-1：控制對資產訪問

資產分為有形資產和無形資產，包括資訊、系統、裝置、設施、應用程式和人員，最高優先順序需要保護的是人員。

### 一、控制物理和邏輯訪問

1. 物理控制

通常物理控制可以觸控到，如邊界安全控制（圍牆、門鎖等）和環境控制（HVA、滅火器等），是優先順序高於邏輯控制的。

1. 邏輯控制

技術控制主要包括身份驗證、授權和許可，即訪問控制。

### 二、CIA與訪問控制

* 未授權使用者能夠檢視系統資料破壞了機密性；
* 未授權使用者能夠修改系統資料或授權使用者進行了未授權的修改破壞完整性；
* 使用者需要訪問系統資料時被限制訪問破壞可用性。

## D5-2：管理標識和身份驗證

### 一、主體（subject）和客體（object）的區別

終端使用者訪問OA的過程，階段1終端（主體）訪問OA的web前端（客體），階段二OA的web前端（主體）訪問資料庫（客體），不同過程中主客體會發生轉換，該過程還會涉及一個概念叫信任傳遞，即終端實際無法訪問資料庫，但透過兩者都信任的web前端實現了互通，是一個需要關注的風險點。

### 二、身份的註冊、證明和建立

當你想要在某個組織建立新賬號時，就會進行註冊。為了確定確實你宣告的身份是你自己，那就需要你來進行證明，通常有兩種方式：

1. 線下注冊：通常需要提交身份驗證材料，如身份證、戶口本等。
2. 線上註冊：通常使用基於知識的身份驗證（KBA），即問只有你自己知道的資訊，如姓名、身份證號、手機號、房貸金額、車貸金額、家庭住址等。

驗證透過後就可以完善賬號資訊了，包括暱稱、密碼、郵箱等，其中認知密碼（cognitive password）或安全問題（security questions）常用於後期使用過程中忘記密碼時進行密碼重置，屬於KBA。

KBA的風險在於現今社交媒體的發達，導致個人資訊很容易不經意洩漏，導致認知密碼的猜測，不是安全的身份驗證方式。

### 三、授權和可問責性

授權是主體經過身份驗證後獲取執行許可權的過程，如主體僅可以對檔案執行讀取操作。

審計、日誌記錄和監控透過確保受試者對其行為負責而提供可問責性。可問責性依賴身份識別和驗證的強度，即身份有唯一標識且不易被冒充。

### 四、身份驗證因素概要

1. 三種主要的身份驗證因素

* 型別1-你知道什麼：密碼、PIN碼等記憶到腦袋裡的資訊。
* 型別2-你有什麼：物理可觸碰的裝置，如手機、USB-Key、門禁卡等。
* 型別3-你是什麼：生物識別因素，如指紋、虹膜等。

單因素身份驗證即只使用一種，多因素身份身份驗證使用兩種及以上。單個身份驗證因素來說，型別1最弱、型別3最強，但型別3也易被繞過，如人臉識別繞過，因此建議採用多因素身份驗證。

1. 基於屬性的身份驗證因素

* 你在哪：可標識物理位置的資訊，如IP地址、座機號碼、GPS等。常用於做異常位置登入驗證，如釘釘上班打卡。
* 上下文感知身份驗證（Context-Aware Authentication）：常用於移動裝置管理的身份驗證，基於裝置指紋、地理位置、時間等多維度進行身份驗證。舉個例子，一個員工拿手機連公司的WiFi，上下文感知身份驗證會從多個維度做身份驗證，如手機型號、MAC地址、序列號、是否是上班時間等，如今提到的零信任身份驗證採用的就是該方法。
* 你做什麼：我們熟知的手勢密碼，常用於解鎖移動裝置的手機螢幕。

### 五、你知道什麼

密碼是最常用的身份驗證技術，但也是最脆弱的，密碼短語（Password Policy Components）是加強密碼的方法，如“IPassedTheCISSPExam.”。個人身份號碼（PINs）也屬於型別1，不單獨使用，通常與型別2配合使用。

1. 密碼策略

* 最大使用期限：要求定期修改密碼。
* 密碼複雜度：要求密碼包含大小寫、符號和數字4種型別。
* 密碼長度：密碼越長越難破解，最直接提高爆破難度的策略。
* 最小使用期限：要求不能頻繁修改密碼。
* 密碼歷史：強制使用者修改密碼時不使用之前使用過的密碼。

1. 權威密碼建議

密碼建議一直在改變，所有人都沒有達到共識，因此需要定期關注相關動態並更新密碼策略。

NIST SP 800-63B密碼建議

* 密碼必須雜湊儲存：不建議明文儲存密碼；
* 密碼不應該過期：實踐發現過期改密碼使用者總是隻改1個字元，沒太大意義；
* 使用者不應該被要求使用特殊字元：特殊字元增加使用者記憶密碼的難度；
* 使用者應該能夠複製和貼上密碼：複雜密碼不能複製貼上會導致使用者改用弱密碼，畢竟手敲複雜密碼非常煩；
* 使用者應該能夠使用所有字元：某些系統不能使用空格或特殊字元做密碼；
* 密碼長度應該最少8位、最大64位：超長密碼可使使用者方便地建立密碼短語；
* 密碼系統應該篩查密碼：密碼系統應該檢查使用者配置的密碼是否是弱密碼。

PCI DSS不同的密碼要求

* 密碼至少90天過期一次
* 密碼長度必須超過7位

組織應根據自身所處行業以及合規要求制定符合自身的密碼策略。

### 六、你有什麼

智慧卡和令牌是型別2的典型示例，由於存在使用者共享或借用的情況，通常不會單獨使用。

1. 智慧卡

可做簡單計算和儲存，一般用於門禁，且通常“嗶”完還需要再輸入一下PIN碼或密碼。美國政府人員使用的智慧卡是CAC（軍事）和PIV（個人）。

1. 令牌

令牌是指可用於生成密碼的裝置，如網銀令牌。

* 同步動態密碼令牌：令牌與伺服器時間同步，定期不停的生成密碼。
* 非同步動態密碼令牌：手工觸發令牌獲取動態密碼，使用nonce（一次使用的數字）確保密碼的一次性。

同步使用TOTP標準（基於時間的一次性密碼），非同步使用HOTP標準（基於HMAC演算法的一次性密碼）。

令牌可以是硬體，也可以是軟體，硬體相較來說更穩定和安全，但也存在沒有電導致不可用的情況。

### 七、你是什麼

生物識別因素可同時用作標識和身份驗證。

1. 常見生物識別方法

* 指紋（fingerprint）：識別指頭圖案，常用於手機、電腦、USB等裝置解鎖。
* 面部掃描（face scans）：識別面部幾何圖形，除用於解鎖裝置，也用於抓捕罪犯，如天網系統。
* 視網膜掃描（retina scans）：識別眼球上血管模式，最準確的生物識別方法，但可能洩露健康資訊（PHI）或對使用者不友好。
* 虹膜掃描（iris scans）：識別瞳孔周圍彩色區域，準確度與視網膜掃描一致，但可實現較遠距離的識別。
* 手掌掃描（palm scans）：指紋掃描的plus版本。
* 語音模式識別（voice pattern recognition）：識別一個人說話聲音的特徵，即聲紋（voiceprint），如電影《2012》裡富商說的“Start Engine”。

還有一些弱雞識別方法，如識別手部幾何圖形、心臟/脈衝模式、簽名動態和擊鍵模式等。

1. 生物識別因素錯誤率

* 錯誤拒絕率-FRR-I型錯誤：有效的生物特徵也無法透過驗證，安全要求高的環境使用。
* 錯誤接受率-FAR-II型錯誤：無效的生物特徵被錯誤識別成有效身份，安全要求低的環境使用。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-9f63283f005b76ec3573a5b00c6130ad13346de3%2F5_CER.png?alt=media)

FAR與FRR的交叉點是交叉錯誤率CER或等錯誤率ERR，用於評估生物識別的質量。

1. 生物識別註冊

生物識別登記儲存的生物特徵因素樣本叫參考配置檔案（reference profile）或參考模板（reference template），選擇生物識別裝置時需考慮註冊所需時間（註冊身份資訊時間過長太耽誤事）和吞吐量（生物識別的時間過長也無法忍受）。

### 八、多因素身份驗證（MFA）

單獨使用密碼容易被爆破猜測，單獨使用令牌容易丟失或被竊，單獨使用生物識別會有誤報，因此組合使用強度和準確度最高。

### 九、無密碼身份驗證

由於密碼的不安全性，無密碼身份驗證方式越來越流行。快速線上身份識別（FIDO）標準用於解決減少使用者對於密碼依賴的問題，FIDO 2.0被稱為Web身份驗證或WebAuthn，透過生物識別、藍芽裝置等實現強身份驗證，應用領域包括線上支付、系統身份驗證等。

### 十、裝置身份驗證

現如今大部分公司都允許員工自帶移動裝置到公司辦公，除了對使用者進行身份驗證外，還需要對其裝置進行驗證，以確保非法裝置無法接入組織網路，降低內部威脅。

1. 裝置指紋

使用者將移動裝置在公司進行註冊，並關聯到使用者內部賬戶，實現賬戶和裝置的雙驗證。裝置指紋就如同人的指紋一樣，具有唯一性。裝置指紋包括裝置型號、硬體配置、作業系統版本、序列號、MAC、IP等，採集的特徵越多，裝置指紋的唯一性越強。

1. 802.1x

基於埠的身份驗證標準，與裝置指紋整合到MDM或NAC解決方案。

### 十一、服務身份驗證

用於非使用者使用而建立的服務賬號，如伺服器A定期備份並上傳到共享伺服器B，伺服器B建立備份服務賬號，僅用於伺服器A上傳備份。服務賬號一般許可權較大，除採用密碼驗證方式外，還會使用數字證書實現身份驗證。

### 十二、雙向身份驗證

通常僅提供服務端身份驗證，但無法保證客戶端的安全性，因此可使用數字證書進行雙向認證，即服務端有證書、客戶端也有證書。

## D5-3：實施身份管理

身份管理（Identity management，IdM）技術型別：

* 集中式：身份驗證和授權由單個實體執行，適合小型組織、管理開銷低、強制。
* 分散式：身份驗證和授權由各個實體執行，適合大型組織、管理開銷大、靈活。

### 一、單點登入（SSO）

集中式訪問控制技術，使用者登入一次就可以訪問多個業務系統，對使用者十分友好、簡化賬戶管理，風險點是一旦被攻破，攻擊者也可以獲得多個業務系統的許可權。

1. LDAP和集中訪問控制

目錄服務（directory service）是集中式的資料庫，儲存著主體和客體的資訊，以及訪問控制資訊。微軟的活動目錄（AD）服務是基於輕量級目錄訪問協議（LDAP），也就是我們常說的域控。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-d4a800015ed2820eb6b00902acae699b8e2e6a0d%2F5_ad.jpeg?alt=media)

1. LDAP和PKI

LDAP應用於CA證書信任層級的查詢。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-fc6b51727a25ca741ebb823fe3b098644ce2b8e2%2F5_pki.png?alt=media)

### 二、SSO和聯合身份

SSO不僅在內部網路使用，還可以用於網際網路第三方服務，如基於雲的聯合身份管理系統（federated identity management，FIM）。FIM是將一個系統中的使用者身份與多個身份管理系統聯絡起來，將身份驗證擴充套件到單個組織之外，如微信賬號登入其他第三方應用。

1. 基於雲的聯合

通常使用第三方服務共享聯合身份，將本地身份驗證系統與第三方服務商建立身份資訊對映，使用者可直接使用本地身份訪問第三方服務。

1. 本地聯合

與基於雲的聯合原理一樣，只是兩個服務都是本地的，如公司A與公司B建立合作關係，雙方的身份驗證系統建立對映關係，雙方使用者可使用自己的身份訪問對方業務系統。

1. 混合聯合

基於雲的聯合與本地聯合組合使用。

1. 即時（Just-in-Time，JIT）

聯合身份解決方案支援即時配置（JIT provisioning），即在使用者使用本地身份登入第三方服務時，第三方服務會檢查本地是否存在身份資訊，如果沒有則自動建立身份資訊，如果存在則更新身份資訊。JIT系統通常使用SAML來交換身份資訊，支援沒有管理員干預的情況下建立身份對映關係。

### 三、憑據管理系統

憑據管理系統（Credential management systems）為使用者在SSO不可用時保留其憑據，如瀏覽器支援儲存不同網站的憑據。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-ec7c5d787c9db459133d4948dbf5ca3e277c3014%2F5_credential1.jpg?alt=media)

聯合身份管理解決方案支援憑據管理API，實現不同web應用程式使用聯合身份提供者實現SSO。

身份即服務（IDaaS）是提供身份和訪問管理的第三方服務，如使用Google賬號登入一次就可以訪問多個基於Google雲的應用程式，而無需再次登入。

### 四、憑據管理應用程式

1. Windows憑據管理程式

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-07685cd42cc81e4fdc07ea141a156e86264231d7%2F5_credential2.jpeg?alt=media)

1. KeePass工具

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-e6991ca78b777ba910ab368cdb53273dd5c8be4c%2F5_keepass.png?alt=media)

### 五、指令碼訪問

典型場景便是使用SecureCRT，記錄使用者名稱和密碼可實現自動登入功能。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-c31115e44458c65343246bff2ec5857f9a90e350%2F5_scripted.png?alt=media)

### 六、會話管理

1. 作業系統螢幕保護程式

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-6d2e553bace5bd498252a1a10aff3614581a0e08%2F5_session1.png?alt=media)

1. 應用程式會話超時終止

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-e7d13030a4c5dadd124709cdcf115cbb15258bc8%2F5_session2.jpg?alt=media)

## D5-4：管理身份和訪問配置生命週期

身份和訪問配置生命週期指的是賬戶的建立、管理和刪除。

### 一、配置和入職

新員工入職後，建立新賬戶並配置適當許可權，也就是登記或註冊（enrollment or registration），該過程重點在於確認使用者的身份資訊準確可靠。

### 二、取消配置和離職

員工離職後，需要取消配置並執行離職流程，改過程最重要的是收回許可權，通常不會直接刪除使用者賬號，而是選擇禁用。一方面是因為賬戶所擁有的資料，另一方面是可能離職面談扭轉了員工思想。

### 三、定義新角色

在組織的發展過程中，員工職責可能發生變化，因此會需要建立新角色，並分配相關特權，方便管理員配置員工特權。

### 四、賬戶維護

賬戶維護主要涉及員工的職責變化，導致管理員對其許可權的調整，應實施標準化維護流程，降低特權蠕變等情況的發生。

### 五、賬戶訪問審查

定期稽核賬戶許可權和非活動賬戶，涉及問題有特權蠕變和過度許可權（特權蠕變導致過度許可權）。

PS：結合人員安全管理過程理解。

## D5-5：比較訪問控制模型

### 一、比較許可權、權力和特權

1. 許可權（permission）

技術層面使用者能夠訪問資源的許可權，如可讀取、可讀可寫、可執行等。

1. 權利（right）

現實層面的權利，你有權利檢視資料庫的資料，前提是有讀取的許可權。

1. 特權（privilege）

許可權+權利就是特權。

1. 權利（Entitlement）

權利是指授予使用者特權的數量，通常在首次分配賬戶時指定。

### 二、理解授權機制

1. 隱式拒絕

基本原則，白名單機制，如不特定宣告允許訪問的全部按拒絕。

1. 能力表

關注主體，主體能夠訪問哪些客體以及執行什麼操作。

1. 訪問控制列表

關注客體，客體能夠被哪些使用者訪問以及執行什麼操作。

1. 訪問控制矩陣

能力表和訪問控制列表組成訪問控制矩陣，如防火牆的訪問控制。

1. 約束介面

限制使用者能夠執行或檢視的內容，如Windows選單。

1. 依賴內容的控制

根據客體內容限制使用者，如資料庫檢視。

1. 依賴上下文的控制

根據主體動作或時間進行許可權控制，如上班時間才能訪問檔案伺服器。

1. 知其所需

主體只能訪問工作所需的內容。

1. 最小特權

主體僅被授予執行工作所需的許可權，與知其所需的區別在於執行動作的權利。

1. 職責分離

敏感任務流程拆分由多人執行。

1. 縱深防禦

多層機制保護資產，大維度上採用物理、技術、管理控制保護，小維度上邊界防火牆、資料中心防火牆保護。

### 三、使用安全策略定義需求

組織的安全策略宏觀上指導訪問控制的實現。

### 四、自主訪問控制（DAC）

允許客體的所有者、建立者或資料託管員控制和定義對該客體的訪問，即關注客體，典型代表ACL。DAC屬於分散式訪問控制，靈活但不易管理。

### 五、非自主訪問控制（Non-DAC）

Non-DAC屬於集中式訪問控制，不夠靈活但易於管理。

1. 基於角色的訪問控制（RBAC）

透過使用組來實現控制，如安全裝置的三權分立。RBAC有助於解決特權蠕變，強制執行最新特權原則，適合人員更迭頻繁的環境。

1. 基於任務的訪問控制（TBAC）

與RBAC的區別在於不基於使用者身份，而是基於工作任務來控制。

1. 基於規則的訪問控制（Rule-BAC）

也就是訪問控制矩陣，即防火牆，包含隱式拒絕。

1. 基於屬性的訪問控制（ABAC）

Rule-BAC的高階實現，可以細粒度的控制條件（不限於五元組），如使用者的身份、部門、裝置、時間等。

1. 強制訪問控制（MAC）

MAC依賴分類標籤的使用，也通常被稱為基於格子的模型，每一個安全級別都可以使用標籤繼續細分許可權，稱為隔間或隔離專區。想要訪問隔離專區的資料，必須先擁有級別標籤，還需要擁有隔間標籤才能進行訪問。

由此MAC有三種環境型別：分層、分割槽和混合。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-eab9ab090eb38daf509158bb9737e839bac98c08%2F5_mac.png?alt=media)

1. 基於風險的訪問控制（Risk-BAC）

該模型透過考慮幾個不同的因素來評估風險：

* 環境（environment）：可以是物理位置、IP地址等因素。
* 情況（situation）：可以是正在發生什麼。
* 安全策略（Security policies）：可以是風險計算方式。

聽起來很抽象，其實簡單理解就是某個場景下對風險進行評估，再授予該場景下使用者符合安全策略的訪問許可權。

## D5-6：實施身份驗證系統

### 一、在網際網路實施SSO

1. 可擴充套件標記語言（XML）

XML可以包含標記，用於將資料描述為所需的任何內容。可用來傳輸和儲存資料，組織使用基於XML的語言來共享身份驗證和授權資訊。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-7352bd3632ccfd17e6ba3178b352a444a43216f7%2F5_xml.png?alt=media)

1. 安全斷言標記語言（SAML）

SAML基於XML，通常用於在聯合組織間交換身份驗證和授權（AA）資訊。SAML 2.0規範使用三個實體：

* 委託人或使用者代理（Principal or User Agent）
* 服務提供者（Service Provider，SP）
* 身份提供者（Identity Provider，IdP）

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-bf3b2d25bea9c7216bb8da917e8fe3c0ff172de3%2F5_saml1.png?alt=media)

IdP可以傳送三種型別的斷言：

* 身份驗證斷言（Authentication Assertion）：提供證明使用者代理提交了正確的憑據，並標識了身份識別方法和使用者登入時間。
* 授權斷言（Authorization Assertion）：提供是否授權使用者代理訪問請求的服務。
* 屬性斷言（Attribute Assertion）：提供有關使用者代理的任何資訊。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-b5980be3bdf4cda0d094e52c31e1e8c4ad2b8dd0%2F5_saml2.png?alt=media)

1. OAuth

OAuth 2.0是一個授權框架，不是身份驗證協議，透過交換API訊息發放令牌進行授權。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-cde4a70e3881db03f43c2ed256faaca5ea12bc1f%2F5_oauth.png?alt=media)

1. OpenID

OpenID是一個開放的身份驗證標準，透過使用OpenID標識登入不同的網站，OpenID提供者（OP）進行身份驗證，這些網站被稱為依賴者（RP）。

1. OIDC

OpenID Connect（OIDC）是使用OAuth 2.0授權框架的身份驗證層，即同時提供身份驗證和授權。OIDC使用JSON格式Web令牌（JWT），也叫ID令牌。

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-42e0db15a70cbb057eb1ccdba1afc55f8ef4d381%2F5_oidc.png?alt=media)

1. 比較SAML、OAuth、OpenID和OIDC

SAML使用斷言來傳遞身份驗證和授權資訊，OIDC（OpenID+OAuth）使用JWT來傳遞身份驗證和授權資訊。SAML的兄弟概念：

* 服務配置標記語言（SPML）：基於XML，專門為交換使用者資訊而設計，即用於同步建立、修改、刪除賬號。
* 可擴充套件訪問控制標記語言（XACML）：用於在XML格式中定義訪問控制策略，通常用於實現RBAC。

### 二、在內部網路實施SSO

1. AAA協議

用於提供身份驗證、授權和記賬的協議被稱為AAA協議，為遠端訪問系統提供集中訪問控制。

1. Kerberos

Kerberos是一種票據身份驗證機制，V5版本使用對稱加密演算法AES來保障機密性。

Kerberos核心元件

* 金鑰分發中心（KDC）：管理所有成員的對稱秘鑰，用於身份驗證的可信第三方。
* 身份驗證伺服器（AS）：託管KDC功能的伺服器，主要是票據授予服務（TGS）和身份驗證服務（AS），其中可以將TGS剝離另置一臺伺服器獨立執行。
* 授予票據（TGT）：主體經過KDC的身份驗證後獲得的身份證明，但不包含授權資訊。
* 服務票據（ST）：主體獲得ST後才能夠去訪問客體。

Kerberos通訊過程

![](https://366271701-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8rn090lRzHL4UfRBIqer%2Fuploads%2Fgit-blob-3e7498cecb4928ca8c6100368e95c28c533dfb7a%2F5_kerberos.png?alt=media)

Kerberos風險點

* KDC單點故障，如果KDC掛掉或被攻破，那麼可用性和機密性都講遭到破壞。
* 因為過程中涉及時間戳，因此要求嚴格的時間配置，需要NTP支援。

1. RADIUS

RADIUS使用UDP 1812和1813傳輸資訊，傳輸的資訊僅密碼被加密。可透過使用TLS加強傳輸安全性，使用TCP埠2083，稱為RADIUS/TLS。

1. TACACS+

Cisco專有協議，可將AAA分別託管到不同伺服器，透過TCP 49埠傳輸，可加密所有身份驗證資訊。

## D5-7：理解訪問控制攻擊

### 一、常見訪問控制攻擊

1. 特權提升

攻擊者使用許可權特殊技術獲取非預期許可權，如普通使用者許可權提升為管理員許可權。許可權提升分兩類：

* 水平許可權提升（horizontal privilege escalation）：攻擊者獲得內網伺服器普通使用者許可權後，透過橫向滲透獲取其他伺服器的普通使用者許可權。
* 垂直許可權提升（vertical privilege escalation）：攻擊者獲得內網伺服器普通使用者許可權後，透過該伺服器其他漏洞獲得管理員許可權。

減少特權命令執行

* Linux中普通使用者可使用su或sudo以管理員許可權執行命令。
* Windows中的PowerShell常被利用執行無檔案攻擊。

1. 密碼攻擊

* 字典攻擊（Dictionary Attack）：使用弱密碼庫進行密碼嘗試攻擊。
* 爆力破解（Brute-Force Attack）：嘗試各類字元的可能組合進行密碼嘗試攻擊。
* 噴射攻擊（Spraying Attack）：爆破攻擊的一種，可嘗試繞過賬戶鎖定策略，即賬戶A爆破失敗鎖定後，對賬戶B爆破鎖定後，再對賬戶C爆破，直到賬戶A的鎖定時間到後再對A進行爆破。
* 憑證填充攻擊（Credential Stuffing Attack）：即撞庫攻擊，由於使用者在不同網站或系統的密碼基本是一樣的，所以當其中一個網站或系統的密碼被拿到後，可嘗試用該賬號密碼登入其他網站或系統。
* 生日攻擊（Birthday Attack）：利用雜湊演算法的碰撞缺陷繞過身份驗證。
* 彩虹表攻擊（Rainbow Table Attack）：密碼通常以雜湊值進行儲存，利用彩虹表可減少計算雜湊的時間來提高密碼爆破的效率。
* Mimikatz：一款針對Windows的透測試工具，擁有以下功能：
  * 從記憶體中讀取密碼
  * 提取Kerberos票據
  * 提取證書和私鑰
  * 從記憶體中讀取LM和NTLM密碼雜湊值
  * 從LSASS中讀取明文密碼
  * 列出正在允許的程序
* 雜湊傳遞攻擊（Pass-the-Hash Attack，PtH）：攻擊者將捕獲的密碼雜湊值傳送到身份驗證服務，以嘗試繞過身份驗證機制。
* Kerberos漏洞利用攻擊：攻擊Kerberos的工具有Mimikatz、Rubeus（針對Windows）、Impacket（針對Linux）。
  * 跨越雜湊（Overpass the Hash）：也被稱為傳遞金鑰（pass the key），在禁用NTLM使用PtH（pass the hash，傳遞雜湊）攻擊的替代方法，可以繞過身份驗證獲取TGT。
  * 傳遞票據（Pass the Ticket）：攻擊者試圖獲取lsass.exe程序中持有的票據，然後模擬使用者嘗試訪問網路資源。
  * 白銀票據（Silver Ticket）：攻擊者獲取服務賬戶的NTLM雜湊值，就可以偽造TGS票據，可獲取服務賬戶的所有特權。
  * 黃金票據（Golden Ticket）：攻擊者獲取Kerberos服務賬戶（KRBTGT）的雜湊值，就可以偽造任何票據，想訪問什麼服務都可以。
  * 爆破攻擊（Brute-Force）：針對使用者名稱和密碼的爆破攻擊。
  * AS-REP Roast：AS-REP Roast是針對使用者賬號進行離線爆破的攻擊方法，僅在未開啟Kerberos預身份驗證有效。Kerberos預身份驗證是Kerberos中的一項安全功能，可幫助預防密碼猜測攻擊。
  * Kerberoasting：該攻擊收集加密的TGS票據（服務賬戶使用），嘗試進行爆破，並試圖查詢未開啟預身份驗證的使用者。

PS：TGS tickets就是service ticket（即服務票據）。

* 嗅探攻擊（Sniffer Attack）：透過捕獲網路通訊中的資料包進行分析。

1. 欺騙攻擊

* 電子郵件欺騙（Email Spoofing）：偽造電子郵件的發件人，誘使使用者相信，常見於垃圾郵件或釣魚郵件。
* 電話號碼欺騙（Phone Number Spoofing）：偽造來電號碼欺騙接聽者，常見於電信詐騙或電話釣魚。

### 二、核心保護方法

1. 控制訪問

控制物理和邏輯訪問，物理方面如使用門禁等，邏輯訪問如使用防火牆。

1. 密碼策略

* 強密碼：長度超過8位，採用大小寫、符號和數字組合。
* 賬戶鎖定：多次登入失敗鎖定賬戶，延長爆破攻擊時間。
* 上次登入通知：登入提示上次登入的資訊，可以發現可疑登入行為。
* 多因素身份驗證：採用多因素身份驗證提高強度。

1. 密碼保護

* 雜湊：加密密碼。
* 鹽和胡椒：增加加密密碼的隨機性，鹽本地儲存，胡椒第三方儲存。
* 密碼遮蔽：螢幕不能以明文顯示密碼，且不能複製密碼框內的字元。

1. 安全培訓

適當的培訓有助於員工更好的理解安全的必要性以及為員工提供安全指導。
