Es gibt nicht viele Artikel auf HabrĂ© ĂŒber das Betriebssystem Qubes, und die, die ich gesehen habe, beschreiben wenig die Erfahrungen damit. Im Folgenden hoffe ich, dies am Beispiel der Verwendung von Qubes als Schutzmittel gegen Windows zu verbessern und gleichzeitig die Anzahl der russischsprachigen Benutzer des Systems zu bewerten.

Warum Qubes?
Die Geschichte mit dem Ende des Supports fĂŒr Windows 7 und die wachsende Besorgnis der Benutzer fĂŒhrte zur Notwendigkeit, diese OS zu organisieren, wobei die folgenden Anforderungen berĂŒcksichtigt wurden:
- Die vollstĂ€ndige Aktivierung von Windows 7 zu gewĂ€hrleisten, mit der Möglichkeit fĂŒr den Benutzer, Updates und verschiedene Anwendungen (einschlieĂlich ĂŒber das Internet) zu installieren;
- VollstĂ€ndige oder selektive Ausschluss von Netzwerkinteraktionen nach Bedingung (Betriebsarten fĂŒr Offline-Betrieb und Traffic-Filterung) umzusetzen;
- Die Möglichkeit eines selektiven Anschlusses von Wechselmedien und GerÀten bereitzustellen.
Ein solches Set an EinschrÀnkungen setzt einen deutlich vorbereiteten Benutzer voraus, da eine eigenstÀndige Verwaltung erlaubt ist und die EinschrÀnkungen nicht mit der Blockierung potenzieller Aktionen, sondern mit dem Ausschluss möglicher Fehler oder schÀdlicher Softwarewirkungen verbunden sind. Das bedeutet, dass es im Modell keinen internen Angreifer gibt.
Auf der Suche nach einer Lösung haben wir schnell von der Idee Abstand genommen, die EinschrÀnkungen mit integrierten oder zusÀtzlichen Windows-Mitteln umzusetzen, da es schwierig ist, einen Benutzer mit Administratorrechten effektiv einzuschrÀnken und ihm die Möglichkeit zu lassen, Anwendungen zu installieren.
Die nĂ€chste Lösungsmöglichkeit war die Isolation durch Virtualisierung. Bekanntlich sind gĂ€ngige Tools fĂŒr Desktop-Virtualisierung (zum Beispiel VirtualBox) schlecht geeignet fĂŒr Sicherheitsaufgaben, und die genannten EinschrĂ€nkungen mĂŒssen vom Benutzer stĂ€ndig durch das Wechseln oder Anpassen der Eigenschaften der Gastvirtualmaschine (im Folgenden VM) vorgenommen werden, was die FehleranfĂ€lligkeit erhöht.
Gleichzeitig hatten wir Erfahrungen mit Qubes als Desktop-Betriebssystem, hatten jedoch Bedenken hinsichtlich der StabilitĂ€t bei der Arbeit mit der Gastversion von Windows. Es wurde beschlossen, die aktuelle Version von Qubes zu testen, da die festgelegten EinschrĂ€nkungen sehr gut in die Paradigmen dieses Systems passen, insbesondere die Umsetzung von Vorlagen fĂŒr virtuelle Maschinen und die visuelle Integration. Im Folgenden werde ich versuchen, die Ideen und Werkzeuge von Qubes möglichst kurz zu erlĂ€utern, am Beispiel der Lösung der gestellten Aufgabe.
Arten der Virtualisierung von Xen
Qubes basiert auf dem Hypervisor Xen, der die Funktionen zur Verwaltung von CPU-Ressourcen, Speicher und virtuellen Maschinen minimiert. Alle anderen Arbeiten mit GerĂ€ten sind in dom0 auf Basis des Linux-Kernels konzentriert (in Qubes wird fĂŒr dom0 eine Fedora-Distribution verwendet).

