17
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINAR FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKA Roko Zubčić Zagreb, siječanj 2018.

FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINAR

FORENZIKA MICROSOFT SQL SERVER

BAZE PODATAKA

Roko Zubčić

Zagreb, siječanj 2018.

Page 2: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg
Page 3: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

1

Sadržaj

Uvod ...................................................................................................................................... 2

1. Organizacija baze podataka ........................................................................................... 3

2. SQL Server Audit .......................................................................................................... 4

2.1. SQL Server Audit .................................................................................................. 4

2.2. Server Audit Specification..................................................................................... 5

2.3. Database Audit Specification ................................................................................ 6

2.4. Pristup Audit zapisima .......................................................................................... 7

3. Temporalne tablice ........................................................................................................ 9

4. SQL Server Profiler ..................................................................................................... 10

5. ApexSQL Log ............................................................................................................. 11

Zaključak ............................................................................................................................. 14

Literatura ............................................................................................................................. 15

Page 4: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

2

Uvod

Baze podataka su gotovo neizostavan element svakog složenijeg programskog rješenja.

Microsoft SQL Server je sustav za upravljanje relacijskim bazama podataka koji pruža

trajnu pohranu podataka te efikasan pristup istim. Također, omogućava i konkurentan

višekorisnički pristup uporabom vlastitog mehanizma zaključavanja kako bi sačuvao

integritet baze podataka. Zbog osjetljivosti podataka koje sadrži, baza podataka je često

meta zlonamjernih napada. Administratori baza podataka bi trebali provoditi sigurnosnu

politiku, te ovisno o potrebama, različitim korisnicima dodjeljivati minimalne potrebne

razine prava za njihovo uspješno obavljanje predviđenih poslovnih aktivnosti. Ako se u

nekom trenutku u sustavu evidentiraju nepravilnosti koje su bazu podataka dovele u

nekonzistentno stanje potrebno je detektirati kako je do tih nepravilnosti došlo te pokrenuti

postupak obnove kako bi sustav nesmetano mogao nastaviti s radom. U ovom radu će biti

prikazani osnovni mehanizmi bilježenja događaja unutar sustava kako bi se isti mogli

iskoristiti u eventualnoj forenzičkoj analizi.

Page 5: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

3

1. Organizacija baze podataka

Svaka SQL Server baza podataka je pohranjena unutar minimalno dvije datoteke

operacijskog sustava. Prva je primarna podatkovna datoteka koja sadrži podatke o

objektima unutar baze podataka poput tablica, indeksa ili procedura. Druga datoteka je

dnevnik transakcija koji sadrži podatke potrebne za obnovu transakcija i dovođenje baze u

konzistentno stanje. Primarna podatkovna datoteka se može organizirati pomoću dodatnih,

korisnički definiranih sekundarnih datoteka. Na taj način se može izbjeći problem

povećanja baze podataka gdje bi primarna datoteka prelazila najveću moguću dopuštenu

veličinu definiranu datotečnim sustavom.

Microsoft SQL ServerDatabase Engine

.mdf .ldf

Database3

.mdf .ldf

Database2

.mdf .ldf

Database1

Slika 1 Arhitektura SQL Server baze podataka

Osim transakcijskog dnevnika, instanca SQL Server baze podataka vodi i dnevnik

pogrešaka (SQL Server Error Log) u kojem se pohranjuju sistemski i korisnički definirani

događaji. Prilikom svakog pokretanja SQL Servera stvara se nova ERRORLOG datoteka u

koju se pohranjuje dnevnik pogrešaka, a istovremeno se čuva posljednjih šest.

Page 6: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

4

2. SQL Server Audit

Zakonska regulativa nalaže da se u nekim slučajevima provodi nadzor nad aktivnostima

djelatnika u sustavu. Takav nadzor može pomoći da se ustanovi je li došlo do neželjenih

aktivnosti te kako da se njihov učinak neutralizira.

