Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Razlike

Slijede razlike između dviju inačica stranice.

Poveznica na ovu usporedbu

Starije izmjene na obje strane Starija izmjena
Novija izmjena
Starija izmjena
racfor_wiki:mrezna_forenzika:bpf_tehnologija [2020/01/09 12:27]
ksalamun [Primjena u analizi datotečnog sustava]
racfor_wiki:mrezna_forenzika:bpf_tehnologija [2024/12/05 12:24] (trenutno)
Redak 17: Redak 17:
 ===== Uvod ===== ===== Uvod =====
  
-Berkeley Packet Filter (BPF) tehnologija početno je razvijena u svrhu poboljšanja rada alata za primanje i obradu paketa mrežnog prometa. Nakon značajnih promjena osnovne inačice, BPF tehnologija postaje napredan alat za analizu i filtriranje mrežnog prometa i kao takva uključena je u jezgru operacijskog sustava Linux (engl. //kernel//).  + 
 +Berkeley Packet Filter (BPF) tehnologija početno je razvijena u svrhu poboljšanja rada alata za primanje i obradu paketa mrežnog prometa. Nakon značajnih promjena osnovne inačice, BPF tehnologija postaje napredan alat za analizu i filtriranje mrežnog prometa i kao takva uključena je u jezgru operacijskog sustava Linux.  
  
 Kako bi se iskoristile prednosti moderne arhitekture računala, uvedena je proširena BPF tehnologija - eBPF (engl. //extended BPF//). Pripadni instrukcijski set prilagođen je na procesore suvremenih računala, što znatno poboljšava performanse. Proširena BPF tehnologija bit će opisana u sljedećem poglavlju. Važno je napomenuti da nakon proširenja funkcionalnosti BPF prestaje biti skraćenica naziva alata za filtriranje, već naziv tehnologije. Pod nazivom BPF podrazumijeva se set instrukcija proširene BPF tehnologije. Kako bi se iskoristile prednosti moderne arhitekture računala, uvedena je proširena BPF tehnologija - eBPF (engl. //extended BPF//). Pripadni instrukcijski set prilagođen je na procesore suvremenih računala, što znatno poboljšava performanse. Proširena BPF tehnologija bit će opisana u sljedećem poglavlju. Važno je napomenuti da nakon proširenja funkcionalnosti BPF prestaje biti skraćenica naziva alata za filtriranje, već naziv tehnologije. Pod nazivom BPF podrazumijeva se set instrukcija proširene BPF tehnologije.
Redak 23: Redak 24:
 BPF se sastoji od instrukcijskog seta, struktura podataka i pomoćnih funkcija. S obzirom da ima virtualni instrukcijski set, BPF se može smatrati virtualnim strojem. BPF arhitektura bit će detaljnije opisana u poglavlju //Opis arhitekture// BPF se sastoji od instrukcijskog seta, struktura podataka i pomoćnih funkcija. S obzirom da ima virtualni instrukcijski set, BPF se može smatrati virtualnim strojem. BPF arhitektura bit će detaljnije opisana u poglavlju //Opis arhitekture//
  
-Otkako je BPF tehnologija postala široko primjenjiva, razvijeni su mnogi alati za analizu različitih računalnih podsustava: procesora, memorije, datotečnih sustava, mreža, hypervisora i mnogih drugih. S obzirom da se BPF alati najčešće primjenjuju za analizu mrežnog prometa, poglavlje //Primjena BPF alata// bit će fokusirano na primjenu u mrežnom podsustavu, a bit će opisana i primjena u analizi rada procesora i datotečnog sustava. +Otkako je BPF tehnologija postala široko primjenjiva, razvijeni su mnogi alati za analizu različitih računalnih podsustava: procesora, memorije, datotečnih sustava, mreža, hypervisora i mnogih drugih. S obzirom da se BPF alati najčešće primjenjuju za analizu mrežnog prometa, poglavlje //Primjena BPF alata// bit će fokusirano na primjenu u mrežnom podsustavu, a bit će opisana i primjena u analizi rada procesora i datotečnog sustava. Izvorni kodovi svih opisanih alata mogu se pronaći u [[https://github.com/brendangregg/bpf-perf-tools-book|GitHub repozitoriju autora]].
  
  
Redak 83: Redak 84:
 **opensnoop** **opensnoop**
  
-Alat opensnoop prati operacije otvaranja datoteka (sistemski poziv //open//) i koristan je za otkrivanje podatkovnih i konfiguraicijskih datoteka te dnevnika. Moguće je otkriti i probleme uzrokovane učestalim otvaranjem datoteka. U nastavku je naveden primjer korištenja naredbe. U ispisu se može uočiti utjecaj naredbe ispis datoteke (cat) na testnu datoteku.+Alat ''opensnoop '' prati operacije otvaranja datoteka (sistemski poziv ''open '') i koristan je za otkrivanje podatkovnih i konfiguraicijskih datoteka te dnevnika. Moguće je otkriti i probleme uzrokovane učestalim otvaranjem datoteka. U nastavku je naveden primjer korištenja naredbe. U ispisu se može uočiti utjecaj naredbe ispis datoteke (''cat '') na testnu datoteku.
  
 <code> <code>
Redak 97: Redak 98:
 **scread** **scread**
  
-Pomoću alata scread moguće je pratiti operacije čitanja datoteka (sistemski poziv //read//). Ime datoteke dohvaća se iz tablice deskriptora datoteka.+Pomoću alata ''scread '' moguće je pratiti operacije čitanja datoteka (sistemski poziv ''read ''). Ime datoteke dohvaća se iz tablice deskriptora datoteka.
  
 <code> <code>
Redak 111: Redak 112:
 **filelife** **filelife**
  
-Alat filelife služi za utvrđivanje vijeka trajanja datoteka za datoteke koje su stvorene tijekom praćenja. Ispisuje vrijeme proteklo od stvaranja datoteke do brisanja.  +Alat ''filelife '' služi za utvrđivanje vijeka trajanja datoteka za datoteke koje su stvorene tijekom praćenja. Ispisuje vrijeme proteklo od stvaranja datoteke do brisanja.  
-Radi ilustracije u primjeru je naveden dio ispisa alata filelife tijekom prevođenja Linux jezgre. U ispisu se mogu uočiti privremene datoteke koje generira prevoditelj gcc.+Radi ilustracije u primjeru je naveden dio ispisa alata ''filelife '' tijekom prevođenja Linux jezgre. U ispisu se mogu uočiti privremene datoteke koje generira prevoditelj gcc.
  
 <code> <code>
Redak 129: Redak 130:
 U nastavku su navedeni uobičajeni koraci analize datotečnog sustava: U nastavku su navedeni uobičajeni koraci analize datotečnog sustava:
  
-1. identifikacija montirane datotečne sustave (naredba df i [[http://man7.org/linux/man-pages/man8/mount.8.html|mount]])+1. identifikacija montirane datotečne sustave (naredba ''df '' i [[http://man7.org/linux/man-pages/man8/mount.8.html|mount]])
  
 2. provjera kapaciteta montiranih datotečnih sustava 2. provjera kapaciteta montiranih datotečnih sustava
Redak 143: Redak 144:
 7. ispitati raspodjelu latencije datotečnog sustava (alat [[http://www.brendangregg.com/blog/2016-10-06/linux-bcc-ext4dist-ext4slower.html|ext4dist]]) 7. ispitati raspodjelu latencije datotečnog sustava (alat [[http://www.brendangregg.com/blog/2016-10-06/linux-bcc-ext4dist-ext4slower.html|ext4dist]])
  
-8. utvrditi udio pogodaka priručne memorije koristeći alat [[http://www.brendangregg.com/blog/2014-12-31/linux-page-cache-hit-ratio.html|cachestat]]+8. utvrditi udio pogodaka priručne memorije (alat [[http://www.brendangregg.com/blog/2014-12-31/linux-page-cache-hit-ratio.html|cachestat]])
  
-9. usporediti brzinu logičkih i fizičkih ulazno/izlaznih operacija alatom vfsstat (pod pretpostavkom da je korištenje priručne memorije učinkovito, logičke operacije su očekivano brže).+9. usporediti brzinu logičkih i fizičkih ulazno/izlaznih operacija alatom ''vfsstat '' (pod pretpostavkom da je korištenje priručne memorije učinkovito, logičke operacije su očekivano brže).
  
  
Redak 156: Redak 157:
 **execsnoop** **execsnoop**
  
-Alat execsnoop prati izvođenje novih procesa, a koristan je za detekciju kratkotrajnih procesa koje je teško uočiti korištenjem alata kao što je top.  U nastavku naveden je dio ispisa alata execsnoop pri pokretanju programskog okruženja Vivado.+Alat ''execsnoop '' prati izvođenje novih procesa, a koristan je za detekciju kratkotrajnih procesa koje je teško uočiti korištenjem alata kao što je ''top ''.  U nastavku je naveden dio ispisa alata execsnoop pri pokretanju programskog okruženja //Xilinx Vivado//.
  
 <code> <code>
Redak 163: Redak 164:
 TIME    PID    ARGS TIME    PID    ARGS
 22114   16594  /opt/Xilinx/Vivado/2018.3/bin/vivado 22114   16594  /opt/Xilinx/Vivado/2018.3/bin/vivado
 +21983   15494  /opt/Xilinx/Vivado/2018.3/bin/loader -exec vivado
 </code> </code>
  
Redak 168: Redak 170:
 **runqlat** **runqlat**
  
-Alat runqlat služi za mjerenje latencije raspoređivača. Ova karakteristika korisna je za definiranje zasićenja procesora, stanja u kojem ima više zahtjeva za resursima nego što se može obraditi. Kao što je vidljivo u primjeru, rezultat naredbe je histogram koji pokazuje  koliko vremena dretve provedu u stanju čekanja. U ovom slučaju, dretve većinu vremena čekaju između 16 i 126 mikrosekundi.+Alat ''runqlat '' služi za mjerenje latencije raspoređivača. Ova karakteristika korisna je za definiranje zasićenja procesora, stanja u kojem ima više zahtjeva za resursima nego što se može obraditi. Kao što je vidljivo u primjeru, rezultat naredbe je histogram koji pokazuje  koliko vremena dretve provedu u stanju čekanja. U ovom slučaju, dretve većinu vremena čekaju između 16 i 126 mikrosekundi.
  
 <code> <code>
Redak 193: Redak 195:
 ==== Primjena u analizi mrežnog prometa ==== ==== Primjena u analizi mrežnog prometa ====
  
-Mrežni promet odvija se putem različitih slojeva i protokola, uključujući aplikacije, sistemske pozive, protokole TCP ili UDP i IP te upravljačke programe za mrežno sučelje. Rad svake navedene komponente može se pratiti pomoću alata koje pruža BPF. Tradicionalni alati za analizu mrežnog prometa oslanjaju se na dohvat paketa. BPF alati pružaju detaljnije informacije te daju odgovore na sljedeća pitanja:+Mrežni promet odvija se putem različitih slojeva i protokola, uključujući aplikacijski sloj, sistemske pozive, protokole TCP ili UDP i IP te upravljačke programe za mrežno sučelje. Rad svake navedene komponente može se pratiti pomoću alata koje pruža BPF. Tradicionalni alati za analizu mrežnog prometa oslanjaju se na dohvat paketa. BPF alati pružaju detaljnije informacije te daju odgovore na sljedeća pitanja:
  
   * Koje TCP veze su pokrenute? Od strane kojih procesa?   * Koje TCP veze su pokrenute? Od strane kojih procesa?
Redak 208: Redak 210:
 **sockstat** **sockstat**
  
-Pomoću alata sockstat moguće je ispisati statistiku priključaka uz broj sistemskih poziva vezanih uz priključke. Ispis se ponavlja za svaku proteklu sekundu. U ovom primjeru vidljivi su sistemski pozivi ''sock_sendmsg() '' i ''sock_recvmsg() ''+Pomoću alata ''sockstat '' moguće je ispisati statistiku priključaka uz broj sistemskih poziva vezanih uz priključke. Ispis se ponavlja za svaku proteklu sekundu. U ovom primjeru vidljivi su sistemski pozivi ''sock_sendmsg() '' i ''sock_recvmsg() ''
  
-Ovaj alat pruža uvid u statistiku priključaka na visokoj razini i koristan je za pokretanje daljnje analize. U ispis je uključen i naziv ispitivača (engl. probe) kako bi se olakšala analiza. Primjerice, ako je uočen prevelik broj ''kprobe:sock_sendmsg() '' događaja, proces se može dohvatiti pomoću sljedeće naredbe:+Ovaj alat pruža uvid u statistiku priključaka na visokoj razini i koristan je za pokretanje daljnje analize. U ispis je uključen i naziv ispitivača (engl. //probe//) kako bi se olakšala analiza. Primjerice, ako je uočen prevelik broj ''kprobe:sock_sendmsg() '' događaja, proces se može dohvatiti pomoću sljedeće naredbe:
  
 <code> <code>
Redak 223: Redak 225:
 **sofamily** **sofamily**
  
-Alat sofamily omogućuje praćenje novih povezivanja na priključke putem sistemskih poziva accept i connect. Također, navodi se naziv procesa i obitelj adresa (IPv4 ili IPv6). Alat je koristan za detekciju neočekivane uporabe priključaka. U nastavku je naveden primjer korištenja ovog alata.+Alat ''sofamily '' omogućuje praćenje novih povezivanja na priključke putem sistemskih poziva ''accept '' ''connect ''. Također, navodi se naziv procesa i obitelj adresa (IPv4 ili IPv6). Alat je koristan za detekciju neočekivane uporabe priključaka. U nastavku je naveden primjer korištenja ovog alata.
  
 <code> <code>
Redak 234: Redak 236:
 </code> </code>
  
-U uglatim zagradama je navedeno redom: ime procesa, broj obitelji adresa te ime obitelji adresa, ukoliko je poznata. Ovakvo mapiranje brojeva adresnih obitelji specifično je za Linux i definirano je u zaglavlju include/linux/socket.h. U ovom primjeru je tijekom pokretanja alata bio aktivan web preglednik, stoga su vidljivi DNS zahtjevi. +U uglatim zagradama je navedeno redom: ime procesa, broj obitelji adresa te ime obitelji adresa, ukoliko je poznata. Ovakvo mapiranje brojeva adresnih obitelji specifično je za Linux i definirano je u zaglavlju ''include/linux/socket.h ''. U ovom primjeru je tijekom pokretanja alata bio aktivan web preglednik, stoga su vidljivi DNS zahtjevi. 
  
 **soprotocol** **soprotocol**
  
-Pomoću alata soprotocol također je moguće pratiti nova povezivanja na priključke, ali osim naziva procesa navodi se i protokol koji je korišten. +Pomoću alata ''soprotocol '' također je moguće pratiti nova povezivanja na priključke, ali osim naziva procesa navodi se i protokol koji je korišten. 
  
 **socketio** **socketio**
  
-Alat socektio omogućuje ispis količine ulazno/izlaznih transakcija na priključcima. Također, ispisuje se količina prenesenih podataka po pojedinom procesu i smjeru. +Alat ''socektio '' omogućuje ispis količine ulazno/izlaznih transakcija na priključcima. Također, ispisuje se količina prenesenih podataka po pojedinom procesu i smjeru. 
  
-U ovom primjeru proces systemd-resolve, PID 706, obavio je 10 pisanja s ukupno 364 okteta podataka. Podaci o čitanju i pisanju dobivaju se praćenjem jezgrenih funkcija sock_read_iter() i sock_write_iter() koje spadaju u [[https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s03.html|file_operations strukturu]] koja pripada pojedinom priključku. +U ovom primjeru proces ''systemd-resolve '', PID 706, obavio je 10 pisanja s ukupno 364 okteta podataka. Podaci o čitanju i pisanju dobivaju se praćenjem jezgrenih funkcija ''sock_read_iter() '' ''sock_write_iter() '' koje spadaju u [[https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s03.html|file_operations strukturu]] koja pripada pojedinom priključku. 
  
 <code> <code>
Redak 269: Redak 271:
  
 [3] [[http://www.brendangregg.com/blog/index.html|Brendan Gregg's Blog ]] [3] [[http://www.brendangregg.com/blog/index.html|Brendan Gregg's Blog ]]
 +
 +[4] [[https://lwn.net/Articles/437981/|Corbet, J. A JIT for packet filters. 2011.]]
 +
 +[5] [[https://lwn.net/Articles/787856/|Corbet, J. BPF: what's good, what's coming, and what's needed. 2019.]]
  
  
racfor_wiki/mrezna_forenzika/bpf_tehnologija.1578572836.txt.gz · Zadnja izmjena: 2024/12/05 12:23 (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