Xen unterstĂŒtzt mehrere Arten der Virtualisierung (ich werde Beispiele fĂŒr die Intel-Architektur geben, obwohl Xen auch andere unterstĂŒtzt):
- Paravirtualisierung (PV) â ein Virtualisierungsmodus ohne Nutzung hardwareseitiger UnterstĂŒtzung, Ă€hnlich der Container-Virtualisierung, kann fĂŒr Systeme mit einem angepassten Kernel verwendet werden (in diesem Modus funktioniert dom0);
- VollstĂ€ndige Virtualisierung (HVM) â in diesem Modus wird fĂŒr die CPU-Ressourcen hardwareseitige UnterstĂŒtzung genutzt, wĂ€hrend die gesamte andere Hardware von QEMU emuliert wird. Dies ist die vielseitigste Methode, um verschiedene Betriebssysteme zu starten;
- Paravirtualisierung der Hardware (PVH â ParaVirtualized Hardware) â ein Virtualisierungsmodus unter Verwendung hardwareseitiger UnterstĂŒtzung, bei dem das Kernel des Gastsystems angepasste Treiber verwendet, die an die Möglichkeiten des Hypervisors angepasst sind (z.B. gemeinsam genutzter Speicher), wodurch die Notwendigkeit der QEMU-Emulation entfĂ€llt und die Ein- und Ausgabe-Leistung erhöht wird. Der Linux-Kernel kann seit Version 4.11 in diesem Modus arbeiten.

Seit der Version Qubes 4.0 wird aus SicherheitsgrĂŒnden der Modus der Paravirtualisierung aufgegeben (auch wegen bekannter Schwachstellen der Intel-Architektur, die teilweise durch den Einsatz vollstĂ€ndiger Virtualisierung behoben werden können), standardmĂ€Ăig wird der Modus PVH verwendet.
Bei der Verwendung der Emulation (HVM-Modus) wird QEMU in einer isolierten VM namens stubdomain gestartet, wodurch die Risiken der Ausnutzung potenzieller Fehler in der Implementierung verringert werden (das QEMU-Projekt enthĂ€lt viel Code, einschlieĂlich solcher fĂŒr die KompatibilitĂ€t).
Dieser Modus sollte in unserem Fall fĂŒr Windows verwendet werden.
Dienstvirtualmaschinen
In der Sicherheitsarchitektur von Qubes gehört die Ăbertragung von PCI-GerĂ€ten in die Gastsysteme zu den SchlĂŒsselmerkmalen des Hypervisors. Die Isolation der Hardware ermöglicht es, den Host-Teil des Systems vor externen Angriffen zu schĂŒtzen. Xen unterstĂŒtzt dies in den PV- und HVM-Modi; im letzteren Fall ist die UnterstĂŒtzung von IOMMU (Intel VT-d) erforderlich â die Hardwareverwaltung des Speichers fĂŒr virtualisierte GerĂ€te.
Auf diese Weise werden mehrere Systemvirtualmaschinen erstellt:
- sys-net, dem Netzwerkanpassungen zugewiesen werden und die als BrĂŒcke fĂŒr andere VMs dient, wie z.B. fĂŒr Funktionen einer Firewall oder eines VPN-Clients;
- sys-usb, dem USB- und andere Peripherie-Controller zugewiesen werden;
- sys-firewall, welche keine GerĂ€te verwendet, sondern als Firewall fĂŒr angeschlossene VMs fungiert.
FĂŒr die Arbeit mit USB-GerĂ€ten werden Proxy-Dienste verwendet, die unter anderem Folgendes ermöglichen:
- fĂŒr die Klasse der HID-GerĂ€te (Human Interface Device) die Ăbertragung von Befehlen an dom0;
- fĂŒr WechseldatentrĂ€ger die Umleitung von GerĂ€tespeichern in andere VMs (auĂer dom0);
- die direkte Umleitung von USB-GerÀten (USBIP und Integrationswerkzeuge werden verwendet).
In einer solchen Konfiguration kann ein erfolgreicher Angriff ĂŒber den Netzwerkstapel oder angeschlossene GerĂ€te nur zur Kompromittierung der laufenden Dienst-VM fĂŒhren, aber nicht des gesamten Systems. Nach einem Neustart der Dienst-VM wird diese in ihren ursprĂŒnglichen Zustand geladen.
Integrationswerkzeuge fĂŒr VMs
Es gibt mehrere Möglichkeiten, mit dem Desktop einer virtuellen Maschine zu interagieren â Anwendungen im Gastbetriebssystem zu installieren oder Videoinhalte mithilfe von Virtualisierung zu emulieren. Zu den Gastanwendungen können verschiedene universelle Remote-Access-Tools (RDP, VNC, Spice usw.) oder an einen bestimmten Hypervisor angepasste Anwendungen gehören (diese Werkzeuge werden normalerweise als Gast-Utilities bezeichnet). Es kann auch eine gemischte Variante verwendet werden, bei der der Hypervisor die Ein- und Ausgabe fĂŒr das Gastbetriebssystem emuliert, wĂ€hrend extern die Möglichkeit besteht, ein Protokoll zu verwenden, das die Ein- und Ausgabe kombiniert, wie bei Spice. Dabei optimieren Remote-Access-Tools in der Regel das Bild, da sie eine Netzwerkverbindung voraussetzen, was die BildqualitĂ€t beeintrĂ€chtigen kann.
Qubes bietet eigene Mittel zur Integration von VMs. ZunĂ€chst ist dies das grafische System â Fenster aus verschiedenen VMs werden auf einem einheitlichen Desktop mit eigenen farblichen Umrandungen angezeigt. Im Allgemeinen basieren die Integrationswerkzeuge auf den Möglichkeiten des Hypervisors â gemeinsam genutztem Speicher (Xen Grant Table), Benachrichtigungswerkzeugen (Xen Event Channel), gemeinsam genutztem Speicher xenstore und dem Kommunikationsprotokoll vchan. Mit ihnen werden die grundlegenden Komponenten qrexec und qubes-rpc sowie Anwendungsdienste â Sound- oder USB-Umleitung, DateiĂŒbertragung oder Austausch von Inhalten â realisiert, ebenso wie das AusfĂŒhren von Befehlen und Start von Anwendungen. Es besteht die Möglichkeit, Richtlinien festzulegen, die den Zugriff auf die Dienste in der VM einschrĂ€nken. Im Bild unten sehen Sie ein Beispiel fĂŒr die Initialisierungsprozedur der Interaktion zwischen zwei VMs.

