2009年9月25日 星期五

PyFlag

What is PyFlag?

PyFlag原是由澳洲國防部設計,之後被以GPL License(Free Software Foundation, 2007)模式釋出為自由軟體。原始設計是做為以資料庫與分析工具所架構的數位鑑識工具,後來又再加上了先進的網路鑑識的能力。它具有以下的特性:

  • PyFlag是一種圖形界面的鑑識軟體,它可以以分析比對大容量的檔案、和log檔。
  • PyFlag有強大的功能,包括載入許多不同類型的log檔案、執行磁碟與映象檔的鑑識分析。Pyflag也能藉由tcpdump快速有效率地進行網路流量分析。
  • 因為PyFlag是在web之上使用的軟體,它能夠部署於Server中並由多位user同時共用。資料是載入到case中以便與資訊隔離開來。
  • PyFlag基於GPL授權,可供任何人使用、修改與改良。

Feature List

  • Network Forensics
    PyFlag
    能分析TCPDump的網路記錄格式,支援不同類型的通訊協定。

  • Log Analysis
    PyFlag擁有強大的log分析能力。支援許多log格式及提供查詢log檔案的強大系統。

  • Disk Forensics
    PyFlag具備強力的分析鑑識硬碟images能力,支援多數檔案系統。也擁有Carve (比對檔案中,出現某一特徵的程序)的能力。

  • Memory Forensics
    PyFlag利用Volatility Framework可支援記憶體鑑識的功能。


The general PyFlag architecture:

PyFlag的主要元件如下:

  1. IO Sources

    為了提供壓縮,或在原始image中儲存案件有關的meta-data,通常image除了dump(有時稱為dd格式)外還會以其他格式儲存。鑑識的資料通常來自不同的格式。透過IO Source DriversPyFlag可支援多種不同的image格式。IO子系統使用不同的driver,將資料以統一格式呈現,提供了一個標準的介面將image呈現給PyFlag

    在我們使用PyFlag分析image前,我們必須定義一個IO Source。一個IOSource僅僅是收集資訊以獲取原始image的數據資料。

    例如,為了讀取一組Encase類型檔案,我們需知道使用EncaseDriver。透過讀取partition table來瞭解檔案系統是從那裡開始。這組必要的資訊稱為一個「IO Source」,而我們也可以自行將其命名。

    一些常用IO Source drivers使用包括EWF(Expert Witness Forensic file format, Kloet2007)這種支援業界目擊證據文件格式,以及標準IO Source也增加了可以直接取用dd program的原始image檔的能力。這提取可以把容量非常大的PCAP檔案以EWF格式儲存,以利壓縮、hash認證和檔案metadata等功能的使用。


  2. The Virtual File System

檔案系統是數位鑑識的核心,因此Virtual File SystemVFS)是PyFlag的核心。PyFlag使用源自Unix的觀念是,所有的東西都是檔案VFS是一個抽象的檔案系統。主要功能是向用戶提供信息。在VFS中的檔案不一定存在於image中,但所呈現信息已經由VFS推導出來。VFS本身只是儲存inode和檔案名稱的關係。

VFS基本上是一個樹狀結構,把PyFlag所有的物件在裡頭呈現。VFS是模仿真正的檔案系統,物件被稱為inodeVFS inode是個字串,它可以描述出這個物件如何獲得,物件相關的路徑、名稱等。這種途徑把inodeVFS下安排成一個目錄結構。內部的物件以inodeID呈現,這種用法常見於一般工具中。PyFlag採用的新技術是可以把取自Data的來龍去脈以inode string來呈現。這種模式讓使用者可以很方便地檢視每個推論來自何處。

Virtual File System(VFS)提供了三個主要功能:

    1. 開啓檔案
    2. VFS中建立新檔案
    3. VFS瀏覽檔案結構(檔案名稱和目錄)。


l The File System Loader

新建一個case後,PyFlag VFS是空的。我們必需先塞入原始資料,這便是由File System Loader的工作。

透過IO Sourceimgaes載入後。File System Loader會檢查檔案系統的位置,並發掘所有在其中的檔案。負責把調查的檔案系統中所找到的檔案列表填入VFSinode中。File System Loader是一個特殊的模組,它可以從一個實際的檔案系統(如NTFSext2)來處理和填入VFS inode。也能建立虛擬inodes來呈現抽象物件。

File System Loader有很多種,大致上可以分為幾種類型:

  1. sleuthkit的文件系統驅動程序:
    這類drivers使用Brian Carrier's Sleuthkit的程式讀取許多種類型的檔案系統,如NTFSFAText2ext3ffs等。
  2. Mounted File System Driver:
    這個drver只能與已掛載的IO Source一起運作,而它是在一個給定的目錄下,來記錄所發現的文件和目錄之用。
  3. PCAP Filesystem:
    這個虛擬的檔案系統提供了存取PCAP檔案的能力,讓PyFlag能從事網路鑑識。

例如:PCAP FileSystem LoaderVFS中呈現代表的TCP Stream的節點,而記憶體鑑識Loaderporcess IDsmemory structureVFS呈現。每種filesystem loader把它的inodes用一個特定的掛載點載入到VFS中。這讓許多不同的IO Sourcefilesystem可以同在VFS中呈現。藉由這些source產生VFSinodes,應用程序整個一起呈現共同比對。

l Scanners:

VFSPyFlag的核心,它提供inode的存儲場所。而我們可以使用各種不同的VFS File Drivers開啓這些inodeFile System可以從IO Source匯入到VFS。但File System Loader不是將檔案系統匯入VFS的唯一方式。我們也可以用掃描的方式來完成這個動作。

