Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Analiza procesa operativnog sustava Linux

Sažetak

Detekcija i analiza zlonamjernih programa započinje analizom radne memorije, dok je sama memorija tvrdog diska manje bitna. U radnoj memoriji su pohranjeni podaci pokrenutih procesa. Ovim seminarom opisat ćemo ukratko nastanak procesa, njihove tipove i strukturu. Prikazat ćemo neke od programa namijenjenih analizi i kontroli procesa operacijskog sustava Linux.

Ključne riječi: procesi; Linux; terminal; analiza;

Uvod

Kada pričamo o detekciji zlonamjernih programa i analizi malwarea, memorija pohranjena na tvrdom disku nije toliko bitna (osim u slučajevima utvrđivanja slijeda događaja). Jezgra operacijskog sustava kao i svi ostali pokrenuti programi unutar sustava pohranjeni su u radnoj memoriji. Radna memorija jedino je mjesto u sustavu gdje se mogu pronaći nekriptirani podaci samih procesa, također je moguće pronaći kriptografske ključeve.

Procesi u sustavima baziranim na Linuxu organizirani su u niz susjednih podatkovnih struktura, tj. spremnike kreirane za pokrenute programe. Oni sadrže sve potrebno za izvršavanje programa, uključujući preslike izvršnih datoteka, poveznice za vanjske module (.so objekte), varijable, podatke o pokretanju itd. Procesi imaju unaprijed definiranu logičku strukturu, a najjednostavniji prikaz je dan donjom slikom (Slika 1) [4].

Slika 1: Logička struktura procesa

Procesi u operativnom sustavu Linux

Izvršavanjem programa na sustavu pogonjenom Linux operativnim sustavom, sustav stvara posebno okruženje za taj program. To okruženje možemo nazvati proces. Proces je naziv za program u izvođenju. Sastavljen je od programskih instrukcija, podataka pročitanih iz datoteka, drugih programa ili ulaznih instrukcija dobivenih od korisnika sustava.

Procesi se mogu svrstati u dvije skupine [1,2]:

  • interaktivni procesi; Svi procesi pokrenuti korisnikovim ulaznim naredbama su interaktivni procesi. Ulazne podatke dobiva od korisnika, te rezultate izvođenja prikazuje na ekranu.
  • pozadinski procesi; Procesi koji nisu vezani uz terminal nazivaju se pozadinskim procesima. Kada se pojavi potreba za ulaznim podacima od strane korisnika proces čeka iste, dok samo izvođenje uglavnom nije vezano uz korisnika i ulazne naredbe. Posebna vrsta pozadinskih procesa su daemon procesi. Oni se pokreću za vrijeme pokretanja sustava, a izvođenje se nastavlja do kraja rada sustava; ne gase se. Oni se pokreću kao sustavni zadaci/usluge, a korisnik ima mogućnost kontrolirati ih putem „roditeljskog” (eng. init) procesa.

Novi procesi uobičajeno nastaju kada već postojeći proces kopira sam sebe u memoriji. Proces djeteta imat će istu okolinu kao i roditelj, a samo identifikacijski broj se razlikuje među njima.

Najčešći korišteni načini stvaranja procesa unutar Linuxa su:

  • System() funkcija - relativno jednostavna metoda, ali neefikasna i donosi velike sigurnosne rizike
  • fork() i exec() funkcije - naprednije metode; sigurnije, brže i fleksibilnije.

Svaki proces u izvođenju treba biti moguće jednoznačno identificirati, za to se koriste ID procesa (PID) i ID roditeljskog procesa (PPID).

Ovime možemo podijeliti procese u dvije kategorije:

  1. Roditeljski procesi – Procesi koji stvaraju druge procese za vrijeme svog izvođenja
  2. Procesi djece – Procesi koji su stvoreni od strane drugih procesa za vrijeme izvođenja

Proces roditelj svim procesima naziva se init() proces. To je prvi program koji je izveden za vrijeme pokretanja sustava baziranog na Linuxu; upravlja svim ostalim procesima. ID procesa init uvijek je 1, te „posvaja” sve procese bez roditelja.

Proces za vrijeme svoga izvođenja može mijenjati stanja (Slika 2):

  1. Running (u izvođenju) – proces u izvođenju ili spreman za izvođenje(čeka na dodjelu CPU-a)
  2. Waiting (čeka) – čeka na pojavu događaja ili dodatne resurse. Imamo prekidne i neprekidne procese u čekanju.
  3. Stopped (zaustavljeni) – proces je zaustavljen, najčešće dobivanjem signala (npr. CTRL+Z)
  4. Zombie – proces je završio (eng. halted) ali i dalje postoji u tablici procesa.

Slika 2: Stanja procesa

Alati za analizu

Naredbe ps, top i glances

Dva najčešće korištena alata za pregled pokrenutih procesa su ps i top terminal naredbe.

Naredba ps [3, 6] (Slika 3) prikazuje informacije o aktivnim procesima sustava. Pokretanjem naredbe ps bez dodavanja opcija, ispisuje se standardi obliku; ispisuje četiri vrijednosti za pojedini proces: njegov PID, TTY (terminal koji je pokrenuo proces), vrijeme korištenja procesora i CMD (naredba koja je pokrenula proces). Po završetku ispisa podataka proces naredbe ps se terminira.

