Investigating a computer breach is like investigating a crime
scene. Detectives collect evidence, note any strange clues, and
take inventory on loss and damage. An analysis of a computer
compromise can either be done as the attack is happening or
post-mortem.
Although it is unwise to trust any system log files on an
exploited system, there are other forensic utilities to aid in the
analysis. The purpose and features of these tools vary, but they
commonly create bit-image copies of media, correlate events and
processes, show low level file system information, and recover
deleted files whenever possible.
It is also a good idea to record of all of the investigatory
actions executed on a compromised system by using the script command, as in the following example:
Replace <file-name> with
file name for the script log. Always save
the log file on media other than the hard drive of the compromised
system — a floppy disk or CD-ROM works particularly well for
this purpose.
By recording all your actions, an audit trail is created that
may prove valuable if the attacker is ever caught.
Creating a bit-image copy of media is a feasible first step. If
performing data forensic work, it is a requirement. It is
recommended to make two copies: one for analysis and investigation,
and a second to be stored along with the original for evidence in
any legal proceedings.
You can use the dd command that is part
of the coreutils package in Red Hat
Enterprise Linux to create a monolithic image of an exploited
system as evidence in an investigation or for comparison with
trusted images. Suppose there is a single hard drive from a system
you want to image. Attach that drive as a slave to the system and
then use dd to create the image file, such
as the following:
dd if=/dev/hdd bs=1k conv=noerror,sync of=/home/evidence/image1
|
This command creates a single file named image1 using a 1k block size for speed. The
conv=noerror,sync options force dd to continue reading and dumping data even if bad
sectors are encountered on the suspect drive. It is now possible to
study the resulting image file or even attempt to recover deleted
files.
The topic of digital forensics and analysis itself is quite
broad, yet the tools are mostly architecture specific and cannot be
applied generically. However, incident response, analysis, and
recovery are important topics. With proper knowledge and
experience, Red Hat Enterprise Linux can be an excellent platform
for performing these types of analysis, as it includes several
utilities for performing post-breach response and restoration.
Table
10-1 details some commands for file auditing and management. It
also lists some examples that can be used to properly identify
files and file attributes (such as permissions and access dates) to
allow the collection of further evidence or items for analysis.
These tools, when combined with intrusion detection systems,
firewalls, hardened services, and other security measures, can help
reduce the amount of potential damage when an attack occurs.
|
Note |
|
For detailed information about each tool, refer to their
respective man pages.
|
Command |
Function |
Example |
dd |
Creates a bit-image copy (or disk
dump) of files and partitions. Combined with a check of the
md5sums of each image, administrators can compare a pre-breach
image of a partition or file with a breached system to see if the
sums match. |
dd if=/bin/ls of=ls.dd |md5sum ls.dd
>ls-sum.txt |
grep |
Finds useful string (text) information inside files and
directories as well as reveals permissions, script changes, file
attributes, and more. Used mostly as a piped command of for
commands like ls, ps, or ifconfig. |
ps auxw |grep /bin |
strings |
Prints the strings of printable characters within a file. It is
most useful for auditing executables for anomalies such as
mail commands to unknown addresses or
logging to a non-standard log file. |
strings /bin/ps |grep 'mail' |
file |
Determines the characteristics of files based on format,
encoding, linked-libraries (if any), and file type (binary, text,
and more). It is useful for determining whether an executable such
as /bin/ls has been modified using static
libraries, which is a sure sign that the executable has been
replaced with one installed by a malicious user. |
file /bin/ls |
find |
Searches directories for particular files. It is a useful tool
for searching the directory structure by keyword, date and time of
access, permissions, and more. It can also be useful for
administrators that perform general system audits of particular
directories or files. |
find -atime +12 -name *log* -perm
u+rw |
stat |
Displays file status information, including time last accessed,
permissions, UID and GID bit settings, and more. It can be useful
for checking when a breached system executable was last used or
modified. |
stat /bin/netstat |
md5sum |
Calculates the 128-bit checksum using the md5 hash algorithm.
Use this command to create a text file that lists all crucial
executables that are often modified or replaced in a security
compromise. Redirect the sums to a file to create a simple database
of checksums and then copy the file onto a read-only medium such as
CD-ROM. |
md5sum /usr/bin/gdm
>>md5sum.txt |
Table 10-1. File Auditing Tools