QubesOS gebruiken om met Windows 7 te werken

Er zijn niet veel artikelen over Habré gewijd aan het Qubes-besturingssysteem, en de artikelen die ik heb gezien beschrijven niet veel van de ervaring met het gebruik ervan. Hieronder hoop ik dit te corrigeren aan de hand van het voorbeeld van het gebruik van Qubes als beschermingsmiddel (tegen) de Windows-omgeving en tegelijkertijd het aantal Russischsprekende gebruikers van het systeem te schatten.

QubesOS gebruiken om met Windows 7 te werken

Waarom Qubes?

Het verhaal van het einde van de technische ondersteuning voor Windows 7 en de toenemende ongerustheid van gebruikers leidden tot de noodzaak om het werk van dit besturingssysteem te organiseren, rekening houdend met de volgende vereisten:

  • zorgen voor het gebruik van volledig geactiveerde Windows 7 met de mogelijkheid voor de gebruiker om updates en diverse applicaties te installeren (ook via internet);
  • volledige of selectieve uitsluiting van netwerkinteracties implementeren op basis van omstandigheden (autonome werking en verkeersfiltermodi);
  • bieden de mogelijkheid om selectief verwisselbare media en apparaten aan te sluiten.

Deze reeks beperkingen veronderstelt een duidelijk voorbereide gebruiker, aangezien onafhankelijk beheer is toegestaan, en de beperkingen geen betrekking hebben op het blokkeren van zijn potentiële acties, maar op het uitsluiten van mogelijke fouten of destructieve software-effecten. Die. Er is geen interne dader in het model.

In onze zoektocht naar een oplossing hebben we al snel afstand gedaan van het idee om beperkingen te implementeren met behulp van ingebouwde of extra Windows-tools, omdat het vrij moeilijk is om een ​​gebruiker met beheerdersrechten effectief te beperken, waardoor hij de mogelijkheid heeft om applicaties te installeren.

De volgende oplossing was isolatie met behulp van virtualisatie. Bekende tools voor desktopvirtualisatie (bijvoorbeeld virtualbox) zijn slecht geschikt voor het oplossen van beveiligingsproblemen en de genoemde beperkingen zullen door de gebruiker moeten worden gedaan door voortdurend de eigenschappen van de virtuele gastmachine (hierna te noemen als VM), wat de kans op fouten vergroot.

Tegelijkertijd hadden we ervaring met het gebruik van Qubes als desktopsysteem voor een gebruiker, maar twijfelden we aan de stabiliteit van het werken met gast-Windows. Er werd besloten om de huidige versie van Qubes te controleren, omdat de genoemde beperkingen heel goed passen in het paradigma van dit systeem, vooral de implementatie van sjablonen voor virtuele machines en visuele integratie. Vervolgens zal ik proberen kort te praten over de ideeën en hulpmiddelen van Qubes, aan de hand van het voorbeeld van het oplossen van het probleem.

Soorten Xen-virtualisatie

Qubes is gebaseerd op de Xen-hypervisor, die de functies van het beheer van processorbronnen, geheugen en virtuele machines minimaliseert. Al het andere werk met apparaten is geconcentreerd in dom0, gebaseerd op de Linux-kernel (Qubes voor dom0 gebruikt de Fedora-distributie).

QubesOS gebruiken om met Windows 7 te werken