SQL Server Audit je funkcionalnost koja omogućava praćenje i bilježenje svih događaja na

serveru, bilo promjena postavki servera, prijavljivanja korisnika na sustav ili rada s bazom

podataka na način da se mijenjaju strukture podataka (tablice, indeksi) odnosno vrši

manipulacija podataka (unos, izmjena ili brisanje zapisa).

Za korištenje funkcionalnosti potrebno je definirati sljedeće komponente:

SQL Server Audit

Server Audit Specification

Database Audit Specification

2.1. SQL Server Audit

SQL Server Audit objekt se stvara na razini instance SQL Servera i može ih biti više. Za

svaki audit objekt potrebno je definirati ime, lokaciju za pohranu informacija o događajima

te kako da server reagira u slučaju nemogućnosti bilježenja događaja. Ako se kao lokacija

odabere proizvoljan direktorij na disku, onda je potrebno odrediti veličinu i broj datoteka

koje se mogu koristiti. Nakon što se iskoristi maksimalna dodijeljena veličina diska, zapisi

o novim događajima prepisuju najstarije (rollover tehnika). Za lokaciju pohrane zapisa

može se odabrati i Security Log ili Application Log. U slučaju pogreške, odnosno

nemogućnosti bilježenja informacije o događaju, može se odrediti da server nastavi s

radom uz mogućnost prihvaćanja ili odbijanja izvršavanja operacije koja je pogrešku i

uzrokovala, a moguće je i podesiti da server u potpunosti prestane s radom. Može se

definirati i period od vremena događaja do vremena njegovog evidentiranja gdje vrijednost

0 predstavlja sinkrono vođenje evidencije. Prije pohrane zapisa moguće je izvršiti

proizvoljno filtriranje te tako još više suziti izbor događaja koji se bilježe.

Page 7: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

5

Slika 2 Stvaranje Audit objekta

2.2. Server Audit Specification

Za svaki audit objekt dozvoljeno je definirati jednu specifikaciju na razini servera (Server

Audit Specification). Tom specifikacijom se definira koje događaje na razini instance

servera je potrebno bilježiti. Prilikom stvaranja nove serverske specifikacije potrebno je

definirati ime specifikacije, naziv audit objekta kojem pripada i kojim je zapravo određena

lokacija spremanja informacija o događajima te grupu događaja koji se bilježe. Naime,

događaji na razini servera su grupirani u tzv. Audit Action Groups pa specifikacija definira

koje grupe događaja je potrebno pratiti, a ne događaje pojedinačna.

Page 8: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

6

Slika 3 Definiranje specifikacije na razini servera

2.3. Database Audit Specification

Za svaki audit objekt je dozvoljeno definirati po jednu specifikaciju na razini svake baze

podataka (Database Audit Specification). Uz odabir naziva specifikacije i naziva audit

objekta potrebno je definirati i događaje koji se prate. Moguće je odabrati grupu događaja

kao što je to bio slučaj u serverskoj specifikaciji, međutim specifikacija na razini baze

podataka omogućava i odabir događaja na razini objekta ili korisnika, odnosno korisničke

grupe. Za svaki objekt se evidentira shema i ime objekta. Korisnike je moguće adresirati

individualno ili preko grupa kojima pripadaju, tako se na primjer public grupa odnositi na

sve korisnike sustava.

Page 9: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

7

Slika 4 Definiranje specifikacije na razini baze podataka

2.4. Pristup Audit zapisima

Alat SQL Server Management Studio omogućava pregled audit zapisa. Ako je kao način

pohrane audit objekta odabrana datoteka, njenom sadržaju je moguće pristupiti i pomoću

sljedeće SQL naredbe:

SELECT * FROM fn_get_audit_file('C:\RacFor\AuditRacFor*',default,default);

Slika 5 Pristup audit zapisima pomoću SQL naredbe

Page 10: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

8

Slika 6 Pregled audit zapisa pomoću SQL Server Management Studio alata