Neke od opcija pokretanja naredbe ps su:

  • -a - ispisuje procese svih korisnika
  • -u - dodatne informacije o svakom procesu
  • -x - ispisuje procese bez kontrolnog terminala (npr. daemon procese)

Slika 3: Naredba ps

Naredba top [7] (Slika 4) dinamički u stvarnom vremenu daje uvid u aktivne procese i njihovo zauzeće resursa. Jedna je od najkorisnijih naredbi sistemskih administratora i dolazi instalirana na svim distribucijama Linuxa. Za razliku od naredbe ps, naredba top je interaktivna te omogućava pretraživanje kroz liste procesa, “ubijanje” procesa i slično. Kod ispisa u zaglavlju vidljivi su podaci kao trenutno vrijeme, vrijeme sustava u radu, zauzeće radne i swap memorije, broj pokrenutih procesa na sustavu i opterećenje procesora.

Neke od opcija naredbe top:

  • M - sortiranje po korištenju memorije
  • P - sortiranje po zauzeću procesora
  • N - sortiranje po identifikacijskom broju procesa
  • T - sortiranje po vremenu rada
  • R - obrnuti redoslijed ispisa
  • k - naredba za “ubijanje” procesa
  • -H - ispis dretvi umjesto procesa

Slika 4: Naredba top

Naredba glances [5] (Slika 5) najnovija je od gore navedenih naredbi. Jedna od funkcija je naglašavanje procesa koji zauzimaju najviše resursa. Na samom vrhu ispisanih podataka ispisane su privatna i javna IP adresa računala, proteklo vrijeme od pokretanja sustava te zauzeće memorije i procesora. Lijevo su ispisani informacije o prometu mreže, diskovi i senzori temperature sustava. Desna strana prikazuje pokrenute procese i informacije o njima (kao što su zauzeće memorije i procesora, identifikacijski broj…). Naredba glances se koristi vizualnim identificiranjem problema korisniku:

  • zelena boja - sigurno
  • plava boja - obratiti pažnju, resurs bi mogao izazvati probleme kasnije
  • ljubičasta boja - upozorenje
  • crvena boja - kritično stanje promatranog resursa

Neke od interaktivnih naredbi:

  • c - sortiranje procesa po zauzeću procesora
  • m - sortiranje procesa po zauzeću memorije
  • b - ispis podataka mreže u bitovima i bajtovima
  • 1 - zauzeće pojedine jezgre ili cjelokupnog procesora
  • [Enter] - pretraživanje procesa

Slika 5: Naredba glances

Naredbe kill, pkill, killall, pgrep

Linux također dozvoljava upravljanje procesima.

Naredba kill (Slika 6) terminira proces; to jest ako proces ignorira regularni način gašenja, kill -9 [PID] će odraditi posao.

Dok naredba kill terminira proces zadan PID-om, naredbom pkill moguće je terminirati proces zadavanjem naziva ili drugih atributa. Naredba killall također šalje signale procesu definiranom imenom.

Pronalazak PID-a određenog procesa moguće je naredbom pgrep. S obzirom na zadane kriterije pretrage (npr. naziv ili drugi atributi) ispisuje PID procesa.

Osnovni način kontroliranja procesa je slanjem signala. Slanje tih signala moguće je gore navedenim naredbama kill, pkill, killall naredbama, ali programi mogu odgovarati na signale jedino ako su tako programirani.
Popis signala dobivamo naredbom kill -l.

Slika 6: Naredba kill

Najčešće korišteni signali su:

  • SIGHUP – šalje se procesu kada je njegov kontrolni terminal zatvoren
  • SIGINT – šalje ga terminal procesu kada korisnik prekine izvođenje naredbom CTRL+C
  • SIGQUIT – prosljeđuje se procesu nakon korisnikova prekida naredbom CTRL+D
  • SIGKILL – ovaj signal odmah prekida rad procesa
  • SIGTERM – signal za terminaciju procesa
  • SIGTSTP – zahtjev za prekidom rada, pokreće ga korisnik naredbom CTRL+Z

Procesi se razlikuju po prioritetu; što je prioritet veći proces dobiva više vremena na CPU-u. Taj prioritet također je moguće mijenjati. Naredbom nice moguće je pokrenuti proces te definirati njegov prioritet, a naredba renice omogućava promjenu postojećeg prioriteta nekog procesa.

Zaključak

Analiza rada pokrenutih programa započinje identifikacijom njegovih procesa. Ovim radom
probali smo opisati osnovnu teoriju nastanka i „života“ procesa, te identifikaciju i analizu
istih.
U osnovi analiza pokrenutih procesa provodi se u svrhu identifikacije problematičnih
procesa te njihove eliminacije.
Korištenjem osnovnih metoda navedenih u radu moguće je detektirati problematične
procese te reagirati u skladu s problemom.

Literatura

racfor_wiki/datoteke_i_datotecni_sustavi/analiza_procesa_operacijskog_sustava_linux.txt · Zadnja izmjena: 2023/06/19 18:17 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0