ルート以外のマルウェアがユーザーのパスワードを復号化しようとした場合、どのパスワードファイルまたはメモリの一部にアクセスする必要がありますか?マルウェアがパスワードファイルにアクセスしているかどうかを監視して確認する方法は?
答え1
/etc/shadow
ほとんどのディストリビューションは、所有者が所有し、権限が設定されているroot
ファイルにユーザーログインパスワードを保存します0600
。つまり、root
ファイルは読み書きできるだけです。
つまり、一部のディストリビューションでは、ユーザー/プログラムが使用する「キーリング」を提供します。キーリングは、本質的に秘密の保存データベースまたはファイルです。たとえば、KDEはKWalletを提供し、ChromiumなどのプログラムはKWalletを使用してパスワードなどを保存します。
これらのキーリングは通常ユーザーごとに管理され、0600権限で保存されるため、キーリングを所有しているユーザーのみが実際に読み取ることができます。したがって、ルート以外のマルウェアが心配な場合は、そのマルウェアがユーザーとして実行されない限り、その点ではかなり安全です。
残念ながら、各ディストリビューションは独自の秘密管理ソリューションを使用しているため、監視するファイルの完全なリストを提供することはできません(たとえば、GNOME3はKWalletの代わりにSeahorseを使用します)。しかし、私は通常、次の変化を監視します。
~/.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
ルート以外のソフトウェアがユーザーを変更しようとする場合は、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
。これはログで確認できます。また、SSHを介して常に私のルートパスワードを推測しようとする任意のIPを見ることができます。
ファイルアクセスを監視するために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など...)へのバインディングがあります。