Windows Registry Forensics

Windows Registry Forensics
ISBN: 9781597495806
Pages: 248
Trim: 7.5 in x 9.25 in
Publication Date: Jan 2011

Windows Registry Forensics

By Harlan Carvey

Description

Harlan Carvey brings readers an advanced book on Windows Registry - the most difficult part of Windows to analyze in forensics! Windows Registry Forensics provides the background of the Registry to help develop an understanding of the binary structure of Registry hive files. Approaches to live response and analysis are included and tools and techniques for post-mortem analysis are discussed at length. Tools and techniques will be presented that take the analyst beyond the current use of viewers and into real analysis of data contained in the Registry. This book also has a  DVD containing tools, instructions and videos.

  • Packed with real-world examples using freely available tools
  • Deep explanation and understanding of the Windows Registry - the most misunderstood files
  • Author Harlan Carvey brings his expert knowledge and tools into one book

About the Authors

Harlan Carvey
Internationally renowned Forensic Analyst

Contents

  • Chapter 1 Registry Analysis
    Chapter 2 Tools
    Chapter 3 Case Studies: The System
    Chapter 4 Case Studies: Tracking User Activity

找出硬碟裡的重覆照片!

硬碟裡照片一多,加上複製來拷貝去的,很容易會出現很多重覆的照片,整理的時候會很麻煩。加上大家都喜歡用後製軟 體處理照片,一張照片又會被存成好幾種不同的版本,要「去蕪存菁」可是個大工程。如果你覺得一張一張人工比對太累,那麼Duplicate Photo Finder這套軟體倒是可以幫得上忙。


T客邦之前有寫過一篇找出電腦裡的「垃圾拷貝」,介紹的是Duplicate Cleaner這套軟體,它可以用來找出硬碟裡的重覆檔案,當然也就可以找出相同的照片。Duplicate Cleaner是藉由MD5和EXIF數值、以及檔案體積等等的基本資訊來比對檔案,這種找法雖然很快,但是也有幾個缺點:

一、它只能找出完全「相同」的照片,卻無法告訴你「相似」的照片有哪些。
二、如果重覆的照片有重新命名過,比對的精準度也會打折,
三、經過後製軟體(如Photoshop)處理後,EXIF資訊常常會被洗掉,而且你很可能會把修改過的照片存成TIFF、PNG等格式的檔案,檔案體積一定會改變。

這時候Duplicate Photo Finder就派上用場了。因為它是比對圖像內容,所以不但能找出完全相同的照片,還可以把相似度高的照片一起列出來。為什麼要找出相似的照片呢?我們常 常會對照片進行銳化、縮圖,或者是加浮水印的動作,這些動作都會讓照片「失真」,不但體積會改變、MD5也會跟著不同,所以明明內容是一樣 的,Duplicate Cleaner卻愛莫能助。加上有時候為了提高拍攝成功率,大家通常會連拍好幾張照片,藉由Duplicate Photo Finder可以幫你快速去蕪存菁,只有最好的會留下來。

話先說在前頭,網路上有好幾套軟體都叫做Duplicate Photo Finder,它們大部份都是使用兩套不同的演算引擎製作的,所以介面都長得很像。筆者這次分享的是自己使用過、覺得比對結果最精準的一套,同時它的速度也很快。

怎麼用Duplicate Photo Finder找照片?

▲執行它,先按下「+」圖示加入要搜尋的檔案夾。

▲到「Option」裡頭設定一下搜尋條件,建議留圖中的預設值就好。第一個打勾的是指把曾經90度翻轉的照片也納入比較範圍,這點很重要,因為我 們在看相片時常常會習慣把它轉正,經過翻轉的相片,存檔後的體積是會改變的;至於第二個百分比指定別去動比較好,因為Duplicate Photo Finder比對照片的寬容度很小,就算比對的結果只有10%是相似的,肉眼看來卻可能有80%。

▲回到主畫面,按一下「PLAY」程式就會開始比對照片。比對完以後,操作介面會有兩個圖像預覽框讓你再進行人工比對,下面則是「原始檔案」與「重 覆檔案」的列表。接下來的操作就要用點腦筋了,老實說這套軟體的功能蠻陽春的,缺乏一個比較完善的機制來判斷什麼才是原始檔、什麼才是分身檔,所以你要一 個一個檔案檢查,看誰的體積比較大,就把它放在列表的左側,全部都檢查完後就能把右邊的分身都刪除。

一個一個檢查當然很累,還好程式有提供排序功能,你可以把相似度高的排在最後面,從相似度低的開始找起。為什麼呢?Duplicate Photo Finder比對出的結果,通常如果相似度高於95%,就代表兩張照片幾乎是完全相同的,可能只差在有沒有經過翻轉而已,前面提過這套軟體的比對法寬容度 很小,就算是只是加了個小浮水印,相似程度可能就會小於10%。

最不像的開始找起比較保險,可以避免因為軟體誤判而刪掉原本以為是分身的相片,所以在比對相似度低的照片時,眼睛得盯著上頭的比對視窗看,如果你發 現這兩張照片根本就不一樣,可以按下工具列裡的「-」把這個組合移出列表不做處理。至於比對相似程度95%以上的照片時,就只要注意哪個檔案體積比較大就 好了,在列表裡按下空白鍵就能讓原始檔與分身交換位置。