Ako je kao lokacija pohrane audit zapisa odabrana opcija Windows Security Log ili

Windows Application Log onda se zapisi mogu pregledati pomoću Event Viewer alata.

Slika 7 Pregled audit zapisa pomoću Event Viewer alata

Page 11: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

9

3. Temporalne tablice

Tablice u produkcijskoj bazi podataka najčešće odražavaju trenutno stanje. SQL Server

uvodi novitet po pitanju pohrane povijesnih vrijednosti u vidu temporalnih tablica (system-

versioned temporal table). Pomoću temporalnih tablica vrijeme valjanosti određenih zapisa

nije pod nadležnosti korisnika već isključivo sustava za upravljanje bazom podataka. Ovaj

mehanizam omogućava da se odredi kakvo je bilo stanje u bilo kojem trenutku prošlosti.

Temporalne tablice sadrže dva dodatna atributa tipa datetime2 kojima se bilježi vrijeme

valjanosti svakog zapisa i čijim vrijednostima upravlja sam sustav. Za svaku temporalnu

tablicu kreira se dodatna povijesna tablica u koju se spremaju nevažeći zapisi. Ona se

popunjava svaki put kada korisnik izmijeni ili izbriše neki aktivni zapis u glavnoj tablici

koja sadrži trenutno važeće zapise. U nastavku je dan prikaz kreiranja temporalne tablice

Ispit zajedno s pripadnom povijesnom tablicom IspitHistory:

CREATE TABLE dbo.Ispit ( [idPredmet] int NOT NULL , [idStudent] int NOT NULL , [Bodovi] float NOT NULL , [BodoviMax] float NOT NULL , [Ocjena] int NOT NULL , [ValidFrom] datetime2 (2) GENERATED ALWAYS AS ROW START , [ValidTo] datetime2 (2) GENERATED ALWAYS AS ROW END , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo) , CONSTRAINT PK_Ispit PRIMARY KEY NONCLUSTERED ([idPredmet], [idStudent]) , CONSTRAINT FK_Ispit_Predmet FOREIGN KEY ([idPredmet]) REFERENCES dbo.Predmet(idPredmet) , CONSTRAINT FK_Ispit_Student FOREIGN KEY ([idStudent]) REFERENCES dbo.Student(idStudent) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.IspitHistory));

Ako je potrebno dohvatiti zapise iz tablice ispit koji su bili važeći u nekom određenom

trenutku može se iskoristiti za to predviđena fraza FOR SYSTEM_TIME u FOR dijelu upita

kako je to prikazano u nastavku:

SELECT * FROM Ispit FOR SYSTEM_TIME

BETWEEN '2018-01-20 19:12:50.0000000' AND '2018-01-20 19:12:50.0000000'

Page 12: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

10

4. SQL Server Profiler

SQL Server Profiler je alat koji omogućava snimanje događaja koji se odvijaju na bazi

podataka. Prilikom pokretanja stvara se nova trace datoteka u kojoj se bilježe događaji.

Snimanje događaja je moguće po potrebi zaustavljati i nastavljati, a trace datoteku trajno

pohraniti na disk i naknadno analizirati. Za svaki događaj se bilježi vrijeme, tekst naredbe,

korisnik i aplikacija iz koje je naredba pokrenuta.

Slika 8 Prikaz SQL Server Profiler alata

Page 13: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

11

5. ApexSQL Log

ApexSQL Log je komercijalni alat koji krajnjem korisniku na razumljiv i vizualan način

prikazuje podatke te omogućava naprednu analizu dnevnika transakcija. Kod učitavanja

datoteke dnevnika moguće je postaviti brojne parametre kako bi se pobliže odredio opseg

pretrage. Tako je moguće odrediti vremenski period koji je zanimljiv za analizu, vrstu

operacija te odabrati skup objekata nad kojima su one izvršene.

Slika 9 ApexSQL Log - odabir operacija

Napredne postavke omogućavaju pretraživanje operacija čak i za otkazane (aborted) i

