<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    3.2 Sleuth Kit Framework 概述

    以下頁面概述了該框架。用戶和開發人員都應該熟悉此內容。

    基本框架概念

    基本概念

    • Image數據庫:框架將數據存儲在Image數據庫中,該數據庫可以像本地SQLite文件一樣簡單,也可以像由數據庫服務器上的關系數據庫管理系統(RDBMS)管理的數據庫一樣復雜。框架的TskImgDB接口隱藏了從圖像數據庫存儲和檢索數據的詳細信息。

    • Pipeline和Module:該框架提供了可將Module放入其中的Pipeline基礎結構。該框架帶有基本Module,但是隨著框架的發展,預計其他開發人員將提供其他Module。請參Pipeline和Module基礎知識和開發Module,以了解如何構建Pipeline和Module。

    • Blackboard:框架使用Blackboard允許Module進行通信。Module可以將結果發布到Blackboard上,并在Blackboard上查詢以前的發現。有關更多詳細信息,請參見Blackboard。

    • 服務:該框架提供核心服務,例如日志記錄和文件管理。有關更多詳細信息,請參見Framework Services。

    • 三相分析過程:框架設計時考慮到磁盤映像分析過程分為三個主要階段:

      • 文件提取,其中使用文件系統數據,雕刻和其他類型的數據恢復來識別文件。
      • 文件分析,其中每個文件分別進行分析。
      • 后處理,其中單個文件分析的結果與圖像的其他分析相結合。

      下圖說明了這些階段:

      pipelines.png

    Pipeline和Module基礎

    總覽

    TSK框架中的Pipeline只是一組按特定順序運行的Module。在開發Module中將更詳細地介紹Module,但是到目前為止,我們需要知道的是Module會執行特定類型的分析。例如,一個Module可以計算文件的MD5哈希,而另一個Module可以進行哈希數據庫查找以查看該文件是否為已知文件。

    使用XML文件配置Pipeline,稍后將對此進行描述。

    文件分析與后處理Pipeline

    該框架當前支持兩種類型的Pipeline:文件分析Pipeline和后處理Pipeline。每種類型的Pipeline都在不同的上下文中使用。

    文件分析Pipeline使您可以對映像中的每個文件執行任務。文件分析Pipeline中的每個Module都傳遞了對文件對象的引用,該引用可用于訪問文件的元數據和內容。該Module還可以使用Blackboard訪問以前運行的Module的分析結果(有關詳細信息,請參閱Blackboard)。文件分析Module的示例包括進行哈希計算,哈希查找,存檔文件提取和文本提取的Module。

    后處理Pipeline使您可以在運行所有文件分析Module并且分別分析了映像中發現的所有文件之后執行任務。這種Pipeline有兩個主要用途。首先,后處理Module可以將文件分析Module中的結果編譯為單個摘要分析,甚至可以編寫報告。其次,后處理Module是一種用于分析文件的小子集的更有效的機制。例如,如果您需要Windows注冊表分析Module,則最好將其開發為僅在圖像中定位少數注冊表配置單元文件并對其進行分析的后處理Module,而不是將其開發為后處理Module。為圖像中的每個文件運行,但將忽略其中的大多數文件。

    插件與可執行Module

    兩種類型的管道中都可以存在兩種類型的Module。一個是動態庫或插件Module,另一個是可執行程序Module。

    插件Module經過專門編程,可以包含在框架中。這些Module可以訪問所有框架資源。開發Module中介紹了創建這些Module之一的要求。

    可執行Module只是Pipeline運行的命令行工具-如果可以從命令行運行工具,則可以從Pipeline內部運行它。Pipeline配置文件使您可以指定一串命令行選項和參數,以傳遞給可執行文件。可以使用配置文件宏將命令行參數設置為在運行時解析的變量。但是,可執行Module無權訪問圖像數據庫,Blackboard和框架提供的其他服務。這意味著,如果您希望可執行Module的結果可用于其他Module,則仍需要制作一個配套的插件Module來分析結果并將其添加到Blackboard上。

    Pipeline配置

    Pipeline配置文件

    使用XML文件配置文件分析和后處理Pipeline。單個XML文件可以存儲文件分析和后處理Pipeline的配置。查看樣本Pipeline配置文件以查看Pipeline配置文件的示例。

    注意,管道中要包含的每個Module由MODULE配置文件中的元素表示。MODULE元素可以具有以下屬性:

    屬性 描述 需要?
    訂購 Module在Pipeline中的位置。
    類型 “可執行文件”或“插件”。
    位置 要由可執行Module運行的程序的路徑,或者要為插件Module加載的動態庫的路徑。這可以是完全限定的路徑,也可以是相對路徑。如果路徑是相對的,則框架將在當前工作目錄TskSystemProperties :: MODULE_DIR和TskSystemProperties :: PROG_DIR中查找文件。
    論點 傳遞給Module的參數。請參閱配置文件Macros以了解參數如何合并直到運行時才可用的信息。 沒有
    輸出 包含Module寫入內容的文件的路徑stdout。此屬性僅適用于可執行Module。請參閱配置文件Macros以了解輸出文件路徑如何合并直到運行時才可用的信息。 沒有

    在配置管道Module時,請特別注意以下詳細信息:

    • Module的訂購不需要是順序的(即可能存在間隙),但是不能有兩個Module具有相同的訂購值。
    • 可執行Module上的重定向輸出將追加到指定的輸出文件。當多個管道(在多線程或分布式環境中)嘗試將數據寫入同一文件時,嘗試將輸出寫入共享文件可能會導致文件訪問錯誤。您可以通過使用TskSystemProperties :: UNIQUE_ID宏(如果設置了屬性)來為可執行Module構造輸出文件名來避免這種情況。
    • 如果希望在命令行中包含以下字符,則必須轉義它們:
    字符 轉義字符
    &amp;
    &quot;
    > &gt;
    < &lt;

    配置文件Macros

    Pipeline配置文件中元素的argumentsoutput屬性MODULE允許將運行時值替換為關聯的字符串。這是可能的,因為框架在讀取Pipeline配置文件時會擴展一組配置文件宏。

    有許多TskSystemProperties :: PredefinedProperty Macros。要將TskSystemProperties :: PredefinedProperty的值替換為argumentsoutput字符串,請在系統屬性名稱旁加上’#’標記。例如,用于#SYSTEM_OUT_DIR#/file1.txt引用file1.txt在系統輸出目錄中命名的文件。

    文件分析Module也可以使用TskModule :: CURRENT_FILE_MACRO Macros。該Macros擴展到Module當前正在分析的文件的路徑。請注意,盡管此Macros并不是插件Module所必需的,因為它們可以通過管道傳遞給它們的TskFile對象訪問文件元數據,但是可執行Module只能使用此Macros獲取當前文件的路徑。

    驗證Pipeline配置文件

    框架隨附的tsk_validatepipeline工具可用于驗證Pipeline配置文件格式正確,并且可以找到該文件中指定的所有Module。

    The Blackboard

    總覽

    Blackboard在允許Module通信中起著至關重要的作用。一個Module可以將數據發布到Blackboard上,以便后續的模塊可以查看其結果。它還可以查詢Blackboard以查看以前的Module已發布的內容。

    從概念上講,Blackboard是從人工智能應用程序借來的,在人工智能應用程序中,知識源(模塊)共享信息以協作解決問題(磁盤圖像分析)。實際上,框架的Blackboard是工件的集合,每個工件都與一個文件相關聯,并且每個工件都由稱為屬性的名稱/值對的集合組成。工件的示例包括Web瀏覽器書簽(具有URL和日期屬性)和GPS跟蹤點(具有地理坐標和日期屬性)。取決于使用的模塊和文件本身,對圖像中任何給定文件的分析可能會產生很少的偽像和屬性,或者產生大量的偽像和屬性。

    請注意,Blackboard在TSK框架(C ++)和TSK Core的Java綁定中都存在。此頁面是兩種編程語言的概述。這里鏈接了C ++源代碼,但是除非另有說明,否則Java綁定提供相似或相同的功能。

    訪問Blackboard

    C ++ Module通過從TskServices獲取對TskBlackboard對象的引用來訪問Blackboard。

    Java Module可以從SleuthkitCase對象或Content對象獲得Blackboard訪問。

    Artifact類型

    除了其屬性集合之外,每個Artifact都有一種類型。Artifact類型定義由一個唯一的類型名和一個顯示名組成,它們不必是唯一的,但應該是人類可讀的。框架為每種Artifact類型分配唯一的整數ID。

    標準Artifact類型

    該框架預定義了通常對數字取證工作很重要的許多Artifact類型。例如,每個文件通常具有TSK_GEN_INFO Artifact,該Artifact將與文件有關的屬性(例如,文件元數據)分組,但不一定以任何其他方式相互關聯。

    定義新的Artifact類型

    如果您需要創建框架中不存在的Artifact類型,則可以定義自己的Artifact類型。該框架附帶一個實現TskBlackboard接口的TskDBBlackboard類。只需調用TskBlackboard :: addArtifactType()函數,即可提供所需的類型名稱和顯示名稱。該函數的TskDBBlackboard版本將創建Artifact類型(如果尚不存在),并將返回該類型的整數ID。

    屬性類型

    屬性是一個“名稱/值”對,其中名稱表示屬性的類型。像Artifact類型定義一樣,屬性類型定義由唯一的類型名稱和顯示名稱組成,該名稱不必是唯一的,但應該是人類可讀的。框架為每種屬性類型分配一個唯一的整數ID。

    屬性還具有一個可選的上下文字段,可以將其設置為您選擇的字符串。

    標準屬性類型

    該框架預先定義了補充標準Artifact類型的標準屬性類型,并且通常對于數字取證工作也很重要。例如,計算文件熵的Module可以通過向文件的TSK_GEN_INFO Artifact添加標準TSK_ENTROPY屬性來記錄其計算結果。

    請參閱TSK_ATTRIBUTE_TYPE枚舉,以獲取標準屬性類型的完整列表。

    創建屬性類型

    您可以使用類似于創建新工件類型的機制來創建新屬性類型。調用TskBlackboard :: addAttributeType()函數,提供所需的類型名稱和顯示名稱。此函數的TskDBBlackboard版本將創建屬性類型(如果該屬性類型尚不存在),并將返回該類型的整數ID。

    發布到Blackboard上

    將屬性添加到TSK_GEN_INFO偽像一個文件,首先創建一個TskBlackboardAttribute使用中的一個所希望的類型的TskBlackboardAttribute構造器,然后調用[TskFile :: addGenInfoAttribute()的上TskFile表示文件的對象。

    要發布其他類型的屬性,您需要為文件創建新的工件,或將屬性添加到現有工件。為了支持前者,TskFile和TskBlackboard接口定義了重載的TskFile :: createArtifact() / TskBlackboard :: createArtifact()工廠函數,它們返回TskBlackboardArtifact對象,而TskBlackboardArtifact類提供了TskBlackboardArtifact :: addAttribute()成員函數。為了支持后者,TskFile和TskBlackboard接口包含重載的TskFile :: getArtifacts() /TskBlackboard :: getArtifacts()函數可返回TskBlackboardArtifact對象的集合。遍歷集合以找到所需的工件,然后構造一個TskBlackboardAttribute對象并調用TskBlackboardArtifact :: addAttribute()。

    屬性上下文?

    上下文字段應謹慎使用,并且框架本身對屬性上下文字符串不執行任何操作,僅使它們可用于檢查。

    例如,考慮一個分析Microsoft Word文件的Module,其中包括確定文檔的最后保存時間和文檔的最后打印時間。這兩個日期都可以發布到Blackboard上,以供以后制定活動時間表的Module使用。一種方法是為文件創建TSK_GEN_INFO Artifact的日期TSK_DATETIME屬性,并使用“上次打印”和“上次保存”上下文值來區分這兩個屬性。另一方面,更健壯的方法是創建新的“ LastPrinted”和“ LastSaved”屬性類型,并將相應的屬性發布到TSK_GEN_INFO Artifact中。后一種方法將使時間線Module更容易檢索相關屬性。

    多個Artifact與多個屬性?

    在某些情況下,您是否應該為文件發布多個單屬性Artifact或發布單個多屬性Artifact可能并不明確。以下是一些準則:

    • 應該將本質上是自包含數據項的屬性(例如TSK_DATETIME_CREATED和TSK_DATETIME_MODIFIED添加到文件的TSK_GEN_INFO Artifact中。
    • 如果單個文件與相同類型的多個項目相關聯(例如,日志文件中的日志條目,書簽文件中的書簽,cookie數據庫中的cookie),則每個實例都應作為單獨的Artifact發布,以便您可以區分它們并保持所有相關屬性清楚地分組(例如,很清楚哪個日期與哪個日志條目對應)。
    • 除TSK_GEN_INFO Artifac以外的Artifac中的所有屬性都應彼此緊密相關。

    查詢Blackboard

    所述TskFile接口定義了一組成員函數,提供了一種方便的方式獲得的Artifac和屬性與該文件相關聯TskFile實例表示。

    所述TskBlackboard界面提供了取得文件ID作為其理由之一類似的功能,以及多個通用查詢功能。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类