▲檢查完畢後,可以選擇複製、移動或刪除分身,留下的就只有原始檔了。

一開始操作可能會有點拗手,而且要逐張人工比對照片真的有點累。其實就筆者用它整理硬碟裡超過3萬張照片的經驗(我知道對很多人來說這只是小數字),熟了自然就能生巧,如果可以先依日期分類照片、把它們整理成資料夾,處理起來會更有效率,分批整理也比較不會那麼累。

說實在的,如果這套軟體能再聰明一點、可以依條件自行判斷什麼是原始檔會更好,其實有幾套類似軟體是真的可以智能判斷,但是比對速度跟方法卻又不如這套簡單快速。你知道有什麼解決方案可以兩全其美的話,不妨也跟大家分享吧!

軟體介紹:


Mac呢?

Windows可以找到不少類似的軟體,但是Mac就不多,筆者通常會選擇在Windows環境整理照片,真要在Mac找一套取代方案的話,就得靠「Duplicate Image Detector」了。
Duplicate Image Detector一樣只能用來比對照片,不能比對一般檔案。介面的設計比較不人性化,雖然它在比對照片時的精準度也很高,但是善後的功夫就遜掉了,你必須手動選擇要刪除哪些照片,實用性比較低。
▲Duplicate Image Detector的比對法比較寬鬆,一般來說要相似程度要設80%以上,才會跑出比較理想的結果。

▲搜索的結果一樣會分類成群組,告訴你有哪些照片是長得很像的。想要知道它們長多像,請選取列表裡的檔案,按下工具列的「Compare」。

▲跳出的視窗會用遮罩來告訴你差異在哪裡。

▲確認後再回到主視窗,就看你要怎麼進行善後動作了。

軟體介紹:


轉自 T客幫

UEFI 介紹!

Intel即將在明年初,也就是最快下個月發表全新的Sandy Bridge處理器平台,在我們先前的整理報導提到,各大主機板廠商都有意願在新的P67主機板上,以新一代的EFI韌體來取代傳統的BIOS,如果你還不知道EFI是什麼,跟我們拿出2009年刊登在電腦王雜誌的專題來複習吧。


回想一下,你上次是什麼時候進入主機板BIOS選單的?對一般使用者而言,主機板BIOS的主要功能,就是讓你可以壓榨出更多硬體效能,或是去打開、關閉特定的功能才需要查看。不然就是為了讓新買的CPU可以被主機板辨識,或是修正一些bug的時候才會去更新它。

可曾想過,這個平淡無奇,又不是很好瞭解的「基本輸入/輸出系統」也慢慢開始有了變化。首先,筆者在486時代的後期看過BIOS大廠AMI曾推出 師法Windows 3.1介面而且可以用滑鼠操控的版本。後來Phoenix也力圖推行當時號稱所謂「真正圖形介面BIOS」的CSS。而Intel也在推出Itanium 64位元處理器的時候,推出了開發代號為Tiano的EFI功能核心框架。不過,畢竟是人多好辦事。在後來許多業界重量級大廠紛紛表態支持EFI,並組成 UEFI論壇之後,UEFI BIOS將是未來BIOS主流的趨勢在此確定。

在筆者介紹UEFI BIOS到底是啥,能做什麼之前,我們先來回憶一下電腦是怎樣開機的。畢竟,不管UEFI BIOS有多麼強大的功能,基本上還是要先讓一台電腦開機。

▲ 你看過嗎?這是AMI多年以前推出的WinBIOS設定畫面。(圖片為主機板手冊翻拍)


傳統BIOS開機流程

從你按下主機機殼上的電源鍵,到進入作業系統的期間,儲存於主機板上那顆EEPROM(電氣可抹除暨可程式化唯讀記憶體)裡的BIOS便會開始執行以下的工作:

 

1. 初始化:

當電腦打開,CPU會自行重置為初始狀態,準備運作。BIOS boot block(基本輸出輸入系統開機區塊)初始化階段啟動,因為此時系統記憶體中是空的,沒有內容可以執行,所以廠商讓CPU去尋找系統BIOS ROM中的reset vector(重置向量):用一個固定的位置來啟動所謂的BIOS boot program開機程式。
一般來說程式會在記憶體的FFFF0h位址,也就是在UMA(上層記憶區域)靠結尾的地方。為避免ROM大小改變造成相容性的問題,所以一般會選擇 放這裡。它的內容只有一個jump指令,進一步跳到真正的BIOS啟動程序。當然了,各家IBV (independent BIOS vender;獨立BIOS供應商)可以把程式放在不同的位置,只要透過jump來指定就可以了。
在這段期間,系統的CPU、晶片組、Super I/O和USB只有部分初始化,僅獲取足夠資料來應付萬一BIOS開機失敗,可以利用軟碟(由Super I/O控管)甚至是光碟(由晶片組的IDE/SATA)等儲存媒體來救援BIOS的boot block。

 

2. POST(Power On Self Test;開機自我檢測):

