Top Banner
Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003
30

Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Dec 22, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Lecture 16: UNIX Forensics

6/26/2003

CSCE 590

Summer 2003

Page 2: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Syslog

• A standard system logging facility– Unix, Windows, routers, switches, blenders, etc

• On UNIX, configuration in /etc/syslog.conf

• Daemon called syslogd

• Can syslog over the network to a dedicated syslog server

• Targeted by intruders

Page 3: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Syslog.conf

• Which messages are sent to which logs

• Each line contains:– Facility field – subsystem that produces the log

file• Auth(security), authpriv, cron, daemon, kern, lpr,

mail, ftp, news, syslog, user, uucp, local0-local7

– Priority field – severity of log (8 levels)• Debug, info, notice, warning, err, crit, alert, emerg

– Action field – name of log file, IP or remote syslog server

Page 4: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Syslog Priority Field

• Debug - all occurrences, everything• Info – usual occurrences (like fyi’s)• Notice – unusual occurrences, investigate• Warning – warning messages• Err – other error conditions• Crit – critical condition or failure• Alert – urgent situation• Emerg (panic) – panic situation (warp core

breach)

Page 5: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Programmer’s interface

• #include <syslog.h>• void openlog(const char *ident, int option,

int facility);– Opens a connection to the system logger for a program

• void syslog(int priority, const char *format, ...);– Generates a log message to be distributed by syslogd

• void closelog(void);– Closes the descriptor to the system logger for a

program

Page 6: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Sample syslog.conf

Page 7: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Shell Histories

• History of all commands you type• In each user’s home directory

– .history– .bash_history– .sh_history– .ksh_history

• Commonly targeted by intruders– Delete it, recreated as directory– Delete it, link it to /dev/null (bit bucket)– Just turn off history function in your shell, delete it

Page 8: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

The grep Family• grep – search for string in file

– bzgrep - in a bzip2 compressed file

– zgrep – search possibly compressed files

– zipgrep - search files in a ZIP archive

– grepjar - search files in a jar file for a pattern

• fgrep – search for strings identified within a given file, one pattern per line– bzfgrep - in a bzip2 compressed file

• Egrep – search using extended regular expressions– bzegrep - in a bzip2 compressed file

Page 9: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

grep Options

• -r – recursion

• -i – case insensitive

• -a – handle binary files (kind of like piping to strings)

• -v – NOT this string

Page 10: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

find

• grep looks in files, find searches other attributes of files (metadata)– File name, including regular expressions, case

insensitive– Time periods for MAC– Belongs to GID or group’s name– Belongs to a UID or user name– Nouser and nogroup – doesn’t have a user or

group defined for its GID or UID

Page 11: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

find

– Is on file system of type xxxx– Has a particular inode number– Has a particular number of links to it– Is a symbolic link– Search on permission bits– File size– File type

Page 12: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

find Actions

• -print – print what you find

• -printf

• -exec xxx – execute xxx command on a hit

• -ls – list it in “ls –dils” format

• Much more stuff! Good man page to read.

Page 13: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Hiding in the File System

• Hide in a rarely visited or ‘busy’ directory– /dev

• Look for regular files, should be too many

– Font directories– OS source code directories– Man page directories

• Creative naming– …– “. “– “.. “– “ “

Page 14: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Hiding in the File System• Slack space• Deleted files• Unlinked open files• Trojaned system files• Decoy file system mounts

– Mount a file system over existing data in a current file system

– Existing data becomes hidden, could hide an executable being run or a file being written to

– df may show a lot more space used in a file system that you can account for with du

Page 15: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Checking RPMs

• RPM are applications packages (Linux)• Compares info about files in an installed

package with info stored about themin the RPM database

• Simple integrity check– # for i in `rpm –qa`; do rpm –V $i; done

• Error prone and can be subverted• Catches less skilled intruders

Page 16: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Output of Verify RPMs

• S - file Size differs• M - Mode differs, includes permissions, file type• 5 - MD5 sum differs• D - Device major/minor number mis-match• L – (readlink(2)) path mis-match• U - User ownership differs• G - Group ownership differs• T - mtime differs• c – configuration file (expected to change)

