Jak získat z RouterBoardu heslo

Adam Štrauch 8. 9. 2010

Poslední dobou se mi množí dotazy na získání hesla z RouterBoardů od firmy Mikrotik. Ta si zrovna se zabezpečením hlavu neláme, takže i když heslo zapomenete, není proč věšet hlavu a stačí vytáhnout rootfs a jádro z OpenWRT, najít správný soubor, odeslat ho do bezpečí a heslo si vzít zase zpátky.

Motivační a demotivační úvod

Routery jsou krabičky, které mohou několik let bez problémů fungovat a nikdo ani neví, že pod tou střechou existují. Jenže se může něco stát nebo ISP změní konfiguraci a je potřeba v nich něco opravit. Pokud je to již opravdu dlouho, vybavit si heslo může být velký problém. Z prozřetelnosti jste tam to výchozí nenechali a navíc aby to bylo super bezpečný, vygenerovali jste si nějaké náhodné heslo z /dev/urandom. Během těch let jste už několikrát měnili operační systém a v horším případě se třeba odporoučel i nějaký ten pevný disk. Zkrátka řečeno, heslo je pryč a nezbývá, než ho dostat zpět jinými prostředky.

Druhou stranou mince mohou být neoficiální zásahy do hardwaru od vašeho ISP, ke kterým lze tento návod také použít. V některých situacích nelze jednat jinak, ISP nemusí být ochotný přistoupit na vaše požadavky a nebo za to může chtít nemalou částku peněz. V takovém případě je asi lepší uvažovat o jeho změně, ale chápu, že to nemusí být vždy tak jednoduché, proto mějte na paměti, že váš ISP nebude nadšený, když se mu budete hrabat v hardwaru a už vůbec ne, když si krabičku znefunkčníte. Takové případy také může mít ošetřené ve smlouvě. Když už tedy musíte, tak jednejte velmi opatrně a mějte na paměti, že autor tohoto návodu neručí za jakoukoli škodu, kterou si způsobíte.

Postup

Postup je vcelku jednoduchý, ale protože bootloader na RouterBoardech vsadil na bootování přes síť, nevyhneme se konfiguraci DHCP serveru a TFTP serveru. Našim cílem je nabootovat jádro a rootfs OpenWRT, namountovat oddíl s rootfs RouterOS, z něj vytáhnout soubor user.dat, ten odeslat na náš desktop či notebook, tam z něj dostat seznam uživatelů i s hesly a pak zase vše vrátit do původního stavu. Pokud jste si hráli s OpenWRT na RouterBoardech, bude to pro vás hračka. Návod je psán pro RB411 a měl by fungovat i pro RB433. U dalších RouterBoardů je rozdíl pouze v tom, pro jakou architekturu použijeme obraz OpenWRT.

Z hardwaru budeme potřebovat Null modem kabel pro propojení sériové linky počítače se sériovou linkou RouterBoardu. Bez něj se neobejdeme, protože je potřeba trochu pošťouchnout bootloader.

Příprava PC

Začneme tím, že si nainstalujeme a nakonfigurujeme DHCP server, který v debianích distribuch najdeme v balíčku dhcp3-server.

$ sudo su
# apt-get install dhcp3-server 

Jeho konfigurační soubor najdeme v /etc/dhcp3/dhcp­d.conf a umístíme do něj něco takového:

allow booting;
allow bootp;
authoritative;
ddns-update-style ad-hoc;
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.2 192.168.1.250;
    option ip-forwarding off;
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    filename "/linuxrc";
} 

Dále budeme potřebovat balíčky gtkterm, build-essential, libssl-dev a ssh:

# apt-get install gtkterm ssh build-essential libssl-dev 

Pak nastavíme adresu a to buď pomocí NetworkManageru nebo v příkazové řádce. Pro funkci stačí, aby počítač, na kterém bude obraz se systémem, měl adresu 192.168.1.1/24. Pamatujte taky na to, že je lepší propojit RouterBoard s počítačem přímo a to hlavně pokud máte v síti již jiný DHCP server, jenž by se s tím novým mohl hádat.

# ip a a 192.168.1.1/24 dev eth0 up
# ip l s eth0 up 

Teď je čas nainstalovat atftpd server:

# apt-get install atftpd 

