Zpět na seznam článků     Číst komentáře (8)     Verze pro tisk

PXE bootovací útok

Autor: cURLy bOi   
9.5.2013

Tento článek popisuje provedení bezpečnostního útoku, který zneužívá možnosti nabootovat PC ze síťového zdroje. Takové PC se často vyskytují ve firemním prostředí, kde je tato technika používána pro vzdálený deployment systému, aby se omezila nutnost fyzického přístupu.


V praxi to funguje tak, že počítač má typicky nastavenou na bootování ze sítě vyšší prioritu než na bootování z disku, ale pokud se v síti nenachází DHCP server, který by poskytnul PXE bootovací detaily, PC po čase síťový boot vytimeoutuje a začne standardně zavádět z disku.

Pozn.: Často bývá BIOS defaultně nastaven tak, že implicitně bootuje z disku, avšak pokud je PC probuzen pomocí Wake On Lan, až do vypnutí nastaví první boot ze sítě. Wake On Lan se dá provést množstvím dostupných nástrojů a je k tomu třeba pouze znalost MAC adresy, kterou lze snadno odposlechnout ze sítě.

Útočník si však může vyrobit vlastní DHCP a TFTP server, kterým předá cílovému počítači informace o zaváděcím kódu, takže tento počítač si jej stáhne z TFTP serveru a spustí. K tomu se dobře hodí software Serva, který je postavený na slavném TFTPD32 (ten je dostupný zcela zdarma, ale bohužel trpí vážnými bugy ukládání a načítání konfigurace).

Scénář útoku tedy zbavuje útočníka nutnosti být fyzicky přítomen u daného počítače, postačí, když se nachází na „druhém konci“ síťového kabelu. Pokud se v síti nachází ještě jiný DHCP server, bylo by vhodné mu zamezit komunikovat s cílovou stanicí, aby nedošlo ke konfliktu.

Jakmile jsme schopni přesvědčit cílový stroj, aby bootoval z našeho serveru, máme několik možností, jak s tím naložit. V první řadě je dobré si do adresáře TFTP nahrát PXELINUX (pxelinux.0, ldlinux.c32, memdisk). Aby nám PXELINUX správně bootoval, musíme DHCP serveru nastavit jako zaváděcí soubor právě pxelinux.0 a dále dvojici speciálních voleb. Volby DHCP se označují číslem a hodnotou. Pro naše potřeby tedy nastavíme volbu 208 na „241.0.116.126“ a volbu 209 na „config.pxe“ (jedná se jen o příklad, volba udává název souboru s konfigurací PXELINUXu). Konfigurační soubor vytvoříme podle návodu PXELINUXu. U tohoto konkrétního útoku vypadá následovně:

  1. DEFAULT nopre
  2. # výchozí boot volba je nopre
  3. LABEL kon
  4.   LINUX memdisk
  5.   # budeme předstírat virtuální disketu
  6.   INITRD bootmbr.img
  7.   # ze souboru bootmbr.img
  8.   APPEND raw
  9. LABEL nopre
  10.   KERNEL vmlinuz
  11.   # zavedeme přímo linuxový kernel ze souboru vmlinuz
  12.   APPEND rw initrd=initrd.cgz,scsi.cgz
  13.   # a připojíme tyto bootovací parametry

Volba „nopre“ obsahuje verzi volně dostupného nástroje NT Offline Password & Registry Editor, což je bootovací disk, který umožňuje editaci hesel a registrů libovolné Windowsové partition v interaktivním režimu. Protože interaktivita není to, co bychom u daného útoku chtěli, rozsáhle jsem modifikoval obslužné skripty tak, aby automaticky vyhledaly bootovací partition, připojily ji a následně upravily sadu registrů tak, aby došlo k vypnutí standardního firewallu, vypnutí notifikací Centra zabezpečení o faktu, že firewall je vypnutý, a povolení funkce Vzdálené plochy.

Poté je zobrazena hláška informující o nutnosti počkat 30 vteřin, což dává útočníkovi čas přehodit výchozí bootovací volbu z „nopre“ na „kon“ a restartovat PXE server.

Druhá část útoku již nabootuje soubor bootmbr.img což je upravená verze disketové image komerčního nástroje Kon-Boot. Kon-Boot je velice mocný nástroj, který, je-li zaveden jako bootovací médium, se usadí v paměti a zavede tzv. hooky na některá volání BIOSu. Poté spustí systém z primárního disku. Není provedena žádná fyzická změna na jakémkoliv disku a změny tak vydrží jen do restartu. I nástroj Kon-Boot jsem však musel poněkud silně modifikovat, protože při spuštění zobrazuje animovanou barevnou obrazovku s logem programu a informacemi o copyrightu. To by pochopitelně vzbudilo podezření, proto jsem hex editorem na začátek každého stringu dal znak \x00, čímž jsem každý takový string hned ukončil. Úvodní sekvence tak vlastně nemá co vypsat a bleskurychle začne bootovat. Navíc není třeba používat celý 1,44 MB velký obraz diskety a prodlužovat tak dobu jeho spuštění ze sítě. Postačí z tohoto image vzít prvních 7168 bytů, zbytek je stejně prázdný. Následné modifikace pak stačí dělat pouze v těchto 7 KB.

Po nastartování pomocí Kon-Bootu už nic nebrání tomu, aby se libovolný uživatel přihlásil bez hesla. Vzhledem k tomu, že jsme předtím také povolili možnost vzdáleného přihlášení, je takto možné získat plná práva ke vzdálenému stroji, aniž bychom se ho museli dotknout.



Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.42/19

1  2  3  4  5    
(známkování jako ve škole)