From d9dea468f394addbf6bb946b9046763307d1d00f Mon Sep 17 00:00:00 2001 From: Ann Priestman Date: Fri, 11 Oct 2019 12:14:13 -0400 Subject: [PATCH] Added tutorial one to docs --- docs/doxygen/Doxyfile | 4 +- docs/doxygen/images/bigAndRoundFiles.png | Bin 0 -> 31278 bytes docs/doxygen/images/demoScript_folder.png | Bin 0 -> 7417 bytes docs/doxygen/images/ingest-modules.PNG | Bin 0 -> 43805 bytes docs/doxygen/{ => images}/viewer_image.JPG | Bin docs/doxygen/main.dox | 4 +- docs/doxygen/modDSIngestTutorial.dox | 5 + docs/doxygen/modFileIngestTutorial.dox | 154 +++++++++++++++++++++ 8 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 docs/doxygen/images/bigAndRoundFiles.png create mode 100644 docs/doxygen/images/demoScript_folder.png create mode 100644 docs/doxygen/images/ingest-modules.PNG rename docs/doxygen/{ => images}/viewer_image.JPG (100%) mode change 100755 => 100644 create mode 100644 docs/doxygen/modDSIngestTutorial.dox create mode 100644 docs/doxygen/modFileIngestTutorial.dox diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index b640c41549..0037b15063 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -772,6 +772,8 @@ INPUT = main.dox \ regressionTesting.dox \ native_libs.dox \ modDevPython.dox \ + modFileIngestTutorial.dox \ + modDSIngestTutorial.dox \ debugTsk.dox \ ../../Core/src \ ../../CoreLibs/src \ @@ -867,7 +869,7 @@ EXAMPLE_RECURSIVE = NO # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = . +IMAGE_PATH = images/ # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program diff --git a/docs/doxygen/images/bigAndRoundFiles.png b/docs/doxygen/images/bigAndRoundFiles.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6430e7d8f9e9d59f73d60bf63a4e07710912bc GIT binary patch literal 31278 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 JRf!k|{SU*u6|?{V literal 0 HcmV?d00001 diff --git a/docs/doxygen/images/demoScript_folder.png b/docs/doxygen/images/demoScript_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..01d7d16f4c592b9d3f07c0c8bae604ef765b38d4 GIT binary patch literal 7417 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 HI^cf*s>lmm literal 0 HcmV?d00001 diff --git a/docs/doxygen/viewer_image.JPG b/docs/doxygen/images/viewer_image.JPG old mode 100755 new mode 100644 similarity index 100% rename from docs/doxygen/viewer_image.JPG rename to docs/doxygen/images/viewer_image.JPG diff --git a/docs/doxygen/main.dox b/docs/doxygen/main.dox index 22bcd097ad..094c61f612 100644 --- a/docs/doxygen/main.dox +++ b/docs/doxygen/main.dox @@ -9,8 +9,8 @@ If these pages don't answer your question, then send the question to the Writing Python or Java Modules If you want to write Java or Python modules, then there are some tutorials and detailed pages in this document. The Python tutorials include: -- File Ingest Modules: http://www.basistech.com/python-autopsy-module-tutorial-1-the-file-ingest-module/ -- Data Source Ingest Modules: http://www.basistech.com/python-autopsy-module-tutorial-2-the-data-source-ingest-module/ +- File Ingest Modules: \subpage mod_python_file_ingest_tutorial_page +- Data Source Ingest Modules: \subpage mod_python_ds_ingest_tutorial_page - Report Modules: http://www.basistech.com/python-autopsy-module-tutorial-3-the-report-module/ This document contains the following pages: diff --git a/docs/doxygen/modDSIngestTutorial.dox b/docs/doxygen/modDSIngestTutorial.dox new file mode 100644 index 0000000000..e457cbd7d0 --- /dev/null +++ b/docs/doxygen/modDSIngestTutorial.dox @@ -0,0 +1,5 @@ +/*! \page mod_python_ds_ingest_tutorial_page Python Tutorial #2: Writing a Data Source Ingest Module + + + +*/ \ No newline at end of file diff --git a/docs/doxygen/modFileIngestTutorial.dox b/docs/doxygen/modFileIngestTutorial.dox new file mode 100644 index 0000000000..def7e91c2a --- /dev/null +++ b/docs/doxygen/modFileIngestTutorial.dox @@ -0,0 +1,154 @@ +/*! \page mod_python_file_ingest_tutorial_page Python Tutorial #1: Writing a File Ingest Module + + +\section python_tutorial1_why Why Write a File Ingest Module? +
    +
  • Autopsy hides the fact that a file is coming from a file system, was carved, was from inside of a ZIP file, or was part of a local file. So, you don’t need to spend time supporting all of the ways that your user may want to get data to you. You just need to worry about analyzing the content.
  • +
  • Autopsy displays files automatically and can include them in reports if you use standard blackboard artifacts (described later). That means you don’t need to worry about UIs and reports.
  • +
  • Autopsy gives you access to results from other modules. So, you can build on top of their results instead of duplicating them.
  • +
