Вы находитесь на странице: 1из 6

1 UNIX and Linux

!  UNIX flavors
!  System V variants: Sun Solaris, IBM AIX, and HP-UX
!  BSD variants: FreeBSD, OpenBSD, and NetBSD

!  Linux distributions
Linux System Artifacts !  Red Hat, Fedora, Ubuntu, and Debian
!  Most consistent UNIX-like operating systems

COMP 2555: Principles of Computer Forensics


Autumn 2014 !  Linux kernel is regulated under the GNU General
http://www.cs.du.edu/2555
Public License (GPL) agreement

L7: Linux System Artifacts


2 UNIX and Linux
3 Some Linux System Files

!  BSD license is similar to the GPL


System file Purpose
!  But makes no requirements for derivative works /etc/fstab File system table of devices and mount points
/var/log/lastlog Last login time of all users
!  Some useful Linux commands to find information about /var/log/wtmp Logon and logoff history information
your Linux system /var/run/utmp Current users’ logon information

!  uname –a /var/log/messages System message log


/etc/shadow Master password file for the local system
!  ls –l
/etc/group Group memberships for the local system
!  ls –ul filename
/dev/hda Device file for the first IDE hard drive
!  netstat -s /proc/meminfo Memory usage information for both physical memory and
swap space
/proc/modules Lists currently loaded modules
L7: Linux System Artifacts

L7: Linux System Artifacts


4 Extended File System
5 Linux File System Terminology

!  Linux file systems !  A block in Linux can be 1KB, 2KB, 4KB or 8KB
!  Second Extended File System (Ext2fs) (analogous to Windows “cluster”)
!  Ext3fs, journaling version of Ext2fs !  Decided when formatting the drive (4KB is typical)
!  Now Ext4fs !  Block group
!  A set of contiguous blocks
!  Employs inodes (information/index nodes) !  A block group descriptor table specifies where each block
!  Identified by a number group begins
!  Contain information about one file or directory !  Inode
!  Storesdata block numbers !  Fully describes a file/directory
!  Keep internal link count !  Has information on the block numbers where a file’s content
!  Deleted inodes have count value 0 resides

L7: Linux System Artifacts

L7: Linux System Artifacts


!  Directories
!  Specially structured files containing <name,inode> records

6 Block Zero
7 Block Groups

!  Boot block !  Block group zero starts at offset 1024 bytes from the
!  Contains the bootstrap code in the first sector beginning of the partition
!  512 bytes !  When is block 0 part of block group 0?
!  If block size > 1024 bytes

!  Block groups 1 onwards start from other block


numbers

!  Number of blocks in a block group is at most 8 times


the size of a block
!  For 4KB block size, you can have at most 8 x 4096 = 32768
blocks in a block group
L7: Linux System Artifacts

L7: Linux System Artifacts


8 Blocks and Block Groups
9 Super Block

!  Indicates disk geometry, available space, and location of


Block group 0 Block group 1
the first inode, and other file system specific information
!  1 KB of information

!  Stored at offset 1024 bytes of partition (i.e. in block


B
o
o
Block Block Block Block Block group 0)
t 1 2 3 4 5

!  Redundant copies are also maintained


!  First block of block groups 1 and powers of 3, 5, and 7 stores
a duplicate of the super block
Byte 1024

L7: Linux System Artifacts

L7: Linux System Artifacts


Block groups with block size > 1024 bytes

10 Super Block Structure


11 Block Group Descriptor Table

!  Offset 0x18: Logarithm of the block size (KB) : 32-bit !  Following the superblock
!  Offset 0x20: Number of blocks per group : 32-bit !  Duplicates are maintained in block groups that also contain
the superblock duplicate
!  Offset 0x28: Number of inodes per group : 32-bit
!  Information pertaining to all block groups
!  Offset 0x38: 2 byte magic number identifying the file
system !  Superblock has information to compute number of
!  0xEF53 means ext block groups
!  We can use it to determine how many blocks are required to
store this table
!  Other information
!  The table is an array of BGD structures
!  Number of free inodes and blocks across all groups
!  Time when file system was last mounted/accessed/verified BGD 0 BGD 1 … BGD N
L7: Linux System Artifacts

L7: Linux System Artifacts