trenutne (running) transakcije te njihovo filtriranje ovisno o korisniku koji ih je inicirao i

minimalnom vremenu trajanju. Rezultate pretrage je moguće prikazati u interaktivnom

sučelju ili ih pohraniti u nekom od ponuđenih formata.

Page 14: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

12

Interaktivni prikaz nudi opciju dodatnog filtriranja inicijalno određenog seta operacija. Za

svaku se operaciju bilježi koji je njen tip (Insert, Rename Object, Create Table,…), nad

kojim je objekt pokrenuta, korisnik koji ju je inicirao, vrijeme početka i završetka

obavljanja te id transakcije kojoj pripada.

Za svaki tip operacije se može odabrati prikaz detalja gdje će u slučaju Insert naredbe biti

prikazani podaci novog zapisa koji je unesen, dok će u slučaju Update naredbe biti moguće

vidjeti vrijednosti svakog atributa prije i poslije same izmjene.

Slika 10 ApexSQL Log - prikaz detalja operacije

Alat omogućava kreiranje skripti za ponovno izvršavanje operacija odnosno poništavanje

njihovih efekata. Zanimljiva funkcionalnost je i generiranje takvih skripti za skup

odabranih operacija ili čak na razini transakcija čime se može u potpunosti poništiti njihov

efekt. Generirani kod je moguće pohraniti u nekom od prikladnih formata ili ga uz pomoć

interaktivnog sučelja izvršiti na samoj bazi podataka.

Page 15: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

13

Slika 11 ApexSQL Log - generiranje skripte za poništavanje skupa operacija

Page 16: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

14

Zaključak

Za uspješnu forenzičku analizu baze podataka potrebno je voditi evidenciju o aktivnostima

korisnika koje su kritične za poslovanje. Uz pohranu backup datoteka te vođenje dnevnika

transakcija SQL Server nudi i dodatne funkcionalnosti kojima se informacije o događajima

od interesa redundantno pohranjuju. SQL Server Audit funkcionalnost omogućava detaljno

specificiranje što i kako pratiti unutar sustava dok temporalne tablice omogućavaju

pohranu povijesnih zapisa. SQL Server Profiler je alat kojim se mogu u stvarnom vremenu

pratiti događaji na instanci servera. Za svaki događaj se bilježi korisnik koji ga je inicirao,

klijentsko računalo, aplikacija kao i tekst naredbe. ApexSQL Log omogućava interaktivan i

razumljiv pristup podacima iz dnevnika transakcija te generiranje potrebnih skripti za

poništavanje neželjenih efekata pojedinih operacija.

Page 17: FORENZIKA MICROSOFT SQL SERVER BAZE PODATAKAnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/rzubcic/seminar.pdf · Baze podataka su gotovo neizostavan element svakog složenijeg

15

Literatura

[1] STEYNBERG, M. Understanding the SQL Server Audit

https://www.sqlshack.com/understanding-sql-server-audit/ (Pristup 21.01.2018.)

[2] RUBOCKI, B. Auditing and Forensics with Temporal Tables in SQL Server 2016

https://bobrubocki.wordpress.com/2017/01/11/auditing-and-forensics-with-temporal-

tables-in-sql-server-2016/ (Pristup 21.01.2018.)

[3] APEXSQL SOLUTION CENTER. Tracking DDL changes in SQL Server – the ‘Trouble

with Triggers’

https://solutioncenter.apexsql.com/tracking-ddl-changes-in-sql-server-the-trouble-

with-triggers/ (Pristup 21.01.2018.)

[4] MICROSOFT DOCS. SQL Server Audit (Database Engine)

https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-

server-audit-database-engine (Pristup 21.01.2018.)

[5] MICROSOFT DOCS. Temporal Tables

https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables

(Pristup 21.01.2018.)

[6] MICROSOFT DOCS. SQL Server Profiler

https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler

(Pristup 21.01.2018.)