Debsums

Aus Xinux Wiki
Version vom 30. September 2026, 17:34 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Grundsätzliches

  • Mit dem Kommando debsums können die Checksummen von Dateien überprüft werden, die über Debian Pakete auf dem System installiert wurden.
  • Mit diesem Werkzeug kann der Systemadministrator Veränderungen an den Dateien des Systems feststellen.
  • Diese Veränderungen können gewollt sein (Konfigurationsdateien etc ...)
  • Sie können aber auch von einem Angreifer stammen, der Dateien im System gegen veränderte Binaries ausgetauscht hat (beispielsweise /bin/login).

Funktionsweise

  • Jedes Debian-Paket bringt eine Liste mit MD5-Checksummen seiner Dateien mit.
  • Bei der Installation legt dpkg diese Liste unter /var/lib/dpkg/info/PAKET.md5sums ab.
  • debsums berechnet die Checksummen der installierten Dateien neu und vergleicht sie mit dieser Liste.
  • Konfigurationsdateien (unter /etc) werden standardmäßig nicht geprüft, da sie fast immer angepasst werden.

Grenzen

  • Die Vergleichslisten liegen auf demselben System wie die geprüften Dateien.
  • Ein Angreifer mit Root-Rechten kann also nicht nur /bin/login austauschen, sondern auch die passende Checksumme in /var/lib/dpkg/info ändern oder gleich debsums selbst manipulieren.
  • Ein Rootkit im Kernel kann debsums außerdem beim Lesen der Dateien den Originalinhalt vorspielen.
  • Auf einem möglicherweise kompromittierten System ist das Ergebnis daher nur ein Hinweis. Verlässlich ist erst die Prüfung vom Rettungssystem aus (siehe unten).

Installation

  • apt install debsums

Optionen

  • Dem Programmaufruf können neben den Optionen noch Paketnamen übergeben werden, die gezielt überprüft werden sollen.
  • Werden keine Paketnamen angegeben, so werden alle auf dem System installierten Pakete überprüft.

-a, --all

  • Überprüft auch die Checksummen der Konfigurationsdateien eines Pakets.

-e, --config

  • Überprüft ausschließlich die Konfigurationsdateien.

-c, --changed

  • Gibt nur die Namen der veränderten Dateien aus.
  • Schließt -s automatisch ein.

-s, --silent

  • Zeigt ausschließlich Fehlermeldungen an.
  • Informationen über korrekte Checksummen werden unterdrückt.

-l, --list-missing

  • Zeigt Pakete an, die keine md5sums-Datei mitbringen. Deren Dateien können nicht geprüft werden.
  • Die fehlenden Checksummen können mit der Option -g erzeugt werden.

-g, --generate=[all][,keep[,nocheck]]

  • Erzeugt fehlende Checksummen aus den .deb-Dateien (standardmäßig aus /var/cache/apt/archives).
  • Die Checksummen werden aus dem Paket berechnet, nicht aus den installierten Dateien. Das Paket muss daher aus einer vertrauenswürdigen Quelle stammen, z.B. frisch per apt geladen.

-m, --md5sums=FILE

  • Liest die Checksummen der Pakete aus der Datei FILE statt aus der Debian Datenbank.

-r, --root=DIR

  • Legt das Wurzelverzeichnis des zu prüfenden Systems fest (Standard /).
  • Damit lässt sich ein eingehängtes fremdes System prüfen, z.B. vom Rettungssystem aus.
  • Die dpkg-Datenbank wird automatisch unterhalb dieses Verzeichnisses gesucht.

-d, --admindir=DIR

  • Ändert das Admin-Verzeichnis für dpkg (normalerweise /var/lib/dpkg/) auf den angegebenen Wert.

-p, --deb-path=DIR[:DIR...]

  • Ändert das Suchverzeichnis für Debian Pakete.

Beispiele

Alle Pakete prüfen, ohne Konfigurationsdateien

  • sudo debsums
/usr/lib/accountsservice/accounts-daemon                                      OK
/usr/lib/accountsservice/accounts-daemon-pam-password-helper                  OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml                OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml                     OK
/usr/share/dbus-1/system-services/org.freedesktop.Accounts.service            OK
/usr/share/doc/accountsservice/README                                         OK
[..]

Alle Pakete prüfen, mit Konfigurationsdateien

  • sudo debsums -a
/usr/lib/accountsservice/accounts-daemon                                      OK
/usr/lib/accountsservice/accounts-daemon-pam-password-helper                  OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml                OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml                     OK
/usr/share/dbus-1/system-services/org.freedesktop.Accounts.service            OK
/etc/dbus-1/system.d/org.freedesktop.Accounts.conf                            OK
[..]

Nur Fehler melden

  • sudo debsums -s
debsums: changed file /usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check (from casper package)
debsums: changed file /usr/share/initramfs-tools/scripts/casper-bottom/15autologin (from casper package)
debsums: changed file /usr/share/cups/data/default-testpage.pdf (from cups-filters package)
debsums: changed file /sbin/start-stop-daemon (from dpkg package)
debsums: changed file /usr/share/applications/evince.desktop (from evince-common package)
debsums: missing file /usr/lib/firefox/distribution/searchplugins/locale/en-US/google.xml (from firefox package)
[..]

Nur veränderte Dateien anzeigen

  • sudo debsums -c
/usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check
/usr/share/initramfs-tools/scripts/casper-bottom/15autologin
/usr/share/cups/data/default-testpage.pdf
/sbin/start-stop-daemon
/usr/share/applications/evince.desktop
debsums: missing file /usr/lib/firefox/distribution/searchplugins/locale/en-GB/google.xml (from firefox-locale-en package)
[..]

Veränderte Dateien inklusive Konfigurationsdateien anzeigen

  • sudo debsums -ca
/usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check
/usr/share/initramfs-tools/scripts/casper-bottom/15autologin
/usr/share/cups/data/default-testpage.pdf
/sbin/start-stop-daemon
/usr/share/applications/evince.desktop
/etc/default/cups
[..]

Nur veränderte Konfigurationsdateien anzeigen

  • sudo debsums -ce
/etc/acpi/powerbtn.sh
/etc/lsb-release
/etc/issue.net
/etc/issue
/etc/default/cups
/etc/grub.d/10_linux
[..]

Ein bestimmtes Paket mit Konfigurationsdateien prüfen

  • sudo debsums -a bash
/bin/bash                                                                     OK
/usr/bin/bashbug                                                              OK
/usr/bin/clear_console                                                        OK
/usr/share/doc/bash/COMPAT.gz                                                 OK
debsums: missing file /etc/skel/.bashrc (from bash package)
/etc/bash.bashrc                                                          FAILED
[..]

Manipulation simulieren

  • Ein Binary verändern (hier wird nur ein Byte angehängt, ls funktioniert weiter):
echo >> /usr/bin/ls
  • Paket prüfen:
debsums -s coreutils
debsums: changed file /usr/bin/ls (from coreutils package)
  • Datei aus dem Originalpaket wiederherstellen:
apt install --reinstall coreutils

Prüfung vom Rettungssystem

  • Das verdächtige System wird vom Rettungssystem gebootet, das Kernel und debsums des verdächtigen Systems werden also nicht benutzt.
  • Siehe Erstellen eines Rettungssystems
  • Root-Dateisystem einhängen, ggf. weitere Dateisysteme wie /usr darunter:
mount /dev/sda1 /mnt
  • Prüfen:
debsums -r /mnt -s
  • Die Checksummen stammen hier immer noch vom verdächtigen System. Wer sichergehen will, lädt die Pakete neu und erzeugt die Checksummen daraus (Option -g).

Quellen