So erfolgt die Arbeit in der VM ohne Nutzung des Netzwerks, was die vollstĂ€ndige Verwendung autonomer VMs ermöglicht, um Informationslecks zu vermeiden. Zum Beispiel wird dadurch die Trennung von kryptografischen Operationen (PGP/SSH) realisiert, bei der private SchlĂŒssel in isolierten VMs verwendet werden, ohne das GelĂ€nde dieser VMs zu verlassen.
Vorlagen, Anwendungs- und Einmal-VMs
Die gesamte Arbeit des Benutzers in Qubes erfolgt in virtuellen Maschinen. Das Hauptbetriebssystem wird verwendet, um deren Betrieb und Visualisierung zu steuern. Das Betriebssystem wird zusammen mit einem Grundsatz von virtuellen Maschinen auf der Basis von Vorlagen (TemplateVM) installiert. Eine solche Vorlage ist eine Linux-VM basierend auf der Distribution Fedora oder Debian, mit installierten und konfigurierten Integrationsmitteln sowie zugewiesenen System- und Benutzerpartitionen. Die Installation und Aktualisierung von Software erfolgt ĂŒber den integrierten Paketmanager (dnf oder apt) aus den konfigurierten Repositories mit obligatorischer ĂberprĂŒfung der digitalen Signatur (GnuPG). Der Zweck solcher VMs besteht darin, Vertrauen in die auf ihrer Grundlage gestarteten Anwendungs-VMs zu gewĂ€hrleisten.
Die Anwendungs-VM (AppVM) verwendet beim Start einen Snapshot der Systempartition der entsprechenden Vorlagen-VM und entfernt diesen Snapshot nach dem Beenden, ohne Ănderungen zu speichern. Die erforderlichen Benutzerdaten werden in einer einzigartigen Benutzerpartition fĂŒr jede Anwendungs-VM gespeichert, die im Home-Verzeichnis eingehĂ€ngt ist.

