14
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINAR Analiza procesa učitavanja operacijskog sustava Mac Valerio Franković Voditelj: Doc. dr. sc. Predrag Pale Zagreb, siječanj, 2018.

Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINAR

Analiza procesa učitavanja operacijskog sustava Mac

Valerio Franković

Voditelj: Doc. dr. sc. Predrag Pale

Zagreb, siječanj, 2018.

Page 2: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

Sadržaj

1. Uvod ........................................................................................................................ 3

2. Boot ROM ................................................................................................................ 4

3. Bootloader ............................................................................................................... 5

4. Rooting .................................................................................................................... 6

5. Inicijalizacija sustava ............................................................................................... 7

6. Zaključak ............................................................................................................... 10

7. Literatura ............................................................................................................... 11

8. Appendix – Pregled arhitekture jezgre ................................................................. 12

Page 3: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

3

1. Uvod

U ovom radu obradit ću analizu procesa učitavanja operacijskog sustava Mac. Prilikom provjere postoji li koji zlonamjerni program na računalu, neophodno je provjeriti koji se programi izvedu prilikom učitavanja operacijskog sustava. Za uspješno obavljanje provjere, potrebno je razumjeti čitav proces. Mac OS ima svoj vlastiti proces učitavanja koji prolazi kroz određene faze, a sveukupno ih ima četiri: pokretanje Boot ROM-a, izvršavanje bootloadera, rooting i inicijalizacija sistema. U ovom seminaru objasnit ću svaki od tih koraka zasebno. Na kraju seminara se može pročitati i dodatak u kojemu se opisuje arhitektura jezgre, a služi za slučaj nerazumijevanja nekih pojmova.

Slika 1.1 Koraci učitavanja Mac OS-a

Page 4: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

4

2. Boot ROM

Odmah nakon pritiska na tipku "Power" aktivira se mali odsječak koda, tzv. firmware zvan Boot ROM. Boot ROM je dio hardvera, a ima dvije primarne odgovornosti:

• Inicijalizira sistemski hardver

• Bira koji će OS pokrenuti

Sastoji se od dviju komponenti kojima si pomaže s vršenjem tih dvaju funkcija:

a) POST (engl. Power-On Self Test) – inicijalizira neka hardverska sučelja, verificira da je dostupno dovoljno memorije i da je ona u dobrom stanju

b) EFI (engl. Extensible Firmware Interface) – uvodi osnovnu inicijalizaciju hardvera i odabire koji OS će koristiti. U slučaju da je dostupno više instalacija OS X-a, Boot ROM odabire onu koja je posljednja odabrana od strane Startup Disk System Preferencea. Taj izbor se može prebrisati držeći tipku "Option" prilikom paljenja računala što dovodi do EFI-jeva prikaza ekrana radi izabiranja boot sveska.

Proces izvršenja Boot ROM-a odvije se unutar nekoliko sekundi, a korisnik može vidjeti zacrnjeni ekran.

Page 5: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

5

3. Bootloader

Čim Boot ROM završi s radom, tj. nakon što odabere OS X particiju, kontrolu dodijeli bootloaderu boot.efi. Glavni posao bootloadera je učitati okruženje jezgre, a Bootloader boot.efi se može pronaći u direktoriju /System/Library/CoreServices na root particiji u datoteci zvanoj boot.efi.

Radi ubrzanja rada, bootloader koristi nekoliko priručnih memorija pri čemu radi potragu za jedinstvenom, već prije povezanom jezgrom ili drugim riječima, učitava esencijalne ekstenzije jezgre. Priručna memorija koristi sve ekstenzije potrebne za učitavanje Maca s bilo kojom hardverskom konfiguracijom i to s ekstenzijama koje su već povezane na jezgru, a nalazi se u datoteci /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache. Ako se pak priručne memorije ne mogu iskoristiti, bootloader pretražuje direktorij /System/Library/Extensions radi pronalaženja upravljačkih programa i onih ekstenzija čije je svojstvo OSBundleRequired postavljeno na vrijednost appropriate željenog tipa boota (primjerice lokalnog ili mrežnog). No, taj proces zahtjeva mnogo vremena jer se mora parsirati datoteka Info.plist svake ekstenzije, nakon čega još mora biti pokrenut i povezivač.