Xen ondersteunt verschillende soorten virtualisatie (ik zal voorbeelden geven voor Intel-architectuur, hoewel Xen andere ondersteunt):

  • paravirtualisatie (PV) - een virtualisatiemodus zonder het gebruik van hardwareondersteuning, die doet denken aan containervirtualisatie, kan worden gebruikt voor systemen met een aangepaste kernel (dom0 werkt in deze modus);
  • volledige virtualisatie (HVM) - in deze modus wordt hardwareondersteuning gebruikt voor processorbronnen en wordt alle andere apparatuur geëmuleerd met behulp van QEMU. Dit is de meest universele manier om verschillende besturingssystemen te gebruiken;
  • paravirtualisatie van hardware (PVH - ParaVirtualized Hardware) - een virtualisatiemodus die gebruikmaakt van hardwareondersteuning wanneer, om met hardware te werken, de kernel van het gastsysteem stuurprogramma's gebruikt die zijn aangepast aan de mogelijkheden van de hypervisor (bijvoorbeeld gedeeld geheugen), waardoor de noodzaak voor QEMU-emulatie wordt geëlimineerd en het verhogen van de I/O-prestaties. De Linux-kernel vanaf 4.11 kan in deze modus werken.

QubesOS gebruiken om met Windows 7 te werken

Vanaf Qubes 4.0 wordt om veiligheidsredenen het gebruik van de paravirtualisatiemodus verlaten (onder meer vanwege bekende kwetsbaarheden in de Intel-architectuur, die gedeeltelijk worden verholpen door het gebruik van volledige virtualisatie); de PVH-modus wordt standaard gebruikt.

Bij gebruik van emulatie (HVM-modus) wordt QEMU gelanceerd in een geïsoleerde VM genaamd stubdomain, waardoor de risico's van het misbruiken van potentiële fouten in de implementatie worden verminderd (het QEMU-project bevat veel code, ook voor compatibiliteit).
In ons geval moet deze modus voor Windows worden gebruikt.

Service virtuele machines

In de beveiligingsarchitectuur van Qubes is een van de belangrijkste mogelijkheden van de hypervisor de overdracht van PCI-apparaten naar de gastomgeving. Met hardware-uitsluiting kunt u het hostgedeelte van het systeem isoleren tegen externe aanvallen. Xen ondersteunt dit voor PV- en HVM-modi, in het tweede geval vereist het ondersteuning voor IOMMU (Intel VT-d) - hardwaregeheugenbeheer voor gevirtualiseerde apparaten.

Hierdoor worden verschillende virtuele systeemmachines gemaakt:

  • sys-net, waarnaar netwerkapparaten worden overgedragen en dat wordt gebruikt als brug voor andere VM's, bijvoorbeeld degenen die de functies van een firewall of een VPN-client implementeren;
  • sys-usb, waarnaar USB- en andere randapparaatcontrollers worden overgedragen;
  • sys-firewall, dat geen apparaten gebruikt, maar werkt als een firewall voor verbonden VM's.

Om met USB-apparaten te werken, wordt gebruik gemaakt van proxydiensten, die onder meer het volgende bieden:

  • voor de HID-apparaatklasse (human interface device), het verzenden van opdrachten naar dom0;
  • voor verwisselbare media: omleiding van apparaatvolumes naar andere VM's (behalve dom0);
  • rechtstreeks doorsturen naar een USB-apparaat (met behulp van USBIP en integratietools).

In een dergelijke configuratie kan een succesvolle aanval via de netwerkstack of aangesloten apparaten leiden tot het compromitteren van alleen de actieve service-VM, en niet van het hele systeem als geheel. En nadat de service-VM opnieuw is opgestart, wordt deze in de oorspronkelijke staat geladen.

VM-integratietools