Aus sicherheitstechnischer Sicht kann die Verwendung von Einmal-VMs (disposableVM) nĂŒtzlich sein. Eine solche VM wird zu Beginn erstellt, basierend auf einer Vorlage, und wird mit einem einzigen Ziel gestartet â der AusfĂŒhrung einer Anwendung, die nach deren SchlieĂung ihre Arbeit beendet. Einmal-VMs können zum Ăffnen verdĂ€chtiger Dateien verwendet werden, deren Inhalt möglicherweise zur Ausnutzung von Schwachstellen spezifischer Anwendungen fĂŒhrt. Die Möglichkeit, eine Einmal-VM zu starten, ist in den Dateimanager (Nautilus) und den E-Mail-Client (Thunderbird) integriert.
Eine Windows-VM kann ebenfalls verwendet werden, um eine Vorlage und eine Einmal-VM zu erstellen; dafĂŒr wird das Benutzerprofil in eine separate Partition ĂŒbertragen. In unserem Fall wird eine solche Vorlage vom Benutzer fĂŒr Administrationsaufgaben und die Installation von Anwendungen verwendet. Auf der Grundlage der Vorlage werden mehrere Anwendungs-VMs erstellt â mit eingeschrĂ€nktem Netzwerkzugriff (Standardmöglichkeiten sys-firewall) und ohne Netzwerkzugang ĂŒberhaupt (kein virtuelles NetzwerkgerĂ€t wird erstellt). FĂŒr die Arbeit in diesen VMs sind alle Ănderungen und Anwendungen verfĂŒgbar, die im Template installiert werden, und selbst im Falle von eingebetteten Schadprogrammen wird ihnen der Netzwerkzugang entzogen, um eine Kompromittierung zu verhindern.
Der Kampf um Windows
Die oben beschriebenen Funktionen sind die Grundlage von Qubes und funktionieren durchaus stabil, die Schwierigkeiten beginnen mit Windows. FĂŒr die Integration von Windows ist ein Satz von Guest Tools erforderlich, die Qubes Windows Tools (QWT) umfassen, darunter Treiber fĂŒr Xen, den qvideo-Treiber und ein Set von Utensilien fĂŒr den Austausch von Informationen (DateiĂŒbertragung, Zwischenablage). Der Installations- und Konfigurationsprozess ist ausfĂŒhrlich auf der Projektwebsite dokumentiert, daher teilen wir unsere Erfahrungen.
Die Hauptschwierigkeit besteht im Wesentlichen im Fehlen von UnterstĂŒtzung durch die entwickelten Werkzeuge. Die Hauptentwickler (QWT) sind anscheinend nicht verfĂŒgbar, und das Integrationsprojekt mit Windows wartet auf den leitenden Entwickler. Daher war es zunĂ€chst notwendig, die FunktionsfĂ€higkeit zu bewerten und ein VerstĂ€ndnis fĂŒr die Möglichkeit der eigenstĂ€ndigen UnterstĂŒtzung zu entwickeln. Am schwierigsten zu entwickeln und zu debuggen ist der Grafiktreiber, der einen Videoadapter und einen Bildschirm emuliert, um Bilder im gemeinsamen Speicher zu erzeugen, wodurch es möglich ist, entweder den gesamten Desktop oder direkt ein Anwendungsfenster im Fenster des Hostsystems anzuzeigen. Im Rahmen der Analyse der TreiberfunktionalitĂ€t haben wir den Code fĂŒr die Erstellung in einer Linux-Umgebung angepasst und ein Debugging-Schema zwischen zwei Windows-Gastsystemen entwickelt. In der Phase des Cross-Builds fĂŒhrten wir mehrere Vereinfachungen durch, hauptsĂ€chlich in Bezug auf die "stille" Installation der Tools, und beseitigten die lĂ€stige Leistungsdegradation bei lĂ€ngerer Nutzung in der VM. Die Ergebnisse unserer Arbeit haben wir in einem separaten , und haben damit kurzzeitig den leitenden Entwickler von Qubes.
Der kritischste Schritt in Bezug auf die StabilitĂ€t des Gastsystems ist der Start von Windows, hier kann man den bekannten blauen Bildschirm sehen (oder ihn sogar nicht sehen). FĂŒr die meisten identifizierten Fehler fanden sich verschiedene Umgehungsmöglichkeiten - Verzicht auf Xen-Treiber fĂŒr BlockgerĂ€te, Deaktivierung der Speicherbalancierung in der VM, Fixierung der Netzwerkeinstellungen und Minimierung der Kernanzahl. Unser Build der Guest Tools wird auf vollstĂ€ndig aktualisiertem Windows 7 und Windows 10 installiert und funktioniert (mit Ausnahme von qvideo).
Beim Ăbergang von einer physischen Umgebung in eine virtuelle Umgebung tritt das Problem der Aktivierung von Windows auf, wenn vorinstallierte OEM-Versionen verwendet werden. Solche Systeme nutzen die Aktivierung basierend auf Lizenzen, die im UEFI des GerĂ€ts gespeichert sind. FĂŒr eine korrekte Aktivierung muss einer der ACPI-Abschnitte des Host-Systems vollstĂ€ndig in das GĂ€stesystem ĂŒbertragen werden (SLIC-Tabelle) und einige andere mĂŒssen geringfĂŒgig angepasst werden, um den Hersteller anzugeben. Xen ermöglicht die Anpassung des Inhalts zusĂ€tzlicher ACPI-Tabellen, jedoch ohne Modifizierung der Haupttabellen. Eine Lösung wurde durch einen Patch aus einem Ă€hnlichen Projekt, OpenXT, unterstĂŒtzt, der fĂŒr Qubes angepasst wurde. Diese Korrekturen erwiesen sich als nĂŒtzlich nicht nur fĂŒr uns und wurden in das Hauptrepository von Qubes und die Bibliothek Libvirt ĂŒbertragen.
Offensichtliche Nachteile der Windows-Integrationsmittel sind das Fehlen von UnterstĂŒtzung fĂŒr Audio, USB-GerĂ€te sowie die KomplexitĂ€t bei der Arbeit mit Medien, da keine HardwareunterstĂŒtzung fĂŒr die GPU vorhanden ist. Dennoch hindern diese Punkte nicht die Nutzung von VMs fĂŒr die Bearbeitung von BĂŒro-Dokumenten und beeintrĂ€chtigen nicht das AusfĂŒhren spezifischer Unternehmensanwendungen.
Die Anforderung, nach dem Erstellen einer Windows-VM in den Offline-Modus oder in einen eingeschrĂ€nkten Netzwerkmodus zu wechseln, wurde durch die Erstellung entsprechender Konfigurationen fĂŒr die Anwendungs-VMs erfĂŒllt. Die Möglichkeit, abnehmbares Laufwerk selektiv anzuschlieĂen, wurde ebenfalls durch die Standardmittel des Betriebssystems gelöst â beim Anschluss sind sie in der System-VM sys-usb verfĂŒgbar, von wo sie an die benötigte VM "durchgereicht" werden können. Der Desktop des Benutzers sieht ungefĂ€hr so aus.

