Seite 1 von 1

Sicherheit von debsums

Verfasst: 11.12.2018 22:43:34
von reox
Debiandebsums kann ja bekannterweise die MD5 Hashes der installierten Dateien mit denen aus /var/lib/dpkg/info/*.md5sums vergleichen.
Die Sicherheit, dass die Hashes stimmen habe ich dadurch, dass die Release Datei am Mirror signiert ist. Wenn die Signatur passt, sollte auch der Hash von der Packages datei passen, dort sollte der Hash des .deb passen und somit auch die md5sums im .deb.

Allerdings könnte ein Rootkit ja durchaus die md5sums in /var/lib/dpkg/info verändern und so einfach den eigenen Hash dort hinschreiben. Debsums überprüft also nicht ob das installierte deb auch mit dem übereinstimmt, welches am mirror liegt.
Mal davon abgesehen, dass es tools wie Debiantripwire gibt: Kann man die Integrität eines Systems irgendwie besser testen als mit debsums alleine? Ein Anfang wäre ja zB sicherzustellen, dass die md5sums files nicht verändert wurden.

Re: Sicherheit von debsums

Verfasst: 11.12.2018 23:19:15
von smutbert
Wie im Debian Wiki beschrieben debsums von einem Live-System (oder einem anderen bekanntermaßen (hoffentlich wirklich) nicht komprimierten System) aus starten?

Re: Sicherheit von debsums

Verfasst: 12.12.2018 08:07:45
von reox
Ok sehe ich das richtig, dass damit alle .debs vom mirror erneut heruntergeladen werden?

Bzw die Wikiseite erscheint mir jetzt so, als wollten sie sagen man solle sowieso besser dpkg --verify verwenden? Weil darunter ja steht "older dpkg versions"

Re: Sicherheit von debsums

Verfasst: 12.12.2018 11:04:00
von uname
reox hat geschrieben:Ok sehe ich das richtig, dass damit alle .debs vom mirror erneut heruntergeladen werden?
Aber müssten nicht über den folgenden Befehl die Werte mit dem Repository übereinstimmen? Läd man damit nicht im Prinzip die gewünschten Werte herunter?

Code: Alles auswählen

apt-get update

Re: Sicherheit von debsums

Verfasst: 12.12.2018 11:42:14
von MSfree
uname hat geschrieben: ↑ zum Beitrag ↑
12.12.2018 11:04:00
Aber müssten nicht über den folgenden Befehl die Werte mit dem Repository übereinstimmen?...
Ja.

Wenn sich aber ein Rootkit auf deinem Rechner eingenistet hat, könnte sich das natürlich immer in die Kommunikation zwischen deinem Rechner und dem Mirror einklinken und die Prüfsummen in der übertragenen Datei manipulieren.

Wenn man wirklich ein Rootkit auf seinem Rechner befürchtet, hilft nur, ein Lifesystem idealerweise von einem Read-Only-Medium (DVD) zu booten und die Prüfsummen damit zu verifizieren.

Gegen Rootkits, die sich im UEFI verankert haben, hilft aber selbst das nicht mehr.

Re: Sicherheit von debsums

Verfasst: 12.12.2018 12:26:14
von uname
MSfree hat geschrieben:Wenn man wirklich ein Rootkit auf seinem Rechner befürchtet, hilft nur, ein Lifesystem idealerweise von einem Read-Only-Medium (DVD) zu booten und die Prüfsummen damit zu verifizieren.
Kannst du ein Live-USB empfehlen? Vor allen eins, dass von unterschiedlichster Hardware gut bootet. Selbst mit https://grml.org habe ich mittlerweile so meine Probleme. Ich benötigte sowohl i686 als auch amd64.

Re: Sicherheit von debsums

Verfasst: 12.12.2018 13:27:20
von reox
uname hat geschrieben: ↑ zum Beitrag ↑
12.12.2018 11:04:00
reox hat geschrieben:Ok sehe ich das richtig, dass damit alle .debs vom mirror erneut heruntergeladen werden?
Aber müssten nicht über den folgenden Befehl die Werte mit dem Repository übereinstimmen? Läd man damit nicht im Prinzip die gewünschten Werte herunter?

Code: Alles auswählen

apt-get update
apt-get update holt doch nur die Packages und Release dateien, oder nicht? Die md5sums kommen ja aus den Paketen und werden nur dort abgelegt, wenn das Paket installiert wurde.
dH wenn ich davon ausgehe, dass jemand die md5sum lists verändert hat, so müsste ich Release, Release.gpg, Packages und alle .debs vom Mirror holen und alles verifizieren.
uname hat geschrieben: ↑ zum Beitrag ↑
12.12.2018 12:26:14
Selbst mit https://grml.org habe ich mittlerweile so meine Probleme. Ich benötigte sowohl i686 als auch amd64.
ich wollte gerade grml sagen... Bisher hatte ich damit noch nie ein Problem. Es gibt ja auch Grml96. Gehts da um zu neue HW oder zu alte?

Re: Sicherheit von debsums

Verfasst: 13.12.2018 19:52:48
von reox
Ich hab jetzt versucht mal die Anleitung vom Debian Wiki zu machen. Das funktioniert nur nicht...

Beim Schritt

Code: Alles auswählen

APT_CONFIG=/tmp/apt.conf apt-get install $(cat /tmp/pkgs)
bekomme ich haufenweise Fehlermeldungen

Code: Alles auswählen

E: Für Paket »...« existiert kein Installationskandidat.

edit: Mhh ein workaround scheint dafür das hier zu sein:

Code: Alles auswählen

APT_CONFIG=/tmp/apt.conf apt-get install $(apt list --installed | awk '{ print $1 " " $2 }' | sed 's/\/.* /=/')
ein problem dabei ist, wenn die pakete in der version die installiert sind, nicht mehr am mirror liegen. Er zeigt mir aber an, dass ich 8GB an Paketen laden soll, das kommt schon hin.

Re: Sicherheit von debsums

Verfasst: 13.12.2018 21:53:34
von smutbert
gerade ist mir gekommen, dass da ein Forenmitglied einmal ein Programm geschrieben hat:
viewtopic.php?f=37&t=151947

Der Link im Thread funktioniert nicht mehr, aber vorhanden scheint trotzdem noch alles zu sein und zwar brandaktuell hier:
http://www.dw-itsecurity.de/tools-hacks ... rity-check

Re: Sicherheit von debsums

Verfasst: 14.12.2018 08:47:23
von reox
smutbert hat geschrieben: ↑ zum Beitrag ↑
13.12.2018 21:53:34
Der Link im Thread funktioniert nicht mehr, aber vorhanden scheint trotzdem noch alles zu sein und zwar brandaktuell hier:
http://www.dw-itsecurity.de/tools-hacks ... rity-check
Hahaha ja, das ist ja super aktuell! Das schaut sehr brauchbar aus, wird ausprobiert!

Ich hab gestern dann noch eine verifikation gestartet, basierend auf den heruntergeladenen debs und das hat gut funktioniert. Eine handvoll findet er halt nimmer am Mirror - wobei ich mir da auch die Frage stelle wie die aufs System gekommen sind. Ich vermute das sind zT so alte Sachen die nicht mehr in den neuen dists drin sind.

Re: Sicherheit von debsums

Verfasst: 17.12.2018 12:40:11
von uname
reox hat geschrieben:Eine handvoll findet er halt nimmer am Mirror
Vielleicht selbst erstelle Dateien? Magst du die Liste oder Auszüge hier posten?

Re: Sicherheit von debsums

Verfasst: 17.12.2018 18:45:57
von reox
uname hat geschrieben: ↑ zum Beitrag ↑
17.12.2018 12:40:11
reox hat geschrieben:Eine handvoll findet er halt nimmer am Mirror
Vielleicht selbst erstelle Dateien? Magst du die Liste oder Auszüge hier posten?
Ich hab mal alles rausgeworfen wo ich eh weiß warum es da drin steht und davon mal ein Auszug:

Code: Alles auswählen

debsums: no deb available for btrfs-tools
debsums: no deb available for clang-4.0
debsums: no deb available for fonts-droid
debsums: no deb available for fonts-dseg-otf
debsums: no deb available for fonts-dseg-ttf
debsums: no deb available for gir1.2-mediaart-1.0:amd64
debsums: no deb available for gksu
debsums: no deb available for gstreamer0.10-plugins-base:amd64
debsums: no deb available for host
btrfs-tools, clang-4.0 ist zb nur in strech vorhanden. fonts-droid muss ich wohl mal von extern installiert haben usw usw...


Was mich eher interessiert ist eigentlich das debsums2. Leider klappt es nicht:

Code: Alles auswählen

$ python debsums2.py --directory / --online --writedb

Entries read from /var/lib/dpkg/info:      	535140
Total files found in /	661147
Number of new files in package /	661147
Traceback (most recent call last):
  File "debsums2.py", line 893, in <module>
    main()
  File "debsums2.py", line 824, in main
    fetch_md5sum_online([fileactive['uri']], connection))
  File "debsums2.py", line 236, in fetch_md5sum_online
    with tarfile.open(mode="r:gz", fileobj=StringIO(response.data)) as tar:
  File "/usr/lib/python2.7/tarfile.py", line 1693, in open
    return func(name, filemode, fileobj, **kwargs)
  File "/usr/lib/python2.7/tarfile.py", line 1751, in gzopen
    raise ReadError("not a gzip file")
tarfile.ReadError: not a gzip file
tarfile bietet eh eine transparente compression an, allerdings bringt das auch nichts:

Code: Alles auswählen

$ python debsums2.py --directory / --online --writedb

Entries read from /var/lib/dpkg/info:      	535140
Total files found in /	661147
Number of new files in package /	661147
Traceback (most recent call last):
  File "debsums2.py", line 893, in <module>
    main()
  File "debsums2.py", line 824, in main
    fetch_md5sum_online([fileactive['uri']], connection))
  File "debsums2.py", line 236, in fetch_md5sum_online
    with tarfile.open(mode="r:*", fileobj=StringIO(response.data)) as tar:
  File "/usr/lib/python2.7/tarfile.py", line 1680, in open
    raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully
Die URL die da aufgerufen wird ist zB http://cdn.debian.net/debian/pool/main/ ... _amd64.deb - und ein deb ist ja jetzt kein tar (mehr).
Vllt braucht das Tool mal ein Update?
Was ich recht spannend finde, ist das eine komplette Implementierung für MD5 dabei ist. Nur python implementierungen von Hashes sind leider ur langsam. Da machts mehr sinn die aus Hashlib zu verwenden.

edit: ah, ich sehe den Fehler. Python2 kann kein lzma bei tar. Nur debsums2 scheint nicht gerade für python3 gebaut zu sein... Und die md5 implementierung ist teil der --insane option. Also wenn die Paranoia zuschlägt ;)

Re: Sicherheit von debsums

Verfasst: 17.12.2018 22:16:29
von reox
also debsums2 rennt mal bei mir. Ich hab die veränderte Version hier veröffentlicht: https://github.com/reox/debsums2/

Mir ist da jetzt noch ein Problem aufgefallen, wenn der Paranoia Level hoch ist. debsums2 überprüft vor dem Download nicht, ob das Repository überhaupt signiert ist. Zudem kann bei dem partiellen Download auch nicht der Hash vom .deb selber überprüft werden, da nur ein Teil davon heruntergeladen wird. Theoretisch könnte ein Angreifer mir beim Download einfach das falsche Paket unterjubeln.
Somit muss man zwangsläufig immer das gesamte Paket laden um den Hash vom .deb zu checken. Ein Workaround dazu wäre, per Debiandebmirror einen lokalen Mirror zu erzeugen. Dabei werden alle Signaturen überprüft. Dann kann man per debsums2 checken.
Allerdings muss man zum testen der configfiles unter /etc sowieso den --online-full check machen, da die md5s von configfiles nicht in der md5sums datei stehen