Korisnik može prepoznati bootloader fazu tako što se na ekranu prikaže Appleov logo. Ako je pak uključena FileVault enkripcija, tada bootloader nariše login prozor tražeći lozinku potrebnu za nastavak učitavanja ekstenzija.

Page 6: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

6

4. Rooting

Nakon što se učitani jezgra operacijskog sustava i svi upravljački programi potrebni za boot, bootloader pokreće inicijalizacijsku proceduru jezgre – boot.efi preda kontrolu učitanim ekstenzijama. U ovoj fazi učitano je dovoljno upravljačkih programa tako da jezgra može pronaći root uređaj. Jezgra operacijskog sustava inicijalizira Mach i BSD strukture podataka nakon čega se inicijalizira I/O kit. I/O Kit poveže učitane upravljačke programe u jezgru koristeći stablo uređaja radi određivanja koje upravljačke programe treba povezati. Nakon što jezgra pronađe root uređaj, s njega odroota BSD.

Bitno je spomenuti da se u slučaju dokumentacije kod Maca termin "boot" koristi za učitavanje bootloadera i jezgre s diska ili particije (u posljednje vrijeme se termin "boot" koristi za čitav proces počevši od početnog učitavanja sve dok se ne može koristiti od strane krajnjeg korisnika). Termin "root" se odnosi na mountanje particije kao root ili top-level datotečni sustav. Dakle, dok se OS učitava s root particije, prije nego li jezgra počne izvršavati skripte, odroota OS s particije. Mac OS koristi tehnologiju Boot≠Root, a ona dozvoljava sustavu da učitava iz particije koja nije root particija. Korisna je radi učitavanja sustava u kojima je root particija kriptirana koristeći full-disk enkripciju ili u slučajevima kada je root particija smještena na uređaju koji zahtjeva dodatne drivere. Koristi pomoćnu particiju radi čuvanja datoteka koje je potrebno učitati (primjerice priručnu memoriju jezgre operacijskog sustava).

Tijekom procesa rootinga korisnik na ekranu još uvijek vidi Appleov logo ispod kojega se nalazi loading bar koji prikazuje napredak.

Page 7: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

7

5. Inicijalizacija sustava

Ovaj korak počinje prikazom korisničke radne površine. Procesi root sustava preuzmu kontrolu od jezgre operacijskog sustava i započnu prvi nejezgrin proces koji se naziva Launchd, a nalazi se u direktoriju /sbin/. Identifikacijski broj procesa (PID) mu je 1 i pokreće se kao root proces roditelj koji pokrene nekoliko drugih "dječjih" procesa. Primarni posao procesa launchd je završiti s inicijalizacijom sustava i započeti sve ostale procese zadužene za stvaranje korisničkog sučelja i okoline.

Postoje četiri vrste pozadinskih programa u OS X-u, a razlika je napisana u tablici.

Tip Je li rukovođen launchd-om?

U kojem se kontekstu pokreće?

Može li prikazati UI?

Login stvari Ne Korisničkom Da

XPC servis Da Korisničkom Ne

Launch Daemon Da Sistemskom Ne

Launch Agent Da Korisničkom Nije preporučeno

Tablica 5.1 Vrste i detalji pozadinski procesi u OS X-u

Login stvari su pokrenute prilikom logina i nastavljaju s radom dok se korisnik ne logouta ili ih ručno ne prekine. Njihova primarna svrha bila bi dozvoliti korisnicima da automatski otvore često korištene primjenske programe. XPC servisi su rukovođeni launchd-om te pružaju usluge pojedinim primjenskim programima. Uglavnom se koriste da podijele primjenski program u manje dijelove radi poboljšanja pouzdanosti. Launch Daemons su rukovođeni launchd-om OS-om, ali u sistemskom kontekstu što znači da nisu svjesni prijavljenih korisnika. Ono što oni mogu napraviti jest odgovoriti na korisničke zahtjeve dok sami ne mogu direktno inicirati kontakt. Launch Agents se pokreću ovisno o trenutno prijavljenom korisniku. Mogu komunicirati s drugim procesima u istoj korisničkoj sjednici i sa daemonima širom sistema u sistemskom kontekstu.

