Er zijn niet veel artikelen op Habr die gewijd zijn aan het besturingssysteem Qubes, en de weinige die ik heb gezien, beschrijven weinig de ervaring met gebruik. Onder de kat hoop ik dit te verbeteren aan de hand van het gebruik van Qubes als een beschermingsmiddel voor de Windows-omgeving, en tegelijkertijd het aantal Russischsprekende gebruikers van het systeem te beoordelen.

Waarom Qubes?
Het verhaal van het beƫindigen van de ondersteuning voor Windows 7 en de toenemende bezorgdheid van gebruikers heeft geleid tot de noodzaak om deze OS te organiseren, rekening houdend met de volgende vereisten:
- de toepassing van een volledig geactiveerde Windows 7 mogelijk maken met de mogelijkheid voor de gebruiker om updates en verschillende applicaties (ook via Internet) te installeren;
- volledige of selectieve uitsluiting van netwerkinteracties op basis van voorwaarden (offline-modus en verkeersfiltering);
- de mogelijkheid bieden voor selectieve aansluiting van verwijderbare media en apparaten.
Deze set beperkingen vereist een expliciet voorbereide gebruiker, aangezien zelfbeheer is toegestaan, en de beperkingen zijn niet verbonden aan het blokkeren van zijn potentiƫle acties, maar aan het uitsluiten van mogelijke fouten of destructieve software-invloed. Dat wil zeggen, er is geen interne aanvaller in het model.
Bij het zoeken naar een oplossing hebben we al snel afstand genomen van het idee om beperkingen te implementeren met ingebouwde of aanvullende middelen van Windows, omdat het vrij moeilijk is om een gebruiker met beheerdersrechten effectief te beperken, terwijl hij de mogelijkheid behoudt om applicaties te installeren.
De volgende optie was isolatie door middel van virtualisatie. Bekende tools voor desktopvirtualisatie (zoals VirtualBox) zijn slecht aangepast voor oplossingen van beveiligingstaken, en de genoemde beperkingen moeten voortdurend door de gebruiker worden toegepast door de eigenschappen van de gastvirtual machine (hierna VM) te schakelen of in te stellen, wat de kans op fouten vergroot.
Tegelijkertijd hebben we ervaring opgedaan met het gebruik van Qubes als desktop-systeem voor gebruikers, maar er waren twijfels over de stabiliteit van het werken met de gastversie van Windows. We besloten de huidige versie van Qubes te testen, aangezien de opgelegde beperkingen goed aansluiten bij de paradigma's van dit systeem, vooral de implementatie van sjablonen voor virtuele machines en visuele integratie. Verder zal ik proberen om kort het idee en de tools van Qubes uit te leggen aan de hand van de oplossing van de opgelegde taak.
Types van virtualisatie Xen
Qubes is gebaseerd op de Xen hypervisor, die de functies voor het beheer van CPU-hulpmiddelen, geheugen en virtuele machines minimaliseert. Al het andere werk met apparatuur concentreert zich in dom0 op basis van de Linux-kernel (in Qubes wordt de Fedora-distributie voor dom0 gebruikt).

Xen ondersteunt meerdere types van virtualisatie (ik zal voorbeelden geven voor de Intel-architectuur, hoewel Xen ook andere ondersteunt):
- paravirtualisatie (PV) ā een virtualisatiemodus zonder gebruik van hardwareondersteuning, vergelijkbaar met container-virtualisatie, kan worden gebruikt voor systemen met een aangepast kernel (dom0 functioneert in deze modus);
- volledige virtualisatie (HVM) ā in deze modus wordt hardwareondersteuning gebruikt voor de CPU-hulpmiddelen, terwijl al het andere apparaat wordt nagebootst door QEMU. Dit is de meest algemene manier om verschillende besturingssystemen te draaien;
- paravirtualisatie van hardware (PVH ā ParaVirtualized Hardware) ā een virtualisatiemodus met gebruik van hardwareondersteuning waarbij de kernel van het gast-systeem drivers gebruikt die zijn aangepast aan de mogelijkheden van de hypervisor (bijvoorbeeld gedeeld geheugen), waardoor de noodzaak voor QEMU-emulatie vervalt en de prestaties van invoer-uitvoer verbeteren. Linux-kernel vanaf versie 4.11 kan in deze modus draaien.

