Unix/Linux 中分析記憶體資料的駭客級工具(取證分析)

在 Linux 中我們可以透過一些工具將記憶體中的資料傾倒(dump)出來,這對於取證分析(forensics analysis)或是分析自己的系統是很有用的。


通常在以下幾種狀況會用到這種記憶體分析的工具:
  • 想知道在記憶體中到底儲存了哪些程式與資料。
  • 搜尋屬於某個行程 ID(pid)的記憶體空間。
  • 在記憶體中搜尋一些機密性資料,如帳號與密碼。
  • 作為一些工具的附加功能,例如 gdb 除錯程式等。
  • 搜尋、取代或轉存執行中程式的記憶體資料與核心檔案(core files)。
  • 使用各種駭客級的動作,以最短的時間解決問題。
以下是各種用於分析記憶體資料的工具。

LiME(Linux Memory Extractor)

LiME(前身是 DMD)是一個可被 Linux 載入的核心模組(Loadable Kernel Module,簡稱 LKM),它可以用來取得 Linux(或以 Linux 為基礎的系統,如 Android)記憶體中的資料,從記憶體取得的資料除了儲存在硬碟之外,也可以透過網路直接傳輸。

LiME 的最大特色就是他是第一個可以取得 Android 系統上所有記憶體資料的工具,並且它也簡化了抓取資料時在 user 與 kernel space 的程序,這樣的話,以 LiME 所取得的記憶體資料會比其他工具所取得的資料更可靠。

Draugr

Draugr 是一個可以讓你使用 Python 靠著 /dev/(k)mem 或記憶體傾印(memory dump)來分析記憶體的工具,其提供許多方式可以讓你取得各種系統的資訊,例如 processes(包含過種資訊與 sections)、kernel symbols 與反組譯(Disassembly)或傾印記憶體等等。

Volatilitux

Volatilitux 是專門用於 Linux 記憶體取證分析的工具組,以下是其支援的 CPU 硬體架構:
  • ARM
  • x86
  • x86 with PAE enabled
這個工具組提供以下這些指令:
  • pslist:輸出所有 processes 的列表。
  • memmap:輸出一個 process 的記憶體配置圖(memory map)。
  • memdmp:傾印一個 process 的記憶體資料。
  • filelist:輸出一個 process 所有開啓的檔案列表。
  • filedmp:傾印一個開啓的檔案內容。

Memfetch

Memfetch 是一個用於傾印執行中 process 記憶體資料的小工具,除了立即傾印記憶體資料之外,也可以設定在程式出問題時才傾印資料。這個工具對於一些沒有什麼搜尋功能的除錯程式(debuggers)與追蹤程式( tracers)而言,是一個不錯的替代方案,而且它也提供許多指令可以很方便的取得記憶體的快照(screenshots)。

以下是安裝 Memfetch 的方式,FreeBSD 可使用 pkg_add
pkg_add -r -v memdupm
其他的 UNIX 或 Linux 則要從原始碼編譯安裝:
wget http://lcamtuf.coredump.cx/soft/memfetch.tgz
tar xvf memfetch.tgz
cd memfetch && make


Red Hat 的 Crash 工具組

Red Hat 的 Crash 工具組是以 SVR4 UNIX 的 crash 指令為基礎,經過大幅度的改版,再加入 gdb 除錯器的整合功能後的一個分析工具,其結合了傳統上 crash 的 kernel 相關功能與 gdb 的程式碼除錯功能,可用於分析以下的情況:
  • 運行中的 Linux 系統。 
  • 由 Kdump、makedumpfile、Netdump、Diskdump、Red Hat Diskdump、LKCD(Linux Kernel Crash Dumps)或 Mcore patch(Mission Critical Linux)所產生壓縮或未壓縮的 Linux kernel core dumps。
  • 由 Kdump 所產生的 Xen host Linux kernel core dumps 或 Xen hypervisor core dumps。
  • 由原始 xendump 或 ELF-format xendump 所產生的 Xen guest Linux kernel core dumps。
  • 由 virsh dump 所產生的 KVM guest Linux kernel core dumps。
  • 由 IBM standalone core dump 所產生的 s390 或 s390x Linux kernel core dumps。
  • Sourceforge 的專案。
若在 Red Hat 或 CentOS 要安裝 Red Hat Crash,可使用 yum 指令:
yum install crash
若在 Novell、SUSE 或 OpenSUSE 中,則可使用 zypper 指令:
zypper install yast2-kdump

Memgrep

Memgrep 是一個很簡單的小工具,可以對執行中的行程或是 core 檔案進行搜尋、取代或傾印的動作。

在 FreeBSD 中可以用 pkg_add 指令安裝:
pkg_add -r -v memgrep

Memdump

Memdump 這個工具可以將系統的記憶體中的資料跳過空白的部分,傾印至標準輸出(standard output),在預設的情況下,它會傾印實體記憶體中的資料(/dev/mem)。

在 Debian 或 Ubuntu Linux 中可以使用 apt-get 來安裝:
sudo apt-get install memdump
FreeBSD 則使用 pkg_add 指令安裝:
pkg_add -r -v memdupm
其詳細的使用說明可以參考線上手冊:
man memdupm

foriana

foriana 是另一個可以從記憶體傾印檔案中擷取行程(processes)或模組(modules)等資訊的工具。


參考資料:nixCraft
本站已經搬家了,欲查看最新的文章,請至 G. T. Wang 新網站