然後BIOS開始施行Power-On Self Test(POST;開機自我檢測),在過程中檢查電腦各項組件及其設定,像是:中央處理器、主記憶體、鍵盤、滑鼠等等狀態。接著便尋找被內建在BIOS內部的顯示卡程序並執行。
它通常被放在記憶體C0000h的位置,作用是顯示卡的初始化,而大部分的顯示卡都會在顯示器上顯示其相關訊息。這就是為何各位在開機的時候,首先會在顯示器的畫面左上角出現有關顯示卡訊息的原因。
再下來就是讓BIOS尋找其他裝置的ROM(唯讀記憶體),看看這些設備中哪些還有個別的BIOS。如果這時有找到任何其它裝置的BIOS,它們也會被執行。
下一步BIOS會顯示啟動畫面,並開始更深入的檢測,包含我們平常可以在螢幕上看到的記憶體容量檢測。如果這時候遇到任何錯誤,就會在畫面上顯示錯誤訊息。

 

3. 記錄電腦系統的設定值:

到這裡還沒有結束,再來BIOS會根據自己的「系統資源表」,來對系統進行進一步的確認,看看你的電腦究竟安裝了那些系統資源或設備。有些電腦會逐 步顯示這些被偵測到的設備。例如BIOS支援隨插即用,那它將會偵測和配置隨插即用裝置,並顯示由BIOS偵測到的隨插即用設備。
在這些檢測結束後,BIOS會打出一個偵測總結表於畫面上。而這個總結表在部分IBV的設定中是可以讓使用者開啟或關閉的。當然也有些IBV為加速開機把這一步直接隱藏省略。
Tips:BIOS boot block
在快閃唯讀記憶體內,通常會分成兩個區塊,一個區塊存放一般的BIOS程式碼,即所謂的code block(程式碼區塊);另一個區塊則是存放用來開機(或急救)的程式碼,就是所謂的boot block(開機區塊)。當電源打開時,主機板會先從boot block執行,它會立即檢查code block 的程式碼是否正確,如果正確,就會轉到code block 繼續執行下去。而所謂的BIOS recovery(BIOS回復)就是利用boot block回寫動作來進行BIOS更新失敗時的救援。

 

4. 提供常駐程式:

提供作業系統或應用程式呼叫的中斷向量,如INT 10h(VGA圖形及文字輸出中斷)等。

 

5. 載入作業系統:

到這裡是系統檢測的部分,接下來BIOS便開始尋找開機裝置,使用者可以透過在BIOS的設定來決定搜尋順序,目前常見的開機設備至少包含FDD、HDD以及光碟機和USB開機裝置等多項。
找到開機裝置後,BIOS將會搜尋開機訊息以進行作業系統的開機過程。如果是找到了一個灌好OS的硬碟,它將會尋找位在硬碟第0面,第0軌,第1磁 區裡的Master Boot Record(主要開機磁區)。如果它找到的是FDD,也會讀取軟碟的第1磁區。再把讀取到的資料放在記憶體7C00h的位置,跳到那裡並且執行它。自此 才開始進入OS啟動階段。


 

UEFI BIOS系統的開機流程

同樣是進行電腦系統的開機,由於UEFI BIOS是遵循UEFI論壇的規範定義下開發的,所以UEFI的開機流程會像下圖一般:

 

1. SEC階段:

SEC(安全性)階段其主要的特色為「cache as RAM」,即處理器的快取當成記憶體。由於C語言需要使用堆疊,在這個階段的系統記憶體尚未被初始化,在沒有記憶體可用的情況下,便把處理器的快取當成記 憶體來使用,在主記憶體被初始化之前來進行預先驗證CPU/晶片組及主機板。
因為這時侯沒有快取,會導致處理器的效能變得較差,所以在記憶體初始化完畢之前,SEC和PEI階段的程式碼越簡短,越能減少這個副作用。

 

2. PEI階段:

和傳統BIOS的初始化階段類似,PEI(EFI前初始化)階段是用以喚醒CPU及記憶體初始化。這時候只起始了一小部分的記憶體。同時,晶片組和 主機板也開始初始化。接下來的服務程式會確定CPU晶片組被正確的初始化,在此時,EFI驅動程式派送器將載入EFI驅動程式記憶體,進入了起始所有記憶 體的DXE階段(驅動程式執行環境)。

 

3. DXE階段:

DXE的主要功能在於溝通EFI驅動程式及硬體。也就是說此階段所有的記憶體、CPU(在此是指實體兩個或以上的非核心數目,也就是雙CPU插槽處理器甚至是四CPU插槽處理器)、PCI、USB、SATA和Shell都會被初始化。

 

4. BDS階段:

在BDS(開機設備選擇)這個階段,使用者就可以自開機管理者程式頁面,選擇要從哪個偵測到的開機設備來啟動。

 

5. TSL階段:

然後進入TSL(短暫系統載入)階段,由作業系統接手開機。除此之外,也可以在BDS階段選擇UEFI Shell,讓系統進入簡單的命令列,進行基本診斷和維護。

 

傳統BIOS哪裡不好?

在繼續探討何謂UEFI BIOS之前,先來看看傳統BIOS有哪些問題,讓Intel決心帶頭推出UEFI BIOS。

 

1. 過時的16位元模式

