當犯罪嫌疑人逃逸無蹤、關鍵證物遭到刻意丟棄隱匿,或關鍵電子跡證可能已遭犯罪嫌疑人銷毀滅證之時,鑑識人員該如何化不可能為可能,保全證物並找出重要跡證。請一同化身為鑑識人員,進行抽絲剝繭,深入案情。
眾人皆知,手機的作業系統為Android,雖然Android的核心也是Linux,但adb指令集並不是完整的Linux指令集,因此在Android平台上會面臨無dd及netcat指令可用的窘境。
鑑識人員R為了突破此一困境,決定要將busybox這個小工具由工作站上傳至證物手機,便可於證物手機順利運行dd和netcat指令。R執行指令「adb shell」以進入交談模式,接著執行「chmod 777 /cache」指令讓手機內的「/cache」區域能被寫入,如此方能將busybox順利上傳至「/cache」路徑之下,如圖3所示。
|
▲圖3 改變「/cache」權限以便能被寫入。 |
那要如何將busybox這個檔案上傳至「/cache」路徑下呢?只要一道「adb push busybox /cache/」指令便可達成。若執行成功,執行結果便會顯示傳輸速度和檔案大小等資訊,如圖4所示。
|
▲圖4 將busybox上傳至手機內部。 |
上傳好的busybox檔案還不能直接執行,在Linux/Unix的世界裡,決定檔案能否執行的要件並非副檔名是否為exe,而是權限。因此,還必須為busybox加上執行權限「x」。
只要執行chmod指令便可更改權限,但所使用的參數僅能用數字表示法,是因為在Android平台尚不支援以字母符號表示法做為chmod的參數所致(例如a+x)。指令如圖5內上方框選的部分,執行結果確已成功為busybox加上執行權限,如圖5下方被框選的地方。
|
▲圖5 為busybox加上執行權限。 |
執行dd指令之前,要先要確定好目標來源是什麼,在此的目標來源便是手機的儲存空間,因此先執行「cd /dev/block」指令,並以「ls -al」指令查看各區塊名稱,便可找到代表手機儲存空間的整個區塊「mmcblk0」,如圖6所示。
|
▲圖6 找到mmcblk0。 |
由於ADB(Android Debug Bridge)是工作站與證物手機間的溝通橋樑,可執行「adb forward」指令將工作站的特定埠號與證物手機特定埠號進行映射,以使證物手機與工作站之間能實現Socket通訊。如圖7所示,即代表要將工作站與證物手機的TCP 7777埠號進行映射。
|
▲圖7 執行「adb forward」指令以使手機與工作站間進行通訊。 |
接著便可運行netcat指令,如圖8所示,各位千萬別被這麼長的一串指令給嚇到了,只要將它拆解開來便很容易理解:
|
▲ 圖8 執行dd指令製作證物映像檔並透過nc指令處於等待連接模式。 |
·nc是Netcat的執行檔名
·「-l」參數代表是處於Listen狀態
·「-p 7777」參數代表Listen的Port號是7777
·「-e」參數代表後面要執行一道指令,而此處所執行的指令便是dd。
·指令dd後面所接的參數為if,if即是Input File來源檔案的意思。
各位可能已經留意到一個問題,那就是dd的第二個參數of(Output File)上哪去了呢?不是要指定目的地才行嗎?但仔細一想應該就可以理解才是,證物手機既為證物,自然不能讓證物映像檔產生在手機內部儲存空間,才不會污染證物本身。
那該將證物映像檔送到哪去呢?這就是為何要使用netcat的原因所在,它可以在證物手機與取證工作站間,透過網路搭建一條專屬通道,因此證物映像檔的目的地就是存放在取證工作站的硬碟。
因此,接下來在工作站上也要執行nc,以連入證物手機,才能順利導出證物映像檔。完整指令如圖9所示,為各位解釋一下指令內容,執行nc指令,第一個參數是127.0.0.1代表本機網路介面,而7777則是埠號。
|
▲圖9 在工作站執行nc指令以導出證物映像檔。 |
至於為何是這樣的組合,因為先前已經透過「adb forward」指令進行封包轉發,因此這裡自然就是要指定工作站本機網路介面及7777的埠號,才能與先前的指令相對應,也才能順利接收證物手機的Bit Stream內容。那後面的> htc.img,就是表示要將nc指令的執行結果導入一個名為「htc.img」的檔案之中,待dd指令執行完畢之後,這個htc.img就是證物手機的證物映像檔。
在進行物理獲取的過程中,要特別留意證物手機與工作站之間,那條USB連接線的「穩定性」。換言之,在執行過程中,證物手機與工作站切莫處於容易被他人所觸碰的開放環境之中,務必要避免一切可能造成中斷的因素,以免前功盡棄。而雖然執行過程不會有進度提示,但仍可藉由檢視證物映像檔大小的方式,以得知是否順利運行中,如圖10所示。
|
▲圖10 檢視證物映像檔大小以了解執行狀況。 |