Difference between pages "Fiwalk" and "Rekall"

From ForensicsWiki
(Difference between pages)
Jump to: navigation, search
m
 
m (Linux)
 
Line 1: Line 1:
 
{{Infobox_Software |
 
{{Infobox_Software |
   name = fiwalk |
+
   name = Rekall |
   maintainer = [[Simson Garfinkel]] |
+
   maintainer = [[Michael Cohen]] |
   os = {{Linux}}, {{MacOS}}, {{FreeBSD}} |
+
   os = {{Cross-platform}} |
  genre = [[Carving]] |
+
  genre = {{Memory analysis}}, {{Memory imaging}} |
   license = {{Public Domain}} |
+
   license = {{GPL}} |
   website = https://github.com/kfairbanks/sleuthkit
+
   website = [https://code.google.com/p/rekall/ code.google.com/p/rekall/] |
 
}}
 
}}
  
fiwalk is a batch forensics analysis program written in C that uses SleuthKit. The program can output in XML or ARFF formats.
+
Rekall is the stand-alone continuation of the [[Volatility]] Technology Preview (TP) version, aka the scudette branch.
  
==Temporary Distribution Point==
+
One of Rekalls goals is to provide better integration with [[GRR]] by improved modularity of the framework and having memory acquisition capability.[http://docs.rekall.googlecode.com/git/overview.html#_history]
fiwalk has been integrated with SleuthKit and can be downloaded from github at https://github.com/kfairbanks/sleuthkit.  A future release of SleuthKit will contain fiwalk.
+
  
==Legacy Distribution==
+
== Memory acquisition drivers ==
'''fiwalk''' is a program that processes a disk image using the SleuthKit library and outputs its results in Digital Forensics XML, the Attribute Relationship File Format (ARFF) format used by the Weka Datamining Toolkit, or an easy-to-read textual format.
+
  
The fiwalk source code comes with fiwalk.py, a Python module that makes it easy to create digital forensics programs. Also included are several demonstration programs that use fiwalk.py:
+
The drivers can be found under:
;iblkfind.py
+
<pre>
:Given a disk block in a disk image, this program tells you which file(s) map that sector.
+
rekall/tools/linux
;icarvingtruth.py
+
rekall/tools/osx
:Given two or more images of the same disk at different points in time, this program files that are present in the earlier images that can only be recovered from the later images using file carving techniques.
+
rekall/tools/windows
;idifference.py
+
</pre>
:Given two or more images of the same disk at different points in time, this program tells you what changes took place between each one.
+
;iextract.py
+
:Allows the extraction of files that match a particular pattern.
+
;igrep.py
+
:Searches every file in a disk image for a particular string. When found, prints, the file and the offset within the file that the string was found.
+
;ihistogram.py
+
:Prints a histogram of file types found in the disk image.
+
;imap.py
+
:Displays a “map” of where files are present in the disk image.
+
;imicrosoft_redact.py
+
:Modifies a disk image of a bootable Microsoft operating system so that the image can no longer be boot and so that any Microsoft copyrighted file in the \Windows directory cannot be executed. This allows the disk image of a Microsoft operating system to be distributed without implicitly violating Microsoft’s copyright.
+
;iredact.py
+
:An experimental disk redaction program which allows the removal of specific files matching specific criteria.
+
;iverify.py
+
:Given a disk image and a previously created XML file, verifies that each file in the DFXML file is still present in the disk image.
+
;sanitize_xml.py
+
:Given a DFXML file, sanitize file names so that no personally identifiable information is leaked if the DFXML file is distributed.
+
  
 +
=== Linux ===
 +
In rekall RC11 the advanced Linux acquisition tool (LMAP) was added. lmap allows to inject the pmem functionality into existing kernel modules to bypass having to build a pmem kernel module for every different kernel version. See the corresponding DFRWS EU 2014 paper for more information about LMAP.
  
==XML Example==
+
To build the kernel module for the current kernel version, make sure you have a working build environment and the kernel headers installed. Change into this directory and run make:
 
<pre>
 
<pre>
<?xml version='1.0' encoding='ISO-8859-1'?>
+
cd rekall/tools/linux/
<fiwalk xmloutputversion='0.2'>
+
make
  <metadata
+
  xmlns='http://example.org/myapp/'
+
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
+
    <dc:type>Disk Image</dc:type>
+
  </metadata>
+
  <creator>
+
    <program>fiwalk</program>
+
    <version>0.5.7</version>
+
    <os>Darwin</os>
+
    <library name="tsk" version="3.0.1"></library>
+
    <library name="afflib" version="3.5.2"></library>
+
    <command_line>fiwalk -x /dev/disk2</command_line>
+
  </creator>
+
  <source>
+
    <imagefile>/dev/disk2</imagefile>
+
  </source>
+
<!-- fs start: 512 -->
+
  <volume offset='512'>
+
    <Partition_Offset>512</Partition_Offset>
+
    <block_size>512</block_size>
+
    <ftype>2</ftype>
+
    <ftype_str>fat12</ftype_str>
+
    <block_count>5062</block_count>
+
    <first_block>0</first_block>
+
    <last_block>5061</last_block>
+
    <fileobject>
+
      <filename>README.txt</filename>
+
      <id>2</id>
+
      <filesize>43</filesize>
+
      <partition>1</partition>
+
      <alloc>1</alloc>
+
      <used>1</used>
+
      <inode>6</inode>
+
      <type>1</type>
+
      <mode>511</mode>
+
      <nlink>1</nlink>
+
      <uid>0</uid>
+
      <gid>0</gid>
+
      <mtime>1258916904</mtime>
+
      <atime>1258876800</atime>
+
      <crtime>1258916900</crtime>
+
      <byte_runs>
+
      <run file_offset='0' fs_offset='37376' img_offset='37888' len='43'/>
+
      </byte_runs>
+
      <hashdigest type='md5'>2bbe5c3b554b14ff710a0a2e77ce8c4d</hashdigest>
+
      <hashdigest type='sha1'>b3ccdbe2db1c568e817c25bf516e3bf976a1dea6</hashdigest>
+
    </fileobject>
+
  </volume>
+
<!-- end of volume -->
+
<!-- clock: 0 -->
+
  <runstats>
+
    <user_seconds>0</user_seconds>
+
    <system_seconds>0</system_seconds>
+
    <maxrss>1814528</maxrss>
+
    <reclaims>546</reclaims>
+
    <faults>1</faults>
+
    <swaps>0</swaps>
+
    <inputs>56</inputs>
+
    <outputs>0</outputs>
+
    <stop_time>Sun Nov 22 11:08:36 2009</stop_time>
+
  </runstats>
+
</fiwalk>
+
 
</pre>
 
</pre>
  
==Availability==
+
The acquisition driver is named pmem.ko.
fiwalk can be downloaded from http://afflib.org/fiwalk
+
 
 +
To load the driver:
 +
<pre>
 +
sudo insmod pmem.ko
 +
</pre>
 +
 
 +
To check if the driver is running:
 +
<pre>
 +
sudo lsmod
 +
</pre>
 +
 
 +
The driver create a device file named:
 +
<pre>
 +
/dev/pmem
 +
</pre>
 +
 
 +
To unload the driver:
 +
<pre>
 +
sudo rmmod pmem
 +
</pre>
 +
 
 +
To read acquire the memory just read from the device file. e.g.
 +
<pre>
 +
dd if=/dev/pmem of=image.raw
 +
</pre>
 +
 
 +
For more information see:
 +
<pre>
 +
rekall/tools/linux/README
 +
</pre>
 +
 
 +
=== Mac OS X ===
 +
 
 +
For more information see:
 +
<pre>
 +
rekall/tools/osx/OSXPMem/README
 +
</pre>
 +
 
 +
=== Windows ===
 +
Since recent versions of Windows require a signed driver rekall comes with both pre-built (signed binary) and source versions of the driver.
 +
 
 +
Both the i386 and amd64 binary version of the driver can be found in the directory:
 +
<pre>
 +
rekall/tools/windows/winpmem/binaries
 +
</pre>
 +
 
 +
E.g.
 +
<pre>
 +
rekall/tools/winpmem/binaries/amd64/winpmem.sys
 +
</pre>
 +
 
 +
A standalone tool for imaging memory that uses an embedded copy of the pmem driver can be found as winpmem.exe in:
 +
<pre>
 +
rekall/tools/winpmem/executables/Release/
 +
</pre>
 +
 
 +
To load the driver:
 +
<pre>
 +
winpmem.exe -l
 +
</pre>
 +
 
 +
The device filename is (This can not be changed without recompiling):
 +
<pre>
 +
\\.\pmem
 +
</pre>
 +
 
 +
Note that running dd directly on this device file can crash the machine.
 +
Use the winpmem.exe tool instead because it handles protected memory regions.
 +
 
 +
To read and acquire the physical memory and write it to image.raw:
 +
<pre>
 +
winpmem.exe image.raw
 +
</pre>
 +
 
 +
To unload the driver:
 +
<pre>
 +
winpmem.exe -u
 +
</pre>
 +
 
 +
For more information see:
 +
<pre>
 +
rekall/tools/windows/README
 +
</pre>
  
==See Also==
+
== See Also ==
* [[fileobject]]
+
* [[Memory analysis]]
* [http://domex.nps.edu/deep/Fiwalk.html fiwalk on the DEEP website]
+
* [[Memory Imaging]]
 +
* [[Volatility]]
  
[[Category:Digital Forensics XML]]
+
== External Links ==
 +
* [https://code.google.com/p/rekall/ Project site]
 +
* [http://docs.rekall.googlecode.com/git/index.html Project documentation]
 +
* [http://rekall-forensic.blogspot.com/ Rekall Memory Forensics blog]
 +
* [http://www.rekall-forensic.com/docs/References/Papers/DFRWS2013.html Anti-forensic resilient memory acquisition]] by [[Johannes Stüttgena]] [[Michael Cohen]], August 2013
 +
* [http://www.rekall-forensic.com/docs/References/Papers/DFRWS2014EU.html Robust Linux memory acquisition with minimal target impact], [[Johannes Stüttgena]] [[Michael Cohen]], May 2014

Revision as of 03:33, 25 June 2014

Rekall
Maintainer: Michael Cohen
OS: Cross-platform
Genre: Memory Analysis,Memory Imaging
License: GPL
Website: code.google.com/p/rekall/

Rekall is the stand-alone continuation of the Volatility Technology Preview (TP) version, aka the scudette branch.

One of Rekalls goals is to provide better integration with GRR by improved modularity of the framework and having memory acquisition capability.[1]

Memory acquisition drivers

The drivers can be found under:

rekall/tools/linux
rekall/tools/osx
rekall/tools/windows

Linux

In rekall RC11 the advanced Linux acquisition tool (LMAP) was added. lmap allows to inject the pmem functionality into existing kernel modules to bypass having to build a pmem kernel module for every different kernel version. See the corresponding DFRWS EU 2014 paper for more information about LMAP.

To build the kernel module for the current kernel version, make sure you have a working build environment and the kernel headers installed. Change into this directory and run make:

cd rekall/tools/linux/
make

The acquisition driver is named pmem.ko.

To load the driver:

sudo insmod pmem.ko

To check if the driver is running:

sudo lsmod

The driver create a device file named:

/dev/pmem

To unload the driver:

sudo rmmod pmem

To read acquire the memory just read from the device file. e.g.

dd if=/dev/pmem of=image.raw

For more information see:

rekall/tools/linux/README

Mac OS X

For more information see:

rekall/tools/osx/OSXPMem/README

Windows

Since recent versions of Windows require a signed driver rekall comes with both pre-built (signed binary) and source versions of the driver.

Both the i386 and amd64 binary version of the driver can be found in the directory:

rekall/tools/windows/winpmem/binaries

E.g.

rekall/tools/winpmem/binaries/amd64/winpmem.sys

A standalone tool for imaging memory that uses an embedded copy of the pmem driver can be found as winpmem.exe in:

rekall/tools/winpmem/executables/Release/

To load the driver:

winpmem.exe -l

The device filename is (This can not be changed without recompiling):

\\.\pmem

Note that running dd directly on this device file can crash the machine. Use the winpmem.exe tool instead because it handles protected memory regions.

To read and acquire the physical memory and write it to image.raw:

winpmem.exe image.raw

To unload the driver:

winpmem.exe -u 

For more information see:

rekall/tools/windows/README

See Also

External Links