1/2/17
1
DigitalnaforenzikaAndrejBrodnik
OperacijskisistemUnix
poglavje18• razvojskozizgodovino:SystemV,HP-UX,BSD,...• kasnejesosepojaviliodprtokodneinačice:• Linux:RedHat,SUSE,Ubuntu,...• BSD:FreeBSD,OpenBSD,NetBSD
AndrejBrodnik:Digitalnaforenzika 2
Standardnadatotečnahierarhija
• Filesystem HierarchyStandard – FHS(http://www.pathname.com/fhs/pub/fhs-2.3.html)• deloprevzelaLinuxFoundation(http://www.linuxfoundation.org/collaborate/workgroups/lsb/fhs)• večinomaformalizacijaBSDdatotečnegasistema
AndrejBrodnik:Digitalnaforenzika 3
1/2/17
2
Korenskiimenik
• /boot:Staticfilesofthebootloader• /dev:Devicefiles• /etc:Host-specificsystemconfiguration• /etc/opt:Configurationfilesfor/opt• /etc/X11:ConfigurationfortheXWindowSystem(optional)• /etc/sgml :ConfigurationfilesforSGML(optional)• /etc/xml:ConfigurationfilesforXML(optional)
AndrejBrodnik:Digitalnaforenzika 4
� /bin:Essentialusercommandbinaries(forusebyallusers)
� /sbin :Systembinaries
� /lib:Essentialsharedlibrariesandkernelmodules
� /lib<qual>:Alternateformatessentialsharedlibraries(optional)
Korenskiimenik
AndrejBrodnik:Digitalnaforenzika 5
� /home:Userhomedirectories(optional)
� /root:Homedirectoryfortherootuser(optional)
� /media:Mountpointforremoveable media
� /mnt :Mountpointforatemporarilymountedfilesystem
� /opt:Add-onapplicationsoftwarepackages
� /srv :Dataforservicesprovidedbythissystem
� /tmp :Temporaryfiles
� /usr,/var :Separatehierachies
/usrimenik
• vsebujedatoteke,kisonamenjenesamobranju• jihuporabljajohkratirazličnisistemi• vnjemnajbinebilodatotek,kisospecifičnezadoločensistem• izjema:/usr/local,kijelokalniimenikdoločenegasistema
AndrejBrodnik:Digitalnaforenzika 6
1/2/17
3
/varimenik
• vsebujedatoteke,kisespreminjajoskozičas• poštneintiskalniškevrste• beležke(logging)• podatkovja(podatkovnebazeipd.)• začasnedatoteke
AndrejBrodnik:Digitalnaforenzika 7
Sistemskedatoteke
• operacijskisistemjezasnovantako,dasosistemskedatotekečlovekuprijazneè navadnebesedilnedatoteke• konfiguracijskedatoteke:hosts,syslog.conf,...
• običajnovimenikuetc(/etc,/usr/local/etc,/opt/etc,...)• beležke:mail,cups,...
• običajnovimenikulog(/var/log,/usr/local/var/log,/opt/var/log)
AndrejBrodnik:Digitalnaforenzika 8
Konfiguracijskedatoteke
#$FreeBSD:release/9.0.0/etc/snmpd.config2165952010-12-2017:28:15Zsyrinx $##Exampleconfigurationfileforbsnmpd(1).#
##Setsomecommonvariables#location:="Room200"contact:="[email protected]"system:=1#FreeBSDtraphost :=localhosttrapport :=162
##SettheSNMPengineID.##ThesnmpEngineID objectrequiredfromtheSNMPv3Framework.Ifnotexplicitlysetvia#thisconfigurationfile,anIDisassignedbasedonthevalueofthe#kern.hostid variable#engine:=0x80:0x10:0x08:0x10:0x80:0x25#snmpEngineID =$(engine)
AndrejBrodnik:Digitalnaforenzika 9
1/2/17
4
Beležke
Mar800:00:00svarun newsyslog[85254]:logfile turnedoverMar800:00:12svarun postfix/smtpd[85247]:connectfromS0106c0c1c0ddffcf.vf.shawcable.net[70.69.32.154]
Mar800:00:12svarun postfix/smtpd[85247]:NOQUEUE:reject:RCPTfromS0106c0c1c0ddffcf.vf.shawcable.net[70.69.32.154]:5545.7.1Serviceunavailable;Clienthost[70.69.32.154]blockedusingbl.spamcop.net;Blocked- seehttp://www.spamcop.net/bl.shtml?70.69.32.154;from=<[email protected]>to=<[email protected]>proto=ESMTPhelo=<deltamar.net>
Mar800:00:12svarun postfix/smtpd[85247]:lostconnectionafterDATAfromS0106c0c1c0ddffcf.vf.shawcable.net[70.69.32.154]
AndrejBrodnik:Digitalnaforenzika 10
Shrambapodatkovinskrivanje
• poenostavljenaorganiziranostdiskazdatotečnimsistemomFAT
AndrejBrodnik:Digitalnaforenzika 11
Datotečnisistemi
• imamoimenikeinindeksnavozlišča(inode)• inodeimapodobnofunkcijokotFATinMFThkrati• imenikjesamoposebnaoblikadatoteke• imamošeposebnedatoteke:povezave(links),cevovode(pipe),vtič(socket),...
AndrejBrodnik:Digitalnaforenzika 12
1/2/17
5
Datotečnisistemi
• najstarejši:UnixFileSystem– UFS• mlajšainuporabljenavsistemihLinux:ext2inext3• obstajatatudiextinext4
• obstajaševrstadrugihdatotečnihsistemov
AndrejBrodnik:Digitalnaforenzika 13
ČasvoperacijskemsistemuUnix
• čassemerivsekundah• hranisekotštevilo,kiimazačetek1.prosinca1970– epoch• čeječasshranjenkot32-bitnoštevilo,boprišlodoprelivavtorek,19.prosinca2038ob03:14:07UTC– Y2K38problem
• UTC– CoordinateUniversalTime:usklajenadefinicijačasa,kiupoštevaprestopnaleta,prestopnesekunde,...• 35.prestopnasekundasejezgodila30.rožnika2012• usklajenčasmedvečimiatomskimiurami• edenodnaslednikovGMT
AndrejBrodnik:Digitalnaforenzika 14
DatotečnisistemiUFS
• definiran,kojebiluvedenVFSvBSD4.2• uporabljenv*BSDsistemih• kasnejeuporabljenvSolarisOS
vir:SolarisInternals,TheUFSFileSystem,UpdatedbyFrankBatschulat,ShawnDebnath,SarahJelinek,Dworkin Muller,andKarenRochford
AndrejBrodnik:Digitalnaforenzika 15
1/2/17
6
UFS– indeksnovozlišče
struct dinode {u_int16_t di_mode; /* 0: IFMT, permissions; see below. */int16_t di_nlink; /* 2: File link count. */union {
u_int16_t oldids[2]; /* 4: Ffs: old user and group ids. */int32_t inumber; /* 4: Lfs: inode number. */
} di_u;u_int64_t di_size; /* 8: File byte count. */int32_t di_atime; /* 16: Last access time. */int32_t di_atimensec; /* 20: Last access time. */int32_t di_mtime; /* 24: Last modified time. */int32_t di_mtimensec; /* 28: Last modified time. */int32_t di_ctime; /* 32: Last inode change time. */int32_t di_ctimensec; /* 36: Last inode change time. */ufs_daddr_t di_db[NDADDR]; /* 40: Direct disk blocks. */ufs_daddr_t di_ib[NIADDR]; /* 88: Indirect disk blocks. */u_int32_t di_flags; /* 100: Status flags (chflags). */int32_t di_blocks; /* 104: Blocks actually held. */int32_t di_gen; /* 108: Generation number. */u_int32_t di_uid; /* 112: File owner. */u_int32_t di_gid; /* 116: File group. */int32_t di_spare[2]; /* 120: Reserved; currently unused */
}
ufs/dinode.h
AndrejBrodnik:Digitalnaforenzika 16
UFS– datotečnisistemi
AndrejBrodnik:Digitalnaforenzika 17
UFS– imeniškadatoteka
• posebnadatoteka,kisestojiizdelovimenika• SystemVjeimelpredoločenovelikostimenika• korenskiimenikjeopisanvinode2• vsakimenikimaposebenvnos..,kipove,kjejestarš
AndrejBrodnik:Digitalnaforenzika 18
1/2/17
7
UFS– imeniškivnos
#define MAXNAMLEN 255struct direct {u_int32_t d_ino; /* inode number of entry */u_int16_t d_reclen; /* length of this record */u_int8_t d_type; /* file type, see below */u_int8_t d_namlen; /* length of string in d_name */char d_name[MAXNAMLEN + 1];
/* name with length <= MAXNAMLEN */};
ufs/dir.h
AndrejBrodnik:Digitalnaforenzika 19
• Izziv: čemu jenamenjen zapis reclen?Setoda izkoristiti zaskrivanje podatkov?
• Izziv: kaj jetoACL?Kako je implementiran pri ufs?
UFS– nadblok
• nadblok(superblock)hraniopiskonfiguracijeskupinecilindrov• raztresenopodisku– nazačetkuvsakeskupinecilindrov• daseohraniknfiguracija,česeenzapisizgubi
• orodjedumpfs
• Izziv: poiščitestrukturonadbloka.Kakovemo,daimamoopravkazUFSdatotečnimsistemom?Kjetopiše?Preberitesuperblockzvašegaunixdatotečnegasistemainvnjemugotovite,zakateridatotečnisistemgre.
AndrejBrodnik:Digitalnaforenzika 20
Datotečnisistemext2
• osnovnastrukturapodobnakotpriufs• namestoskupincilindrov,govorimooskupinahblokov• imenikiinindeksnavozlišča– kotpriUFS
AndrejBrodnik:Digitalnaforenzika 21
1/2/17
8
Datotečnisistemext2
• orodjezapregledovanjediska:LinuxDiskEditor(LDE)(http://lde.sourceforge.net/)
AndrejBrodnik:Digitalnaforenzika 22
Datotečnisistemext2
AndrejBrodnik:Digitalnaforenzika 23
ext2– indeksnovozlišče
struct ext2_inode {__u16 i_mode; /* 0: File mode */__u16 i_uid; /* 2: Owner Uid */__u32 i_size; /* 4: Size in bytes */__u32 i_atime; /* 8: Access time */__u32 i_ctime; /* 12: Creation time */__u32 i_mtime; /* 16: Modification time */__u32 i_dtime; /* 20: Deletion Time */__u16 i_gid; /* 24: Group Id */__u16 i_links_count; /* 26: Links count */__u32 i_blocks; /* 28: Blocks count */__u32 i_flags; /* 32: File flags */__u32 l_i_reserved1; /* 36: OS dependent 1 */__u32 i_block[EXT2_N_BLOCKS];/* 40: Pointers to blocks */__u32 i_generation; /* 100: File version (for NFS) */__u32 i_file_acl; /* 104: File ACL */__u32 i_dir_acl; /* 108: Directory ACL */__u32 i_faddr; /* 112: Fragment address */__u8 l_i_frag; /* 116: Fragment number */__u8 l_i_fsize; /* 117: Fragment size */__u16 i_pad1; /* 118: */__u32 l_i_reserved2[2]; /* 120: OS dependent 2 */
};ext2fs/ext2_fs.h
AndrejBrodnik:Digitalnaforenzika 24
1/2/17
9
ext2– indeksnovozlišče
AndrejBrodnik:Digitalnaforenzika 25
Imeniškadatoteka
• posebnadatoteka,kisestojiizdelovimenika• SystemVjeimelpredoločenovelikostimenika• korenskiimenikjeopisanvinode2• vsakimenikimaposebenvnos..,kipove,kjejestarš
AndrejBrodnik:Digitalnaforenzika 26
ext2– imeniškivnos
#define EXT2FS_MAXNAMLEN 255struct ext2fs_direct {u_int32_t e2d_ino; /* inode number of entry */u_int16_t e2d_reclen; /* length of this record */u_int8_t e2d_namlen; /* length of string in d_name */u_int8_t e2d_type; /* file type */char e2d_name[EXT2FS_MAXNAMLEN];
/* name with length <= EXT2FS_MAXNAMLEN */
};ext2fs/ext2fs_dir.h
AndrejBrodnik:Digitalnaforenzika 27
1/2/17
10
ext2– nadblok
• nadblok(superblock)hraniopiskonfiguracijeskupineblokov• raztresenopodisku– nazačetkuvsakeskupineblokov• daseohraniknfiguracija,česeenzapisizgubi
• orodjedumpfs
• Izziv: poiščitestrukturonadblokaext2.PrimerjajtejosstrukturoUFSsuperbloka.
AndrejBrodnik:Digitalnaforenzika 28
Datotečnisistemext3
• avtorStephenTweedie 1999/2000/2001• osnovnastrukturaenakakotpridatotečnemsistemuext2• razdelitevnaskupineblokovvključnoznadblokom(superblock)• imenikiinindeksnavozlišča• vodenjeevidenceodisku
• dodanajemožnosthranjenjadnevniškestrukture• osnovnidatotečnisistemOSLinux
AndrejBrodnik:Digitalnaforenzika 29
Dnevnikiext3
• vdnevnikihsehranijozapisiovsehspremembahvdatotečnemsistemu• dnevniškastrukturaomogočatrivrstevodenjadnevnika:• celovitdnevnik(journal):hranisevse;takometapodatkekotvsebino–najboljvarno• zaporedno(ordered):hranijosesamometapodatkivendarseshranijopouspešnoopravljenioperaciji– srednjevarno• zapiši(writeback):podobnokotzaporedni,ledaseshranjujejodnevniškizapisihkratizdejanskimizapisi– najmanjvarno
AndrejBrodnik:Digitalnaforenzika 30
1/2/17
11
Dnevnikiext3
• dnevnikjezaporednadatoteka• zapisisoshranjenipredprvoskupinoblokov• dnevniškaskupinajesestavljenapodobnokotbločnaskupina:• dnevniškinadblok• opisitransakcij
AndrejBrodnik:Digitalnaforenzika 31
Dnevnikiext3
• opistransakcijvsebujetrivrsteblokov:• opisniblok(descriptorblock):začetektransakcije• metadatabloki:opisitransakcije• zaključniblok(commitblock):zaključektransakcije• preklicniblok(revokeblock):čepridedonapakeinvsebujeseznamblokovvdatotečnemsistemu,kijihjepotrebnoponovnonamestiti(restavrirati)
• vsi(tudinadblok)sepričnozmagičnoštevilko:JFS_DESCRIPTOR_BLOCK1JFS_COMMIT_BLOCK2JFS_SUPERBLOCK_V13JFS_SUPERBLOCK_V24JFS_REVOKE_BLOCK5
AndrejBrodnik:Digitalnaforenzika 32
Dnevnikiext3
• Izziv: preučitestrukturonadbloka(npr.http://linuxsoftware.co.nz/wiki/ext3).Pridobiteblokizsvojegadatotečnegasistemainkomentirajtenjegovovsebino.• Izziv: Kakodobitinazajizbrisanodatotekovsistemuext2inkakovext3?Kajpavufs?
AndrejBrodnik:Digitalnaforenzika 33
1/2/17
12
Datotečnisistemi
• obstajajošedrugidatotečnisistemi• reiserFS,XFS,gfs,afs,ext4,HSM,...
• Izziv: nareditepodobnoanalizozaomenjenesistemekotsmojonaredilizaufsinext.• Izziv: Primerjajteopisanedatotečnesistememedseboj– vkateremlahkokjeskrijemokakšnepodatke?• Izziv: pripravitekolegupoljubendatotečnisisteminnajkolegaugotovi,zakaterisistemgre.
AndrejBrodnik:Digitalnaforenzika 34
Forenzičniviri
• zaanalizoslikediskauporabljamosamostoječeoperacijskesisteme• primer:Helix(Ubuntu)
• Izziv: pripravitesiHelixCDinpreverite,kakšnaorodjasoženanjem.• Izziv: poiščitešekakšnedrugepodobnesisteme.
AndrejBrodnik:Digitalnaforenzika 35
Forenzičniviri
• orodjeSleuthKitzAutopsyForensicBrowser
AndrejBrodnik:Digitalnaforenzika 36
1/2/17
13
Forenzičniviri– raziskavazSleuthKit
AndrejBrodnik:Digitalnaforenzika 37
Forenzičniviri– raziskavazSleuthKit
AndrejBrodnik:Digitalnaforenzika 38
Forenzičniviri
• videoFileSystemForensicAnalysis(www.youtube.com/watch?v=rmG8yt1WpuA)• različneorganizacije• SANSInstitute(Sysadmin,Audit,Networking,andSecurity):tečaji,literatura,…• TheHoneynetProject(http://www.honeynet.org/)
• Izziv: poglejtesiizzivenahttp://www.honeynet.org/challenges inselotitekateregaodnjih.
AndrejBrodnik:Digitalnaforenzika 39
1/2/17
14
Forenzičniviri
• nekajzanimivihinbogatihreferenc:• B.Carter,Filesystemforensicanalysis.Addison-Wesley,2005.• GregorioNarváez,TakingadvantageofExt3journalingfilesysteminaforensicinvestigation.SANSInstitute,2007.
AndrejBrodnik:Digitalnaforenzika 40