zavrŠni rad br. 4813 prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi...

23
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Zagreb, lipanj 2017. ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava OpenWrt na mreţne ureĊaje Juraj Vijtiuk

Upload: others

Post on 25-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Zagreb, lipanj 2017.

ZAVRŠNI RAD br. 4813

Prenošenje operacijskog sustava OpenWrt

na mreţne ureĊaje

Juraj Vijtiuk

Page 2: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

i

SADRŽAJ

1. Uvod ............................................................................................................................ 1

2. OpenWrt i prenošenje općenito .......................................................................... 2

2.1. OpenWrt ............................................................................................................. 2

2.2. Prenošenje sustava .......................................................................................... 2

3. Opis postupka prenošenja openwrta ................................................................. 4

3.1. Prikupljanje informacija o uređaju .................................................................. 4

3.1.1. Prikupljanje informacija preko mreže................................................................ 5

3.1.2. Prikupljanje informacija na druge načine ....................................................... 11

3.2. Izgradnja OpenWrta ....................................................................................... 12

3.3. Upisivanje vlastitog operacijskog sustava .................................................. 13

3.3.1. Upisivanje na D-Link DIR-615 ......................................................................... 13

3.3.2. Upisivanje na DSL-584T ................................................................................... 17

3.3.3. Pokretanje u QEMU emulatoru........................................................................ 18

4. Zakljuĉak ................................................................................................................. 19

Literatura ........................................................................................................................... 20

Saţetak .............................................................................................................................. 21

Summary ........................................................................................................................... 21

Page 3: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

1

1. UVOD

U ovom radu opisan je postupak instalacije operacijskog sustava OpenWrt na

mrežne uređaje, te postupak prenošenja (engl. porting) na nepodržane uređaje.

Postupak je opisan općenito, na primjeru instalacije u Quick Emulatoru (QEMU),

dijelom na primjeru usmjeritelja D-Link DIR-615, revizija Q2, te na primjerima

usmjeritelja D-Link DSL-584T i Siemens ADSL C-010-I. S obzirom na to da je

glavna tema rada prenošenje sustava, instalacija nije zasebna cjelina već je

opisana kao dio postupka prenošenja sustava.

Rad je podijeljen u pet poglavlja. U drugom poglavlju opisani su OpenWrt

operacijski sustav uz neke od mogućih primjena sustava te općeniti postupak

prenošenja sustava. U trećem poglavlju opisani su postupci prenošenja i

instalacije OpenWrta uz moguće probleme. Zaključak je iznesen u četvrtom

poglavlju.

Page 4: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

2

2. OPENWRT I PRENOŠENJE OPĆENITO

2.1. OpenWrt

OpenWrt je besplatni operacijski sustav otvorenog koda za mrežne uređaje,

zasnovan na operacijskom sustavu GNU/Linux, te uClibc ili musl C bibliotekama.

Sustav je moguće prilagoditi potrebama korisnika na više načina, instalacijom

dodatnih programskih paketa te izgradnjom (engl. build) vlastite verzije sustava

izravno iz izvornog koda uz mijenjanje postavki prevoditelja i sustava za izgradnju.

Sustav se može instalirati izravno iz izvornog koda ili korištenjem gotovog

unaprijed spremnog paketa sustava napravljenog za specifičnu verziju uređaja.

Nakon instalacije sustavom je moguće upravljati preko grafičkog web sučelja ili

naredbenim sučeljem preko telnet ili Secure Shell (SSH) protokola. Uz pomoć

opkg sustava za upravljanje paketima moguće je na uređaj instalirati u trenutku

pisanja rada preko 3500 paketa koji sadrže uglavnom različite poslužitelje i

mrežne alate. OpenWrt se može koristiti kao OS za usmjeritelje, vatrozid ili sustav

za otkrivanje napada (engl. Intrusion Detection System). Projekt je nastao kada je

tvrtka Linksys objavila izvorni kod za WRT54G usmjeritelj, zbog uvjeta GNU

General Public Licensea (GPL), te od onda zajednica programera prenosi sustav

na nove uređaje i nadograđuje sustav.

Cijeli OpenWrt projekt je dokumentiran na službenoj wiki stranici na kojoj je

dostupno mnoštvo uputa za instalaciju i prilagođavanje, podatci o trenutnom stanju

podržanosti raznih uređaja i upute za prenošenje sustava na nove uređaje [1].

2.2. Prenošenje sustava

Prenošenje sustava je proces prilagodbe postojeće programske podrške kako bi

se mogla izvršavati na novim računalnim sustavima. Prenošenje može biti jako

jednostavan a i jako težak proces. Na primjeru Openwrta, ako već postoje

upravljački programi i ostali programi potrebni za sustav, treba ih samo pronaći,

najčešće ručno izgraditi, instalirati na uređaj te objediniti sve u jedan paket.

Uključivanje promjena u OpenWrt projekt zahtjeva dodatne korake i nije ovdje

opisano. Ponekad je moguće uz male promjene iskoristiti postojeće programe za

slične sustave, kao na primjer upravljačke programe za slično sklopovlje ili verziju

operacijskog sustava za istu arhitekturu ali različiti model procesora.

Page 5: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

3

Najduži i najteži postupak prenošenja je na sustave gdje za sustav i njemu slične

sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od

upravljačkih programa, potrebno je napisati upravljački program. Ako arhitektura

uređaja nije podržana od strane Linux jezgre, potrebno je napisati kod specifičan

za tu arhitekturu i dodati ga u jezgru.

Page 6: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

4

