Provided by: grokevt_0.5.0-6.1_all bug

NAME

       GrokEVT - a collection of scripts built for reading windows event log files.

DESCRIPTION

       This  document  serves  as an overview to using the GrokEVT suite of tools. Please see the
       man pages for each tool for specific command-line options.

USING

       Using GrokEVT on a set of windows partitions is a three  stage  process.  One  must  first
       mount  the partitions and configure the system's profile. Next, grokevt-builddb(1) must be
       run to extract  the  necessary  information  from  these  partitions.   Finally,  grokevt-
       parselog(1) may be run to use this information to convert the logs to something useful.

       Mounting and configuration:

       This  is the most labor-intensive step of the process. There are several technical reasons
       why this cannot be simpler, and it is unlikely many will be resolved anytime soon. (Sorry,
       blame the vendor who produced these logs that you wish to convert.)

       First mount the partitions used by your windows system.  Specifically, mount any partition
       that has software installed on it. (You can probably get away with not mounting ones  with
       no software, or no software that produces events in the event log.)  This includes windows
       shares, if you have any with software installed on them.

       The key point when mounting partitions or shares, is that you must mount them  with  case-
       insensitive  filenames.  To  do  this  in Linux, you should be able to use the NTFS option
       'posix=0', or with type vfat this appears to be the default. On FreeBSD, one can  use  the
       -i  option  with  NTFS  and  mount_ntfs,  but  this  hasn't been tested. (More research is
       necessary in this area. Please let me know if case-insensitivity  is  available  on  other
       *NIXes and what the options are.) All of this, of course, depends on your version of mount
       and related software. See mount(8) for more information.

       Once you have all necessary filesystems mounted  for  your  windows  image,  you  need  to
       configure  GrokEVT  so it knows where everything is. If you look in the main configuration
       directory, (by default at '/usr/local/etc/grokevt') you'll  find  a  sub-directory  called
       'systems'.  In  there  is  a  set  of  system configuration profiles. Each directory under
       'systems' represents the  configuration  for  a  single  windows  host.   You  may  create
       directories here of any name. It is suggested you use the host name of the system you wish
       to extract logs from.

       By default, there will be one system  configuration  there  already,  named  'example'.  I
       suggest  you  make  a  full  copy  of  this,  and  edit  it  from there to create your own
       configuration:

              # cd /usr/local/etc/grokevt/systems
              # cp -r example mysystem

       Now that you have your own configuration, take a look at the files under this directory:

              path-vars/%SystemRoot%
              system-registry
              drives/c:
              drives/d:

       Each file represents a single configuration setting. The first line of every file  is  the
       setting, all others are ignored. You should start by configuring your drive letters. These
       drive letters need to map to the *NIX path of the drives.  So,  if  you  mounted  your  C:
       partition under '/mnt/win/c', then you should do the following:

              echo /mnt/win/c > drives/c:

       This will of course, overwrite that file with your actual mount point for the C: drive. Do
       this for all drives mounted on your windows system.

       Next, you need to configure your %SystemRoot% path variable.   Since  the  registry  often
       references files in relation to this variable, we need to know where it is on your system.
       Typically, on W2K this should  be  'C:\WINNT'.  On  other  windows  systems  it  is  often
       'C:\Windows'.  This  case-insensitive  path must as a full windows path (including a drive
       letter).

       Finally, you need to set the path of the system registry. This path must be a  *NIX  path,
       and  not  a  windows  path,  and  it  is  case-sensitive.  It should be located under your
       %SystemRoot%. For instance, if you mount a W2K machine's C:  on  '/mnt/win/c',  this  path
       will probably be: /mnt/win/c/WINNT/system32/config/system

       This  will vary from system to system, but if you have ever done any forensics, you should
       be able to find the correct path pretty quickly.

       Using grokevt-builddb(1):

       Once you get past the mounting and configuration step, you're in good  shape.  To  extract
       the  necessary information from the system you just mounted, you just need to decide where
       you want to store the output database. Based on the example paths  above,  one  could  run
       grokevt-builddb(1) like so:

              grokevt-builddb mysystem /var/db/grokevt/mysystem

       Or  something similar. This step will take some time, as a lot of files need to be parsed.
       You will likely get some warnings about missing DLLs and possibly service  removals.  This
       is normal if software on the windows system failed to clean up the registry correctly when
       it was un-installed. You might want to record this information though, if later  you  find
       you are missing a lot of message templates in your log output.

       Now  that  you have finished this step, you have fully extracted all information needed to
       interpret the event logs.

       Using grokevt-parselog(1):

       To run grokevt-parselog(1), you must specify the database  directory  that  you  generated
       with  grokevt-builddb(1).  Initially,  you  will  want  to  find  out what event logs were
       extracted by running:

              grokevt-parselog -l /var/db/grokevt/mysystem

       This will print out all available event log types, based on information  found  previously
       in  the  system's  registry. Then you may view one of those logs simply by dropping the -l
       option, and adding it's name as the second parameter. For instance, to view  the  'System'
       log:

              grokevt-parselog /var/db/grokevt/mysystem System

       See the grokevt-parselog(1) man page for further options.

       Finding and Parsing Log Fragments:

       One  may  find  it  useful to parse deleted log files or fragments of log files found in a
       system's RAM dump.  A  special-purpose  tool,  grokevt-findlogs(1)  is  included  in  this
       distribution  which makes finding log fragments easy. It can find even a single log record
       by itself with a relatively low rate of false positives.

       Suppose one has a file, dump.img, which contains an image of a system's  RAM,  or  perhaps
       the  unallocated  blocks of a filesystem (as might be produced by The SleuthKit's dls(1)).
       One could search this dump by running:

              grokevt-findlogs dump.img

       This will produce a listing of all hits in the file, which  may  include  header  records,
       cursor  records,  or log records, offsets and contiguity information to help one eliminate
       any false positives.

       Supposing we found a log fragment in this dump that we're interested in, we  could  simply
       use  dd(1)  or  some  other  tool  to  carve  out  the  relevant  data  in to a file named
       fragment.evt. We'd then need to find a way to associate this log with  a  set  of  message
       templates.   This  is  what  grokevt-addlog(1)  is  for.  Let's  take  a  guess  that  the
       fragment.evt was originally a part of System log. We would add the log into our previously
       built message database by running:

              grokevt-addlog /var/db/grokevt/mysystem fragment.evt System-fragment System

       Finally,  we  can parse the log by simply specifying the newly imported name with grokevt-
       parselog(1):

              grokevt-parselog /var/db/grokevt/mysystem System-fragment

       If we found that most of the log entries didn't have associated message  templates  (which
       would  result  in lots of warnings to stderr), we would be pretty that fragment.evt really
       wasn't based on a System log. Simply re-importing it as another log type (and a  different
       name) would let us parse it again as if it were of another type.

       Please see the grokevt-findlogs(1) and grokevt-addlog(1) man pages for more information.

CREDITS

       This man page written by Timothy D. Morgan

LICENSE

       Please see the file "LICENSE" included with this software distribution.

       This  program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
       without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  PURPOSE.
       See the GNU General Public License version 3 for more details.

SEE ALSO

       grokevt-addlog(1)   grokevt-builddb(1)  grokevt-findlogs(1)  grokevt-parselog(1)  grokevt-
       ripdll(1) reglookup(1)