
如果非根惡意軟體試圖破解使用者的密碼,它必須存取哪些密碼檔案甚至記憶體部分?如何監控並判斷密碼檔案是否被惡意軟體存取?
答案1
大多數發行版將使用者登入密碼儲存在 中/etc/shadow
,該檔案由擁有者擁有root
並設定0600
為權限,即只能root
讀取或寫入該檔案。
話雖這麼說,一些發行版提供“密鑰環”供用戶/程式使用。密鑰環本質上是一個秘密儲存資料庫或文件,例如KDE提供了KWallet,Chromium等程式使用KWallet來儲存密碼等。
這些密鑰環通常按用戶進行管理,並以 0600 權限存儲,因此只有擁有密鑰環的用戶才能真正讀取它。因此,如果您擔心非 root 惡意軟體,只要它不以您的使用者身分執行,那麼在這方面您就相當安全。
不幸的是,我無法為您提供要監視的文件的詳盡列表,因為每個發行版都使用自己的秘密管理解決方案(例如 GNOME3 使用 Seahorse 而不是 KWallet)。但我通常會監視以下方面的變化:
~/.ssh/authorized keys # List of keys accepted during SSH logins
~/.profile # File sourced by your login shell
~/.bash_profile # File sourced by your login shell
~/.bashrc # File sourced by your login shell
關於監控,也許最簡單的設定方法是透過auditctl
.
例如,這將監視對 bob 的 KWallet 資料庫檔案的所有存取:(臨時規則,重新啟動時清除,除非新增至/etc/audit/audit.rules
)
sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa
並用於審查訪問:
sudo less /var/log/audit/audit.log
這裡一些文件可以幫助您建立自己的規則
答案2
如果非 root 軟體嘗試更改用戶,您可以使用以下lastb
命令進行檢查:
$ sudo lastb -a | more
user pts/2 Mon Aug 10 08:17 - 08:17 (00:00)
root ssh:notty Mon Aug 10 08:17 - 08:17 (00:00) 46.148.201.206
root ssh:notty Mon Aug 10 08:17 - 08:17 (00:00) 161.35.32.43
root ssh:notty Mon Aug 10 08:16 - 08:16 (00:00) 13.68.137.194
root ssh:notty Mon Aug 10 08:16 - 08:16 (00:00) 115.196.179.138
user
在這種情況下,我使用失敗的密碼登入su
。您可以在日誌中看到這一點。您還可以看到隨機 IP 不斷嘗試透過 ssh 猜測我的 root 密碼。
如果您想要設定 inotify 或 systemd 路徑來監視文件訪問,則要監視的文件是/var/log/btmp
.lastb
使用該文件。
如果您想檢查是否成功登錄,請使用last
.這監控/var/log/wtmp
:
$ last -a
usera pts/5 Fri Jul 31 03:00 - 03:17 (00:16) 54.36.10.77
usera pts/5 Thu Jul 30 21:36 - 21:37 (00:01) 54.36.10.77
usera pts/5 Wed Jul 29 08:54 - 08:54 (00:00) 127.0.0.1
userb tty7 Tue Jul 21 11:29 still logged in :0
userb tty7 Tue Jul 21 10:59 - 11:29 (00:30) :0
userb tty7 Tue Jul 21 07:27 - 10:58 (03:31) :0
reboot system boot Tue Jul 21 09:27 still running 5.7.0-1-amd64
...
答案3
在 Linux 上,您可以使用 inotify 框架和相關的命令列工具來觀察另一個進程進行的某些檔案存取。
以下是供參考的手冊頁
如果你想要更複雜的行為,這個框架可以綁定大多數腳本語言(python、lua 等......)