3. OPIS POSTUPKA PRENOŠENJA OPENWRTA

Prije instalacije ili prenošenja sustava potrebno je provjeriti je li za uređaj na koji

prenosimo ili instaliramo OpenWrt već postoji gotov operacijski sustav za

instalaciju. Wiki stranice OpenWrta sadrže popis podržanih uređaja [2]. Potrebno

je obratiti pozornost na razlike u sklopovlju između različitih verzija istog modela

uređaja. Na primjer, iako je D-Link DIR-615 naveden kao podržan, verzija Q2 nije

podržana [3]. Ako za uređaj postoji zasebna stranica na OpenWrt wikiju,

poveznica je navedena u odgovarajućem retku popisa podržanih uređaja. Za

podržane uređaje postupak prenošenja može se preskočiti te odmah prijeći na

instalaciju OpenWrta. Tako za D-Link DSL-584T već postoji gotov operacijski

sustav koji samo treba instalirati na uređaj. Postupak prikupljanja podataka o DSL-

584T svejedno je opisan u nastavku.

3.1. Prikupljanje informacija o ureĊaju

Prvi korak prilikom prenošenja sustava je sakupljanje informacija o sklopovlju i

programima koji se nalaze u uređaju. Najbolje je odmah provjeriti kolika je veličina

radnog spremnika uređaja, s obzirom na to da je potrebno najmanje 16MB

spremnika kako bi se mogla pokrenuti najnovija verzija OpenWrta.

Za neke uređaje podatke je moguće pronaći na OpenWrt wiki stranici. Prikupljanje

podataka najbolje je započeti ostvarivanjem neke vrste pristupa uređaju. Na

primjer prijavom preko mreže SSH-om ili telnetom, prijavom u bootloader sučelje

prilikom pokretanja, preko Etherneta ili serijskih vrata. Ako programski pristup nije

moguć, sklopovlju se može pristupiti preko Joint Test Action Group (JTAG) ili

serijskih vrata koja većina uređaja sadrži [4]. U slučaju DIR-615 usmjeritelja, na

čipu je moguće pronaći JTAG vrata, no nedostaju pinovi tako da bi ih trebalo

zalemiti. U nastavku su opisani neki od mogućih načina pristupa preko mreže.

Page 7: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

5

3.1.1. Prikupljanje informacija preko mreţe

Prvi korak prilikom prikupljanja informacija preko mreže je spajanje uređaja i

računala koje se koristi. Većina mrežnih uređaja radi kao DHCP poslužitelj, pa je

tako za spajanje na Linux sustavima potrebno pokrenuti naredbu dhclient, za

odgovarajuće mrežno sučelje. Ako DHCP ne radi, potrebno je ručno postaviti

mrežnu adresu i tablice usmjeravanja. Postupak ručnog postavljanja adrese ovisi

o korištenom sustavu, a za Linux sustave mogu se koristiti naredbe ifconfig i

route. Koje točno postavke treba koristiti prilikom ručnog postavljanja adrese,

najčešće je moguće pronaći u uputama za korištenje uređaja.

Prije spajanja preko mreže dobro je utvrditi koja mrežna vrata su otvorena te kojim

aplikacijama vrata pripadaju. Jedan od alata kojima je moguće utvrditi koja mrežna

vrata su otvorena je nmap. Osim skeniranja vrata, nmap nudi razne druge

funkcionalnosti od kojih će neke korisne za prikupljanje informacija o uređaju biti

opisane kasnije. Pokretanjem nmapa naredbom $ nmap 192.168.0.1 gdje je

$ oznaka ljuske, a 192.168.0.1 IP adresa DIR-615 usmjeritelja, dobije se sljedeći

ispis:

Nmap scan report for dlinkrouter (192.168.0.1)

Host is up (0.0018s latency).

Not shown: 997 closed ports

PORT STATE SERVICE

53/tcp open domain

80/tcp open http

49152 open unknown

Jedna od najkorisnijih nmap opcija za prikupljanje informacija o sustavu je -sV.

Nakon što je opcija zadana nmap će pokušati odrediti koje verzije aplikacija

slušaju na otvorenim portovima.

Page 8: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

6

Za DIR-615 dobije se sljedeći ispis:

$ nmap -sV 192.168.0.1

Nmap scan report for dlinkrouter (192.168.0.1)

Host is up (0.0012s latency).

Not shown 995 closed ports

PORT STATE SERVICE VERSION

53/tcp open domain dnsmasq 2.45

80/tcp open http WebServer

49152/tcp open unknown

Pokrenu li se iste naredbe za DSL-584T, vidi se da su otvorena FTP, SSH, Telnet i

HTTP vrata. Siemens usmjeritelj ima otvorena samo HTTP i FTP vrata. Vrijedi

probati skenirati i vrata koja ne spadaju u poznata vrata, s obzirom na to da nmap

bez dodatnih opcija skenira samo poznata vrata. U slučaju Siemens usmjeritelja

otvorena su vrata 17185, na kojima je servis wdbrpc.

Kako nisu otvoreni niti SSH niti Telnet vrata DIR-615 usmjeritelja, valja provjeriti je

li neku od aplikacija moguće upaliti koristeći web sučelje. Osim toga, web sučelje

korisno je i za prikupljanje podataka o programskoj podršci i sklopovlju uređaja jer

su često dostupni podatci o trenutnoj verziji ugrađenog operacijskog sustava te

različite mrežne i druge postavke.

Web sučelje DIR-615 je zaštićeno sučeljem za prijavu preko kojega je moguće

prijaviti se koristeći podatke iz priručnika, korisničko ime Admin i praznu lozinku.