+ +\section python_tutorial1_ingest_modules Ingest Modules + +For our first example, we’re going to write an ingest module. Ingest modules in Autopsy run on the data sources that are added to a case. When you add a disk image (or local drive or logical folder) in Autopsy, you’ll be presented with a list of modules to run (such as hash lookup and keyword search). + +\image html ingest-modules.PNG + +Those are all ingest modules. We’re going to write one of those. There are two types of ingest modules that we can build: +
    +
  • File Ingest Modules are the easiest to write. During their lifetime, they will get passed in each file in the data source. This includes files that are found via carving or inside of ZIP files (if those modules are also enabled).
  • +
  • Data Source Ingest Modules require slightly more work because you have to query the database for the files of interest. If you only care about a small number of files, know their name, and know they won’t be inside of ZIP files, then these are your best bet.
  • +
+ +For this first tutorial, we’re going to write a file ingest module. The \ref mod_python_ds_ingest_tutorial_page "second tutorial" will focus on data source ingest modules. Regardless of the type of ingest module you are writing, you will need to work with two classes: +
    +
  • The factory class provides Autopsy with module information such as display name and version. It also creates instances of ingest modules as needed.
  • +
  • The ingest module class will do the actual analysis. One of these will be created per thread. For file ingest modules, Autopsy will typically create two or more of these at a time so that it can analyze files in parallel. If you keep things simple, and don’t use static variables, then you don’t have to think about anything multithreaded.
  • +
+ +\section python_tutorial1_getting_started Getting Started + +To write your first file ingest module, you’ll need: +
+ +Some other general notes are that you will be writing in Jython, which converts Python-looking code into Java. It has some limitations, including: +
    +
  • You can’t use Python 3 (you are limited to Python 2.7)
  • +
  • You can’t use libraries that use native code
  • +
+ +But, Jython will give you access to all of the Java classes and services that Autopsy provides. So, if you want to stray from this example, then refer to the Developer docs on what classes and methods you have access to. The comments in the sample file will identify what type of object is being passed in along with a URL to its documentation. + +\subsection python_tutorial1_folder Making Your Module Folder + +Every Python module in Autopsy gets its own folder. This reduces naming collisions between modules. To find out where you should put your Python module, launch Autopsy and choose the Tools -> Python Plugins menu item. That will open a folder in your AppData folder, such as "C:\Users\JDoe\AppData\Roaming\Autopsy\python_modules". + +

Make a folder inside of there to store your module. Call it "DemoScript". Copy the fileIngestModule.py sample file listed above into the this new folder and rename it to FindBigRoundFiles.py. Your folder should look like this: + +\image html demoScript_folder.png + +\subsection python_tutorial1_writing Writing the Script + +We are going to write a script that flags any file that is larger than 10MB and whose size is a multiple of 4096. We’ll call these big and round files. This kind of technique could be useful for finding encrypted files. An additional check would be for entropy of the file, but we’ll keep the example simple. + +Open the FindBigRoundFiles.py file in your favorite python text editor. The sample Autopsy Python modules all have TODO entries in them to let you know what you should change. The below steps jump from one TODO to the next. +

    +
  1. Factory Class Name: The first thing to do is rename the sample class name from “SampleJythonFileIngestModuleFactory” to “FindBigRoundFilesIngestModuleFactory”. In the sample module, there are several uses of this class name, so you should search and replace for these strings.
  2. +
  3. Name and Description: The next TODO entries are for names and descriptions. These are shown to users. For this example, we’ll name it “Big and Round File Finder”. The description can be anything you want. Note that Autopsy requires that modules have unique names, so don’t make it too generic.
  4. +
  5. Ingest Module Class Name: The next thing to do is rename the ingest module class from “SampleJythonFileIngestModule” to “FindBigRoundFilesIngestModule”. Our usual naming convention is that this class is the same as the factory class with “Factory” removed from the end.
  6. +
  7. startUp() method: The startUp() method is where each module initializes. For our example, we don’t need to do anything special in here. Typically though, this is where you want to do stuff that could fail because throwing an exception here causes the entire ingest to stop.
  8. +
  9. process() method: This is where we do our analysis. The sample module is well documented with what it does. It ignores non-files, looks at the file name, and makes a blackboard artifact for “.txt” files. There are also a bunch of other things that it does to show examples for easy copy and pasting, but we don’t need them in our module. We’ll cover what goes into this method in the next section.
  10. +
  11. shutdown() method: The shutDown() method either frees resources that were allocated or sends summary messages. For our module, it will do nothing.
  12. +