Met versie Qubes 4.0 begon men om veiligheidsredenen afstand te nemen van het gebruik van paravirtualisatie (ook in verband met bekende kwetsbaarheden in de Intel-architectuur, die gedeeltelijk worden weggewerkt door volledige virtualisatie), daarbij wordt standaard de PVH-modus gebruikt.
Bij het gebruik van emulatie (HVM-modus) wordt QEMU uitgevoerd in een geĆÆsoleerde VM, genaamd stubdomain, waarmee de risico's van mogelijke exploitatie van fouten in de implementatie worden verminderd (het QEMU-project bevat veel code, inclusief voor compatibiliteit).
Deze modus dient in ons geval te worden gebruikt voor Windows.
Beheervirtuale machines
In de beveiligingsarchitectuur van Qubes is een van de belangrijkste mogelijkheden van de hypervisor het doorgeven van PCI-apparaten aan de gastomgeving. Het uitsluiten van hardware maakt het mogelijk om het hostgedeelte van het systeem te isoleren van externe aanvallen. Xen ondersteunt dit voor PV- en HVM-modi; in het tweede geval is ondersteuning van IOMMU (Intel VT-d) vereist ā hardwaregebaseerd geheugenbeheer voor gevirtualiseerde apparaten.
Zo worden verschillende systeemvirtuale machines aangemaakt:
- sys-net, waaraan netwerkapparaten worden toegewezen en die als brug voor andere VMs wordt gebruikt, bijvoorbeeld die de functies van een firewall of VPN-client implementeren;
- sys-usb, waaraan USB- en andere controllers voor randapparatuur worden toegewezen;
- sys-firewall, die geen apparaten gebruikt, maar fungeert als een firewall voor de aangesloten VMs.
Voor het werken met USB-apparaten worden proxy-services gebruikt, die onder andere zorgen voor:
- voor HID-apparaatklasse (human interface device) de overdracht van opdrachten naar dom0;
- voor verwisselbare media de omleiding van apparaatvolumes naar andere VMs (met uitzondering van dom0);
- de directe omleiding van USB-apparaten (waarbij USBIP en integratietools worden gebruikt).
In deze configuratie kan een succesvolle aanval via de netstack of aangesloten apparaten alleen leiden tot de compromis van de actieve beheervirtuale machine, en niet van het hele systeem. Na het herstarten van de beheervirtuale machine wordt deze opnieuw geladen in de oorspronkelijke staat.
Integratietools voor VMs
Er zijn verschillende manieren om in contact te komen met de desktop van de virtuele machine - het installeren van applicaties in het gastenbesturingssysteem of het emuleren van video via virtualisatietechnieken. Als gastapplicaties kunnen verschillende universele remote access-tools optreden (RDP, VNC, Spice, enz.) of aangepast aan een specifieke hypervisor (dergelijke tools worden meestal gastutility's genoemd). Er kan ook een gemengde optie worden gebruikt waarbij de hypervisor invoer- en uitvoeremulatie voor het gastenbesturingssysteem biedt, terwijl extern de mogelijkheid wordt gegeven om een protocol te gebruiken dat invoer- en uitvoer combineert, zoals bij Spice. Remote access-tools optimaliseren doorgaans het beeld, omdat ze verwachten dat ze via een netwerk werken, wat de beeldkwaliteit negatief beĆÆnvloedt.
Qubes biedt zijn eigen middelen voor VM-integratie. Dit omvat voornamelijk het grafische subsysteem - vensters van verschillende VM's worden weergegeven op een enkele desktop met een eigen kleuromranding. Over het algemeen zijn de integratiemiddelen gebaseerd op de mogelijkheden van de hypervisor - gedeeld geheugen (Xen grant table), meldingsmiddelen (Xen event channel), gedeeld opslag xenstore en het communicatieprotocol vchan. Hiermee worden de basiscomponenten qrexec en qubes-rpc, en toepassingsdiensten zoals geluids- of USB-omleiding, bestandsoverdracht of inhoud van het klembord, uitvoering van commando's en het starten van applicaties gerealiseerd. Er is de mogelijkheid om beleid in te stellen dat de beschikbare diensten op de VM beperkt. Hieronder een voorbeeld van de procedure voor het initialiseren van de interactie tussen twee VM's.

Zo wordt er in de VM gewerkt zonder gebruik te maken van het netwerk, wat het mogelijk maakt om autonome VM's volledig te gebruiken om informatielekken te voorkomen. Bijvoorbeeld, zo wordt de scheiding van cryptografische operaties (PGP/SSH) gerealiseerd, waarbij privésleutels worden gebruikt in geïsoleerde VM's en niet buiten hun grenzen komen.
Sjablonen, toepassings- en eenmalige VM's
Alle gebruikersactiviteiten in Qubes vinden plaats in virtuele machines. Het hoofdbesturingssysteem wordt gebruikt voor het beheer van hun werking en visualisatie. Het besturingssysteem wordt geĆÆnstalleerd samen met een basisversie van virtuele machines op basis van sjablonen (TemplateVM). Een dergelijk sjabloon is een Linux-VM op basis van de distributies Fedora of Debian, met geĆÆntegreerde en geconfigureerde integratiemiddelen, evenals toegewezen systeem- en gebruikerspartities. De installatie en update van software gebeurt via de standaard pakketbeheerder (dnf of apt) vanuit geconfigureerde repositories met verplichte controle van de digitale handtekening (GnuPG). Het doel van deze VM's is om vertrouwen te bieden aan de toepassings-VM's die daarop zijn gebaseerd.
Een toepassings-VM (AppVM) gebruikt bij de opstart een snapshot van de systeempartitie van het overeenkomstige sjabloon-VM en verwijdert deze snapshot na voltooiing zonder wijzigingen op te slaan. De gegevens die nodig zijn voor de gebruiker worden opgeslagen in een unieke gebruikerspartitie voor elke toepassings-VM, die wordt gemonteerd in de thuismap.

Het gebruik van wegwerp-VM's (disposableVM) kan nuttig zijn vanuit beveiligingsperspectief. Een dergelijke VM wordt op basis van een sjabloon aangemaakt op het moment van opstarten en wordt gestart met één doel: het uitvoeren van één toepassing, waarbij het na sluiting weer wordt afgesloten. Wegwerp-VM's kunnen worden gebruikt voor het openen van verdachte bestanden, waarvan de inhoud kan leiden tot het exploiteren van kwetsbaarheden in specifieke toepassingen. De mogelijkheid om een wegwerp-VM te starten is geïntegreerd in de bestandsbeheerder (Nautilus) en de e-mailclient (Thunderbird).
Een Windows-VM kan ook worden gebruikt voor het creĆ«ren van een sjabloon en een wegwerp-VM; daarvoor wordt het gebruikersprofiel overgebracht naar een aparte partitie. In ons geval zal een dergelijk sjabloon door de gebruiker worden gebruikt voor beheertaken en de installatie van toepassingen. Op basis van het sjabloon zullen verschillende toepassings-VM's worden gemaakt ā met beperkte netwerktoegang (standaardmogelijkheden sys-firewall) en zonder netwerktoegang (er wordt geen virtueel netwerkapparaat aangemaakt). Voor werk in deze VM's zijn alle wijzigingen en toepassingen die in het sjabloon zijn geĆÆnstalleerd toegankelijk, en zelfs in het geval van malware-injectie zal netwerkk toegang niet beschikbaar zijn voor compromittering.
Strijd om Windows
De bovenstaande mogelijkheden vormen de basis van Qubes en functioneren vrij stabiel; de problemen beginnen met Windows. Voor de integratie van Windows is het noodzakelijk om de Qubes Windows Tools (QWT) te gebruiken, die drivers voor de werking met Xen, een qvideo driver en een set tools voor informatie-uitwisseling (bestandenoverdracht, klembord) omvatten. Het installatie- en configuratieproces is uitgebreid gedocumenteerd op de projectwebsite, daarom delen we onze ervaringen hiermee.
De grootste complicatie is in wezen het gebrek aan ondersteuning voor de ontwikkelde tools. Sleutelontwikkelaars (QWT) zijn blijkbaar niet beschikbaar en het integratieproject met Windows wacht op de hoofdontwikkelaar. Daarom was het in eerste instantie noodzakelijk om de functionaliteit te beoordelen en een begrip op te bouwen van de mogelijkheid om deze zelf indien nodig te ondersteunen. Het meest uitdagende voor ontwikkeling en debugging is de grafische driver, die de video-adapter en het scherm emuleert om een afbeelding in het gedeelde geheugen te vormen, waardoor het mogelijk is om het volledige bureaublad of direct een applicatievenster in het venster van het hostsysteem weer te geven. Tijdens de analyse van de werking van de driver hebben we de code aangepast voor assemblage in een Linux-omgeving en de debugging tussen twee gast-Windows-systemen getest. Tijdens de cross-build hebben we een aantal vereenvoudigende wijzigingen doorgevoerd, voornamelijk in het kader van de "stille" installatie van tools, en bovendien de vervelende prestatie-degradatie bij langdurig gebruik in de VM opgelost. De resultaten van ons werk hebben we in een apart , waardoor we tijdelijk de hoofdontwikkelaar van Qubes.
De meest kritische fase in termen van de stabiliteit van het gastensysteem is het opstarten van Windows, hier kun je het bekende blauwe scherm zien (of misschien zelfs niet zien). Voor de meeste vastgestelde fouten waren er verschillende alternatieven om ze te omzeilen ā het afzien van de Xen-drivers voor block devices, het uitschakelen van geheugenbalancering van de VM, het vergrendelen van netwerkinstellingen en het minimaliseren van het aantal cores. Onze verzameling van gasttools installeert en draait op volledig bijgewerkte Windows 7 en Windows 10 (met uitzondering van qvideo).
Bij de overgang van een fysieke naar een virtuele omgeving doet zich een probleem voor met de activatie van Windows wanneer gebruik wordt gemaakt van vooraf geĆÆnstalleerde OEM-versies. Dergelijke systemen maken gebruik van activatie op basis van licenties die zijn vastgelegd in de UEFI van het apparaat. Voor een correcte activatie is het nodig om een van de ACPI-secties van het host-systeem geheel naar het gast-systeem te vertalen (SLIC-table) en enkele andere aan te passen, waarbij de fabrikant wordt ingevoerd. Xen stelt je in staat om de inhoud van de extra ACPI-tabellen in te stellen, maar zonder de basis te wijzigen. Een oplossing werd geboden door een patch van een soortgelijk project OpenXT, dat werd aangepast voor Qubes. De correcties bleken niet alleen voor ons nuttig te zijn en zijn doorgegeven aan de hoofdrepository van Qubes en de Libvirt-bibliotheek.
De voor de hand liggende tekortkomingen van de integratiemiddelen voor Windows zijn het gebrek aan ondersteuning voor geluid, USB-apparaten en de complexiteit van het werken met multimedia, aangezien er geen hardwarematige GPU-ondersteuning is. Maar dit weerhoudt niet van het gebruik van VM's voor het werken met kantoordocumenten of het uitvoeren van specifieke bedrijfsapplicaties.
De eis om over te schakelen naar een modus zonder netwerk of met een beperkt netwerk na het aanmaken van een Windows VM-sjabloon werd vervuld door het creĆ«ren van de bijbehorende configuraties van de applicatie-VM's, en de mogelijkheid om selectief externe opslagapparaten aan te sluiten werd ook opgelost met de standaard functionaliteiten van het besturingssysteem ā wanneer aangesloten zijn ze beschikbaar in de systeem-VM sys-usb, van waaruit ze naar de benodigde VM kunnen worden "doorgegeven". Het bureaublad van de gebruiker ziet er ongeveer zo uit.

De uiteindelijke versie van het systeem is positief ontvangen door de gebruikers (voor zover dit complexe systeem dat toelaat), en de standaard middelen van het systeem hebben het mogelijk gemaakt om het gebruik uit te breiden tot de mobiele werkplek van de gebruiker met toegang via VPN.
Ter afsluiting
Virtualisatie in het algemeen vermindert de risico's van het gebruik van Windows-systemen die niet worden ondersteund ā het dwingt niet tot compatibiliteit met nieuwe hardware, het maakt het mogelijk om de toegang tot het systeem via netwerken of aangesloten apparaten uit te sluiten of te controleren, en het maakt het mogelijk een omgeving te creĆ«ren voor eenmalig gebruik.
Het besturingssysteem Qubes, gebaseerd op het idee van isolatie door virtualisatie, helpt deze en andere mechanismen in te zetten voor beveiliging. Van buitenaf gezien wordt Qubes vaak voornamelijk gezien als een streven naar anonimiteit, maar het is een nuttig systeem voor zowel ingenieurs die vaak projecten, infrastructuren en toegangscodes combineren, als voor beveiligingsonderzoekers. Het scheiden van applicaties, gegevens en het formaliseren van hun interactie zijn de eerste stappen in het analyseren van bedreigingen en het ontwerpen van een beschermingssysteem. Deze scheiding helpt bij het structureren van informatie en vermindert de kans op fouten door menselijke factoren zoals haast, vermoeidheid, enz.
Momenteel ligt de nadruk in de ontwikkeling op het uitbreiden van de functionaliteit van Linux-omgevingen. De versie 4.1, die op Fedora 31 gebaseerd zal zijn en de nieuwste versies van belangrijke componenten zoals Xen en Libvirt zal bevatten, staat op het punt van uitgave. Het is belangrijk op te merken dat Qubes wordt ontwikkeld door professionals op het gebied van informatiebeveiliging, die altijd snel updates uitbrengen bij nieuwe bedreigingen of foutmeldingen.
Naschrift
Een van de experimentele mogelijkheden die wij ontwikkelen, stelt ons in staat om VM's te creƫren met ondersteuning voor gasttoegang tot GPU's op basis van Intel GVT-g technologie, wat het mogelijk maakt om de mogelijkheden van de grafische adapter te benutten en het toepassingsgebied van het systeem aanzienlijk te vergroten. Op het moment van schrijven werkt deze functionaliteit voor testversies van Qubes 4.1 en is beschikbaar op .
Bron: habr.com