Er zijn verschillende manieren om te communiceren met de desktop van een virtuele machine: door applicaties in het gastsysteem te installeren of video te emuleren met behulp van virtualisatietools. Gasttoepassingen kunnen verschillende universele tools voor externe toegang zijn (RDP, VNC, Spice, enz.) of aangepast aan een specifieke hypervisor (dergelijke tools worden meestal gasthulpprogramma's genoemd). Een gemengde optie kan ook worden gebruikt, wanneer de hypervisor I/O emuleert voor het gastsysteem, en extern de mogelijkheid biedt om een ​​protocol te gebruiken dat I/O combineert, bijvoorbeeld zoals Spice. Tegelijkertijd optimaliseren tools voor externe toegang meestal het beeld, omdat ze via een netwerk werken, wat geen positief effect heeft op de kwaliteit van het beeld.

Qubes biedt zijn eigen tools voor VM-integratie. Allereerst is dit een grafisch subsysteem: vensters van verschillende VM's worden weergegeven op één bureaublad met hun eigen kleurframe. Over het algemeen zijn integratietools gebaseerd op de mogelijkheden van de hypervisor: gedeeld geheugen (Xen Grant Table), meldingstools (Xen-gebeurteniskanaal), gedeelde opslag xenstore en het vchan-communicatieprotocol. Met hun hulp worden de basiscomponenten qrexec en qubes-rpc en applicatieservices geïmplementeerd: audio- of USB-omleiding, het overbrengen van bestanden of klembordinhoud, het uitvoeren van opdrachten en het starten van applicaties. Het is mogelijk om beleid in te stellen waarmee u de beschikbare services op een VM kunt beperken. De onderstaande afbeelding is een voorbeeld van de procedure voor het initialiseren van de interactie van twee VM's.

QubesOS gebruiken om met Windows 7 te werken

Het werk in de VM wordt dus uitgevoerd zonder gebruik te maken van een netwerk, waardoor volledig gebruik van autonome VM's mogelijk is om informatielekken te voorkomen. Dit is bijvoorbeeld de manier waarop de scheiding van cryptografische bewerkingen (PGP/SSH) wordt geïmplementeerd, wanneer privésleutels worden gebruikt in geïsoleerde VM's en niet verder gaan dan deze.

Sjablonen, applicaties en eenmalige VM's

Al het gebruikerswerk in Qubes wordt gedaan op virtuele machines. Het hoofdhostsysteem wordt gebruikt om ze te besturen en te visualiseren. Het besturingssysteem wordt geïnstalleerd samen met een basisset van op sjablonen gebaseerde virtuele machines (TemplateVM). Deze sjabloon is een Linux VM gebaseerd op de Fedora- of Debian-distributie, met geïnstalleerde en geconfigureerde integratietools en speciale systeem- en gebruikerspartities. Installatie en updaten van software wordt uitgevoerd door een standaard pakketbeheerder (dnf of apt) vanuit geconfigureerde repository's met verplichte digitale handtekeningverificatie (GnuPG). Het doel van dergelijke VM's is het waarborgen van vertrouwen in applicatie-VM's die op basis daarvan worden gelanceerd.

Bij het opstarten gebruikt een applicatie-VM (AppVM) een momentopname van de systeempartitie van de bijbehorende VM-sjabloon, en na voltooiing wordt deze momentopname verwijderd zonder de wijzigingen op te slaan. De door de gebruiker vereiste gegevens worden opgeslagen in een gebruikerspartitie die uniek is voor elke applicatie-VM, die is aangekoppeld in de homedirectory.

QubesOS gebruiken om met Windows 7 te werken

Het gebruik van wegwerpbare VM's (disposableVM) kan vanuit beveiligingsoogpunt nuttig zijn. Zo'n VM wordt gemaakt op basis van een sjabloon op het moment van opstarten en wordt voor één doel gelanceerd: om één applicatie uit te voeren en het werk te voltooien nadat deze is gesloten. Wegwerp-VM's kunnen worden gebruikt om verdachte bestanden te openen waarvan de inhoud zou kunnen leiden tot misbruik van specifieke kwetsbaarheden in applicaties. De mogelijkheid om een ​​eenmalige VM uit te voeren is geïntegreerd in de bestandsbeheerder (Nautilus) en de e-mailclient (Thunderbird).

Windows VM kan ook worden gebruikt om een ​​sjabloon en een eenmalige VM te maken door het gebruikersprofiel naar een aparte sectie te verplaatsen. In onze versie zal een dergelijke sjabloon door de gebruiker worden gebruikt voor beheertaken en applicatie-installatie. Op basis van de sjabloon worden verschillende applicatie-VM's gemaakt - met beperkte toegang tot het netwerk (standaard sys-firewall-mogelijkheden) en helemaal zonder toegang tot het netwerk (er wordt geen virtueel netwerkapparaat gemaakt). Alle wijzigingen en applicaties die in de sjabloon zijn geïnstalleerd, zullen beschikbaar zijn om in deze VM's te werken, en zelfs als bladwijzerprogramma's worden geïntroduceerd, zullen ze geen netwerktoegang hebben als gevolg van compromissen.

Vecht voor Windows

De hierboven beschreven functies vormen de basis van Qubes en werken redelijk stabiel; de problemen beginnen bij Windows. Om Windows te integreren, moet u een set gasttools Qubes Windows Tools (QWT) gebruiken, waaronder stuurprogramma's voor het werken met Xen, een qvideo-stuurprogramma en een set hulpprogramma's voor informatie-uitwisseling (bestandsoverdracht, klembord). Het installatie- en configuratieproces is gedetailleerd gedocumenteerd op de projectwebsite, dus we zullen onze applicatie-ervaringen delen.

De grootste moeilijkheid is in wezen het gebrek aan ondersteuning voor de ontwikkelde tools. Key Developers (QWT) lijken niet beschikbaar te zijn en het Windows-integratieproject wacht op een hoofdontwikkelaar. Daarom was het allereerst nodig om de prestaties ervan te beoordelen en inzicht te krijgen in de mogelijkheid om deze, indien nodig, onafhankelijk te ondersteunen. Het moeilijkst te ontwikkelen en te debuggen is het grafische stuurprogramma, dat de videoadapter en het beeldscherm emuleert om een ​​afbeelding in het gedeelde geheugen te genereren, waardoor u het hele bureaublad of het toepassingsvenster rechtstreeks in het hostsysteemvenster kunt weergeven. Tijdens de analyse van de werking van het stuurprogramma hebben we de code aangepast voor montage in een Linux-omgeving en een foutopsporingsschema uitgewerkt tussen twee Windows-gastsystemen. In de crossbuild-fase hebben we verschillende wijzigingen aangebracht die de zaken voor ons hebben vereenvoudigd, voornamelijk in termen van de “stille” installatie van hulpprogramma's, en ook de vervelende achteruitgang van de prestaties hebben geëlimineerd als we lange tijd in een VM werkten. We hebben de resultaten van het werk afzonderlijk gepresenteerd opslagplaatsen, dus niet voor lang inspirerend Lead Qubes-ontwikkelaar.

De meest kritische fase in termen van stabiliteit van het gastsysteem is het opstarten van Windows, hier kun je het bekende blauwe scherm zien (of niet eens zien). Voor de meeste van de geïdentificeerde fouten waren er verschillende oplossingen: het elimineren van Xen-blokapparaatstuurprogramma's, het uitschakelen van VM-geheugenbalancering, het repareren van netwerkinstellingen en het minimaliseren van het aantal cores. Onze gasttools bouwen installaties en draaien op volledig bijgewerkte Windows 7 en Windows 10 (behalve qvideo).

Bij het overstappen van een echte naar een virtuele omgeving ontstaat er een probleem bij het activeren van Windows als vooraf geïnstalleerde OEM-versies worden gebruikt. Dergelijke systemen gebruiken activering op basis van licenties die zijn gespecificeerd in de UEFI van het apparaat. Om de activering correct te verwerken, is het noodzakelijk om een ​​van de volledige ACPI-secties van het hostsysteem (SLIC-tabel) naar het gastsysteem te vertalen en de andere enigszins te bewerken, waarbij de fabrikant wordt geregistreerd. Met Xen kunt u de ACPI-inhoud van aanvullende tabellen aanpassen, maar zonder de belangrijkste te wijzigen. Een patch van een soortgelijk OpenXT-project, aangepast voor Qubes, hielp bij de oplossing. De oplossingen leken niet alleen nuttig voor ons en werden vertaald naar de hoofdrepository van Qubes en de Libvirt-bibliotheek.

De voor de hand liggende nadelen van Windows-integratietools zijn onder meer het gebrek aan ondersteuning voor audio, USB-apparaten en de complexiteit van het werken met media, aangezien er geen hardware-ondersteuning is voor de GPU. Maar het bovenstaande staat het gebruik van de VM voor het werken met kantoordocumenten niet in de weg, noch staat het de lancering van specifieke bedrijfsapplicaties in de weg.

Aan de vereiste om over te schakelen naar de bedrijfsmodus zonder netwerk of met een beperkt netwerk na het maken van een Windows VM-sjabloon werd voldaan door het creëren van de juiste configuraties van applicatie-VM's, en de mogelijkheid om selectief verwisselbare media aan te sluiten werd ook opgelost door standaard OS-tools - indien aangesloten , zijn ze beschikbaar in de systeem-VM sys-usb, vanwaar ze kunnen worden "doorgestuurd" naar de vereiste VM. Het bureaublad van de gebruiker ziet er ongeveer zo uit.

QubesOS gebruiken om met Windows 7 te werken

De definitieve versie van het systeem werd positief geaccepteerd (voor zover een dergelijke alomvattende oplossing dit mogelijk maakt) door gebruikers, en de standaardtools van het systeem maakten het mogelijk om de applicatie uit te breiden naar het mobiele werkstation van de gebruiker met toegang via VPN.

In plaats Output

Met virtualisatie kunt u in het algemeen de risico's beperken die gepaard gaan met het gebruik van Windows-systemen die geen ondersteuning bieden. Het forceert geen compatibiliteit met nieuwe hardware, het stelt u in staat de toegang tot het systeem via het netwerk of via aangesloten apparaten uit te sluiten of te controleren, en het stelt u in staat om een eenmalige lanceringsomgeving implementeren.

Gebaseerd op het idee van isolatie door middel van virtualisatie, helpt Qubes OS u deze en andere mechanismen voor beveiliging te benutten. Van buitenaf zien veel mensen Qubes vooral als een verlangen naar anonimiteit, maar het is een nuttig systeem voor zowel ingenieurs, die vaak met projecten, infrastructuren en geheimen moeten jongleren om er toegang toe te krijgen, als voor beveiligingsonderzoekers. Het scheiden van applicaties, gegevens en het formaliseren van hun interactie zijn de eerste stappen van de dreigingsanalyse en het ontwerp van beveiligingssystemen. Deze scheiding helpt om informatie te structureren en de kans op fouten als gevolg van de menselijke factor – haast, vermoeidheid, enz. – te verkleinen.

Momenteel ligt de nadruk bij de ontwikkeling vooral op het uitbreiden van de functionaliteit van Linux-omgevingen. Versie 4.1 wordt voorbereid voor release, die gebaseerd zal zijn op Fedora 31 en huidige versies van de belangrijkste componenten Xen en Libvirt zal bevatten. Het is vermeldenswaard dat Qubes is gemaakt door professionals op het gebied van informatiebeveiliging die altijd onmiddellijk updates vrijgeven als er nieuwe bedreigingen of fouten worden geïdentificeerd.

nawoord

Een van de experimentele mogelijkheden die we ontwikkelen stelt ons in staat VM's te maken met ondersteuning voor gasttoegang tot de GPU op basis van Intel GVT-g-technologie, waardoor we de mogelijkheden van de grafische adapter kunnen gebruiken en de reikwijdte van het systeem aanzienlijk kunnen uitbreiden. Op het moment van schrijven werkt deze functionaliteit voor testbuilds van Qubes 4.1 en is beschikbaar op GitHub.

Bron: www.habr.com

Voeg een reactie