DIR-615 nema mogućnost osposobljavanja SSH ili telnet protokola, no moguće je

vidjeti verziju ugrađenog operacijskog sustava koja se nalazi na uređaju.

Najjednostavniji način ostvarivanja pristupa na DIR-615 usmjeritelju je držanjem

tipke za resetiranje postavki oko 3 sekunde. Nakon ponovnog pokretanja svjetla

koja signaliziraju je li uređaj upaljen trebala bi titrati. Ponovnim skeniranjem

nmapom vidi se da su nakon ponovnog pokretanja otvorena Telnet vrata.

Spajanjem na Telnet vrata naredbom $ telnet 192.168.0.1 usmjeritelj traži

korisničko ime za prijavu. Podatci za prijavu ne nalaze se u priručniku pa ih treba

potražiti na drugim mjestima. Ni za usmjeritelj DSL-584T priručnik ne sadrži

podatke za prijavu, no isprobavanjem čestih lozinki dolazi se do korisničkog imena

admin i lozinke 0000.

Page 9: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

7

Kako značajan dio mrežnih uređaja koristi operacijske sustave zasnovane na

GNU/Linuxu, proizvođač je zbog GPL licence dužan objaviti svoje izmjene

sustava. Programska podrška je najčešće dostupna na stranicama proizvođača,

no u nekim slučajevima nije, već ju je moguće dobiti na zahtjev. Ako je OS baziran

na Berkeley Software Distribution (BSD) sustavu, proizvođač zbog BSD licence

nije dužan objaviti izmjene. Pakete s izmjenama isplati se pogledati jer je često

moguće pronaći lozinke koje se koriste u sustavu, te različite izvorne programe iz

kojih je moguće detaljnije vidjeti kako ugrađeni operacijski sustav i uređaj rade.

Kako nmap nudi funkcionalnost otkrivanja operacijskog sustava, više informacija o

OS-u sustava možemo saznati ponovno koristeći nmap uz zastavicu -O.

Naredbom $ nmap -O 192.168.0.1 dobije se sljedeći ispis:

No exact OS matches for host

TCP/IP fingerprint:

