Wenn Sie eine Kernelquelle kompilieren, können Sie mithilfe der CONFIG_MODULE_SIG*
Optionen Kernelmodule signieren . Das modinfo
Tool sollte die Aufgabe übernehmen, die Modulsignatur zu überprüfen, aber es gibt seit Jahren einen Fehler, und das Tool kann den Job einfach nicht mehr ausführen. Ich bekomme nur folgendes:
sig_id: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
signature: 30:82:02:F4:06:09:2A:86:48:86:F7:0D:01:07:02:A0:82:02:E5:30:
...
Es gibt also keinen Schlüssel und der Hash-Algorithmus ist md4, der nicht einmal im Kernel kompiliert ist.
Wie kann man die Modulsignatur manuell überprüfen und verifizieren? Ist das überhaupt möglich?
kernel
kernel-modules
signature
Mikhail Morfikov
quelle
quelle
/proc/keys
. Hast du dort gesucht? Siehe den Abschnitt 'Öffentliche Schlüssel im Kernel'.md4
Algorithmus wird wegen eineskmod
Fehlers gezeigt und ist seit mindestens 2-3 Jahren dort: bugzilla.redhat.com/show_bug.cgi?id=1320921unknown
anstelle vonmd4
for gedrucktsig_hashalgo
.Antworten:
Ja, das ist möglich, aber es ist ziemlich kompliziert.
Zuerst müssen Sie die Modulsignatur extrahieren - dafür können Sie das
extract-module.sig.pl
Skript aus der Kernelquelle verwenden:Zweitens müssen Sie das Zertifikat und den öffentlichen Schlüssel aus dem Kernel extrahieren. Sie können das
extract-sys-certs.pl
Skript dafür verwenden:Sie können den öffentlichen Schlüssel auch aus dem
certs/signing_key.x509
oder dencerts/signing_key.pem
Dateien aus dem Build-Verzeichnis des Linux-Kernels extrahieren .Nachdem das getan, Sie alle Daten haben müssen Sie in
/tmp/modsig
und/tmp/cert.x509
und kann mit dem Dutzend fortsetzen oder so Schritte notwendig , um eine PKCS # 7 Signatur zu verifizieren.Sie können in diesem Blog suchen Beitrag für das gesamte Rezept.
Ich habe versucht, den gesamten Prozess (mit Ausnahme des
extract-certs.pl
Schritts) in ein Perl-Skript zu schreiben.Sie können es so verwenden:
YMMV . Ich habe dies nur mit einem benutzerdefinierten Kernel versucht, der sha512-Signaturen verwendet. Dies sollte durch die Verwendung der OpenSSL - Bibliotheken direkt natürlich viel besser gemacht von, statt kludging zusammen langsam und fragil
openssl x509
,asn1parse
undrsautl
Anrufungen.checkmodsig.pl
quelle