Page 8: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

8

Slika 5.1 Daemoni i servisi pokreće launchd u dva različita konteksta sjednice

Inicijalizacija sustava završava launchd-ovim pokretanjem programa loginwindow. Čim se korisnik uspješno autentificira, loginwindow postavi korisničko okruženje i zabilježi informacije o loginu. Kao dio tog procesa, izvrši sljedeće zadatke:

• Osigura login sjednicu od neautoriziranog udaljenog pristupa.

• Zabilježi login u sistemskim utmp i utmpx bazama podatcima

• Postavi vlasnika i dozvole terminala konzole

• Resetira korisničke preference ako da uključe početne postavke globalnog sustava

• Konfigurira računalnog miša, tipkovnicu, i sistemski zvuk koristeći korisničke preference

• Postavlja dozvole korisničke grupe (gid)

• Povraća korisničke zapise sa Directory Servicesa i primjenjuje te informacije sjednici

• Učitava korisničko računsko okruženje (uključujući preference, varijable okoline, dozvole uređaja i datoteka, pristup keychainu, itd.)

• Pokreće Dock, Finder, i SystemUIServer

Page 9: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

9

• Pokreće Login stvari za korisnika

Login stvari se mogu pregledati odabirom Apple menu pa System Preferences nakon čega treba kliknuti Users & Groups i Login Stvari.

Trenutno pokrenute daemone na sistemu može se vidjeti primjenskim programom Activity Monitor (smješten u direktoriju /Application/Utilites). Osim programskim putem mogu se analizirati i ručnim putem. Kao dio inicijalizacije prolazi kroz sljedeće korake:

1. Učita parametre za svaki launch-on-demand daemon sistemske razine sa popisa datoteka svojstava koje nalazi u direktorijima /System/Library/LaunchDaemon/ i /Library/LaunchDaemon

2. Registrira sockete i opisnike datoteka koje ti daemoni zahtjevaju

3. Pokreće bilo koje daemone koji zahtjevaju da budu pokrenuti cijelo vrijeme

4. Kako dolaze zahtjevi za pojedinim servisima, pokreće odgovarajući daemon i predaje mu proces

5. Kada se sustav ugasi, pošalje SIGTERM signal svim daemonima koje je pokrenuo

Proces za korisničke agente je sličan procesu pokretanja daemona. Čim se korisnik ulogira, pokreće se korisnički launchd, a on radi sljedeće:

1. Učita parametre za svaki launch-on-demand u direktorijima /System/Library/LaunchAgents, /Library/LaunchAgents/ i individualnom korisničkom direktoriju Library/LaunchAgents

2. Registrira sockete i opisnike datoteka koje ti korisnički agenti zahtjevaju

3. Pokreće bilo koje korisničke agente koji zahtjevaju da budu pokrenuti cijelo vrijeme

4. Kako dolaze novi zahtjevi, pokreće odgovarajućega korisničkoga agenta i preda mu zahtjev

5. Čim se korisnik logouta, pošalje signal SIGTERM svim korisničkim agentima koje je pokrenuo

Page 10: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

10

6. Zaključak

Analiza procesa učitavanja operacijskoga sustava Mac osnovna je radnja provjere postoji li kakav zlonamjerni program na računalu. Nakon završetka čitanja, može se razumjeti da je teško hakirati, a time i analizirati Mac OS X budući da je OS zatvorenog tipa što čini kompliciranim provjeriavati razliku između standardne i postojeće datoteke zato što nisu javno dostupne, ali lako je provjeriti programe koji se pokreću nakon prijave u operacijski sustav, daemon programe i agente.

Sve u svemu, seminar je koristan zato što se stiče osnovno znanje o radu i učitavanju Mac OS X-a.

