Experience with Tripwire: Using Integrity Checkers for Intrusion Detection by Gene H. Kim and Eugene H. Spafford 10/06 Presentation Outline 10/06 Motivation for Tripwire Tripwire design Experiences Conclusion Motivation - A Scary Story Ellen is system admin for large network Ellen realizes someone has logged on as root on several machines Sneaky intruder deleted all accounting & auditing files before logging out Ellen’s concern: – Did intruder leave a backdoor (for re-entry)? – Was sensitive information compromised? 10/06 Security Policy - Integrity of Data 10/06 Assure that file data (in permanent storage) are not altered except by those authorized to do so More precisely, assure that if a file is altered improperly, that the alteration can be detected Tripwire Gives system admins ability to monitor for added, deleted & modified files Checks for changes in file attributes, e.g.: – size, – access & modification timestamps, – permissions, – inode number – signature (more on signature later) 10/06 Ellen’s Challenge 10/06 How does Ellen determine which (if any!) files have been altered w/o authorization? Tens of thousands of files in dozens of gigabytes of disk on dozens of different architectures Ellen needs to examine every file as well as check for deleted or added files Checking Techniques 10/06 Established techniques: maintaining checklists, comparison copies, checksum records or backup tapes These methods are costly, prone to error and susceptible to easy spoofing Intruders w/ root privileges can alter checklists or compromise utilities (eg “ls” Changes to a file can be made w/out changing its length or checksum! Define Integrity of File Data 10/06 Can we define a notion of the integrity of both data and the file structure (including directories) in which that data is stored? Define it as a set of characteristics Monitor change of those characteristics Tripwire system is said to “enforce the integrity of file system” if unauthorized change to characteristics is detected The Ideal Integrity Checker ... 10/06 High level of automation Simple description of attributes of the file system that are monitored/checked Easy way to update database used to control monitoring - small changes shouldn’t require massive regeneration Automate regular checks (use UNIX scheduler, cron); allow manual checks Ideal Integrity Checker cont. 10/06 Generate output that’s easy to scan Allow specification of file system “exceptions” that are NOT reported Allow reuse and sharing of configuration files (for networks of lots of machines that differ only slightly) Tripwire Program Inputs Configuration file (tw.config) – list of files & directories to be monitored – their associated selection mask (list attributes that can safely be ignored) Database file --describes each “file” – automatically generated – set of file names, inode attribute values, signature info., associated tw.config entry 10/06 Selection Mask Example: +pinugsm12-a permission and modes number of links user id size of the file signature 1 inode number group id modification timestamp signature 2 access timestamp Flag for each distinct field in an inode + report change 10/06 - ignore the field Tripwire Component Overview generate newly generated database compare tw.config file old database Files residing on system 10/06 apply ignore-masks Tripwire report Database Initialization Mode Tripwire generates baseline database file based on tw.config tw.config indicates – files to monitor – files to ignore (e.g. no recursion below directory with name “DDD”) – whether to ignore file size change (e.g. ignore increase in log files, but report decrease!!!) 10/06 Integrity Checking Mode 10/06 Generate new database Compare new database with baseline db Produce report of added & deleted files Apply selection mask to modified files Signature Support For each file – up to 10 signatures What’s a signature? Any pattern that “represents” the file – By default, MD5 and Snefru signatures are recorded and checked for each file 10/06 Supported Platforms 10/06 Windows NT, version 4.0 Solaris (SPARC), versions 2.6, 7.0 Solaris (Intel), version 2.6, 7.0 HP-UX, versions 10.20, 11.00 IBM AIX, versions 4.2, 4.3 SGI Irix, version 6.5 Compaq TRU64 UNIX, version 4.0 Linux Sample Ouput : ### Phase 1: : ### Phase 2: : ### Phase 3: : ### Phase 4: : ### : ### : ### : ### : ### : ### : ### 10/06 Reading configuration file Generating file list Creating file information database Searching for inconsistencies Total files scanned: Files added: Files deleted: Files changed: 5143 0 0 5 Total file violations: 5 Sample Output Cont. changed: -rw-r--r-- root 3384 Jan 12 14:39:27 2000 /etc/dfs/dfstab Phase 5: Generating observed/expected pairs for changed files Attr Observed (what it is) Expected (what it should be) /etc/dfs/dfstab st_size: 3384 3623 st_mtime: Wed Jan 12 14:39:27 2004 Tue Dec 14 12:22:20 2003 st_ctime: Wed Jan 12 14:39:27 2004 Tue Dec 14 12:22:20 2003 md5 (sig1): 3TZThlJJb5piwca4EHUnRy 2nGPSAY1loE5vlS.D1qhHL snefru (sig2): 1uKAb7andEuQOzAyXnFcfR 0hl1UxAEzEILB8jXtDsx4G 10/06 Conclusion 10/06 Portable Self-contained Adaptable to large and small sites Very restricted in what it sees -- only OS attribute changes of files It has no clue as to what users are actually doing! The End 10/06 Templates – read-only files: Only the access timestamp is ignored. – log files: Changes to the file size, access and modification timestamp, and signatures are ignored. – growing log files: Same flags as log files except increasing files sizes are ignored. – ignore nothing – ignore everything 10/06 Example tr.config # file/dir selection-mask /etc R # all files under /etc @@ifhost solaria.cs.purdue.edu !/etc/lp # except for SVR4 printer logs @@endif /etc/passwd R+12 # you can’t be too careful /etc/mtab L #dynamic files /etc/motd L /etc/utmp L =/var/tmp R # only the directory, not its contents 10/06 You use Tripwire for what? 10/06 Many system admin. use Tripwire as a tool to enforce local policy - changes by one system admin. is noticed quickly by others Tripwire helps salvage file systems not completely repaired by fsck - program that ensures consistency between file data and their inodes – a file can be rebound to its original name by searching the database for a matching signature Stealth-Tripwire 10/06 Several system admins. have tried very hard to conceal their use of Tripwire and don’t run it through programs like cron Authors disagree - advertising the use of Tripwire (even if not true) could help avert attacks Paranoia 10/06 Tripwire is designed to run on a regular basis, such as daily Two reported cases of Tripwire being run hourly - not a good idea Good paranoia - “plant” files on the system, such as master-passwords prime targets for intruders Portability 10/06 Tripwire reported to be running on 28 different UNIX platforms Only 8 example tw.config files necessary Authors receive requests to help system admins. compile Tripwire on machines they have never heard of - such as one only sold in Australia that came with incorrect system libraries Often, a group of system admins. with similarly “orphaned” machines will put You Added WHAT to Tripwire? 10/06 Authors received a report from a user who is adding support for Intel machines running UNIX to allow Tripwire to check mounted MSDOS file systems Mega & Micro - Tripwire 10/06 Many system administrators of large sites create one configuration file to be shared by all machines, using the @@ifhost directive to segregate noncommon file groups A configuration file consisting solely of “/” has proved adequate for some system administrators of smaller sites CS Dept. & Tripwire 10/06 Tripwire runs on all essential servers every night Scripts were written to run Tripwire on all the various servers, gather the results, and send them by email to the system admins. Very usable out-of-the-box, took a staff member only 10 hours to set up Installed for 9 months - haven’t seen anything suspicious, Paco occasionally Interactive Database Update 10/06 Tripwire generates list of all changes (ala integrity checking mode) Tripwire asks system admin. to specify which entries to update in the database file Database Update Mode 10/06 Tripwire regenerates database entries for a list of files or configuration entries given on the command line Tripwire instructs system admin to move new database to secure media Configurability Aids Preprocessor support allows system admin. to write configuration files that support numerous configurations of machines – Note: Machines that share a configuration file still generate their own database files 10/06 Prefixes to the tw.config allow for pruning - a directory and/or its contents can be excluded from monitoring Configurability Aids (Cont.) Example selection mask: +pinugsm12-a – “Report changes in permission and modes, inode number, number of links, user id, group id, size of the file, modification timestamp, and signatures 1 and 2. Disregard changes to access timestamp.” 10/06 Templates allow system admin. to quickly classify files into categories that use common sets of flags Good News 10/06 Seven reported cases of Tripwire alerting system administrators to intruders Dozens of cases of Tripwire being used as a system admin. enforcement tool One reported case of Tripwire detecting a failing disk Where are the Bad Guys? Out of thousands of machines running Tripwire, why only 7 Tripwire-discovered breakins in two years? – Intruders have given up? Don’t you wish! – Sites running Tripwire aren’t interesting? Nope – Site admins aren’t telling? Maybe – Tripwire sites are more security-conscious? Maybe 10/06 Bad Guys (Cont.) Sites have already been attacked – maybe baseline databases are being generated on machines that have already been compromised Intruders have completely subverted integrity checking schemes – it would be very hard for an intruder to alter a file in a way that it preserves its original signature 10/06