+ +\subsection python_tutorial1_process The process() Method + +The process() method is passed in a reference to an AbstractFile Object. With this, you have access to all of a file’s contents and metadata. We want to flag files that are larger than 10MB and that are a multiple of 4096 bytes. The following code does that: + +\verbatim if ((file.getSize() > 10485760) and ((file.getSize() % 4096) == 0)): +\endverbatim + +Now that we have found the files, we want to do something with them. In our situation, we just want to alert the user to them. We do this by making an "Interesting Item" blackboard artifact. The Blackboard is where ingest modules can communicate with each other and with the Autopsy GUI. The blackboard has a set of artifacts on it and each artifact:

+
    +
  • Has a type
  • +
  • Is associated with a file
  • +
  • Has one or more attributes. Attributes are simply name and value pairs.
  • +
+ +For our example, we are going to make an artifact of type "TSK_INTERESTING_FILE" whenever we find a big and round file. These are one of the most generic artifact types and are simply a way of alerting the user that a file is interesting for some reason. Once you make the artifact, it will be shown in the UI. The below code makes an artifact for the file and puts it into the set of "Big and Round Files". You can create whatever set names you want. The Autopsy GUI organizes Interesting Files by their set name. +\verbatim + art = file.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT) + att = BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME.getTypeID(), + FindBigRoundFilesIngestModuleFactory.moduleName, "Big and Round Files") + art.addAttribute(att)\endverbatim + +The above code adds the artifact and a single attribute to the blackboard in the embedded database, but it does not notify other modules or the UI. The UI will eventually refresh, but it is faster to fire an event with this: +\verbatim + IngestServices.getInstance().fireModuleDataEvent( + ModuleDataEvent(FindBigRoundFilesIngestModuleFactory.moduleName, + BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT, None))\endverbatim + +That’s it. Your process() method should look something like this: +\verbatim + def process(self, file): + + # Skip non-files + + if ((file.getType() == TskData.TSK_DB_FILES_TYPE_ENUM.UNALLOC_BLOCKS) or + + (file.getType() == TskData.TSK_DB_FILES_TYPE_ENUM.UNUSED_BLOCKS) or + + (file.isFile() == False)): + + return IngestModule.ProcessResult.OK + + + + # Look for files bigger than 10MB that are a multiple of 4096 + + if ((file.getSize() > 10485760) and ((file.getSize() % 4096) == 0)): + + + + # Make an artifact on the blackboard. TSK_INTERESTING_FILE_HIT is a generic type of + + # artifact. Refer to the developer docs for other examples. + + art = file.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT) + + att = BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME.getTypeID(), + + FindBigRoundFilesIngestModuleFactory.moduleName, "Big and Round Files") + + art.addAttribute(att) + + + + # Fire an event to notify the UI and others that there is a new artifact + + IngestServices.getInstance().fireModuleDataEvent( + + ModuleDataEvent(FindBigRoundFilesIngestModuleFactory.moduleName, + + BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT, None)) + + + + return IngestModule.ProcessResult.OK\endverbatim + +Save this file and run the module on some of your data. If you have any big and round files, you should see an entry under the “Interesting Items” node in the tree. + +\image html bigAndRoundFiles.png + +\subsection python_tutorial1_debug Debugging and Development Tips + +Whenever you have syntax errors or other errors in your script, you will get some form of dialog from Autopsy when you try to run ingest modules. If that happens, fix the problem and run ingest modules again. You don’t need to restart Autopsy each time! + +The sample module has some log statements in there to help debug what is going on since we don’t know of better ways to debug the scripts while running in Autopsy. + + +*/