Version russe de cet article.Le firmware des cartes mÚres PC modernes suit les spécifications
UEFI depuis 2010. En 2013, une nouvelle technologie appelĂ©e Secure Boot est apparue, destinĂ©e Ă empĂȘcher l'installation et l'exĂ©cution des
bootkits . Le dĂ©marrage sĂ©curisĂ© empĂȘche l'exĂ©cution de code de programme non signĂ© ou non approuvĂ© (programmes .efi et chargeurs de dĂ©marrage du systĂšme d'exploitation, micrologiciel matĂ©riel supplĂ©mentaire comme la carte vidĂ©o et les OPROM de carte rĂ©seau).
Le dĂ©marrage sĂ©curisĂ© peut ĂȘtre dĂ©sactivĂ© sur n'importe quelle carte mĂšre commerciale, mais une condition obligatoire pour changer son Ă©tat est la prĂ©sence physique de l'utilisateur sur l'ordinateur. Il est nĂ©cessaire d'entrer les paramĂštres UEFI au dĂ©marrage de l'ordinateur, et ce n'est qu'alors qu'il est possible de modifier les paramĂštres de dĂ©marrage sĂ©curisĂ©.
La plupart des cartes mÚres n'incluent que les clés Microsoft de confiance, ce qui oblige les fournisseurs de logiciels de démarrage à demander à Microsoft de signer leurs chargeurs de démarrage. Ce processus comprend une procédure d'audit de code et la justification de la nécessité de signer leur fichier avec une clé de confiance globale s'ils souhaitent que le disque ou la clé USB fonctionne en mode Secure Boot sans ajouter manuellement leur clé sur chaque ordinateur.
Les distributions Linux, les hyperviseurs, les disques de démarrage antivirus, les auteurs de logiciels de récupération informatique doivent tous signer leurs chargeurs de démarrage dans Microsoft.
Je voulais crĂ©er un lecteur flash USB amorçable avec divers logiciels de rĂ©cupĂ©ration d'ordinateur qui dĂ©marreraient sans dĂ©sactiver le dĂ©marrage sĂ©curisĂ©. Voyons comment cela peut ĂȘtre rĂ©alisĂ©.
Chargeurs de démarrage signés de chargeurs de démarrage
Donc, pour démarrer Linux avec Secure Boot activé, vous avez besoin d'un chargeur de démarrage signé. Microsoft interdit de signer un logiciel sous licence GPLv3 en raison de la rÚgle de licence de restriction de
tivoisation , donc
GRUB ne peut pas ĂȘtre signĂ© .
Pour résoudre ce problÚme, Linux Foundation a publié
PreLoader et Matthew Garrett a créé des petits chargeurs de démarrage qui vérifient la signature ou le hachage d'un fichier unique et l'exécutent. PreLoader et shim n'utilisent pas le magasin de certificats
UEFI db , mais contiennent une base de données de hachages autorisés (PreLoader) ou de certificats (shim) à l'intérieur du fichier exécutable.
Les deux programmes, en plus d'exĂ©cuter automatiquement des fichiers de confiance, vous permettent d'exĂ©cuter tous les programmes non approuvĂ©s en mode Secure Boot, mais nĂ©cessitent la prĂ©sence physique de l'utilisateur. Lorsqu'il est exĂ©cutĂ© pour la premiĂšre fois, vous devez sĂ©lectionner un certificat Ă ajouter ou le fichier Ă hacher dans l'interface graphique, aprĂšs quoi les donnĂ©es sont ajoutĂ©es dans une variable NVRAM spĂ©ciale sur la carte mĂšre qui n'est pas accessible depuis le systĂšme d'exploitation chargĂ© . Les fichiers ne sont approuvĂ©s que pour ces prĂ©chargeurs, pas pour Secure Boot en gĂ©nĂ©ral, et ne peuvent toujours pas ĂȘtre chargĂ©s sans PreLoader ou shim.
Démarrage non autorisé du logiciel avec shim.Toutes les distributions Linux populaires modernes utilisent shim en raison de la prise en charge des certificats, ce qui facilite la mise à jour du chargeur de démarrage principal sans intervention de l'utilisateur. En général, shim est utilisé pour exécuter GRUB2 - le chargeur de démarrage le plus populaire sous Linux.
GRUB2
Pour éviter les abus signés du chargeur de démarrage avec des intentions malveillantes, Red Hat a créé des correctifs pour GRUB2 qui bloquent les fonctions "dangereuses" lorsque le démarrage sécurisé est activé: insmod / rmmod, appleloader, linux (remplacé par linuxefi), multiboot, xnu, memrw, iorw. Le module chainloader, qui charge des fichiers .efi arbitraires, a introduit son propre chargeur interne .efi (PE) personnalisé sans utiliser les fonctions UEFI LoadImage / StartImage, ainsi que le code de validation des fichiers chargés via shim, afin de préserver la possibilité de charger des fichiers approuvés par shim mais non approuvés en termes d'UEFI. On ne sait pas exactement pourquoi cette méthode est préférable - UEFI permet de redéfinir (accrocher) les fonctions de vérification UEFI, c'est ainsi que PreLoader fonctionne, et en effet, la fonction trÚs
shim est présente mais désactivée par défaut.
Quoi qu'il en soit, l'utilisation du GRUB signé d'une distribution Linux ne répond pas à nos besoins. Il existe deux façons de créer un lecteur flash de démarrage universel qui ne nécessiterait pas l'ajout des clés de chaque fichier exécutable aux fichiers approuvés:
- Utilisez GRUB modded avec chargeur EFI interne, sans verticalisation de signature numérique ni restrictions de module;
- Utilisez un préchargeur personnalisé (le second) qui accroche les fonctions de verticalisation des fichiers UEFI (EFI_SECURITY_ARCH_PROTOCOL.FileAuthenticationState, EFI_SECURITY2_ARCH_PROTOCOL.FileAuthentication)
La deuxiÚme méthode est préférable car un logiciel exécuté peut charger et démarrer un autre logiciel, par exemple, le shell UEFI peut exécuter n'importe quel programme. La premiÚre méthode ne fournit pas cela, permettant uniquement à GRUB d'exécuter des fichiers arbitraires.
Modifions PreLoader en supprimant toutes les fonctionnalités inutiles et le code de vérification des correctifs pour tout autoriser.
L'architecture du disque est la suivante:
______ ______ ______ â±â â â±â â â±â â /_â â â /_â â â /_â â â â â â â â â â â EFI â â â EFI â â â EFI â â_______â â_______â â_______â BOOTX64.efi grubx64.efi grubx64_real.efi (shim) (FileAuthentication (GRUB2) override) âââ â â ______ â â±â â â /_â â â â â ââââââââââââ â EFI â â_______â MokManager.efi (Key enrolling tool)
C'est ainsi que
Super UEFIinSecureBoot Disk a été créé.
Le disque Super UEFIinSecureBoot est une image amorçable avec le chargeur de dĂ©marrage GRUB2 conçu pour ĂȘtre utilisĂ© comme base pour la rĂ©cupĂ©ration de lecteurs flash USB.
FonctionnalitĂ© clĂ©: le disque est entiĂšrement fonctionnel avec le mode de dĂ©marrage sĂ©curisĂ© UEFI activĂ©. Il peut lancer n'importe quel systĂšme d'exploitation ou fichier .efi, mĂȘme avec une signature non fiable, invalide ou manquante.
Le disque peut ĂȘtre utilisĂ© pour exĂ©cuter diverses distributions Live Linux, environnement WinPE, dĂ©marrage rĂ©seau, sans dĂ©sactiver le mode Secure Boot dans les paramĂštres UEFI, ce qui peut ĂȘtre pratique pour effectuer la maintenance du PC et des ordinateurs portables de quelqu'un d'autre, par exemple, avec les paramĂštres UEFI verrouillĂ©s avec un mot de passe.
L'image contient 3 composants: pré-chargeur de shims de Fedora (signé avec la clé Microsoft qui est pré-installée dans la plupart des cartes mÚres et ordinateurs portables), Linux Foundation PreLoader modifié (désactive la vérification de la signature numérique des fichiers exécutés) et chargeur GRUB2 modifié.
Au premier démarrage, il est nécessaire de sélectionner le certificat à l'aide de MokManager (démarre automatiquement), aprÚs quoi tout fonctionnera comme avec Secure Boot désactivé - GRUB charge tout fichier .efi non signé ou noyau Linux, les programmes EFI exécutés peuvent charger tout autre exécutable non fiable ou les pilotes.
Pour dĂ©montrer les fonctions du disque, l'image contient Super Grub Disk (un ensemble de scripts pour rechercher et exĂ©cuter le systĂšme d'exploitation mĂȘme si le chargeur de dĂ©marrage est cassĂ©), GRUB Live ISO Multiboot (un ensemble de scripts pour charger les distributions Linux Live directement Ă partir du fichier ISO), One File Linux (le noyau et initrd dans un seul fichier, pour la rĂ©cupĂ©ration du systĂšme) et plusieurs utilitaires UEFI.
Le disque est également compatible avec UEFI sans démarrage sécurisé et avec les anciens PC avec BIOS.
Chargeurs de démarrage signés
Je me demandais s'il était possible de contourner l'inscription de la premiÚre clé de démarrage via shim. Pourrait-il y avoir un chargeur de démarrage signé qui vous permette de faire plus que ce que les auteurs attendaient?
En fait, il existe de tels chargeurs. L'un d'eux est utilisé dans
Kaspersky Rescue Disk 18 - disque de démarrage du logiciel antivirus. GRUB à partir du disque vous permet de charger des modules (la commande insmod), et le module dans GRUB est juste un code exécutable. Le préchargeur sur le disque est personnalisé.
Bien sûr, vous ne pouvez pas simplement utiliser GRUB à partir du disque pour charger du code non approuvé. Il est nécessaire de modifier le module de chargeur de chaßne afin que GRUB n'utilise pas les fonctions UEFI LoadImage / StartImage, mais qu'il charge automatiquement le fichier .efi en mémoire, effectue la relocalisation, trouve le point d'entrée et y accÚde. Heureusement, presque tout le code nécessaire est présent dans le
rĂ©fĂ©rentiel Red Hat GRUB Secure Boot , le seul problĂšme - l'analyseur d'en-tĂȘte
PE est manquant. GRUB obtient un en-tĂȘte analysĂ© Ă partir de shim, en rĂ©ponse Ă un appel de fonction via un protocole spĂ©cial. Cela pourrait ĂȘtre facilement rĂ©solu en portant le code appropriĂ© du shim ou du PreLoader vers GRUB.
C'est ainsi que
Silent UEFIinSecureBoot Disk a été créé. L'architecture de disque finale se présente comme suit:
______ ______ ______ â±â â â±â â â±â â /_â â /_â â â /_â â â â â â â â â â EFI â â EFI â â â EFI â â_______â â_______â â_______â BOOTX64.efi grubx64.efi grubx64_real.efi (Kaspersky (FileAuthentication (GRUB2) Loader) override) âââ â â ______ â â±â â â /_â â â â â ââââââââââââ â EFI â â_______â fde_ld.efi + custom chain.mod (Kaspersky GRUB2)
La fin
Dans cet article, nous avons prouvé l'existence d'un nombre insuffisant de chargeurs de démarrage fiables signés par la clé Microsoft, ce qui permet de démarrer du code non fiable en mode Secure Boot.
En utilisant les fichiers Kaspersky Rescue Disk signés, nous avons pu démarrer silencieusement tous les fichiers .efi non approuvés avec Secure Boot activé, sans avoir besoin d'ajouter un certificat à UEFI db ou shim MOK.
Ces fichiers peuvent ĂȘtre utilisĂ©s Ă la fois pour les bonnes actions (pour le dĂ©marrage Ă partir de lecteurs flash USB) et pour les mauvaises (pour l'installation des kits de dĂ©marrage sans le consentement du propriĂ©taire de l'ordinateur).
Je suppose que le certificat de signature de Kaspersky bootloader ne durera pas longtemps et qu'il sera ajoutĂ© Ă
la liste de révocation des certificats UEFI globale , qui sera installée sur les ordinateurs exécutant Windows 10 via Windows Update, brisant Kaspersky Rescue Disk 18 et Silent UEFIinSecureBoot Disk. Voyons combien de temps cela arriverait.
Téléchargement du disque Super UEFIinSecureBoot:
https://github.com/ValdikSS/Super-UEFIinSecureBoot-DiskTéléchargement silencieux du disque UEFIinSecureBoot (réseau
ZeroNet Git Center ):
http://127.0.0.1:43110/1KVD7PxZVke1iq4DKb4LNwuiHS4UzEAdAv/à propos de ZeroNetZeroNet est un systÚme trÚs puissant pour les sites Web et services dynamiques décentralisés distribués. L'utilisateur commence à télécharger et à semer les données du site Web lors de sa visite, en suivant le principe BitTorrent. Mais contrairement à d'autres systÚmes similaires, ZeroNet permet de créer des blogs à part entiÚre avec des commentaires, des forums, des hébergements vidéo, des sites wiki, des chats, des e-mails et git.
ZeroNet sĂ©pare les donnĂ©es du site Web du code du site Web: les donnĂ©es sont stockĂ©es dans des fichiers .json et combinĂ©es dans des bases de donnĂ©es sqlite avec un schĂ©ma dĂ©fini, ce qui permet de mettre en Ćuvre des fonctionnalitĂ©s hallucinantes: recherche locale dans tous les sites Web ouverts au sens de millisecondes, rĂ©el sur tout le site flux de mise Ă jour de type RSS.
ZeroNet fournit un systÚme d'authentification standardisé similaire à la prise en charge OAuth, NAT et Tor.
Le systÚme fonctionne trÚs rapidement, est convivial, possÚde une interface utilisateur moderne avec des fonctionnalités petites mais pratiques comme un commutateur de thÚme global nuit / jour pour tous les sites.
Je crois que ZeroNet est sous-estimé et n'a intentionnellement téléchargé la version silencieuse du disque que vers ZeroNet Git, pour attirer de nouveaux utilisateurs.