Linux Forensics
Last updated
Last updated
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Zunächst wird empfohlen, ein USB mit gut bekannten Binaries und Bibliotheken darauf zu haben (Sie können einfach Ubuntu herunterladen und die Ordner /bin, /sbin, /lib, und /lib64 kopieren), dann das USB-Laufwerk einbinden und die Umgebungsvariablen ändern, um diese Binaries zu verwenden:
Sobald Sie das System so konfiguriert haben, dass es gute und bekannte Binaries verwendet, können Sie einige grundlegende Informationen extrahieren:
Während Sie die grundlegenden Informationen abrufen, sollten Sie nach seltsamen Dingen suchen wie:
Root-Prozesse laufen normalerweise mit niedrigen PIDs, also wenn Sie einen Root-Prozess mit einer großen PID finden, können Sie Verdacht schöpfen
Überprüfen Sie die registrierten Logins von Benutzern ohne eine Shell in /etc/passwd
Überprüfen Sie die Passworthashes in /etc/shadow
für Benutzer ohne eine Shell
Um den Speicher des laufenden Systems zu erhalten, wird empfohlen, LiME zu verwenden. Um es zu kompilieren, müssen Sie den gleichen Kernel verwenden, den die Zielmaschine verwendet.
Denken Sie daran, dass Sie LiME oder etwas anderes nicht auf der Zielmaschine installieren können, da dies mehrere Änderungen daran vornehmen würde
Wenn Sie also eine identische Version von Ubuntu haben, können Sie apt-get install lime-forensics-dkms
verwenden.
In anderen Fällen müssen Sie LiME von GitHub herunterladen und es mit den richtigen Kernel-Headern kompilieren. Um die genauen Kernel-Header der Zielmaschine zu erhalten, können Sie einfach das Verzeichnis /lib/modules/<kernel version>
auf Ihre Maschine kopieren und dann LiME mit ihnen kompilieren:
LiME unterstützt 3 Formate:
Raw (jedes Segment zusammengefügt)
Padded (gleich wie raw, aber mit Nullen in den rechten Bits)
Lime (empfohlenes Format mit Metadaten)
LiME kann auch verwendet werden, um den Dump über das Netzwerk zu senden, anstatt ihn auf dem System zu speichern, indem man etwas wie: path=tcp:4444
verwendet.
Zunächst müssen Sie das System herunterfahren. Dies ist nicht immer eine Option, da das System manchmal ein Produktionsserver ist, den sich das Unternehmen nicht leisten kann, herunterzufahren.
Es gibt 2 Möglichkeiten, das System herunterzufahren: ein normales Herunterfahren und ein "Stecker ziehen" Herunterfahren. Das erste ermöglicht es den Prozessen, wie gewohnt zu beenden und das Dateisystem zu synchronisieren, aber es ermöglicht auch, dass mögliche Malware Beweise zerstört. Der "Stecker ziehen"-Ansatz kann einige Informationsverluste mit sich bringen (nicht viele Informationen werden verloren gehen, da wir bereits ein Abbild des Speichers erstellt haben) und die Malware wird keine Gelegenheit haben, etwas dagegen zu unternehmen. Daher, wenn Sie verdächtigen, dass es möglicherweise eine Malware gibt, führen Sie einfach den sync
Befehl auf dem System aus und ziehen Sie den Stecker.
Es ist wichtig zu beachten, dass Sie bevor Sie Ihren Computer mit etwas, das mit dem Fall zu tun hat, verbinden, sicherstellen müssen, dass er als nur lesen gemountet wird, um zu vermeiden, dass Informationen verändert werden.
Das Erstellen eines Disk-Images ohne weitere Daten.
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Linux bietet Tools zur Sicherstellung der Integrität von Systemkomponenten, die entscheidend sind, um potenziell problematische Dateien zu erkennen.
RedHat-basierte Systeme: Verwenden Sie rpm -Va
für eine umfassende Überprüfung.
Debian-basierte Systeme: dpkg --verify
für die erste Überprüfung, gefolgt von debsums | grep -v "OK$"
(nach der Installation von debsums
mit apt-get install debsums
), um Probleme zu identifizieren.
Lesen Sie die folgende Seite, um mehr über Tools zu erfahren, die nützlich sein können, um Malware zu finden:
Um effektiv nach installierten Programmen auf sowohl Debian- als auch RedHat-Systemen zu suchen, sollten Sie Systemprotokolle und Datenbanken zusammen mit manuellen Überprüfungen in gängigen Verzeichnissen nutzen.
Für Debian überprüfen Sie /var/lib/dpkg/status
und /var/log/dpkg.log
, um Details zu Paketinstallationen abzurufen, und verwenden Sie grep
, um spezifische Informationen herauszufiltern.
RedHat-Benutzer können die RPM-Datenbank mit rpm -qa --root=/mntpath/var/lib/rpm
abfragen, um installierte Pakete aufzulisten.
Um Software zu entdecken, die manuell oder außerhalb dieser Paketmanager installiert wurde, erkunden Sie Verzeichnisse wie /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
und /sbin
. Kombinieren Sie Verzeichnisauflistungen mit systemspezifischen Befehlen, um ausführbare Dateien zu identifizieren, die nicht mit bekannten Paketen verbunden sind, und verbessern Sie Ihre Suche nach allen installierten Programmen.
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Stellen Sie sich einen Prozess vor, der von /tmp/exec ausgeführt und dann gelöscht wurde. Es ist möglich, ihn zu extrahieren.
Pfad, wo Malware als Dienst installiert werden könnte:
/etc/inittab: Ruft Initialisierungsskripte wie rc.sysinit auf und leitet weiter zu Startskripten.
/etc/rc.d/ und /etc/rc.boot/: Enthalten Skripte für den Dienststart, wobei letzteres in älteren Linux-Versionen zu finden ist.
/etc/init.d/: Wird in bestimmten Linux-Versionen wie Debian zum Speichern von Startskripten verwendet.
Dienste können auch über /etc/inetd.conf oder /etc/xinetd/ aktiviert werden, abhängig von der Linux-Variante.
/etc/systemd/system: Ein Verzeichnis für System- und Dienstmanager-Skripte.
/etc/systemd/system/multi-user.target.wants/: Enthält Links zu Diensten, die in einem Multi-User-Runlevel gestartet werden sollen.
/usr/local/etc/rc.d/: Für benutzerdefinierte oder Drittanbieter-Dienste.
~/.config/autostart/: Für benutzerspezifische automatische Startanwendungen, die ein Versteck für benutzergerichtete Malware sein können.
/lib/systemd/system/: Systemweite Standard-Einheitendateien, die von installierten Paketen bereitgestellt werden.
Linux-Kernel-Module, die oft von Malware als Rootkit-Komponenten verwendet werden, werden beim Systemstart geladen. Die für diese Module kritischen Verzeichnisse und Dateien umfassen:
/lib/modules/$(uname -r): Enthält Module für die laufende Kernel-Version.
/etc/modprobe.d: Enthält Konfigurationsdateien zur Steuerung des Modul-Ladens.
/etc/modprobe und /etc/modprobe.conf: Dateien für globale Moduleinstellungen.
Linux verwendet verschiedene Dateien, um Programme automatisch beim Benutzer-Login auszuführen, die möglicherweise Malware beherbergen:
/etc/profile.d/*, /etc/profile, und /etc/bash.bashrc: Werden bei jedem Benutzer-Login ausgeführt.
~/.bashrc, ~/.bash_profile, ~/.profile, und ~/.config/autostart: Benutzerspezifische Dateien, die beim Login ausgeführt werden.
/etc/rc.local: Wird ausgeführt, nachdem alle Systemdienste gestartet wurden, was das Ende des Übergangs zu einer Multiuser-Umgebung markiert.
Linux-Systeme verfolgen Benutzeraktivitäten und Systemereignisse durch verschiedene Protokolldateien. Diese Protokolle sind entscheidend für die Identifizierung von unbefugtem Zugriff, Malware-Infektionen und anderen Sicherheitsvorfällen. Wichtige Protokolldateien umfassen:
/var/log/syslog (Debian) oder /var/log/messages (RedHat): Erfassen systemweite Nachrichten und Aktivitäten.
/var/log/auth.log (Debian) oder /var/log/secure (RedHat): Protokollieren Authentifizierungsversuche, erfolgreiche und fehlgeschlagene Logins.
Verwenden Sie grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
, um relevante Authentifizierungsereignisse zu filtern.
/var/log/boot.log: Enthält Systemstartnachrichten.
/var/log/maillog oder /var/log/mail.log: Protokolliert Aktivitäten des E-Mail-Servers, nützlich zur Verfolgung von E-Mail-bezogenen Diensten.
/var/log/kern.log: Speichert Kernel-Nachrichten, einschließlich Fehlern und Warnungen.
/var/log/dmesg: Enthält Nachrichten von Gerätetreibern.
/var/log/faillog: Protokolliert fehlgeschlagene Anmeldeversuche, was bei Sicherheitsuntersuchungen hilft.
/var/log/cron: Protokolliert die Ausführung von Cron-Jobs.
/var/log/daemon.log: Verfolgt Aktivitäten von Hintergrunddiensten.
/var/log/btmp: Dokumentiert fehlgeschlagene Anmeldeversuche.
/var/log/httpd/: Enthält Apache HTTPD-Fehler- und Zugriffsprotokolle.
/var/log/mysqld.log oder /var/log/mysql.log: Protokolliert Aktivitäten der MySQL-Datenbank.
/var/log/xferlog: Protokolliert FTP-Dateiübertragungen.
/var/log/: Überprüfen Sie immer auf unerwartete Protokolle hier.
Linux-Systemprotokolle und Auditsysteme können bei einem Eindringen oder Malware-Vorfall deaktiviert oder gelöscht werden. Da Protokolle auf Linux-Systemen im Allgemeinen einige der nützlichsten Informationen über böswillige Aktivitäten enthalten, löschen Eindringlinge sie routinemäßig. Daher ist es wichtig, beim Überprüfen der verfügbaren Protokolldateien nach Lücken oder nicht in der Reihenfolge befindlichen Einträgen zu suchen, die auf Löschung oder Manipulation hindeuten könnten.
Linux führt eine Befehlsverlauf für jeden Benutzer, gespeichert in:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Darüber hinaus bietet der Befehl last -Faiwx
eine Liste der Benutzeranmeldungen. Überprüfen Sie ihn auf unbekannte oder unerwartete Anmeldungen.
Überprüfen Sie Dateien, die zusätzliche Berechtigungen gewähren können:
Überprüfen Sie /etc/sudoers
auf unerwartete Benutzerberechtigungen, die möglicherweise gewährt wurden.
Überprüfen Sie /etc/sudoers.d/
auf unerwartete Benutzerberechtigungen, die möglicherweise gewährt wurden.
Untersuchen Sie /etc/groups
, um ungewöhnliche Gruppenmitgliedschaften oder Berechtigungen zu identifizieren.
Untersuchen Sie /etc/passwd
, um ungewöhnliche Gruppenmitgliedschaften oder Berechtigungen zu identifizieren.
Einige Apps generieren auch ihre eigenen Protokolle:
SSH: Überprüfen Sie ~/.ssh/authorized_keys und ~/.ssh/known_hosts auf unbefugte Remote-Verbindungen.
Gnome Desktop: Schauen Sie in ~/.recently-used.xbel nach kürzlich verwendeten Dateien über Gnome-Anwendungen.
Firefox/Chrome: Überprüfen Sie den Browserverlauf und Downloads in ~/.mozilla/firefox oder ~/.config/google-chrome auf verdächtige Aktivitäten.
VIM: Überprüfen Sie ~/.viminfo auf Nutzungsdetails, wie z.B. aufgerufene Dateipfade und Suchverlauf.
Open Office: Überprüfen Sie den Zugriff auf kürzlich verwendete Dokumente, die auf kompromittierte Dateien hinweisen könnten.
FTP/SFTP: Überprüfen Sie Protokolle in ~/.ftp_history oder ~/.sftp_history auf Dateiübertragungen, die möglicherweise unbefugt sind.
MySQL: Untersuchen Sie ~/.mysql_history auf ausgeführte MySQL-Abfragen, die möglicherweise unbefugte Datenbankaktivitäten offenbaren.
Less: Analysieren Sie ~/.lesshst auf Nutzungshistorie, einschließlich angezeigter Dateien und ausgeführter Befehle.
Git: Überprüfen Sie ~/.gitconfig und Projekt .git/logs auf Änderungen an Repositories.
usbrip ist ein kleines Stück Software, das in reinem Python 3 geschrieben ist und Linux-Protokolldateien (/var/log/syslog*
oder /var/log/messages*
, abhängig von der Distribution) analysiert, um USB-Ereignisverlaufstabellen zu erstellen.
Es ist interessant zu wissen, welche USBs verwendet wurden, und es wird nützlicher sein, wenn Sie eine autorisierte Liste von USBs haben, um "Verstoßereignisse" (die Verwendung von USBs, die nicht in dieser Liste enthalten sind) zu finden.
More examples and info inside the github: https://github.com/snovvcrash/usbrip
Use Trickest um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Untersuchen Sie die /etc/passwd, /etc/shadow und Sicherheitsprotokolle auf ungewöhnliche Namen oder Konten, die in unmittelbarem Zusammenhang mit bekannten unbefugten Ereignissen erstellt oder verwendet wurden. Überprüfen Sie auch mögliche sudo-Brute-Force-Angriffe. Darüber hinaus sollten Sie Dateien wie /etc/sudoers und /etc/groups auf unerwartete Berechtigungen für Benutzer überprüfen. Schließlich suchen Sie nach Konten mit keinen Passwörtern oder leicht zu erratenden Passwörtern.
Bei der Untersuchung von Malware-Vorfällen ist die Struktur des Dateisystems eine entscheidende Informationsquelle, die sowohl die Reihenfolge der Ereignisse als auch den Inhalt der Malware offenbart. Malware-Autoren entwickeln jedoch Techniken, um diese Analyse zu behindern, wie z.B. das Ändern von Dateistempeln oder das Vermeiden des Dateisystems zur Datenspeicherung.
Um diesen anti-forensischen Methoden entgegenzuwirken, ist es wichtig:
Eine gründliche Zeitlinienanalyse durchzuführen mit Tools wie Autopsy zur Visualisierung von Ereigniszeitlinien oder Sleuth Kit's mactime
für detaillierte Zeitdaten.
Unerwartete Skripte im $PATH des Systems zu untersuchen, die Shell- oder PHP-Skripte enthalten könnten, die von Angreifern verwendet werden.
/dev
auf atypische Dateien zu überprüfen, da es traditionell spezielle Dateien enthält, aber möglicherweise malwarebezogene Dateien beherbergt.
Nach versteckten Dateien oder Verzeichnissen mit Namen wie ".. " (dot dot space) oder "..^G" (dot dot control-G) zu suchen, die bösartige Inhalte verbergen könnten.
Setuid-Root-Dateien zu identifizieren mit dem Befehl: find / -user root -perm -04000 -print
Dies findet Dateien mit erhöhten Berechtigungen, die von Angreifern missbraucht werden könnten.
Löschzeitstempel in Inode-Tabellen zu überprüfen, um massenhafte Dateilöschungen zu erkennen, die möglicherweise auf die Anwesenheit von Rootkits oder Trojanern hinweisen.
Konsekutive Inodes auf nahegelegene bösartige Dateien zu überprüfen, nachdem eine identifiziert wurde, da sie möglicherweise zusammen platziert wurden.
Häufige Binärverzeichnisse (/bin, /sbin) auf kürzlich geänderte Dateien zu überprüfen, da diese von Malware verändert worden sein könnten.
Beachten Sie, dass ein Angreifer die Zeit ändern kann, um Dateien legitim erscheinen zu lassen, aber er kann das inode nicht ändern. Wenn Sie feststellen, dass eine Datei angibt, dass sie zur gleichen Zeit wie die anderen Dateien im selben Ordner erstellt und geändert wurde, das inode jedoch unerwartet größer ist, dann wurden die Zeitstempel dieser Datei geändert.
Um Dateisystemversionen zu vergleichen und Änderungen zu identifizieren, verwenden wir vereinfachte git diff
-Befehle:
Um neue Dateien zu finden, vergleichen Sie zwei Verzeichnisse:
Für modifizierte Inhalte, listen Sie Änderungen auf, während Sie bestimmte Zeilen ignorieren:
Um gelöschte Dateien zu erkennen:
Filteroptionen (--diff-filter
) helfen, spezifische Änderungen wie hinzugefügte (A
), gelöschte (D
) oder modifizierte (M
) Dateien einzugrenzen.
A
: Hinzugefügte Dateien
C
: Kopierte Dateien
D
: Gelöschte Dateien
M
: Modifizierte Dateien
R
: Umbenannte Dateien
T
: Typänderungen (z.B. Datei zu Symlink)
U
: Nicht zusammengeführte Dateien
X
: Unbekannte Dateien
B
: Beschädigte Dateien
Buch: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
Nutze Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)