V Ubuntu nebylo potřeba nic konfigurovat, jen do /srv/tftp/ nakopírovat soubor s OpenWRT obrazem, který najdeme v tomto archivu, ale v jiných distribucích to může být jinak.

# cd /srv/tftp
# wget http://tinyurl.com/n3sxmp
# mv openwrt-ar71xx-vmlinux-initramfs.elf linuxrc 

Poslední krok co je potřeba udělat, je restart DHCP serveru, aby načetl novou konfiguraci:

# /etc/init.d/dhcp3-server restart 

Postup RouterBoard

Teď je čas spustit gtkterm. Nesmíme v něm zapomenout nastavit správně rychlost a port.

Nyní můžeme připojit RouterBoard přes sériovou linku k počítači, k síti a hlavně nesmíme zapomenout na napájení. Hned po nabootování se nám objeví text „Press any key within XX seconds to enter setup.“, a jelikož tam potřebujeme, tak stiskneme libovolnou klávesu. Poté uvidíme něco takového:

RouterBoard 411
CPU frequency: 300 MHz
  Memory size:  32 MB
  Press any key within 2 seconds to enter setup.
  RouterBOOT-2.16
  What do you want to configure?
     d - boot delay
     k - boot key
     s - serial console
     o - boot device
     u - cpu mode
     f - cpu frequency
     r - reset booter configuration
     e - format nand
     g - upgrade firmware
     i - board info
     p - boot protocol
     t - do memory testing
     x - exit setup
  your choice: 

Zde je důležité nastavit boot protocol na DHCP a boot device na bootování ze sítě. Stiskneme tedy klávesu o:

Select boot device:
   e - boot over Ethernet
 * n - boot from NAND, if fail then Ethernet
   1 - boot Ethernet once, then NAND
   o - boot from NAND only
   b - boot chosen device 

A pak e. Pokračujeme klávesou p:

Choose which boot protocol to use:
   1 - bootp protocol
 * 2 - dhcp protocol 

A potom 2. Tím by měl být bootloader nastavený a můžeme ho opustit stisknutím klávesy x. Po několika sekundách uvidíme:

Press any key within 2 seconds to enter setup..
trying dhcp protocol....... OK
resolved mac address 00:1D:60:EA:36:58
Gateway: 192.168.1.1
transfer started ...................... transfer ok, time=1.39s
setting up elf image... OK
jumping to kernel code 

A začne nabíhat stažený obraz.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge, r12846) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/# 

Jsme uvnitř a můžeme si s vnitřní pamětí RouterBoardu dělat co chceme. Začneme vypsáním oddílů:

root@OpenWrt:/# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00004000 "booter"
mtd1: 003c0000 00004000 "kernel"
mtd2: 03c00000 00004000 "rootfs" 

Vidíme, že rootfs kam potřebujeme je třetí oddíl a všimneme si názvu mtd2, to totiž musíme přimountovat, tam se nachází hledaný soubor user.dat. V tomto bodě se začínají návody rozcházet. V některých totiž není uveden oddíl booter, což je zvláštní, protože já ho měl na všech RouterBoaderch, se kterými jsem si takhle hrál, což jsou RB333, RB433 a RB411, na kterém zde předvádím tento postup.

root@OpenWrt:/# mount -t yaffs2 -o ro /dev/mtdblock2 /mnt
yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
yaffs: auto selecting yaffs1 

Tady je druhý bod, kde se návody rozcházejí. Téměř všechny uvádí umístění souboru user.dat v /mnt/nova/store/, nicméně já ho našel v /mnt/rw/store/u­ser.dat. Adresář /mnt/nova/store byl jen symlink na /mnt/rw/store, takže se během vývoje RouterOS změnilo umístění a symlink měl zarušit zpětnou kompatibilitu. Jenže ten funguje jen když je mtdblock2 připojen do / a ne do /mnt. Když jsme našli user.dat, pošleme si ho na desktop či notebook.

root@OpenWrt:/# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
root@OpenWrt:/# ls -l /mnt/rw/store/user.dat
-rw-------    1 root     root          166 Jan  2  1970 /mnt/rw/store/user.dat
root@OpenWrt:/# scp /mnt/rw/store/user.dat USER@192.168.1.1:~/ 

Řetězec USER nahraďte jménem vlastního uživatele.