Page 11: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

11

7. Literatura

[1] The Early Boot Process, https://developer.apple.com/library/content/documentation/Darwin/Conceptual/KernelProgramming/booting/booting.html

[2] About Daemons and Services, https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html

[3] Understanding Mac boot process, http://www.hawkdive.com/2017/09/understanding-mac-boot-process.html

[4] Kernel Architecture Overview, https://developer.apple.com/library/content/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html

Page 12: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

12

8. Appendix – Pregled arhitekture jezgre

OS X pruža mnoge korisnosti korisnicima Macintosha i razvojnim zajednicama. Neki od tih korisnosti bi bili poboljšana pouzdanost i učinak, pojačana mrežna svojstva, objektno temeljiti sustav programskog sučelja i povećana podrška za industrijske standarde.

Slika 8.1 Arhitektura OS X-a

Procesi inače ne dijele memoriju – umjesto toga svakom procesu dodijeljen je vlastiti adresni prostor kontolirajući pristup tim adresnim prostorima. Ta kontrola osigurava kako niti nijedan pristupni program ne bi omaškom mogao pristupiti ili izmijeniti memoriju nekoga drugoga primjenskoga programa.

Sveukupno, primjenski programi pokrenuti su u korisničkom prostoru, no to ne znači da dijele memoriju. Korisnički pristup je jednostavno termin za sve miješane adresne prostore svih user-level primjenskih programa. Jezgra ima svoj vlastiti adresni prostor nazvan jezgreni prostor. U OS X-u niti jedan primjenski program ne može promijeniti memoriju sistemskog softvera (jezgre).

Darwin

OS X jezgra je Open Source projekt. Jezgra operacijskog sustava, zajedno s ostalim jezgrenim dijelovima kolektivno su nazvani Darwin. Darwin je kompletan operacijski sustav temeljen na mnogo istih tehnologija koje počivaju ispod OS X-a, no ne uključuje Appleovu vlasničku grafiku ili slojeve primjenskih programa poput Quartza, QuickTimea, Cocoa, Carbona ili OpenGL-a.

Page 13: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

13

Slika 8.2 Darwin i OS X

Tehnologija Darwin temelji se na BSD-u, Mach 3.0 i Appleovim tehnologijama. Dokazana je tehnologijama, a veliki dio je izveden iz FreeBSD-a

Arhitektura

Temeljni sloj Darwina i OS X-a sastoji se od nekoliko arhitekturnih komponenti. Te arhitekturne komponente čine okruženje jezgre operacijskog sustava.

Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a

OS X sadrži tri glavne komponente – Mach, BSD, i I/O Kit. Mach upravlja resursima procesorima poput korištenja CPU-a i memorija, rukovodi zakazivanjem rasporeda, pruža memorijsku zaštitu i pruža infrastrukturu usredotočenu na poruke ostatku slojeva operacijskih sustava. BSD se nalazi iznad sloja Macha, a pruža API-je i servise. I/O Kit pruža radni okvir za pojednostavljeni razvoj upravljačkih programa, podržavajući mnoge kategorije uređaja.

Page 14: Analiza procesa učitavanja operacijskog sustava Macnevena.lss.hr/recordings/fer/predmeti/racfor/2018/... · Slika 8.3 Arhitektura jezgre operacijskog sustava OS X-a OS X sadrži

14

Ekstenzije jezgre operacijskog sustava

OS X pruža mehanizam ekstenzija jezgre operacijskog sustava kao način dopuštanja dinamičkog učitavanja dijelova koda u jezgrin prostor bez potrebe za ponovnim prevođenjem. Ti dijelovi koda su općenito poznati kao plug-ini ili, u okruženju jezgre OS X-a, kao ekstenzije jezgre (engl. kernel extension), tj. KEXT. Budući da pružaju i modularnost i dinamičko učitavanje, prirodan su odabir za bilo koji samo-sadržavajući servis koji zahtjeva pristup sučeljima koji nisu izvezeni u korisnički prostor.