Dateizugriffsmonitor

Dateizugriffsmonitor

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 rootund verfügt 0600über die festgelegten Berechtigungen, d. h., rootdie 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 lastbBefehl ü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

userIn 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. lastbVerwendet 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.).

verwandte Informationen