在x86系列CPU進入32位元的時代,為了相容性考量,當時最新的80386 CPU保留了16位元的執行方式,即真實模式(real mode)。在後來多次的CPU改朝換代中都保留了這種執行方式,甚至在含有EM64T的Xeon系列CPU中,供電到CPU啟動時仍然會切換到16位元 的真實模式下執行。
也就是說,雖然各大BIOS廠商為了配合潮流演進,將許多新功能新元素添加到產品中,但BIOS在本質上沒有任何改變。迫使Intel在開發更新的CPU時,都必須加進會使效能大大降低的相容模式。

 

2. 只有1MB定址空間

各位讀者如果有注意傳統BIOS開機,在POST完畢後螢幕上打出的系統摘要表,會發現記憶體欄位標示著「Base Memory=640KB」。加上前一篇提到的384KB UMA(這裡的記憶體不會列入Base Memory),就是所謂1MB可定址記憶體空間。
會造成這項限制,主要還是真實模式的副作用。16位元的CPU,其定址能力為20條定址線所能處理的2^20位元組(Bytes),也就是1024千位元組(KB)。換句話說,在進入OS之前的開機階段,即使安裝了高達4GB的記憶體,絕大部分都無法使用。

 

3. 組合語言難維護

假設某天你買了一張高階工作站主機板,再裝上一張SCSI或SAS的磁碟陣列卡,竟然發現安裝後你的主機板開機開不下去,然後顯示「Not enough space to copy PCI option ROM」或「Option ROM memory space exhausted」警告字串。然後本來你那雀躍快樂的心情消失了,取而代之的是「歸LP火」熊熊燃燒著。

當你打電話給陣列卡商,電話那頭的死公務員聲音說著:「你要不要問問主機板廠有沒有新的BIOS?」。 好不容易找上主機板廠商客服問:「你們有沒有辦法解決?」然後,你和主機板BIOS工程師之間的攻防就此展開。

對板卡廠的BIOS工程師而言,除非剛好有下單下很大的客戶遇到類似相關問題,否則很有可能就是不了了之。你只好趁購買七天內退掉那張陣列卡,不然就是再找一張可以正常搭配的主機板。

由於傳統BIOS是用組合語言編寫的,而軟體界早就已經是C/C++高階語言甚至是.NET滿天飛,為了相對難找的人才(組合語言高手相對少,要BIOS真正寫得好的更是少數)來減緩新產品上市的速度,不管是消費者或廠商都無法接受。
此時UEFI BIOS標準化和模組化的特徵,便可加速產品推出和減少debug的時間。另外C語言寫的UEFI BIOS體積也會變大,連帶使儲存BIOS的EEPROM需要擴增。
別忘了,這也是Intel的勢力範圍,如果EFI BIOS推廣成功,板卡廠就得多採購一顆晶片。
▲ 由於傳統BIOS的先天侷限,有時候磁碟陣列卡就是裝不上去。

 

4. 十年不變的程式碼

上述三大問題是以開發廠商的角度來觀察。其他隱而不現的部分,則包含了功能的侷限性和對使用者不夠友善的操作介面。對照現今的視窗介面作業系統,傳統BIOS以文字介面為主且充滿著火星文,加上除了單純的開機,作為仲介硬體初始化和作業系統的功能外實在陽春的可憐。

在開發Itanium CPU之際,業界大魔王Intel實在不想再受制於這些顧慮。試想,既然這是一個新生的CPU架構,那系統韌體和作業系統之間的介面就順便一起重新定義。

並且這一次,Intel為了讓以後各種新的規格和技術可以快速導入,嚴格定義這個傳統BIOS接班人必須具有擴展彈性,而且採取標準化的韌體介面規範,以避免發生傳統BIOS的IBV程式碼更新太被動的問題。

筆者不是開玩笑,業界之前盛傳一句話,如果Award BIOS當時(Intel Pentium處理器時代)沒有華碩,那肯定沒有後來功能齊全的BIOS程式編碼。傳統BIOS靜態連結,缺乏遠見且疊床架屋,而幾乎全基於經驗和約定的 見招拆招。所以才有2000年開發出來所謂的EFI(Extensible Firmware Interface;可擴展韌體介面)技術作為工業標準規格,定義了一個驅動介面,用以溝通硬體/韌體和作業系統。

UEFI的版本發展

最初制定的EFI版本2000年12月的1.02版。在2002年的12月又釋出了加入EFI驅動程式模型的1.10版。於2005年,Intel 將此規格提供給負責UEFI開發和推廣的UEFI論壇。為了反映這點,EFI也被更名為UEFI。在大部分的文件資料中,EFI和UEFI講的是一樣的東 西。
UEFI論壇在2007年1月釋出2.1版的規範。目前最新公開的版本就是2009年5月發佈的2.3版。概括而論,凡依照UEFI論壇規範,使用C語言寫作的BIOS即為UEFI BIOS。
UEFI論壇成員類別
IBV(獨立BIOS 廠商)AMI、Insyde、Phoenix
IHV(獨立硬體廠商)AMD、Apple、Dell、HP、
IBM、Intel、聯想
ISV(獨立軟體廠商)微軟

UEFI BIOS哪裡好?