Page 17: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Rpm Verify Example

Page 18: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Inode “Timelines”

• ls –lit | sort |more

• List all inodes

• Looking for entries that seem out of place, very high or very low

• If you find any out of place, look for other inodes around that number to find possible related files

Page 19: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Inode “Timelines” Example

Page 20: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Signals

• Simple interprocess communications– One program sends a message to another– Pre-defined messages– 16 or 32 depending on platform

• Some are useful for terminating a program gracefully

• Might be able to freeze it in memory so as not to lose evidence

Page 21: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Useful Signals

• HUP (1) – Hangup• INT (2) – Interrupt, stop running <ctrl>C• KILL (9) – Stop unconditionally and immediately• TERM (15) – Terminate gracefully if possible• STOP (17) – Stop unconditionally; continue with

CONT• TSTP (18) – Stop executing, ready to continue• CONT (19) – Continue executing after STOP

or TSTP• USR1 (30) – A user defined signal

Page 22: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Startup and Shutdown Scripts

• Usually found in /etc• Can be files like rc.local and rc.shutdown• Can be directories of scripts or links to scripts like

rc0.d-rc6.d, rc.d, and init.d• The kernel boots and first loads

– init – process control initialization– If init dies, the system reboots– Makes sure the system enters the correct run level

(single user, multi-user, etc)

Page 23: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

BSD-Like RC Scripts

• Simpler scripts:– rc.conf: configuration variables for what to start,

included in other startup scripts– Rc: starts up a bunch of system services that must be

run before securelevel changes– rc.securelevel: levels –1 through 2– rc.local: run next, local services, network, system

daemons– rc.shutdown: clean up commands when system is going

down• Ex. Gracefully stopping a databse

Page 24: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

rc.securelevel

• Run after rc script

• Level –1: Permanently insecure– Init can’t raise securelevel but sysctl can

• Level 0: Insecure mode– During bootstrapping, single user– all devices may be read/written subject to

permissions– system file flags may be cleared

Page 25: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

rc.securelevel• Level 1: Secure mode (default multi-user)

– Only init may lower securelevel– /dev/mem and /dev/kmem may not be written to– raw disk devices of mounted file systems are read-only– Can’t remove system immutable and append-only file

flags– kernel modules may not be loaded or unloaded

• Level 2: Highly secure mode (Level 1 still applies)– raw disk devices are always read-only, mounted or not– settimeofday(2) may not set the time backwards– ipf(8) and ipnat(8) rules may not be altered– the ddb.console and ddb.panic sysctl(8) variables may

not be raised (keeps people from using in-kernel debugger ddb(4) to modify securelevel)

Page 26: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

System V-ish RC Scripts

• On a Solaris machine:– 8 different run levels, 0-6 and s and S (same thing)– Default runlevel in /etc/inittab

• Level s or S: single user state • Level 0: firmware mode• Level 1: sys admin mode, single user, all

filesystems mounted, limited processes running• Level 2: multi-user mode, all multiuser processes

running

Page 27: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Init Levels (cont.)

• Level 3: extended multiuser mode, level 2 + local resources are available over the network

• Level 4: usually not used, can ber defined as alternative multiuser environment

• Level 5: Shut the machine down, safe to power off• Level 6: stop the OS and reboot to default state

level

Page 28: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Startup Scripts

• There is a directory for each of the 0-6 runlevels.• /etc/rc.d/rc0.d -> /etc/rc.d/rc0.d • Also /etc/rc.d/init.d

– Contains the actual startup/shutdown scripts

– Are shell scripts that take as arguments• start – start up the process

• stop – stop the process

• restart – sometimes a restart

Page 29: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

Startup Scripts

• Each of the rcX.d directories contain symbolic links to scripts in the init.d directory

• Format of name of link determines argument to start up script and when it is started– K03nfs

• run script pointed to by this link with the stop option (K=Kill)• Run it “third” in the order of scripts

– S75ntpd• run script pointed to by this link with the start option (S=Start)• Run it “75th” in the order of scripts

Page 30: Lecture 16: UNIX Forensics 6/26/2003 CSCE 590 Summer 2003.

References

• Chapters 11,12