
Wenn eine Nicht-Root-Malware versucht, das Passwort des Benutzers zu knacken, auf welche Passwortdateien oder sogar welchen Speicherteil muss sie dann zugreifen? Wie kann ich überwachen und feststellen, ob die Malware auf die Passwortdateien zugreift?
Antwort1
Die meisten Distributionen speichern die Passwörter für die Benutzeranmeldung in /etc/shadow
. Diese Datei gehört root
und verfügt 0600
über die festgelegten Berechtigungen, d. h., root
die Datei kann nur gelesen oder beschrieben werden.
Allerdings stellen einige Distributionen „Schlüsselbunde“ für Benutzer/Programme bereit. Schlüsselbunde sind im Wesentlichen eine geheime Speicherdatenbank oder -datei. KDE stellt beispielsweise KWallet bereit und Programme wie Chromium verwenden KWallet zum Speichern von Passwörtern usw.
Diese Schlüsselbunde werden im Allgemeinen pro Benutzer verwaltet und ebenfalls mit 0600-Berechtigungen gespeichert, sodass nur der Benutzer, dem der Schlüsselbund gehört, ihn tatsächlich lesen kann. Wenn Sie sich also Sorgen über Malware machen, die nicht als Root ausgeführt wird, sind Sie in dieser Hinsicht ziemlich sicher, solange sie nicht unter Ihrem Benutzer ausgeführt wird.
Leider kann ich Ihnen keine vollständige Liste der zu überwachenden Dateien geben, da jede Distribution ihre eigene Lösung zur Geheimverwaltung verwendet (z. B. GNOME3, das Seahorse statt KWallet verwendet). Aber ich würde im Allgemeinen auf Änderungen in folgenden Dateien achten:
~/.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
Was die Überwachung betrifft, ist die einfachste Möglichkeit, sie einzurichten, die Verwendung des Audit-Frameworks über auditctl
.
Dies überwacht beispielsweise alle Zugriffe auf Bobs KWallet-Datenbankdatei: (temporäre Regel, wird beim Neustart gelöscht, sofern sie nicht hinzugefügt wird /etc/audit/audit.rules
)
sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa
Und zur Überprüfung des Zugriffs:
sudo less /var/log/audit/audit.log
HierHier finden Sie eine Dokumentation, die Ihnen beim Erstellen Ihrer eigenen Regeln helfen kann.
Antwort2
Wenn eine Nicht-Root-Software versucht, Benutzer zu ändern, können Sie dies mit dem folgenden lastb
Befehl überprüfen:
$ 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
In diesem Fall habe ich mich mit einem fehlgeschlagenen Passwort angemeldet su
. Das kannst du im Protokoll sehen. Du kannst auch sehen, dass zufällige IPs ständig versuchen, mein Root-Passwort über SSH zu erraten.
Wenn Sie einen inotify- oder systemd-Pfad einrichten möchten, um den Dateizugriff zu überwachen, lautet die zu überwachende Datei /var/log/btmp
. lastb
Verwendet diese Datei.
Wenn Sie erfolgreiche Anmeldungen überprüfen möchten, verwenden Sie last
. Dies überwacht /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
...
Antwort3
Unter Linux können Sie das Inotify-Framework und die zugehörigen Befehlszeilentools verwenden, um einige Dateizugriffe eines anderen Prozesses zu überwachen.
Hier sind die Manpages als Referenz
Wenn Sie ein ausgefeilteres Verhalten wünschen, gibt es für dieses Framework Bindungen für die meisten Skriptsprachen (Python, Lua usw.).