UEFI是藉由UEFI論壇制定的嚴謹規範來達成標準化,並用模組化之C語言方式的參數堆疊傳遞,藉由動態連結形式所建構出來的系統,相較於使用組 合語言的傳統BIOS更易於實作,在容錯和錯誤更正的表現上更加優良,更好開發。UEFI是以32或64位元CPU保護模式執行(也稱為Flat Mode),突破傳統16位元代碼的定址能力,可達到CPU的最大定址空間。

 

1. 定址空間更彈性

UEFI BIOS利用載入EFI driver的形式,來進行硬體的辨識/控制及系統資源掌控。
傳統BIOS是以真實模式中斷向量的方式增加硬體功能。它要將一段類似於驅動程式的16位元代碼,放置在記憶體0x000C0000至 0x000DFFFF之間。這段記憶體空間有限(128KB),因此,當必須放置的option ROM超過128KB時,傳統BIOS便無能為力。
很多時候傳統BIOS的工程師為了解決這類問題,像剛剛提到的介面卡BIOS容量過大,便要想辦法利用可能的排列組合硬擠出空間來放驅動代碼。而重 組過程有時不小心造成一些副作用,例如才剛解決的bug,重組後又再發生!也就是說,UEFI BIOS可以更有系統的分配儲存空間,避免使用強制定址。

 

2. 什麼系統都能用

另外,傳統BIOS的硬體服務程式都是以16位元代碼的形式存在,在增強模式下執行的作業系統想存取這些服務會有困難。因此BIOS提供的服務在現實中只能提供給MS-DOS之類的系統用。
相對的,UEFI系統下的驅動並不是可以直接在CPU執行的代碼,而是用EBC(EFI Byte Code)這種專用於EFI driver的虛擬機器指令,該指令必須在UEFI的DXE階段被解壓縮後翻譯執行。
如此便有更佳的向下相容性,因為EFI driver是彈性的驅動程式模組架構,可不斷的擴充驅動程式及介面,不用重新編寫,所以就無需考慮因系統升級所衍生的相容性因素。

 

3. 開發維護更容易

加上EFI driver開發簡單,所有的PC零組件廠商都可以參與,就像現代作業系統的開發模式,這樣的模式曾使Windows系統短短幾年就變得無比強大。有了 EFI driver,也可以讓顯示卡在開機階段就載入某種程度的功能,進而可以把傳統文字介面為主的BIOS轉成圖形介面。

 

4. 精簡系統用途大

最後還有EFI Shell,這是個精簡的作業系統,可以讓使用者進行BIOS的更新、系統診斷、安裝特定軟體。有了UEFI BIOS甚至可以播放CD和DVD而不需完全載入OS,EFI driver可以被載入或卸載,連TCP/IP核心程式都可以使用。基於EFI的driver model可使UEFI系統接觸到所有的硬體功能,在進入作業系統之前瀏覽網站不再是天方夜譚,甚至實作起來也非常簡單。總之,對使用者而言,多了一個方 便的環境以及華麗的圖形介面,是最明顯的好處。
傳統BIOS vs. UEFI BIOS重點差異
BIOS種類傳統BIOSUEFI BIOS
程式語言組合語言C語言
資源控制中斷向量
寫死的記憶體存取
寫死的輸出/輸入存取
驅動程式/協定
處理器運行環境X86 16位元CPU保護模式
擴充方式接合中斷向量載入驅動程式
第三方IHV和ISV支援性較差較佳且可以支援多平台
圖形化能力較差較佳
內建簡化的作業系統前環境

 

有誰在用UEFI?

UEFI支援必須藉由軟硬體的相互合作來達成,我們來看看目前市面上流通的產品中,哪些已經採用了UEFI。

支援UEFI的硬體


1. 2006年,蘋果電腦推出第一台使用Intel處理器架構的麥金塔電腦。從此開始用EFI/UEFI framework,而非以往搭載IBM PowerPC處理器的麥金塔電腦用的、發源於Sun Microsystems(昇陽電腦公司)的Open Firmware。
▲ 目前新版的Mac OS X都已經支援UEFI。

2. Intel自家的行動型、桌上型和伺服器電腦主機板自2006年起開始全面轉換為EFI/UEFI BIOS。例如從945系列晶片組開始,Intel的主機板就已經使用了該framework。

3. 此外,2008年開始,許多64位元電腦系統也正式支援EFI/UEFI BIOS。如IBM的x3450伺服器、微星科技具備ClickBIOS的主機板(包括下一篇介紹的EFINITY主機板)、HP筆記型電腦 EliteBook系列和平板電腦、HP Compaq筆記型電腦較新的機種。
▲ 微軟到了Windows Server 2008才開始支援UEFI。

 

支援UEFI的作業系統


1. 早在2000年,Linux作業系統便可以支援EFI,當時是elilo EFIboot loader(開機載體),演化至今是EFI版本的grub。

2. 蘋果電腦到了Mac OS X 10.4(代號Tiger)的Intel版便可以支援EFI。

