Russische Version dieses Artikels.EinfĂŒhrung
Die Firmware moderner Computer-Motherboards entspricht der
UEFI- Spezifikation und unterstĂŒtzt seit 2013 die Authentifizierungstechnologie heruntergeladener Programme und Secure Boot-Treiber, die den Computer vor
Bootkits schĂŒtzen
soll . Secure Boot blockiert die AusfĂŒhrung von nicht signiertem oder nicht vertrauenswĂŒrdigem Programmcode: .efi-Dateien von Programmen und Bootloadern von Betriebssystemen, Firmware zusĂ€tzlicher GerĂ€te (OPROM-Grafikkarten, Netzwerkadapter).
Secure Boot kann auf jedem Store-Motherboard deaktiviert werden. Eine physische Anforderung zum Ăndern der Einstellungen ist jedoch eine physische PrĂ€senz auf dem Computer. Sie mĂŒssen die UEFI-Einstellungen aufrufen, wenn der Computer hochfĂ€hrt. Erst dann können Sie die Technologie deaktivieren oder ihre Einstellungen Ă€ndern.
Die meisten Motherboards werden nur mit vertrauenswĂŒrdigen Microsoft-SchlĂŒsseln geliefert. Aus diesem Grund mĂŒssen sich die Entwickler der Boot-Software an Microsoft wenden, um die Signatur der Bootloader zu erhalten, sich einem PrĂŒfverfahren zu unterziehen und die Notwendigkeit einer globalen Signatur ihrer Datei zu rechtfertigen, wenn das Laufwerk oder das Flash-Laufwerk unnötig ausgefĂŒhrt werden soll Deaktivieren Sie den sicheren Start oder fĂŒgen Sie den SchlĂŒssel manuell auf jedem Computer hinzu.
Microsoft muss Downloader fĂŒr Entwickler von Linux-Distributionen, Hypervisoren, Antiviren-Bootdisketten und Computerwiederherstellungsprogrammen signieren.
Ich wollte ein bootfÀhiges USB-Flash-Laufwerk mit verschiedenen Computer-Wiederherstellungssoftware erstellen, das ohne Deaktivierung von Secure Boot gestartet werden kann. Mal sehen, wie das umgesetzt werden kann.
Signierte Bootloader-Downloader
Um Linux mit aktiviertem Secure Boot zu starten, benötigen Sie einen signierten Bootloader. Microsoft hat das Signieren von unter GPLv3 lizenzierter Software aufgrund des Verbots der
Tivoisierung gemÀà den Lizenzregeln verboten, sodass
GRUB nicht signieren kann .
Als Reaktion darauf veröffentlichte die Linux Foundation
PreLoader , und Matthew Garrett schrieb
Shim - kleine Bootloader, die die Signatur oder den Hash der nĂ€chsten Download-Datei ĂŒberprĂŒfen. PreLoader und Shim verwenden keine
UEFI- Datenbankzertifikate, sondern enthalten eine Datenbank mit zulÀssigen Hashes (PreLoader) oder Zertifikaten (Shim) in sich.
Beide Programme ermöglichen nicht nur das automatische Herunterladen vertrauenswĂŒrdiger Dateien, sondern auch das Herunterladen zuvor nicht vertrauenswĂŒrdiger Dateien im Secure Boot-Modus, erfordern jedoch die physische Anwesenheit des Benutzers: Beim ersten Start mĂŒssen Sie das hinzugefĂŒgte Zertifikat oder die Hash-Datei in der grafischen OberflĂ€che auswĂ€hlen. AnschlieĂend werden die Daten in eine spezielle NVRAM-Variable eingegeben Ein Motherboard, das von einem geladenen Betriebssystem nicht geĂ€ndert werden kann. Dateien werden nur fĂŒr diese Preloader und nicht fĂŒr Secure Boot im Allgemeinen als vertrauenswĂŒrdig eingestuft. Sie können sie ohnehin nicht ohne PreLoader / Shim ausfĂŒhren.
Erforderliche Aktionen, wenn ein nicht vertrauenswĂŒrdiges Programm zum ersten Mal ĂŒber Shim gestartet wird.Alle gĂ€ngigen Linux-Distributionen verwenden aufgrund der ZertifikatunterstĂŒtzung Shim, wodurch das Aktualisieren des nĂ€chsten Bootloaders ohne Benutzerinteraktion vereinfacht wird. Normalerweise wird Shim verwendet, um GRUB2, den beliebtesten Bootloader unter Linux, auszufĂŒhren.
GRUB2
Um zu verhindern, dass die Angreifer mit Hilfe eines signierten Bootloaders eines Distributionskits leise GeschĂ€fte machen, hat Red Hat Patches fĂŒr GRUB2 erstellt, die âgefĂ€hrlicheâ Funktionen blockieren, wenn Secure Boot aktiviert ist: insmod / rmmod, appleloader, linux (ersetzt durch linuxefi), multiboot, xnu, memrw, iorw. Das Chainloader-Modul, das beliebige .efi-Dateien lĂ€dt, wurde durch einen eigenen .efi (PE) -Lader ergĂ€nzt, ohne die Befehle UEFI LoadImage / StartImage sowie den Validierungscode der heruntergeladenen Dateien ĂŒber shim zu verwenden, sodass Dateien heruntergeladen werden können, die fĂŒr shim vertrauenswĂŒrdig, aber nicht vertrauenswĂŒrdig sind in Bezug auf UEFI. Warum sie genau das getan haben, ist nicht klar; Mit UEFI können Sie die Funktion zum ĂberprĂŒfen heruntergeladener Bilder neu definieren (einbinden). So funktioniert PreLoader, und Shim selbst hat eine
solche Funktion , ist jedoch standardmĂ€Ăig deaktiviert.
Auf die eine oder andere Weise schlĂ€gt die Verwendung eines signierten GRUB aus einer Linux-Distribution fehl. Es gibt zwei Möglichkeiten, ein universelles bootfĂ€higes USB-Flash-Laufwerk zu erstellen, bei dem nicht die SchlĂŒssel jeder heruntergeladenen Datei zu den vertrauenswĂŒrdigen hinzugefĂŒgt werden mĂŒssen:
- Verwendung eines modifizierten GRUB, der EFI-Dateien selbst herunterlĂ€dt, ohne eine digitale Signatur zu ĂŒberprĂŒfen und ohne Module zu blockieren;
- Verwenden Sie Ihren eigenen Preloader (zweiten), der die Funktionen zur ĂberprĂŒfung der digitalen UEFI-Signatur ĂŒberschreibt (EFI_SECURITY_ARCH_PROTOCOL.FileAuthenticationState, EFI_SECURITY2_ARCH_PROTOCOL.FileAuthentication).
Die zweite Option ist vorzuziehen: Heruntergeladene nicht vertrauenswĂŒrdige Programme können auch nicht vertrauenswĂŒrdige Programme herunterladen (z. B. können Sie Dateien ĂŒber die UEFI-Shell herunterladen), und in der ersten Version kann nur GRUB selbst alles herunterladen.
Wir Àndern PreLoader , entfernen den zusÀtzlichen Code und ermöglichen das Starten von Dateien.
Insgesamt sieht die Architektur des Flash-Laufwerks wie folgt aus:
______ ______ ______ â±â â â±â â â±â â /_â â â /_â â â /_â â â â â â â â â â â EFI â â â EFI â â â EFI â â_______â â_______â â_______â BOOTX64.efi grubx64.efi grubx64_real.efi (shim) (FileAuthentication (GRUB2) override) âââ â â ______ â â±â â â /_â â â â â ââââââââââââ â EFI â â_______â MokManager.efi (Key enrolling tool)
Es gab also
Super UEFIinSecureBoot Disk .
Super UEFIinSecureBoot Disk - ein Disk-Image mit dem GRUB2-Bootloader, mit dem nicht signierte EFI-Programme und Betriebssysteme bequem im UEFI Secure Boot-Modus ausgefĂŒhrt werden können.
Die Festplatte kann als Grundlage fĂŒr die Erstellung eines USB-Laufwerks mit Dienstprogrammen zur Computerwiederherstellung, fĂŒr den Start verschiedener Linux-Live-Distributionen und fĂŒr WinPE verwendet werden. Booten Sie ĂŒber das Netzwerk, ohne Secure Boot in den Einstellungen des Motherboards zu deaktivieren. Dies kann bei der Wartung von Computern oder Unternehmen anderer Personen hilfreich sein Laptops, zum Beispiel mit einem Kennwort zum Ăndern der UEFI-Einstellungen.
Das Image besteht aus drei Komponenten: einem Shim-Preloader von Fedora (signiert mit einem Microsoft-SchlĂŒssel, der auf den meisten Motherboards und Laptops vorinstalliert ist), einem modifizierten Linux Foundation PreLoader-Preloader (zum Deaktivieren der SignaturĂŒberprĂŒfung beim Laden von .efi-Dateien) und einem modifizierten GRUB2-Bootloader.
WĂ€hrend des ersten Starts einer Festplatte auf einem Computer mit Secure Boot mĂŒssen Sie ein Zertifikat ĂŒber das MokManager-MenĂŒ auswĂ€hlen (es wird automatisch gestartet). Danach funktioniert der Bootloader so, als ob Secure Boot deaktiviert ist: GRUB lĂ€dt alle nicht signierten .efi-Dateien oder Linux-Kernel, heruntergeladene EFI-Programme kann andere Programme und Treiber mit einer fehlenden oder nicht vertrauenswĂŒrdigen Signatur ausfĂŒhren.
Um die FunktionsfÀhigkeit zu demonstrieren, enthÀlt das Image Super Grub Disk (Skripte zum Suchen und Laden installierter Betriebssysteme, auch wenn deren Bootloader beschÀdigt ist), GRUB Live ISO Multiboot (Skripte zum bequemen Booten von Linux LiveCD direkt von ISO, ohne vorheriges Entpacken und Verarbeiten), One Datei Linux (Kernel und initrd in einer Datei zur Systemwiederherstellung) und mehrere UEFI-Dienstprogramme.
Das Laufwerk ist kompatibel mit UEFI ohne Secure Boot sowie mit Àlteren Computern mit BIOS.
Signierte Downloader
Ich habe mich gefragt, ob es möglich ist, die Notwendigkeit zu umgehen, beim ersten Start einen SchlĂŒssel per Unterlegscheibe hinzuzufĂŒgen. Vielleicht gibt es einige signierte Downloader, mit denen Sie mehr tun können, als die Autoren erwartet haben?
Wie sich herausstellte, gibt es solche Lader. Eine davon wird in
Kaspersky Rescue Disk 18 verwendet - einer Startdiskette mit Antivirensoftware. Mit GRUB von der Festplatte können Sie Module laden (Befehl insmod), wĂ€hrend Sie mit Modulen in GRUB regulĂ€ren ausfĂŒhrbaren Code laden können. Der Disk Pre-Loader ist nativ.
NatĂŒrlich, nur weil GRUB von der Festplatte keinen nicht vertrauenswĂŒrdigen Code lĂ€dt. Das Chainloader-Modul muss so geĂ€ndert werden, dass GRUB die UEFI LoadImage / StartImage-Funktionen nicht verwendet, sondern die .efi-Datei unabhĂ€ngig in den Speicher lĂ€dt, eine Verschiebung durchfĂŒhrt, den Einstiegspunkt findet und diesem folgt. GlĂŒcklicherweise befindet sich fast der gesamte erforderliche Code im
GRUB- Repository
mit Red Hat Secure Boot-UnterstĂŒtzung . Das einzige Problem: Es gibt keinen
PE- Header-Parsing-Code, der Header analysiert und gibt Shim als Antwort auf einen Funktionsaufruf ĂŒber ein spezielles Protokoll zurĂŒck. Dies kann einfach behoben werden, indem der entsprechende Code von Shim oder PreLoader nach GRUB portiert wird.
Es gab also
Silent UEFIinSecureBoot Disk. Die resultierende Festplattenarchitektur lautet wie folgt:
______ ______ ______ â±â â â±â â â±â â /_â â /_â â â /_â â â â â â â â â â EFI â â EFI â â â EFI â â_______â â_______â â_______â BOOTX64.efi grubx64.efi grubx64_real.efi (Kaspersky (FileAuthentication (GRUB2) Loader) override) âââ â â ______ â â±â â â /_â â â â â ââââââââââââ â EFI â â_______â fde_ld.efi + custom chain.mod (Kaspersky GRUB2)
Fazit
In diesem Artikel haben wir festgestellt, dass nicht genĂŒgend zuverlĂ€ssige Bootloader vorhanden sind, die mit einem Microsoft-SchlĂŒssel signiert sind, der das Arbeiten im sicheren Startmodus ermöglicht.
Mit den signierten Kaspersky Rescue Disk-Dateien haben wir einen "stillen" Download aller nicht vertrauenswĂŒrdigen .efi-Dateien mit aktiviertem Secure Boot erreicht, ohne dass ein Zertifikat zu UEFI db oder shim MOK hinzugefĂŒgt werden muss.
Diese Dateien können sowohl fĂŒr gute Taten (zum Herunterladen von USB-Sticks) als auch fĂŒr böse Taten (zum Installieren von Bootkits ohne Wissen des Computerbesitzers) verwendet werden.
Ich gehe davon aus, dass das Kaspersky-Zertifikat nicht lange hÀlt und zur
globalen Liste der gesperrten UEFI-Zertifikate hinzugefĂŒgt wird, die auf Computern unter Windows 10 ĂŒber Windows Update installiert werden, wodurch das Laden von Kaspersky Rescue Disk 18 und Silent UEFIinSecureBoot Disk unterbrochen wird. Mal sehen, wie schnell das passieren wird.
Laden Sie die Super UEFIinSecureBoot-Festplatte herunter:
https://github.com/ValdikSS/Super-UEFIinSecureBoot-DiskLaden Sie Silent UEFIinSecureBoot Disk im
ZeroNet Git Center- Netzwerk herunter:
http://127.0.0.1:43110/1KVD7PxZVke1iq4DKb4LNwuiHS4UzEAdAv/Ăber ZeroNetZeroNet ist ein sehr leistungsfĂ€higes System zum Erstellen dezentraler verteilter dynamischer Websites und Dienste. Beim Besuch einer Ressource beginnt der Benutzer, diese wie in BitTorrent herunterzuladen und zu verteilen. Gleichzeitig ist es möglich, vollwertige Ressourcen zu erstellen: Blogs mit Kommentaren, Foren, Video-Hosting, Wiki-Sites, Chats, E-Mail, Git.
ZeroNet trennt die Konzepte von Code und Site-Daten: Benutzerdaten werden in JSON-Dateien gespeichert und bei der Synchronisierung mit einem standardisierten Schema in die SQLite-Datenbank der Site importiert, mit dem Sie atemberaubende Dinge tun können: lokale Textsuche auf allen jemals geöffneten Sites in Millisekunden, automatisch Echtzeit-Analogon von RSS fĂŒr alle Sites gleichzeitig.
Standardisiertes Authentifizierungs- und Autorisierungssystem (Ă€hnlich wie OAuth), UnterstĂŒtzung fĂŒr die Arbeit hinter NAT und ĂŒber Tor.
ZeroNet ist sehr schnell, benutzerfreundlich, verfĂŒgt ĂŒber eine moderne BenutzeroberflĂ€che und kleine, aber sehr praktische Funktionen wie das globale Umschalten von Tag / Nacht-Themen auf Websites.
Ich halte ZeroNet fĂŒr ein sehr unterschĂ€tztes System und veröffentliche die Silent-Version absichtlich nur in ZeroNet Git, um neue Benutzer anzulocken.