掃描是指使用一個或多個scanner來檢查某個目錄的過程。scanner是一種能夠細察與蒐集檔案資訊的模組元件。這過程中可能又某些檔案會被新增至VFS中(可再次掃描)。

掃描一組檔案可以從網頁瀏覽檔案系統的頁面開始,或直接從Load Data的選單進行。PyFlag有許多不同的ScannerScanner是一種小型的、專門為了從檔案系統中搜索檔案及資訊所建立的程式碼。例如,Zip file Scanner,旨在搜尋所有壓縮文件,並創建VFSinode來表示zip檔的內容。

每次Scanner創建一個新的VFS檔案,便會使用一整套完整的Scanner去動作。假設pst檔案Scanner發現了一個pst檔案,從而建立新的VFS inode處理每一封電子郵件發現的附件。然後Zip Scanner,可以掃描發現其中一個附件是一個壓縮檔,從而建立了一套VFSinode代表壓縮檔的內容。然後Virus Scanner發現一個可能這些文件中的某一個檔案是病毒。


2.scanner

l The GUI and Table widget:

GUI提供了一個能檢視Scanner所掃瞄成果和使用VFS的界面。PyFlag最強大的工具集是table viewer。這個工具允許搜索極其複雜的數據。下圖顯示了一個典型的使用表的部件,儘管它是用在許多地方在PyFlag

3.Table widget

l Scripting and automation:

PyFlag擁有強大的GUI快速導覽鑑識分析結果。但在任何硬體下,鑑識工作是一個緩慢的過程。硬碟image大小目前發展呈指數型增加,許多鑑識工作需要越來越多時間去進行。PyFlag會將鑑識分析結果cache起來,讓鑑識分析工作只需要進行一次。之後從cache中讀取操作起來會快上許多。

PyFlag的優點之一是使用者界面(UI)。換句話說,使用者如何與軟件交互,可以方便地改變而不用改變主要的程式碼。這讓使用者能擁有多種不同於GUI界面的選項。

命令行界面(CLI)一直是Unix的核心概念。雖然大多數新用戶擔心不懂得如何使用CLI,聲稱這是不直覺式、比GUI更難使用。然而CLI仍不被遺忘,原因就是CLI是更強大。在某些情況下,它允許批次或使用Script方式處理工作。PyFlag允許用戶互換任何模式來操作,因此,使用者如果不熟悉CLI,仍然可以使用GUI

Flash commands:

Flash 可以從 PyFlag 主目錄下鍵入./flash

mic@debian:~/pyflag$ ./flash

Welcome to the Flag shell. Type help for help

Flag Shell: />help

PyFlag shell allows direct access to the filesystems. Command line expansion is supported.

The following commands are defined, type help command to find out more:

['load', 'execute', 'set', 'help', 'less', 'cd', 'pwd', 'exit', 'ls', 'command', 'cp', 'istat']

Flag Shell: />help load

load case.iosource: loads the iosource within case into the shell.


l Network Frensics:

在數位鑑識調查中最有價值的證據之一是網絡所擷取的資訊。網絡流量可以呈現了豐富的價值和安全/管理的價值訊息。可惜一般被設計來分析網絡流量的工具(例如:Ethereal),只能調試網路問題或解剖通訊協議。但在鑑識調查中,高層次訊信息如FTPEmail…等社交網路才是重點。

模組目的是提供高層次的分析資料,同時提供足夠的信息來查明準確掌握每一塊數據的來源。例如,當瀏覽聊天訊息時,我們可以精確地看到每個聊天訊息的封包。

多層次地進行遞歸分析數據是PyFlag架構的優點之一,它可以發掘檔案被封裝在其他檔案中。這種方法是應用在分析網路通訊協議上最是理想,一般高層協議是架構在底層通訊協議之上。

PyFlag通常採取以下步驟來剖析網絡流量:

    1. PCAP檔案進行分析和並從中擷取封包。
    2. 將這些封包在不同低層通訊協議中分析,如以太網,IPTCPUDP
    3. 使用TCP stream reassembler將有關TCP封包收集到stream中。Reassembler思索封包重送並按順序排序。
    4. 所產生的Stream用高層通訊協議的解析器(如:HTTP, IRC, MSN Chat)剖析。

The PCAP Filesystem

我們首先載入一個IO Source並將其命名,把PCAP檔案載入到PyFlag。然後選擇PCAPFS檔案系統。PCAP檔案系統,掃描IO Source並把封包建立索引。然後在VFS建立一個獨立檔案稱為rawdata。該檔案代表著原始封包資料。

The Network Scanners

初始的VFS只有一個檔案,network scanner負責填入VFS的新檔案。以下是一些重要的network scanner

    1. Steam Reassembler Scanner

Steam Reassembler ScannerTCP封包分類到個別的stream。相對應的VFS Driver就可以使stream資料像個一般檔案使用。

    1. HTTP Scanner

掃描儀的HTTP Scanner管理已重組的Stream並把曾造訪過的不同的網址分類。然後為HTTP下載的物件內容建立VFSinode

    1. POP/SMTP Scanners

POP scanner管理POP stream並辨識已傳送的email。依靠RFC2822 scanner的幫助,這個scanner可以為傳送的電子郵件中的附件建立VFSstream

    1. MSN/IRC Scanners

記錄所有聊天信息,並讓它們顯示成便於檢索的格式。MSN檔案傳輸,也可以被進一步地掃描進VFS中。


沒有留言:

張貼留言