目錄

Linux PAM 以及其相關攻擊

PAM 是什麼

PAM 框架提供不同的 API,讓不同軟體用統一的介面來驗證,可以讓系統來提供不同的驗證方式,應用程式不需要知道驗證細節,只要呼叫 API,主要流程為:

  1. 不同應用程式像是 sudo 或者 login 程式,在編譯的時候會用 -lpam 連結到 libpam.so,程式執行時要登入時會呼叫 pam_start() 函式
  2. 這時 PAM 會去 /etc/pam.d/ 找跟自己名字一樣的設定檔(例如 /etc/pam.d/sudo
  3. PAM 會根據設定檔,去載入不同 PAM module,像是 pam_unix.so,它就會彈出密碼提是
  4. 最後 pam_end() 把所有敏感資料刪除

PAM 提供不同的模組類型,像是

  1. Auth 認證管理相關的
  2. Account 帳戶管理相關的
  3. Passwrod 密碼管理相關的
  4. Session 使用者登入後管理會話

模組例子像是:

  1. pam_exec: 讓使用者自訂自己的程式,登入成功後可以執行特定的程式
  2. pam_faillock: 模組紀錄登入失敗的次數

PAM 相關攻擊

PAM 相關的攻擊主要就是讓受害者能執行到攻擊者自己寫的函式,常會 hook 攻擊的 PAM API 像是

  1. pam_authenticate():密碼驗證點(竊取密碼、繞過驗證)
  2. pam_open_session():登入成功後的處理(權限維持、後門觸發)
  3. pam_acct_mgmt():帳號狀態檢查(過濾特定帳號免密碼)

Reference