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ě:
DEFAULT nopre # výchozí boot volba je nopre LABEL kon LINUX memdisk # budeme předstírat virtuální disketu INITRD bootmbr.img # ze souboru bootmbr.img APPEND raw LABEL nopre KERNEL vmlinuz # zavedeme přímo linuxový kernel ze souboru vmlinuz APPEND rw initrd=initrd.cgz,scsi.cgz # 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.