OS:SCAN(V=6.49BETA4%E=4...

Postupak koristi mnoštvo heuristika pa rezultat ne mora biti točan. Moguće je da

nmap, kao u prethodnom primjeru za DIR-615 ne pronađe ni jedan OS koji

odgovara OS-u uređaja.

Programe potrebne za izgradnju operacijskog sustava za DIR-615 može se

pronaći na službenim stranicama D-Linka [5]. Otpakiravanjem paketa nastaje

direktorij DIR615Q2_GPL1702b01. Paket sadrži i rsdk, realtekov software

development kit, koji se može koristiti za prevođenje vlastitih programa u strojni

kod procesora DIR-615. Prilikom upoznavanja s programima za izgradnju

operacijskog sustava, dobro je početi s čitanjem readme datoteke i Makefile

datoteka kako bi se upoznalo sa strukturom paketa. Dalje se zanimljive detalje

može tražiti uz pomoć alata grep. Paket bi trebao sadržavati i upravljačke

programe koji su potrebni za rad operacijskog sustava. Zanimljiva datoteka koja se

nalazi u paketu za DIR-615 je skripta koja pokreće Telnet, a nalazi se na putanji:

DIR615Q2_GPL1702b01/templates/aries/dlob.hans/dir615/rc/init0.S80telnetd.

sh

Bitni dijelovi sadržaja datoteke prikazani su u Isječku 3.1

Page 10: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

8

#!/bin/sh

orig_devconfsize=`devconf dump | scut -p "Data size :" -f 1`

mfc_mode=`devdata get -e mfcmode`

echo [$0]: $1 … > /dev/console

if [ "$1" = "start"]; then

if [ "$orig_devconfsize" = "0" ] || [ "$orig_devconfsize" = ""] ||

[ "mfc_mode" = "1"]; then

if [ -f "/usr/sbin/login" ]; then

image_sign=`cat /etc/config/image_sign`

telnetd -l /usr/sbin/login -u

Alphanetworks:$image_sign -i br0 &

else

telnetd &

fi

fi

else

killall telnetd

fi

Isjeĉak koda 3.1. DIR-615 telnetd skripta

Zbog retka telnetd -l /usr/sbin/login -u Alphanetworks:$image_sign -i br0

& može se pretpostaviti da je korisničko ime Alphanetworks. Upisivanjem

Alphanetworks u Telnet klijent vidi se da je ime valjano te Telnet traži lozinku.

Ponovno promatrajući isti redak skripte vidi se da je lozinka spremljena u varijabli

image_sign, što je vjerojatno string ili sažetak (engl. hash) kojim je potpisan

ugrađeni operacijski sustav. Pokretanjem naredbe $ grep -r "image_sign" u

direktoriju DIR615Q2_GPL1702b01 ispisuje se između ostaloga i sljedeći redak:

Makefile: $(Q)echo

$(ELBOX_CONFIG_SIGNATURE)>$(TARGET)/etc/config/image_sign

Dalje, naredbom $ grep -r "ELBOX_CONFIG_SIGNATURE" dobije se sljedeći

bitan dio ispisa:

Vars.mk: ELBOX_CONFIG_SIGNATURE := $(ELBOX_SIGNATURE)

Page 11: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

9

Otvaranjem datoteke Vars.mk vidi se da varijabla ELBOX_SIGNATURE ima više

definicija uključujući i sljedeću:

ELBOX_SIGNATURE := $(shell echo $(ELBOX_BOARD_NAME)_$(ELBOX_BRAND_NAME)_

(ELBOX_MODEL_NAME)

Daljnjim pretraživanjem pronalaze se vrijednosti navedenih varijabli:

ELBOX_BOARD_NAME="wrgn85"

ELBOX_BRAND_NAME="dlob.hans"

ELBOX_MODEL_NAME="dir615"

ELBOX_MODEL_NAME očito označava model D-Link usmjeritelja.

Napokon, lozinka za Telnet je wrgn85_dlob.hans_dir615. Do istoga rezultata

moglo se doći i pokretanjem naredbe strings (ili neke od drugih naredbi koje

omogućavaju pregled sadržaja binarnih datoteka) nad ugrađenim operacijskim

sustavom usmjeritelja s obzirom na to da je prvi redak ispisa

signature=wrgn85_dlob.hans_dir615. Osim programa potrebnih za izgradnju

operacijskog sustava, na stranici D-Linka nalazi se i verzija operacijskog sustava

koja odgovara onoj na usmjeritelju, 17.02, pod nazivom

DIR615Q2_FW1702b01.bin.

Nakon prijave Telnetom mogu se saznati neke informacije o sklopovlju i

programskoj podršci usmjeritelja.

Naredba $ uname -a ispisuje verziju operacijskog sustava.

Linux dlinkrouter 2.6.30.9 #1 Fri Sep 12 09:40:43 CST 2014 rlx GNU/Linux

Usmjeritelj očito koristi Linux, s inačicom jezgre 2.6.30.9. Zanimljiva je i

arhitektura, rlx. Pokušaj pokretanja lscpu naredbe ne uspijeva jer sustav koristi

BusyBox, no podatci o procesoru mogu se saznati korištenjem naredbe $ cat

/proc/cpuinfo čiji je ispis prikazan u nastavku.

Page 12: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

10

system type : RTL819xD

processor : 0

cpu model : 52481

BogoMIPS : 52481

hardware watchpoint : no

tlb_entries : 32

mips16 implemented : yes

Procesor je RTL819xD, a s obzirom na redak u kojem piše MIPS16 implemented,

procesor je MIPS arhitekture. Zatim, naredbom $ free dobije se sljedeći ispis:

total used free shared buffers

Mem: 26196 22312 3884 0 2160

Swap: 0 0 0

Vidi se da radni spremnik usmjeritelja ima približno 26 MB. Veličina spremnika je

bitna jer novije verzije OpenWrta ne rade na uređajima koji imaju manje od 16MB

radnog spremnika. Više podataka moguće je dobiti naredbom $ cat

/proc/meminfo.

Naredbom $ cat /proc/interrupts

CPU0

2: 0 RLX cascade(0x0)

8: 20720 RLX LOPI serial(0x20)

11: 73075 RLX LOPI wlan0 (0x20)

12: 2075 RLX LOPI eth0(0x20)

13: 154152 RLX LOPI rlx timer (0x620)

vidimo da usmjeritelj osim mrežnih sučelja ima i serijska vrata.

Na kraju, pokretanjem naredbe $ ls /bin/ potvrđuje se da usmjeritelj koristi

BusyBox.

Page 13: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

11

Zbog otvorenih wdbrpc vrata na Siemens usmjeritelju, očito je da usmjeritelj koristi

VxWorks operacijski sustav za rad u stvarnom vremenu. Također, na internetu je

moguće pronaći javno poznate ranjivosti u servisu wdbrpc, od kojih jedna

omogućava ispis cijelog sadržaja radnog spremnika sustava. Ispis spremnika

može se pretraživati ručno ili jednostavnije, strings naredbom na UNIX sustavima.

Pretraživanjem je moguće pronaći base64 kodirano korisničko ime i lozinku za

prijavu na web sučelje, admin:epicrouter, a iste je moguće pronaći i pretraživanjem

preko interneta [6].

3.1.2. Prikupljanje informacija na druge naĉine

Osim preko mreže, podatci se mogu prikupiti direktnim povezivanjem sklopovlja na

računalo, najčešće koristeći JTAG ili serijska vrata. Jednostavan ali koristan način

otkrivanja podataka o sklopovlju u uređaju je rasklapanje uređaja te čitanje natpisa

na čipovima. DIR-615 sadrži čipove Winbond w9825G6KH-6, RTL8196E i

RTL8192ER. Za Siemensov usmjeritelj moguće je uočiti CPU Conexant CX82310

i RAM Hynix HY57V641620HG. Kako Hynixov spremnik ima manje od 16MB [7],

novije verzije OpenWrta neće raditi pa je u nastavku opisan samo postupak

prikupljanja dodatnih informacija o sustavu.

Za čipove i usmjeritelja vrijedi potražiti službeni Software Development Kit (SDK),

pa je tako za DIR-615 moguće SDK pronaći na stranicama SourceForgea [8]. SDK

sadrži OpenWrt sa zakrpama za različite čipove serije RTL819x, a između

ostaloga i za RTL8196E koji se nalazi u DIR-615. Ako SDK nije moguće pronaći,

valja potražiti postoje li barem upravljački programi za čipove koje uređaj sadrži.

Ako driveri ne postoje može se potražiti upravljačke programe za slične čipove ili

samostalno napisati potrebne upravljačke programe. Na internetu je moguće

pronaći besplatnu literaturu koja opisuje postupak pisanja upravljačkih programa

za Linux, koja može poslužiti prilikom modifikacije postojećih upravljačkih

programa ili pisanja vlastitih [9].

Page 14: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

12

3.2. Izgradnja OpenWrta

Preporučuje se OpenWrt izgraditi na Linuxu ili barem nekoj drugoj varijanti UNIX

sustava, s obzirom na neke nekompatibilnosti na Windows sustavima. Daljnji

primjeri odnosit će se na 64 bitnu verziju Linux sustava zasnovanih na Debian

Linuxu. Treba pročitati i službene upute za instalaciju na stranicama OpenWrt

wikija [10]. Prije same izgradnje OpenWrta treba instalirati sve programske

preduvjete. Osim ručne izgradnje iz izvornih datoteka, za neke uređaje moguće je

ako postoje, koristiti otprije izgrađene verzije OpenWrta. Prije izgradnje sustava

dobro je imati predznanje o izgradnji Linux jezgre i make alatu. Kako su izvorni

kodovi Linuxa i GNU makea javno dostupni, mnoštvo literature dostupno je

besplatno na internetu.

S obzirom na to da OpenWrt podržava DSL-584T, potrebno je samo preuzeti

paket za izgradnju OpenWrta te ručno, naredbom Make izgraditi operacijski

sustav.

Za slučaj DIR-615 usmjeritelja koristi se OpenWrt iz RTL819x SDK-a. Ako se

koristi 64 bitni sustav za izgradnju OpenWrta, nužno je instalirati 32 bitne verzije

biblioteka i ostatka programske podrške potrebne za pokretanje 32 bitnih izvršnih

datoteka na 64 bitnim sustavima. Ako potrebni programi nisu dostupni, proces

izgradnje neće uspjeti, no nigdje se eksplicitno neće navesti da nedostaje 32 bitna

podrška. Najčešće se javlja greška No such file or directory za 32 bitnu datoteku

koja se pokušava pokrenuti.

Realtekov SDK sadrži datoteku pod nazivom UserGuide u kojoj je opisan

postupak izgradnje OpenWrta za neki od čipova koje SDK podržava. Osim

UserGuidea u direktoriju je nakon otpakiravanja moguće pronaći izvorni kod

potreban za pokretanje sustava, dokumentaciju, otprije izgrađene verzije

OpenWrta za neke verzije čipova (no ne za 8196e koji se nalazi u DIR-615) te

izvorni kod i konfiguracijske datoteke potrebne za ručnu izgradnju OpenWrta.

Kao i kod uobičajenog postupka izgradnje prvo je potrebno osvježiti popis

dodataka (engl. feed) te zatim instalirati željene dodatke. U slučaju Realtekovog

SDK-a updateanjem i instaliranjem instaliraju se dodatne zakrpe te upravljački

programi potrebni za rad čipa, tako da je najbolje izvršiti naredbe dane u

UserGuideu, nakon pozicioniranja u direktorij SDK-a:

Page 15: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

13

$ ./scripts/feed update -a i $ ./scripts/feed install -a.

Nakon toga treba kopirati OpenWrt konfiguraciju prilagođenu čipu za koji se gradi

OpenWrt. Za DIR-615 potrebno je izvršiti naredbu

$ cp rtk_defconfig/defconfig_rtl8196e .config.

Dalje treba make naredbom izgraditi OpenWrt te po želji promijeniti konfiguraciju

OpenWrta i Linux jezgre. UserGuide spominje pdf dokumentaciju naziva

OpenWrt_realtek_SDK_ApplicationNote u kojoj su navedene posebne opcije u

konfiguracijama koje je potrebno uključiti za valjanu izgradnju sustava, no u

slučaju 8196e čipa izgradnja je uspješna i bez mijenjanja konfiguracije.

Nakon uspješne izgradnje operacijski sustav je moguće pronaći na

lokaciji ./bin/realtek. Osim za izgradnju OpenWrta koji je dio SDK-a, SDK se može

iskoristiti za izgradnju novije verzije OpenWrta, tako da se iskoriste upravljački

programi koji inače nisu dio OpenWrta ili Linuxa, a nalaze se u SDK-u.

U slučaju izgradnje za QEMU, potrebno je preuzeti Openwrt izvorni kod, osvježiti

popis dodataka i instalirati željene dodatke. Nakon toga naredbom make

menuconfig odabere se željena platforma, u slučaju QEMU emulatora MIPS Malta

CoreLV board (qemu). Za neke platforme treba odabrati i endianness. Uz pomoć

izbornika koji se otvori moguće je odabrati dodatne pakete koji će biti uključeni u

operacijski sustav. Nakon završetka konfiguracije potrebno je izvršiti naredbu make

kojom se izgradi slika operacijskog sustava.

3.3. Upisivanje vlastitog operacijskog sustava

Sljedeći korak je upisivanje (engl. flashing) operacijskog sustava na uređaj.

Operacijski sustav je moguće upisati na više načina a najjednostavnije je koristiti

web sučelje koje nudi većina mrežnih uređaja. Osim preko weba, operacijski

sustav se može upisati preko FTP-a, serijskih vrata ili JTAG-a.

3.3.1. Upisivanje na D-Link DIR-615

Nakon uploadanja izgrađenog OpenWrt operacijskog sustava web sučelje javlja

grešku, Invalid image file. Please select the correct image file and upload it again.

Page 16: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

14

Držanjem tipke reset 30 sekundi dok je usmjeritelj upaljen, zatim daljnjim držanjem

još 30 sekundi i istovremenim gašenjem i ponovnim paljenjem usmjeritelja,

usmjeritelj ulazi u emergency mode. IP adresu računala potrebno je postaviti na

192.168.0.2 te se zatim može pristupiti emergency sučelju na adresi 192.168.0.1.

Svrha emergency načina rada je upload operacijskog sustava na usmjeritelj kada

je trenutni operacijski sustav oštećen te nije moguće pokrenuti usmjeritelja.

Međutim uploadanjem operacijskog sustava preko emergency sučelja ponovno se

javlja ista greška.

Otvaranjem službenog operacijsokg sustava u hex editoru (npr. xxd na Linuxu)

dobije se ispis operacijskog sustava u heksadecimalnoj bazi, prikazan u isječku

3.2 .

0000000: 5ea3 a417 0000 0024 0000 0000 7369 676e ^......$....sign

0000010: 6174 7572 653d 7772 676e 3835 5f63 6c6f ature=wrgn85_dlo

0000020: 622e 6861 6e73 5f64 6972 3631 3500 0000 b.hans_dir615...

0000030: 5ea3 a417 0000 0024 0036 d020 96a4 d816 ^......$.6. ….

0000040: df7d b843 0ded 79e9 797f e27b 6465 763d .}.C..y.y..{dev=

0000050: 2f64 6576 2f6d 7464 626c 6f63 6b2f 3100 /dev/mtdblock/1.

0000060: 7479 7065 3d66 6972 6d77 6172 6500 0000 type=firmware...

0000070: 6373 3662 8050 0000 0004 0000 0010 5c02 cs6b.P........\.

Isjeĉak koda 3.2. heksadecimalni ispis operacijskog sustava

Heksadecimalnim ispisom datoteke operacijsokg sustava Openwrt dobije se:

0000000: 6373 3663 8050 0000 0001 0000 003b 2ff0 cs6c.P.......;/.

Jedna od razlika je u stringovima cs6c i cs6b koji se nalaze na počecima datoteke

operacijskog sustava. Izmjenom bajtova OpenWrt datoteke u cs6b i pokušajem

ponovnog uploada opet se javlja greška invalid image. Isto se dogodi i za

pokušaj uploada operacijskog sustava kojem je dodan cijeli početak datoteke

originalnog operacijskog sustava, uključujući i signature tekst.

Page 17: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

15

U objavljenom izvornom kodu za izgradnju službenog operacijskog sustava nalazi

se datoteka tools_firmware.php koja se poslužuje otvaranjem stranice za upload

novog operacijskog sustava na usmjeritelj. Datoteka se nalazi na putanji

DIR615Q2_GPL1702b01/DIR615Q2_GPL1702/templates/aries/dlob.hans/htdocs/

web/tools.php

Datoteka sadrži sljedeći redak:

include "/htdocs/webinc/templates.php";

Pretraživanjem templates.php nalazi se samo jedan redak u kojem se spominje

string firmware pa se upload operacijskog sustava očito odvija negdje drugdje.

Prilikom prijave greške na web sučelju moguće je uočiti sljedeći url:

http://192.168.0.1/tools_fw_rlt.php?RESULT=FAIL&REASON=ERR_INVALID_SE

AMA&PELOTA_ACTION=fwupdate

Pretraživanjem direktorija htdocs naredbom $ grep -r fwupdate pronalazi se

datoteka tools_fw_rlt.php no jedini koristan dio koda prikazan je u isječku 3.3.

if ($_GET["PELOTA_ACTION"]=="fwupdate")

{

if ($_GET["RESULT"]=="SUCCESS")

{

}

}

else

{

$message = "'".i18n("Invalid image file.")." ".i18n("Please select

the correct image file and upload it again.")."', ".$btn;

}

Isjeĉak 3.3 ispis dijela datoteke tools_fw_rlt.php

Page 18: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

16

Pretraživanjem izvornog direktorija za izgradnju operacijskog sustava za stringom

fwupdate vidi se da se na više mjesta spominje program /usr/sbin/fwupdater, neki

put zajedno s datotekom /var/firmware.seama.

Ponovnim spajanjem na usmjeritelj Telnetom i ispisom sadržaja direktorija

/usr/sbin moguće je pronaći fwupdater u tom direktoriju. Datoteku fwupdater

moguće je naći u paketu za izgradnju službenog operacijskog sustava u

prebuild/usr/sbin direktoriju, no datoteka je zapravo meki link na datoteku

/htdocs/cgibin, koja sadrži više spojenih izvršnih datoteka usmjeritelja.

Prije analize strojnog koda treba provjeriti dozvoljavaju li uvjeti korištenja analizu

koda. U slučaju DIR-615, uvjeti korištenja nisu došli s usmjeriteljem, no moguće ih

je pronaći u dokumentu s garancijom koji se nalazi na stranici za preuzimanje

operacijskog sustava [11]. Kako uvjeti korištenja ne dozvoljavaju analizu strojnog i

rekonstrukciju izvornog koda, dalje će biti opisan općeniti postupak.

Analiza i rekonstrukcija izvornog koda mogu biti dug posao, pa vrijedi prvo probati

modificirati datoteku operacijskog sustava tako da je provjera valjanosti

operacijskog sustava uvijek uspješna. Ako postoji paket za izgradnju službenog

operacijskog sustava, može se izgraditi operacijski sustav s izmijenjenom

provjerom valjanosti. Ako paket ne postoji, moguće je koristiti sliku za nadogradnju

sustava. Uz pomoć alata binwalk može se analizirati struktura slike operacijskog

sustava [12]. Binwalk može otkriti i raspakirati kompresirane datotečne sustave

koji su često dio slika operacijskog sustava.

Osim binwalka odličan alat za analizu i izmjenu slika operacijskog sustava je

firmware mod kit [13]. Firmware mod kit omogućava razdvajanje slike na dijelove,

otpakiravanje kompresiranih sustava te ponovnu izgradnju slike operacijskog

sustava. Firmware mod kit sadrži niz postojećih alata otvorenog koda kao binwalk,

te skriptu extract-firmware.sh koja analizira sliku i razdvaja različite dijelove. Nakon

otpakiravanja može se pretražiti datotečni sustav operacijskog sustava.

Page 19: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

17

Datoteku koja sadrži funkciju za provjeru valjanosti slike operacijskog sustava

najlakše je izmijeniti koristeći alat objdump za odgovarajuću arhitekturu, te bilo koji

hex uređivač. Najlakše je kod funkcije zamijeniti kodom koji odmah izlazi iz

funkcije i vraća rezultat koji označava da je operacijski sustav valjan. Za mips

arhitekturu početak funkcije treba zamijeniti s instrukcijom addu v0, zero, zero čiji

je opcode 0x00001021 i instrukcijom jr $ra čiji je opcode 0x03e0008. Izmjenom

datoteke funkcija će u registar v0 (u koji se obično sprema povratna vrijednost)

spremiti broj 0 (koji označava da je funkcija završila bez greške), te se odmah

vratiti u funkciju iz koje je pozvana.

Nakon izmjene datoteke treba ponovno izgraditi sliku. Najlakše je koristiti skriptu

build-firmware.sh koja dolazi s Firmware mod kitom. Moguće je i ručno sastaviti

sliku kompresiranjem otpakiranog datotečnog sustava s istim algoritmom kojim je

originalno bio kompresiran.

Ako se izmijenjeni operacijski sustav ne može upisati, treba analizirati postupak

provjere valjanosti i rekonstruirati izvorni kod. Ovisno o arhitekturi procesora

usmjeritelja, mogu se koristiti različiti alati. Radare2 je alat otvorenog koda koji je

namijenjen analizi strojnog koda i podržava različite procesorske arhitekture,

između ostalog ARM i MIPS [14]. S obzirom na složenost radare2, jednostavnije je

koristiti objdump za statičku analizu a gdb debugger za dinamičku analizu u

QEMU emulatoru. Osim analize strojnog koda, vrijedi pokušati upisati stariju

verziju službenog operacijskog sustava te nakon toga upisati OpenWrt, s obzirom

na to da je moguće da starije verzije operacijskog sustava nemaju provjeru

valjanosti prilikom upisivanja novog operacijskog sustava.

3.3.2. Upisivanje na DSL-584T

Prilikom pokretanja usmjeritelja, usmjeritelj prvih par sekundi čeka dolazeće FTP

veze [15]. Adresa na kojoj usmjeritelj sluša može biti različita od one na kojoj se

usmjeritelj nalazi nakon što je pokretanje gotovo. Početnu adresu može se saznati

spajanjem preko Telneta nakon što je usmjeritelj završio s pokretanjem,

korisničkim imenom i lozinkom admin te ispisom sadržaja datoteke /proc/ticfg/env.

Kako bi se upisao novi operacijski sustav potrebno je postaviti statičku IP adresu i

podatke o usmjeravanju na računalu s kojeg se šalje operacijski sustav, te

ponovno pokrenuti usmjeritelj i spojiti se na FTP poslužitelj korisničkim imenom i

lozinkom adam2.

Page 20: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

18

Cijeli postupak opisan je na OpenWrt wikiju. Na Linux sustavima može se dogoditi

da prilikom slanja operacijskog sustava naredbom put slanje stane pa se umjesto

Linuxa može koristiti Windows XP FTP klijent. Ako slanje stane na Linuxu, treba

probati pokrenuti FTP klijent s root privilegijama. Ako slanje i dalje ne uspijeva

vrijedi probati isključiti TCP F-RTO za retransmisije. Prilikom upisivanja treba paziti

na raspored particija uređaja, jer zbog krivih postavki može doći do blokiranja

(engl. bricking) usmjeritelja.

3.3.3. Pokretanje u QEMU emulatoru

Emulacija OpenWrta detaljno je opisana na OpenWrt wikiju [16].Naredbom qemu-

system-mipsel -kernel openwrt-malta-le-vmlinux-initramfs.elf -nographic -m 256

pokrenut će se emulator te učitati izgrađena slika operacijskog sustava. Ako se

želi koristiti tvrdi disk potrebno je dodati zastavicu -hda disk gdje je disk lokacija

datoteke diska. Treba provjeriti koja verzija QEMU-a je instalirana jer kod

korištenja nekih Linux sustava dolazi do kernel panica u emulatoru kod nekih

starijih verzija QEMU-a. U tom slučaju potrebno je skinuti noviju verziju paketa ili

ručno izgraditi noviji QEMU emulator.

Prilikom pokretanja sustava za prijavu potrebno je stisnuti tipku enter. Dok se ne

postavi lozinka za root account sustav će biti u posebnom stanju u kojem su

upaljeni DNS, DHCP, telnet i SSH serveri no nije upaljen bežični internet.

Postavljanjem lozinke naredbom passwd ugasit će se telnet daemon. Nakon

postavljanja lozinke potrebno je konfigurirati sustav. Osim konfiguracije preko

naredbenog retka moguće je instalirati web sučelje koristeći opkg upravitelj

paketa. Naredbom opkg update osvježava se popis dostupnih datoteka a opkg

install pkgname instalira se program naziva pkgname. Za instaliranje web sučelja

potrebno je izvršiti naredbu opkg install luci. Osim sučelja luci moguće je koristiti i

druga sučelja. Nakon instalacije, na web sučelje se prijavi s korisničkim imenom

root i praznom lozinkom. Preporučuje se kao za račun na routeru postaviti lozinku

za račun web sučelja. Konfiguracija se dalje može provesti koristeći web sučelje ili

naredbeni redak. Dodatne pakete moguće je instalirati koristeći opkg.

Page 21: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

19

4. ZAKLJUĈAK

U ovom radu opisan je postupak prenošenja i upisivanja OpenWrt sustava te neki od problema koji se javljaju prilikom prenošenja. Postupak je prikazan na primjeru D-Link DIR-615, D-Link DSL-584T i Siemens C-010-i usmjeritelja. Na temelju opisanog postupka može se zaključiti da složenost postupka ovisi o mnogo čimbenika.

Ako se OpenWrt želi početi koristiti brzo i jednostavno, najisplativije je unaprijed pogledati s kojim uređajima sustav već radi te koristiti jedan od podržanih uređaja. Prilikom odabira uređaja koji će se koristiti, bitno je obratiti pažnju na različite modele te razlike u sklopovlju, s obzirom na to da je moguće da svi modeli nisu podržani.

Ako uređaj nije podržan postupak može biti jednostavan ako je proizvođač objavio neslužbenu prilagođenu verziju OpenWrta za sustav ili OpenWrt podržava slične sustave. Najveći problem su najčešće stariji uređaji na kojima ne radi ni Linux, kao recimo Siemens C-010-i. Za takve uređaje trebalo bi prvo prenijeti Linux na uređaj te zatim i OpenWrt. U takvom slučaju ako se želi koristiti OpenWrt, vjerojatno se više isplati nabaviti drugi uređaj, s obzirom na vrijeme koje je potrebno uložiti u prenošenje.

Još jedan od problema koji se može pojaviti je neuspjeh prilikom upisivanja OpenWrta na podržane uređaje koji imaju noviji operacijski sustav, ako taj operacijski sustav provjerava valjanost operacijski sustav slike koja se upisuje. U tom slučaju, ovisno o uvjetima korištenja, moguće je analizirati strojni kod koji izvršava provjeru ili probati upisati stariju verziju službenog operacijskog sustava pa zatim OpenWrt.

Page 22: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

20

LITERATURA

1. OpenWrt Wiki, http://wiki.openwrt.org/, 2017/6/3 17:48

2. Table of Hardware, http://wiki.openwrt.org/toh/start, 2017/6/3 19:32 3. D-Link DIR-615, http://wiki.openwrt.org/toh/d-link/dir-615, 2017/6/3 19:40

4. Hardware Hacking First Steps, 2017/6/3 20:32, http://wiki.openwrt.org/doc/devel/hw.hacking.first.steps

5. D-Link Technical Support, http://tsd.dlink.com.tw/downloads2008list.asp?SourceType=download&OS=GPL, 2017/6/3 20:40

6. Shiny Old VxWorks Vulnerabilities

https://community.rapid7.com/community/metasploit/blog/2010/08/02/shiny-

old-vxworks-vulnerabilities 2017/6/3 22:05

7. HY57V641620HGT, http://www.hynix.com/datasheet/eng/consumer/details/consumer_01_HY57V641620HGT.jsp, 2017/6/3 21:18

8. RTL819X, https://sourceforge.net/projects/rtl819x/, 2017/6/3 21:20

9. Linux Device Drivers, https://lwn.net/Kernel/LDD3/, Greg Kroah-Hartman

2017/6/3 18:02

10. OpenWrt Build System, http://wiki.openwrt.org/doc/howto/buildroot.exigence,

2017/6// 21:10

11. Warranty Document

http://www.dlink.com/pt/pt/-/media/warranties/eu_warranty_guide.pdf 2017/6/3

23:15

12. Binwalk | Firmware Analysis Tool http://binwalk.org/ 2017/6/3 18:24

13. Firmware mod kit https://code.google.com/archive/p/firmware-mod-kit/

2017/6/3 22:05

14. radare https://radare.org/r/ 2017/6/3 16:25

15. D-Link DSL-5xxT and DSL-G6xxT – ADAM2 Installation Guide

https://wiki.openwrt.org/toh/d-link/dsl-5xxt-6xxt-adam2, 2017/6/3 19:29

16. OpenWrt in QEMU https://wiki.openwrt.org/doc/howto/qemu 2017/6/3 21:03

Page 23: ZAVRŠNI RAD br. 4813 Prenošenje operacijskog sustava ...sustave ne postoje ključni dijelovi programske podrške. Ako ne postoji neki od upravljačkih programa, potrebno je napisati

21

SAŢETAK

Prenošenje operacijskog sustava OpenWrt na mreţne ureĊaje

Ovaj rad opisuje postupak prenošenja OpenWrt sustava na nove mrežne uređaje instalaciju na podržane uređaje, te neke od mogućih problema koji se mogu pojaviti pri prijenosu. Postupak je opisan na primjerima D-Link DIR-615, D-Link DSL-584T i Siemens C-010-i usmjeritelje.

Kljuĉne rijeĉi: završni rad, OpenWrt, prenošenje, mrežni uređaji

SUMMARY

Title: Porting OpenWrt Operating System on Network Devices

This bachelor thesis describes the process of porting OpenWrt onto new devices, the process of flashing OpenWrt, and some of the problems that might arise during porting. The D-Link DIR-615, D-Link DSL-584T and Siemens C-010-i routers are used as examples.

Keywords: bachelor thesis, OpenWrt, porting, network devices