Sicherheit von debsums

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Sicherheit von debsums

Beitrag von reox » 11.12.2018 22:43:34

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.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Sicherheit von debsums

Beitrag von smutbert » 11.12.2018 23:19:15

Wie im Debian Wiki beschrieben debsums von einem Live-System (oder einem anderen bekanntermaßen (hoffentlich wirklich) nicht komprimierten System) aus starten?

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 12.12.2018 08:07:45

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"

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Sicherheit von debsums

Beitrag von uname » 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

Benutzeravatar
MSfree
Beiträge: 10747
Registriert: 25.09.2007 19:59:30

Re: Sicherheit von debsums

Beitrag von MSfree » 12.12.2018 11:42:14

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.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Sicherheit von debsums

Beitrag von uname » 12.12.2018 12:26:14

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.

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 12.12.2018 13:27:20

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?

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 13.12.2018 19:52:48

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.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Sicherheit von debsums

Beitrag von smutbert » 13.12.2018 21:53:34

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

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 14.12.2018 08:47:23

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.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Sicherheit von debsums

Beitrag von uname » 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?

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 17.12.2018 18:45:57

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 ;)

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Sicherheit von debsums

Beitrag von reox » 17.12.2018 22:16:29

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

Antworten