Die endgĂŒltige Version des Systems wurde von den Benutzern positiv (soweit es eine so komplexe Lösung zulĂ€sst) aufgenommen, und die integrierten Mittel des Systems ermöglichten die Erweiterung der Anwendung auf den mobilen Arbeitsplatz des Benutzers mit Zugriff ĂŒber VPN.
Zum Abschluss
Virtualisierung im Allgemeinen ermöglicht es, die Risiken der Verwendung von nicht unterstĂŒtzten Windows-Systemen zu reduzieren â sie zwingt nicht zur GewĂ€hrleistung der KompatibilitĂ€t mit neuer Hardware, ermöglicht es, den Zugang zum System ĂŒber das Netzwerk oder mittels angeschlossener GerĂ€te auszuschlieĂen oder zu kontrollieren, und schafft eine Umgebung fĂŒr den einmaligen Start.
Das OS Qubes, das auf der Idee der Isolation durch Virtualisierung basiert, hilft, diese und andere Mechanismen zur GewĂ€hrleistung der Sicherheit zu nutzen. Viele sehen in Qubes in erster Linie den Anspruch auf AnonymitĂ€t, doch ist es ein nĂŒtzliches System sowohl fĂŒr Ingenieure, die hĂ€ufig Projekte, Infrastrukturen und Zugangsgeheimnisse kombinieren, als auch fĂŒr Sicherheitsexperten. Die Trennung von Anwendungen, Daten und die Formalisierung ihrer Interaktion sind erste Schritte zur Bedrohungsanalyse und Systemdesign. Eine solche Trennung hilft, Informationen zu strukturieren und die Wahrscheinlichkeit von Fehlern aufgrund menschlicher Faktoren â wie Eile, MĂŒdigkeit usw. â zu verringern.
Derzeit liegt der Schwerpunkt der Entwicklung auf der Erweiterung der FunktionalitĂ€t von Linux-Umgebungen. Die Version 4.1, die auf Fedora 31 basieren wird und aktuelle Versionen der SchlĂŒsselkomponenten Xen und Libvirt enthalten wird, steht kurz vor der Veröffentlichung. Es ist erwĂ€hnenswert, dass Qubes von Fachleuten im Bereich der Informationssicherheit entwickelt wird, die stets schnell Updates herausgeben, wenn neue Bedrohungen oder Fehler entdeckt werden.
Nachwort
Eines der von uns entwickelten experimentellen Features ermöglicht es, VM mit UnterstĂŒtzung fĂŒr den Gastzugang zu GPU auf der Basis der Intel GVT-g-Technologie zu erstellen, was die Nutzung der Möglichkeiten des Grafikadapters erlaubt und das Anwendungsspektrum des Systems erheblich erweitert. Zum Zeitpunkt der Erstellung dieses Artikels funktioniert diese FunktionalitĂ€t fĂŒr die Testversionen von Qubes 4.1 und ist verfĂŒgbar unter .
Quelle: habr.com