Teď už RouterBoard nebudeme potřebovat, takže ho můžeme resetovat napsáním „reboot“ a v bootloaderu v boot device nastavíme „boot from NAND, if fail then Ethernet“. Náš počítač pak vrátíme do původního stavu co se týče sítě, abychom mohli opět na internet a stáhneme si zdrojové kód utilitky mtpass, aktuálně ve verzi 0.5. Teď bude potřeba trocha kompilování. Začneme rozbalením zdrojových kódů:

$ cd ~
$ wget http://manio.skyboo.net/mikrotik/mtpass-0.5.tar.bz2
$ tar xf mtpass-0.5.tar.bz2
$ cd mtpass-0.5 

Na nových systémech s GCC 4.3 a novější je potřeba doplnit do mtpass.cpp řádek:

#include <cstdio> 

Začátek souboru bez komentářů pak vypadá takto:

#include <cstdio>
#include <iostream>
#include <list>
#include <fcntl.h>
#include <stdarg.h>
#include <string.h>
#include <openssl/md5.h> 

Teď můžeme kompilovat:

$ make 

Vyleze nám binární soubor mtpass, který hned použijeme:

$ ./mtpass ~/user.dat
mtpass v0.5 - MikroTik RouterOS password recovery tool, (c) 2008-2009 by manio
http://manio.skyboo.net/mikrotik/
Reading file ../user.dat, 166 bytes long
Rec# | Username        | Password           | Disable flag   | User comment
--------------------------------------------------------------------------------------------
1    | admin           | <BLANK PASSWORD>   |                | system default user
2    | admin           | XXXXXXXXXXXXXXXX   |                | system default user 

A máme to hotové. Dostaneme tak kompletní seznam uživatelů i s jejich hesly. Utilita mtpass umí pracovat i obrazy celé paměti nebo se zálohou konfigurace RouterOS. Pokud tedy zapomenete heslo, ale máte k dispozici zálohu konfigurace, bude postup ještě jednodušší.

Až příště budete dělat zálohu konfigurace, mějte na paměti, jak jednoduše se z ní dá vaše heslo získat a proto si při jejím ukládání dejte pozor.

Odkazy

Ohodnoťte jako ve škole:

Průměrná známka 3,38

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
Vitalia.cz: Syndrom počítačového vidění: stačí dvě hodiny denně

Syndrom počítačového vidění: stačí dvě hodiny denně

Vitalia.cz: Tři sta kilogramů tuňáka obsahovalo histamin

Tři sta kilogramů tuňáka obsahovalo histamin

Lupa.cz: Zaplatíme ti, když ti seženeme práci

Zaplatíme ti, když ti seženeme práci

Podnikatel.cz: Miliony hodin nad hlášením k DPH. K vzteku

Miliony hodin nad hlášením k DPH. K vzteku

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

DigiZone.cz: Šlágr TV dostala pokutu 100 000 Kč

Šlágr TV dostala pokutu 100 000 Kč

Podnikatel.cz: Proměny stavebnice Seva. Znáte ji?

Proměny stavebnice Seva. Znáte ji?

DigiZone.cz: Změní se veřejnoprávní status ČT?

Změní se veřejnoprávní status ČT?

DigiZone.cz: Šlágr TV: pokuta 100 tisíc za on-line

Šlágr TV: pokuta 100 tisíc za on-line

120na80.cz: Velký přehled: 7 očkování proti exotickým nemocem

Velký přehled: 7 očkování proti exotickým nemocem

Podnikatel.cz: Myšlenky Henryho Forda. Berte je za své

Myšlenky Henryho Forda. Berte je za své

DigiZone.cz: UPC umí televizi sedm dní nazpět

UPC umí televizi sedm dní nazpět

120na80.cz: 5 triků, jak zastavit krvácení po holení

5 triků, jak zastavit krvácení po holení

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

120na80.cz: 10 dezinfekcí: Vede „starý dobrý“ peroxid

10 dezinfekcí: Vede „starý dobrý“ peroxid

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

120na80.cz: 10 nej přípravků na holení

10 nej přípravků na holení

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

DigiZone.cz: Konec geoblokace online médií?

Konec geoblokace online médií?

Lupa.cz: Přenos hokeje padal kvůli útoku, tvrdí O2

Přenos hokeje padal kvůli útoku, tvrdí O2