!  Journaling files
!  http://www.nongnu.org/ext2-doc/ext2.html
12 BGD Structure
13Remaining Ingredients of a Block Group
!  Each BGD is 32 bytes !  Following the superblock and BGD table (if present) are
!  Offset 0x0 to 0x3: !  Block bitmap: a bitmap indicating which blocks are available
!  Block number of the first block of the block bitmap of the in the block group
represented group !  Occupies exactly 1 block
!  What is the maximum no. of blocks in a group?
!  Offset 0x4 to 0x7:
!  Inode table: an array of inodes
!  Block number of the first block of the inode bitmap of the
!  Each inode is 128 bytes
represented group
!  Superblock has information on how many inodes are there in a
!  Offset 0x8 to 0xB: block group
!  Block number of the first block of the inode table of the !  Inode number 2 is for the root directory
represented group !  Inode bitmap: a bitmap indicating which inodes are available
!  And more! in the block group

L7: Linux System Artifacts

L7: Linux System Artifacts


!  Occupies exactly 1 block
!  Data blocks

14 The Big Picture


15 Inode Structure

Superblock <1 KB>


!  Each inode is 128 bytes and tells us about a file/
BGD Table <1 block>
Some Reserved Blocks directory
Block bitmap <1 block>
Inode bitmap <1 block>
Inode table
!  Offset 0x0 to 0x1: Type of file and access rights
Data
Superblock <1 block>
!  Uses special code values
BGD Table <1 block>
Some Reserved Blocks
Block bitmap <1 block>
!  Offset 0x8 to 0xB: File access time
Inode bitmap <1 block>
Inode table !  Offset 0xC to 0xF: File create time
Data
Block bitmap <1 block>
Inode bitmap <1 block>
!  Offset 0x10 to 0x13: File modify time
Inode table
Data !  Offset 0x28 to 0x63: Block pointers
!  Tells us where the contents of this file are stored
Superblock <1 block>
BGD Table <1 block>
Some Reserved Blocks
L7: Linux System Artifacts

L7: Linux System Artifacts


Block bitmap <1 block>
Inode bitmap <1 block>
Inode table
!  The name of the file is not stored in the inode
Data
...
!  Its part of the directory information!
16 Some Code Values at Offset 0
17 Inode Pointers
Code Values (Hex) Description !  Each pointer is a 32-bit (4 byte) address of a block
8000 Regular file
!  A block number
4000 Directory
0800 UID on execution – set
!  Pointers 1 to 12 are direct pointers
0400 GID on execution – set !  Data blocks
0100 Read by owner – allowed !  Pointer 13 is an indirect pointer
0080 Write by owner – allowed !  It takes you to a data block that is full of more direct
0040 Execution/search by owner – allowed pointers
0020 Read by group – allowed
!  Pointer 14 is a double indirect pointer
0010 Write by group – allowed
!  It takes you to a data block that is full of more indirect
0008 Execution/search by group – allowed
pointers
0004 Read by others – allowed
!  Pointer 15 is a triple indirect pointer

L7: Linux System Artifacts

L7: Linux System Artifacts


0002 Write by others – allowed
0001 Execution/search by others – allowed !  It takes you to a data block that is full of more double
indirect pointers

18 Inode Pointers (contd.)


19 Some Other Information
File Data (as big as block size)
1037
!  Bad block inode
1
!  Keeps track of disk’s bad sectors
13
2 !  Inode 1
Info
. 14 . !  Some forensics tools ignore this inode
. . ? !  Commands: badblocks and e2fsck
Pointer 1
Pointer 2 . .
12 .

Pointer 12 1036 . ? !  Continuation inode
Pointer 13 !  File A : part in block group X and part in block group Y
Pointer 14 . !  Inodes in each block group
Pointer 15
? !  Helps retrieve allocated blocks when parts of the file system
get corrupted
L7: Linux System Artifacts

L7: Linux System Artifacts


.
20 Directories
21 References

!  A directory is just a file with specially formatted data !  Ch 8: B. Nelson, A. Phillips and C. Steuart, Guide to
!  Linked list implementation Computer Forensics and Investigations. ISBN:
!  An array of directory entries 978-1-435-49883-9
!  Variable size !  Layout of ext2fs: http://www.nongnu.org/ext2-doc/ext2.html
!  Offset 0 to 3: inode number corresponding to this entry !  Ext3 basic structure is same as ext2
!  Offset 6: length of the name of this entry
!  Offset 8 onwards: name of this entry
!  First entry is always for itself (seen as a . when running
ls)
!  Second entry is always for the parent directory (..)
Other implementations exist

L7: Linux System Artifacts

L7: Linux System Artifacts


! 
!  E.g. B+-tree

Вам также может понравиться