3. 2002年微軟給Itanium CPU使用的Windows 2000 Advanced Server Limited Edition及Datacenter Server Limited Edition版支援了EFI v1.10規範。後來的Windows Server 2003 for IA-64版和Windows XP 64-bit版本也支援EFI。至於UEFI的支援是從Windows Server 2008和Vista SP1的64位元版本開始,包括Windows 7也只有64位元版完整支援UEFI。
▲ Intel自家的D945PSN主機板。

 

微星EFINITY主機板實戰

▲ 微星科技所推出的EFINITY主機板。

這張主機板是採用Intel P35北橋加上ICH9南橋晶片組的產品。截稿時的市價落在新台幣兩千五以下。由於ICH9南橋沒有內建IDE控制器,所以微星另外安裝了一個智微科技的JMB363控制晶片。

主機板上貼有IBV的貼紙,我們可以從這張貼紙上看到微星的UEFI BIOS是由美商AMI所提供來源碼,AMI將這個UEFI BIOS產品稱做Aptio。

微星會跟AMI拿Aptio來開發第一次的UEFI BIOS並不令筆者意外,因為早在Intel當初制定EFI的時候,AMI和系微(Insyde)就是跟Intel合作的元老級成員。國內許多正在往 UEFI BIOS切入的廠商,為了產品成熟度和減短產品開發時間,都以AMI為主要合作伙伴,而筆記型電腦則有不少跟系微合作。

至於以前在Pentium時代吃香喝辣的Phoenix-Award,這回就沒那麼好命。俗話說的好,風水輪流轉,果然沒錯!

 

EFINITY主機板細部圖解

▲ 智微科技的JMB363控制器走PCI-E x1的頻寬,提供一個PATA和兩個SATA II連接埠,支援RAID 0、1、0+1和JBOD,另外也支援兩個eSATA 。
▲ 網路功能的部分,是採用了瑞昱半導體的RTL8111B控制器,支援10/100/1000快速乙太網路。
▲ 音效控制晶片是透過瑞昱半導體的ALC888控制器負責。
▲ Super I/O則是由精拓科技的F71882F G所提供,並可以進行硬體監控。
▲ EFINITY是採用美商安邁科技股份有限公司的Aptio UEFI BIOS來源碼。

UEFI介面功能體驗

將EFINITY主機板測試系統開機,我們看到了一貫的logo畫面,再來便是圖像式的BIOS介面,接著進入設定畫面,很簡潔的分成6種語言可供 選擇。 當滑鼠游標進入畫面的時候便可以點選選單。跳脫了以往傳統BIOS的純文字介面。當在地化被喊得震天價響的時代,我們也不能免俗來看看中文選單提供的功 能。包括了系統狀態、Cell Menu、晶片組設定、開機設定、密碼設定、ENFINITY Extras及儲存和離開等選項。

可惜,剩兩個Cell Menu和ENFINITY Extras沒翻中文,筆者建議前者翻成動態超頻選單,後者譯為特別功能區。此外,這個BIOS的翻譯部分有蠻多缺陷,筆者在此呼籲,希望微星在BIOS 釋出之前能有更嚴謹的品管,這樣才不會辜負UEFI圖像式BIOS提供多國語系共存的苦心。
另外,如果想看EFINITY Extras的選單還提供哪些特別的撒必死,可能會有點失望。因為很可惜的是,微星並沒有把附贈功能存入額外的Flash EEPROM,導致還要另外讀取光碟資料,讓使用者無法深刻體會UEFI BIOS的強大,建議以後的版本可以考慮改變做法。
▲ 怪怪的英文:「Power by EFI BIOS」,應該是「Powered by EFI BIOS」。
▲ EFINITY的BIOS提供了英文、簡體中文、韓文、德文、繁體中文和日文的6種文字選單。
測試平台摘要
主機板微星EFINITY(BIOS版本1.7)
中央處理器Pentium D 925
記憶體宇瞻DDR2-800 1GB x2(美光顆粒)

 

啟用EFI Shell主控台

由於EFI Shell可以辨識並載入的儲存媒體是FAT32格式,所以筆者的隨身碟被辨識為fs0。如果有接其他FAT32儲存媒體,系統便會依序列出fs1、 fs2⋯⋯。想切換到隨身碟下,只要在提示符號後輸入「fs0」就可以了。另外底下列出一些常見的指令供大家參考。
EFI Shell常用指令
輸入指令代表的意義
cd顯示或更改目前的目錄
cls清除螢幕畫面
comp比較兩份檔案的內容
date顯示目前的日期或設定系統的日期
dmem顯示記憶體的內容
edit全螢幕編輯ASCII或Unicode檔案
exit離開EFI Shell
help顯示指令清單或一個指令的意義
ls顯示檔案清單及在目錄中的子目錄
map顯示或定義對映(儲存)裝置
memmap顯示記憶體分佈對映
pci顯示PCI裝置設備
reset系統重置
time顯示目前時間或設定系統時間
type顯示檔案的內容
ver顯示版本資訊

EFI所用的指令和常見的DOS或Linux指令幾乎完全一樣,可以讓我們進行一些基本的檔案維護或系統資料的查詢。 除了輸入指令,如果各位去逛逛UEFI論壇的官方網站,可以看到有驗證規範的工具程式可以下載,只要點選網頁的UEFI Specifications and Tools即可。

 

試跑UEFI驗證測試

