Linux PAM 以及其相關攻擊
目錄
PAM 是什麼
PAM 框架提供不同的 API,讓不同軟體用統一的介面來驗證,可以讓系統來提供不同的驗證方式,應用程式不需要知道驗證細節,只要呼叫 API,主要流程為:
- 不同應用程式像是
sudo或者login程式,在編譯的時候會用-lpam連結到libpam.so,程式執行時要登入時會呼叫pam_start()函式 - 這時 PAM 會去
/etc/pam.d/找跟自己名字一樣的設定檔(例如/etc/pam.d/sudo) - PAM 會根據設定檔,去載入不同 PAM module,像是
pam_unix.so,它就會彈出密碼提是 - 最後
pam_end()把所有敏感資料刪除
PAM 提供不同的模組類型,像是
- Auth 認證管理相關的
- Account 帳戶管理相關的
- Passwrod 密碼管理相關的
- Session 使用者登入後管理會話
模組例子像是:
pam_exec: 讓使用者自訂自己的程式,登入成功後可以執行特定的程式pam_faillock: 模組紀錄登入失敗的次數
PAM 相關攻擊
PAM 相關的攻擊主要就是讓受害者能執行到攻擊者自己寫的函式,常會 hook 攻擊的 PAM API 像是
pam_authenticate():密碼驗證點(竊取密碼、繞過驗證)pam_open_session():登入成功後的處理(權限維持、後門觸發)pam_acct_mgmt():帳號狀態檢查(過濾特定帳號免密碼)