V utery 31.3.2015 jsme se v Jicinskem GeekLabu spolecne s Martinem Gruntoradem pokouseli ziskat zapomenute heslo do Mikrotiku RB411. Postup spociva v nabootovani „live“ OpenWrt na RB411, pripojeni NAND flash a vykopirovani souboru s heslem a jeho nasledne prolomeni. Navodu je na Internetu dost, ale je problem nastavit nove Ubuntu jako PXE server. Proto jsem pripravil jednoduchy image pro VirtualBox, ktery funguje jako PXE server.
Navod slouzi pouze pro studijni ucely a jeho pouziti je na vlastni zodpovednost. V zadnem pripade neni urcen k nelegalni cinnosti!
Navodu na ziskani zapomenuteho hesla z RB411 je na internetu hodne. Prikladem muze byt cesky navod na Root.cz, nebo anglicky navod, RB411 OpenWrt navod. Myslenka je vzdy stejna – nastavit pocitac jako „bootovaci server“ a RB nabootovat po siti z PC. Na RB pak ziskame v RAM bezici „live“ system, ze ktereho si muzeme pripojit flash cip a delat si, co chceme.
My jsem narazili na zajimavy problem. Nastavit nove desktopove Ubuntu jako bootovaci (PXE) server da docela dost prace. Musite nainstalovat a nastavit DHCPD a TFTPD. Jenze v novych distribucih otravuje zivot NetworkManager a dnsmasq. Zkuseli jsme Ubuntu 14.04 – nakonec se podarilo, ale nikdy vice nechceme postup opakovat.
Proto me napadlo vytvorit minimalni system obsahujici vse potrebne, tedy funkcni dhcp a tftp server. System by melo byt mozne spoustet ve virtualu a mel by byt co nejmensi. Protoze mam rad OpenWrt, vybral jsem ho i pro tento ucel. Na virtualizaci pouzivam VirtualBox – je zdarma a vsude funguje.
Cely virtualni stroj (virtualni disk + ostatni soubory VirtualBoxu) se vejde do krasnych 30MB!
Jak to pouzit
Nejdriv popisu hotovy a image a vysvetlim, jak ho pouzit. Pote podrobne ukazu vsechny kroky, pomoci kterych jsem image vytvoril.
Nejdriv je potreba mit stazeny a nainstalovany VirtualBox a to vcetne extension packu! Bez neho nepujde PXE (alespon to pisou na webu VBoxu, ja to bez nej ani nezkousel).
Pote si stahneme a naimportujeme virtualni stroj ve formatu OVA (Virtual Appliance). OpenWrt 14.07 x86 TFTP BOOT SERVER.ova (7,3MB)
Pri importu nezaskrtavejte „reinicializovat MAC adresy sitovych karet“!
Virtualni stroj musi mit dve sitove karty! Prvni v bridgi s ethernet sitovou karou a druha v NATu. Na poradi zalezi. Ke karte v bridgi pripojime kabelem RB. NAT karta zajisti funkcni internet ve virtualu.
Po importu spustime virtual a prihlasime se, heslo roota neni nastavene. Po startu systemu automaticky bezi ISC DHCP IPv4 server a TFTPD-HPA server. Pouzity OS je OpenWrt x86 ve verzi 14.07. Po bootu se vsemi spustenymi sluzbami zabira system prijemnych 10MB RAM.
Prejdeme do adresare /tftp a programem wget stahneme potrebny OpenWrt image. Prejmenujeme ho na linuxrc a nastavime (pro jistotu) prava 777. Nazev linuxrc je uvedeny v konfiguraci dhcp serveru. To je vse. Muzeme na RB nabootovat podle nektereho z mnoha existujicich navodu.
Styp by step video:
Kdo nechce sledovat video na Trubce, muze si stahnout MP4 (13MB).
Jak to vytvorit
Pro provoz ve VirtualBoxu potrebujeme x86 ext4-combined image z webu http://downloads.openwrt.org/barrier_breaker/14.07/x86/generic/
konkretne http://downloads.openwrt.org/barrier_breaker/14.07/x86/generic/openwrt-x86-generic-combined-ext4.img.gz (nebo tady z webu)
Po stazeni ho rozbalime a prevedeme na format disku pouzivany VirtualBoxem (VDI):
$ wget http://downloads.openwrt.org/barrier_breaker/14.07/x86/generic/openwrt-x86-generic-combined-ext4.img.gz $ gunzip openwrt-x86-generic-combined-ext4.img.gz $ VBoxManage convertfromraw --format VDI openwrt-x86-generic-combined-ext4.img.gz openwrt.vdi
Nyni ve VirtualBoxu vytvorime novy virtualni stroj. Dame 32MB RAM, vic neni treba. Disk vybereme existujici a to vyse uvedeny openwrt.vdi. Virtualu pridelime 2 sitove karty presne podle vyse uvedeneho nastaveni.
Po bootu je nutne nastavit sit. OpenWrt stadardne pouziva IP 192.168.1.1 s bezicim DHCP serverem (takze mi to doma delalo na LAN problemy).
Upravime soubor /etc/config do podoby:
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option ifname 'eth0' #option type 'bridge' #option proto dhcp option proto 'static' option ipaddr '192.168.10.1' option netmask '255.255.255.0' config interface "abc" option ifname eth1 option proto dhcp
eth0 bude v bridgi s Mikrotikem a eth1 zajistuje pro virtual internet.
Po rebootu otestujeme pripojeni k internetu a pokud jde, pustime se do instalace:
# ping 8.8.8.8 # opkg update # opkg install isc-dhcp-server-ipv4 tftpd-hpa
Sel by pouzit i dnsmasq v roli DHCP serveru, ale nemam ten hybrid rad.
Pro dhcp server vytvorime nastaveni v /etc/dhcpd.conf :
# /etc/dhcpd.conf allow booting; allow bootp; authoritative; default-lease-time 3600; max-lease-time 86400; option domain-name-servers 192.168.10.1; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.200; option broadcast-address 192.168.10.255; option subnet-mask 255.255.255.0; option routers 192.168.10.1; filename "/linuxrc"; }
Protoze jsem mel mensi problem s init skripty z OpenWrt, radeji jsem si vyresil spousteni sam. Ne moc elegantne, ale funkcne:
# /etc/init.d/dhcp disable # /etc/init.d/tftpd-hpa disable # /etc/init.d/dnsmasq disable
Tim jsme vypnuli automaticke spousteni demonu behem bootu systemu vcetne distribucniho dnsmasq. Spusteni zajistime v /etc/rc.local :
# Put your custom commands here that should be executed once # the system init finished. By default this file does nothing. sleep 2 touch /tmp/dhcpd.leases /usr/sbin/dhcpd -cf /etc/dhcpd.conf -lf /tmp/dhcpd.leases eth0 & /usr/sbin/tftpd-hpa -l -a 0.0.0.0:69 -s /tftp & exit 0
Sleep je tam pro jistotu 🙂
Bez vytvoreni souboru s vypujckami dhcp server nenabehne.
Parametry jsou v manualu, proto jen kratce:
- -cf – cesta ke konfiguraku
- -lf cesta k souboru s vypujckami
- eth0 – na teto sitovce bude dhcp poslouchat
- -l – listen
- -a – adresa a port, na ktere bude tftp server poslouchat
- -s – adresar daty
obe sluzby se spusti na pozadi (&).
OpenWrt je vyborne nejen pro embedded hardware, ale i pro male jednoucelove virtualni stroje. Priste se zamyslete, zda opravdu potrebujete virtualizovat Ubuntu s 1GB RAM a 10GB diskem, nebo vam staci OpenWrt s 32MB RAM a 50MB diskem 🙂
Dobý den, dá se uvedený postup použít i na RB, které disponují pouze LAN portem, tj. bez seriové linky?
Dobry den,
to jsem nezkousel.
Nevim, jak nastavit bez seriove konzole bootovani ze site misto z NAND flash.
Dobrý den,
nemohu stahnout obraz – už není přístupný ?
Děkuji
Dobry den,
odkazy jsem opravil. Rozbily se pri migraci webu z Drupalu na WordPress.
Děkuji – již to funguje – až se tím trochu prokouši – dám vědět jak jsem dopadl. Potřebuji se dostat do nějak hacknutého MT a zjistit, co tam útočník změnil ( kromě hesla ) a nastavil.