各位進入下載的網頁,可以下載最新版PI-SCT(PlatformInitialization Self-Certification Test;平台初始化自我認證測試)來試著在UEFI的Shell下來跑看看驗證的部分。

這個驗證程式在跑的過程中會重開機,所以在開始跑這個項目之前請各位把BIOS中的開機順序第一個設定為「Built-In EFI Shell」。而解壓縮後的PI-SCT,要事先修改SctStartup.nsh,微星EFINITY跑的是x64的程式碼,而非較早期EFI 1.10規範的IA32程式碼,所以要把sct.efi主程式路徑指向x64目錄。

改好的SctStartup.nsh命名為Startup.nsh放進隨身碟或光碟根目錄,讓程式運行的時候方便找到檔案位置。 另外,上面的官網裡也有最新的UEFI 2.2版官方資料,內容陳述所有該版本中的協定。有興趣的讀者可以一併下載回來,跟跑完的PI-SCT記錄檔好好比對。
跑這些協定驗證的目的在於證明前面我們提到的嚴謹性,從記錄檔中的「PASSED」和「FAILED」,就能知道這張主機板符合多少UEFI 2.2版制訂的規範,如果沒辦法通過驗證工具測試,那充其量不過是張有圖形介面的傳統BIOS罷了!
▲ 在BIOS畫面選擇「儲存及離開」,將啟動等級選為「Built-In EFI Shell」。
▲ 接下來畫面上會出現EFI Shell。
▲ 找到SctStartup.nsh檔,將圖中的區域改成上面的執行路徑。
▲ 等程式跑完,便會顯示通過了哪些測試。

 

UEFI的未來

從各大IBV及軟硬體龍頭,都替這個新一代BIOS技術抬轎的情況來看,讀者們將會在可預見的未來,看到越來越多主機板甚至介面卡的BIOS或韌體,採用符合UEFI規範的方式來編寫和製作。
有了圖形化的介面,UEFI BIOS既可以讓使用者享受更親和的操作環境,又能夠在不進入OS的情況下進行一些基本操作。對廠商而言,模組化好維護的BIOS編碼及相對容易尋找的C語言編寫人才,更可以加速產品開發時程。對消費者和廠商都是雙贏。
希望能有機會看到更多廠商在這塊進化的BIOS領域耕耘,讓大家都能享受到更好用的產品。微星對這項新技術的努力值得嘉許,但是類似的功能,華碩利 用傳統BIOS也能成功實踐,就是該公司所謂的ExpressGate。 由此看來,微星最好進一步加入更多實用的功能,才能在使用者的心目中獲得壓倒性的勝利。


轉自 T客邦





Dell's Digital Forensics Solution Overview

Alternate Data Streams (ADS) 介紹

雖然說 NTFS 問世至今已經經過了 10 多年,但是有一個功能卻依舊很少人知道。嗯,或許應該說一般正常使用者很少知道。這個功能叫做 Alternate Data Streams, 簡稱 ADS 。

用白話的方式來說, ADS 允許一個檔案可以挾帶其他的資訊,而這些資訊當初的規劃是為來做為 Metadata 使用。很玄,我也承認。因為在日常的使用中,根本沒有那個應用程式會利用到 ADS 。甚至連微軟自家的檔案瀏覽器都無法顯示這些資料的存在,更別說可以新增或修改了。



為了瞭解此一設計的初衷,我查了一下資料,才發現這並 不是微軟自己的發明,在不少檔案系統都有類似的設計。這類的 Metadata 可以用來儲存顯示檔案的圖示,也可以用來儲存文書檔案的顯示格式,乍聽之下好像還道理的…但是好像也不是那麼有道理。不管如何,ADS 依舊是一個不為一般人知的祕密,也沒有給我們帶來任何的改變。


不過也因為雖然檔案系統支援這樣的功能,但是在絕大多數的應用程式都無法使 用此一功能的情況下,利用 ADS 加以儲存的資料幾乎可以說是隱形的,所以成了用來隱藏不希望別人發現的資料的方法。這樣的隱藏方式雖然不錯,但是有幾個比較大的問題,一個是這樣的隱藏在 支援 ADS 的程式下是沒有任何效果。另外一個就是如果要隱藏一大堆的檔案、甚至於是目錄,這樣的方式並不適合。最嚴重的問題是當原始檔案被刪掉後,這些隱藏資料也會 被一併刪除。所以除非你自己有很好的記性,不然就可能是欲哭無淚了。


一般情況下我們想要隱藏資料,可以選擇像是 Invisible Folders 這類的軟體,不但使用上更為方便,而且效果也較好。那麼,誰適合用 ADS 來隱藏資料呢,或者說必須使用 ADS 來隱藏資料?答案通常是那些不懷好意的分子(例如駭客)。所以病毒可以掛在某個正常檔案的 ADS 內避免被偵測,後門程式也可以,駭客慣用的小工具也可以。不管是哪一類檔案,都是為了避免被輕易發現。雖然通常 Rootkit 也具備有相同的功能,但是 ADS 使用上更為簡單,也不會造成系統任何異常或不穩定的現象,而這些都是駭客會加以考量的要素。


像這種實際使用與原始初衷相差甚遠的例子也不算少見,就像水可載舟、亦可覆舟一樣,好或壞完全取決於使用者的心態。微軟也確實做了一些改變想要避免產生嚴重的危害,但是效果畢竟還是有限。我們來實際看看 ADS 的使用方式。


我針對 ADS 做了基本介紹。在本篇文章中,我將繼續此一話題,並將介紹重點移至如何實際進行 ADS 的相關操作。篇幅有些長,但是因為大多是截圖的關係,所以在閱讀上應該是不會花費太多的時間。


  1. 首先我們建立一個空的目錄(D:\ads),並在此一目錄下進行測試。
    0001 

  2. 我們產生一個一般的文字檔,內容是”Hello World”,大小為16位元組。
    0002
  3. 透過 type 指令確認檔案內容為”Hello World”。
    0003
     
  4. 接下來我們使用下列指令產生 ADS 資料,其中 hello.txt:hidden.txt 表示將名為 hidden.txt 的 ADS 資料附掛在 hello.txt 上。檔案內容為 “I’m Hidden”。
    0004
  5. 檢查一下檔案,雖然時間變了,但是大小卻沒有變
    0005
  6. 查看原始檔案內容,同樣沒有任何變動。
    0006
  7. 使用 type 指令如法炮製,看看 ADS 內容是甚麼。很不幸的,系統顯示找不到這個檔案。難道是指令下錯了?
    0007
  8. 改用記事本試看看,沒有錯誤訊息。
    0008
  9. 筆記本顯示出我們原先輸入的內容,而且注意檔名正是 hello.txt:hidden (最後一個txt的副檔名被記事本自動隱藏了)。由此證明雖然 hello.txt 的檔案大小沒有改變,而且 type 指令也無法顯示,但是我們剛剛輸入的資料確實被儲存在 ADS 中。 事實上,使用其他應用程式也可以看到這個檔案的內容。
    00009
  10. 一個檔案可以擁有多個 ADS 資料,而且不需要同樣的類型。我們將一個執行檔 (calc.exe) 覆掛在 hello.txt 中,原先 hello.txt 已經有另外一個 ADS 資料,名稱為 hidden.txt
    0010
  11. 雖然之前我們曾經使用 dir 指令時無法看到任何有關 ADS 的資訊,但是其實 dir 有一個參數 - /r 可以用來查看 ADS 資訊。透過 dir * /r 指令我們確認 hello.txt 有兩個 ADS 資料。不過很可惜的是, /r 參數在Vista 之前的 Windows 版本是不提供的。
    0014
  12. 我們嘗試直接執行儲存於 ADS 內的檔案,系統出現錯誤訊息。
    0011
  13. 上網查詢,可以找到程式啟動的方式必須透過 start 這個指令,執行後卻同樣出現錯誤。 如果你出現跟我一樣的錯誤,恭喜你,表示你的系統至少不是很舊的系統。
    0017

    0022
  14. 為了證明資料不假,我特定找了一個 Windows 2000 的系統,並將小算盤 (calc.exe) 覆掛在 xcopy.exe 的 ADS (ADS 名稱為 hidden.exe) 中。同樣的,直接執行會出現錯誤,但是使用 start 指令可以正確的呼叫出小算盤。
    0012
  15. 查看執行程序,可以看到 xcopy.exe 在執行中,卻看不到 calc.exe 在執行,可是實際上真正執行的程式是 calc.exe。此為一大問題,表示 ADS 的檔案就算被執行了,也無法從工作管理員中看到,而且不需要使用到 rootkit 的技術
    0013 
  16. 如果你以為只有舊系統才會有這個問題,新系統已經免疫了,先別高興得太早。我們先將一個名為 hfs.exe 的檔案附掛在 calc.exe 的 ADS 之中以備測試。0016
  17. 使用 start 指令依舊失敗,這次我們改用 runas 這個指令來啟動程式。
  18. 0018

    0019
  19. hfs.exe 被正確啟動了,而且是在 Vista SP1 的環境下
    0020
  20. 唯一值得慶幸的是在工作管理員的顯示名稱為 calc.exe:hfs.exe ,而不再僅是 calc.exe
     0021
  21. 當我們嘗試複製包含 ADS 資料的檔案時,ADS 資料也會被一併複製 (只要目的磁碟區也支援 ADS 的功能)。我們看到透過複製的指令 hello2.txt 包含與 hello.txt 相同的 ADS 資料。
    0015 
透過前面的例子,我們看到儲存於 ADS 的資料不但不容易被發現,而且可以被正常的讀取、修改、甚至是執行。雖然微軟也確實做了部分的修正,來避免原先 ADS 可能造成的損害,但是卻不是全面的。以我個人的看法,這樣部分的修改比原先不修改可能還來的更差。原因是這樣會造成更多不一致的現象(尤其是同一個系統內 的不一致),而不一致往往造成使用者的混淆,甚至誤解,因而衍生額外的問題。


除了透過微軟內建的指令外,也有一些第三方的工具可以處理 ADS 的資料。像 Alternate Data Stream Tools for NTFS 這個工具可以掃描並列出系統中所有的 ADS 資料,算是一個很方便的小工具。


轉自 就是資安