Windows平台下的安全事件處理


作者:沈志昌/林敬皇 


摘要
當 我們使用的 Windows 系統環境中遭遇安全性事件時,我們如何準備事件回應及保留相關證據。本文將逐一說明在 Windows 系統環境中如何準備事件的處理、證據的蒐集與保留及保護等,並以 Guideline 的方式引導您了解 Windows 平台下的安全事件如何處理。



一、前言隨 著網際網路的逐漸普遍,為人類帶來許多生活上的改變,相對的網路入侵事件日益頻繁,無論您的使用平台為何,都免除不了遭受入侵的威脅,從電腦安全的觀點 來看,完整的建築保護電腦的工事,是第一要務,然而,在資安界流傳「最安全的網路環境,是不接上網路的單機作業」,這說明了,不論怎樣維護安全的網路環 境,還是難免有漏洞,除了完整的防護措施外,如何有效發現及發現入侵後如何應變,也是相當需要重視的一環。因此,本文的重點在於,如何在充滿威脅的環境 下,能夠有效的發現異常情況且能進一步蒐集與提出相關證據,以利於安全人員作有效的處理,甚至涉及相關法律處理程序時,作為協助辦案的佐證。 

當 您發現系統遭受入侵且可能有資料被盜失,大多數人的反應是希望儘快恢復成原先的正常運作狀況,且進一步找出破壞 者,但在處理這些事件時,最常見的處理方法就是直接拔除網路線,接著系統重新安裝系統,這樣的動作似乎可以順利完成問題的排除,然而,在電腦犯罪日漸囂張 的今日,除了恢復系統外,更需將您的重點放置於入侵軌跡及犯罪證據的蒐集。因此,無論是個人、企業組織都應在處理資安問題時,將此列入資安政策( policy )內。 

瞭解蒐證的必要性後,如何有效的蒐集及回報資訊,也是的另一重點。不同的入侵行為會產生不同的記錄及影響,資安事件回報機制就是在此背景下產生的,國內常見的資安事件回報機制,政府等公務單位有國家資通安全技術服務中心(簡稱 ICST )的資訊安全事件回報系統,而民間單位則有台灣電腦網路危機處理暨協調中心(簡稱 TWCERT/CC )的安全事件回報機制,透過這些回報機制及單位,可以將您所遭受的入侵行為或是攻擊行為透過這些組織來幫您與對方的 ISP 進行反應,若判定為惡意行為,也可依據通報的紀錄,考量將處理的層級提升至相關的法律行動。因此,如何有效的保留資訊及通知問題處理單位,就成了處理資安 問題的首要任務。本文的目的即在提供資安事件蒐證工具建議,並且說明如何有效的使用這些工具來取得 MS-Windows 系統安全事件相關證據,,提供相關安全事件回報機制及單位的處理者最詳細的資訊,以順利解決您的資安事件。 

二、入侵應變
入 侵應變階段是在發現異常情形時,從有限的主機資訊中提存有關資訊安全事件的行動,內容包含可能所發生的損害或是影響程度,這是所有處理資安事件的第一階 段,接著即是應變的實行,依照組織內的資安策略,決定是否繼續監控,或是需要離線修復之工作。在入侵應變階段,通常需要注意 5W1H 原則:

  • Who :誰發現入侵行為?
  • How :如何發現?
  • When :何時發現?
  • What :受損害的程度為何?
  • Where :攻擊從何開始?
  • What techniques :怎樣的技術造成系統的損害?及需要什麼技術來進行處理?

根據以上幾點,您可以依據不同的入侵型態來設計應對策略以及需要的通報資訊,要成功的處理入侵事件並不單只是仰賴快速的回復系統狀態,而是還要兼顧入侵資訊的蒐集和證據的取得。 


當 系統可能發生遭受入侵的情形時,最常被問到的問題通常是, ” 是否要立即將系統離線 ” 、 ” 是不是要將系統關機 ” 、 ” 要不要馬上將系統重安裝 ”,但這些都不是最好的解決方式,而是必須考量您先前所設計的資訊安全策略。舉例來說,若入侵者還潛伏在您的系統中,也許您不應該立即斷線而驚動對方,反之 您可以進行安全通報後,藉由監控程式追蹤出對方的來源。但倘若您的資料屬於重要的機密資料,這時您可能就須以保護資料為優先,立即斷線以防止更嚴重的損害 發生。 

三、取得證據數 位證據是相當容易建立,也是容易修改,通報者必須十分注意取得的證據,重要的是必須注意每一個蒐集的程序及所蒐集到的資訊種類。在資安事件上,入侵行為 未必會立即提昇至需要法律行動,但對於企業組織來說這些相關資訊的取得,都可能在將來資安事件等級提昇時,轉變為有力的證據,因此,對於蒐集的時間點、技 術等,都應該利用可信任及可驗證的方式進行。對於記錄的方式、時間、媒體以及如何整合這些證據的方式,都應要事先建立標準程序,以因應問題發生時之處理, 在記錄這些證據時,您必須注意底下事項,確保蒐集的資訊是有效的。

  • 避免寫入原來的媒體
  • 避免直接刪除所有執行程序
  • 避免干預系統時間
  • 避免使用非信任的軟體
  • 避免干預系統狀況(包含重開機、更新檔、修正檔、或是重新修改系統組態)

四、保護容易消失的資訊
當 資安處理程序進入鑑識( forensic )分析程序時,有可能會採用系統關機或是離線調查的方式。然而電腦系統有許多的資訊是容易消失(或揮發)的(例如:記憶體資料、時間、內容、連線狀況 等),因此,在系統存活時( live system )即時保存甚至是保護這些容易消失的資訊,對於數位證據的蒐集上,是相當重要的步驟。底下列舉這些容易消失的儲存設備種類,這些是蒐集及保存系統現況資訊 重要的處理標的:

  • Registers, cache 內容
  • 記憶體內容
  • 網路連線狀態
  • 正在執行的程序( running processes )
  • 正在使用的檔案內容及磁碟裝置
  • 可攜式裝置或是備份媒體內容(光碟機、磁帶機、 flash 碟等 … )

而在動手取得這些易消失證據時,底下幾項是需要注意的事項:

  • 系統時間及日期
  • 正在執行和運行的程序( process )
  • 目前的網路連線狀態
  • 應用程式所開啟的通訊埠( sockets )
  • 系統上登入的使用者

取得以上這些容易消失的資訊,對於蒐證來說是相當重要的一環,在某些案例中,入侵者(如: hacker )常會利用駭客工具來達成目的,此時所使用的工具程式就會常駐在記憶體、網路連線中,完整的取得這些資訊,對於成功的處理資安事件有絕對必要性。


五、建立蒐證工具集(Toolkits)
取 得資安事故證據及確定其正確無誤的是重要的,因此,可信的蒐證程式與工具將是蒐證的第一步驟,建議將這些工具建立在 CD-ROM 中攜帶至受入侵系統或是事件現場將會是個不錯的處理方式,管理者需要經常更新蒐證工具且定期蒐集系統內資訊,才能確保所取得的資訊能最接近於事發時間。

下提供有關於 Window 底下蒐集系統安全資訊的工具,您可以依照您的所需要取得資訊多寡程度,來決定所使用的數量及使用的等級,依此建立您的處理工具集( Toolkits ),並測試及確認在蒐集資安事件資訊時,這些工具不會改變任何系統的狀態,這對於將來進行鑑識 (forensic) 時,將會有很大影響。

表 1 : Window-base 蒐集系統安全資訊的工具
ipconfig 用來確認系統上 ip 位址。 可信任的系統
netstat 用來確認系統上 ip 位址。 可信任的系統
nbstat 用以顯示 NetBIOS 至 TCP/IP ( NetBT )協定狀態,本機端到遠端電腦的 NetBIOS table 狀態。 可信任的系統
date 確認系統日期。 可信任的系統
time 確認系統時間。 可信任的系統
psuptime 用來確認 win NT/2k 系統已開機執行的時間。 www.sysinternals.com
net 用來確認 NetBIOS 連線、使用者帳號、分享資料夾及啟動服務等功能。 可信任的系統
psloggedon 用來顯示本地端使用者帳號連結至遠端的情形。 www.sysinternals.com
pulist 命令模式工具,用來顯示本機上所有執行中的程序,並且可以擷取使用者正在執行的程序。 www.sysinternals.com
pslist 命令模式,顯示所有執行程序使用 CPU 的資訊,包含時間、負載百分比、核心或是使用者模式及記憶體使用量,可選擇即時監控或是直接擷取方式。 www.sysinternals.com
listdlls 列出本機上所有使用的 DLLs ,包含版本、放置位置。 www.sysinternals.com
fport 用來顯示系統上目前執行程序,及該程序所使用之 PID 、 PORT 狀態。 www.sysinternals.com
psservice 用來顯示系統狀態、組態、服務的 service 並可以進行管理系統服務。 www.sysinternals.com
ps-info 顯示 windows NT/2K 上 OS 及所有人的狀態、及主機上的所有資訊。 www.sysinternals.com
arp 系統上將 IP 位址與 MAC 位址做對應之工具。 可信任的系統
ntlast 監控登入的狀況(失敗或成功)。 www.sysinternals.com
reg 系統上用來編輯、管理 registry 工具。 NT resource Kit
auditpol 用來決定系統所使用的 audit policy 。 NT resource Kit
regdmp 將系統 registry 轉換成文字檔輸出。 NT resource Kit
md5sum 用來產生檔案的 hash 值,確保輸出的檔案不被修改。 unxutils.sourceforge.net
netcat(cryptcat) 用來將資訊寫入或讀取網路連結當中, Cryptcat 與 netcat 相同,不過還可以建立加密的通訊管道。 www.atstake.com
filemon 監控系統上檔案系統活動情形,並且可觀察應用程式所使用的 DLLs 狀態。 www.sysinternals.com
windump 用來擷取分析系統 TCP 連線內容工具。 www.dump.polito.it
process explorer Windows 下套裝軟體,可以用來監控系統程序狀況及使用 DLLs 的情形。(包含位置、版本資訊等)。 www.sysinternals.com
cmd.exe 用來啟動命令列工具。 可信任的系統
       
六、取得Windows平台證據

6.1 Step by Step當然,我們並不能確保每個管理者都能夠在第一時間就發覺入侵行為,通常發現問題時,系統可能已經重新啟動,喪失之前的原始狀況,即使發生上述情形,對於蒐證來說,儘早進行蒐證的程序,仍是正面積極的行動,底下將一步一步告訴您該如何進行資訊的蒐集工作。

6.1.1 :開啟信任的工具列工具 ( 從您的 Toolkits)將您所建立好的蒐證工具集放置於受入侵之機器的 CD-ROM ,並且啟動您系統上的開始選單,在執行的選項上執行 "cmd.exe" 啟動命令列視窗。

6.1.2 :準備好蒐證系統記 得先前您已經將您的蒐證工具集放置於受害機器上,接下來步驟就是開始要利用這張光 碟來進行資訊的蒐集,並且把蒐集的證據存放到儲存媒體。在此之前,您可以利用網路方式來進行證據的存放,因此,您需要在遠端啟動蒐證系統,以 netcat 為例(您也可使用加密的方式,如 cryptcat ,可以避免遭受竊聽),首先您必須在您的蒐證機器上,啟動 netcat 並給於此服務一個聆聽埠( listen port ),準備接收來自受害主機的資訊。
蒐證機器上執行: nc –l –p 12345 >> d:\collect.txt
在此, -l 為開啟 listen port , -p 則是指定您的 listen port ,最後轉向到您所欲儲存的位置上,在設置好蒐證系統的準備工作後,接著就是回到受害主機上進行蒐證的工作。在受害主機上,您必須建立與蒐證系統的連線工作。 

受害主機上: nc < 蒐證系統 ip 位址 > -e
舉例來說,若您欲將受害主機目錄下檔案結構傳遞至蒐證主機,您可以在命令欄位上使用 dir 這個指令,
如下:
nc 192.168.1.9 12345 -e dir 或是 dir | nc 192.168.1.9 12345

6.1.3 :蒐集易消失證據在蒐證的第一要務為蒐集系統上容易消失的重要資訊,包含了:

  • 系統中基本資訊
  • 執行中的程序
  • 開啟的通訊埠
  • 網路連線狀態
  • 網路分享狀況
  • 網路使用者

底下是此一階段需要執行的指令,而系統時間及日期是在執行所有程序的前需要先蒐集的資訊(請記住,以下步驟皆是在受害主機端進行)

date /ttime/t 蒐集主機上之系統時間,在執行此一動作同時,需先檢查系統時間與實際時間是否有所差別,若有,也請詳細記錄差異的數值,這對將來比對網路設備端之記錄是相當重要的。
ipconfig /all 記錄目前主機所使用的網路連線基本資訊。
psinfo 記錄系統資訊,包含修正檔的版本、修正的次數。
psuptime 紀錄系統啟動的時間。
psloggedon 記錄遠端與本機端使用者的連線狀態。
ntlast –r -f 記錄系統中使用者登入的狀況。(包含成功與失敗)
net < 參數 > 檢 測系統中網路選項資訊,參數種類包含 ,請將這些資訊都個別記錄下來。
nbtstat –n
nbtstat –c
nbtstat -s
存取遠端 NetBIOS 名稱、目前 NetBIOS 的連線狀態、及最後連線狀態。
取得本機端與遠端的 NetBIOS table 狀態。分辨登入的使用者。
pclip 取得 clipborad 的資訊。
pslist
pulist
psservice
取得系統執行程序的資訊。
列出正在執行的程序;
列出正在活動( active )的程序。列出目前服務的狀態。
listdlls 記錄目前所使用的 DLLs ,包含放置位置、版本及數量。在此也可以發現是否有木馬程式或其他惡意程式存在。
fport 記錄目前所使用的程序、 PID 、及所使用的通訊 port 。參考: http://isc.sans.org/port_detial.html
netstat -an 記錄目前 listening 的服務( service )、目前系統開啟的 port 。
netstat –rn 記錄 routing table 。
arp -a IP address 與 MAC address 表。
dir /t:a /a /s /o:d c: 取得最後存取時間。
dir /t:w /a /s /o:d c: 取得修改時間。
dir /t:c /a /s /o:d c: 取得最後建立時間。(若有多部磁碟機,請自行改變磁碟機代號)利用 dir 可以建立在蒐證時,磁碟機內檔案、時間資訊、連結等資訊。
hfind c: 紀錄磁碟機內所有屬性為隱藏( hidden )的檔案。用來區分隱藏與一般屬性的檔案。
md5sum 給予檔案 hash 值,用來確保蒐集的檔案不被竄改。

註:上述指令詳細功能,請自行參考指令說明檔。 ( 程式範例請參照附錄 )
上述所有蒐集動作,看似繁雜且枯燥,但當所有資訊都蒐集齊全時,將會成為系統的縮影,資安處理單位可以根據上述資訊進一步還原系統原貌,連線、檔案結構。

6.1.4 :蒐集系統 logs完 成受測系統環境資訊蒐集後,接著就要針對此部機器的歷史資訊進行蒐集,所謂歷史資 訊指的是本機的記錄檔 (logs) ,藉由取得 log 檔,在電腦鑑識 (computer forensic) 階段時,將可以根據歷史資訊來分析該機器特定時間點發生何事,提供了怎樣的服務,可以更接近於當時系統狀態,若蒐集環境資訊是屬於靜態分析, log 分析則是屬於動態的部份。當然,前提是您在安裝設定您系統時,您已經知道啟動歷史紀錄檔的必要性,在此階段所蒐集的 log 有:

  • Registry
  • Events logs
  • Relevant application logs

auditpol 用來設定系統所使用的策略。
reg query 取得 registry 下 ”Run”, 下列是需要檢查的 registry, 目的用來確認是否有木馬程式常駐在系統中。
HKLM\Software\Microsoft\Windows\Current Version\Run /s 檢視 Most Recently Used(MRU, 最近使用過 ) 檔案。用來辨別是否曾經有使用過特殊的檔案。
HKLM\Software\Microsoft\Windows\Current Version\RunOnce /s 檢視 Most Recently Used(MRU, 最近使用過 ) 檔案。用來辨別是否曾經有使用過特殊的檔案。
HKLM\Software\Microsoft\Windows\Current Version\RunServices /sc 檢視 Most Recently Used(MRU, 最近使用過 ) 檔案。用來辨別是否曾經有使用過特殊的檔案。
HKLM\Software\Microsoft\Windows\Current Version\RunServicesOnce /s 檢視 Most Recently Used(MRU, 最近使用過 ) 檔案。用來辨別是否曾經有使用過特殊的檔案。
HKCU\Software\Microsoft\Windows\Current Version\Explorer\ 追蹤曾經安裝過的程式檔案。用來判別過去使用過程式及是否有遭受木馬程式攻擊。
Streams –s c: 檢查磁碟機中 NTFS 檔案結構

 註:有多部磁碟機時,請自行改變磁碟機代號
接著繼續蒐集事件( Event ) Logs 及其他應用程式記錄檔。 


Logs 存放位置
Event logs APP c:\WINNT\system32\config\AppEvent.Evt
Event logs SEC c:\WINNT\system32\config\SecEvent.Evt
Event logs SYS c:\WINNT\system32\config\SysEvent.Evt
IIS Web Log ( 若有安裝 ) c:\WINNT\system32\logfiles\W3SVC1\
Mail logs( 若有安裝 ) c:\WINNT\system32\logfiles\SMTPSVC1\
DNS logs( 若有安裝 ) c:\WINNT\system32\config\DNSEvent.Evt

註:若您使用其餘服務,請自行尋找該服務程式之記錄檔
在您尋找到該 log 檔後,請利用 md5sum 將其加上 hash 碼,以確保資訊在傳輸時不會遭受竄改,並將這些記錄檔存放置蒐證主機上。 

6.1.5 :網路連線封包內容蒐集本 階段為蒐集網路連線目前的動作,若情況允許的話,您可以利用網路工具進行監控主機 的動作,利用 sniffer (監聽)工具可以監控網路及封包狀況,藉此瞭解傳輸內容,以及預防入侵者再次返回系統進行破壞(當然,設下陷阱也是可以採行的方案,一切原則以組織中的安 全策略為依歸)。 

工具 目的
WinDump/Snort/ 其他監控軟體 網路狀況監控,分析目前網路流量、內容,進一步更可監控入侵者是否返回。


6.2 蒐證步驟自動化上 述所使用之指令,您可以利用批次檔方式撰寫,可以增加蒐證的效率與速度,您也可以 根據不同的蒐證環境建立您不同的蒐證批次檔,如下 Windows Forensic Script ,之後就可以利用這個批次檔還進行自動化地蒐證,並利用『 > 』重導的方式寫入檔案或送至遠端的鑑識主機即可。
如: wfs.bat > 2004-08-11-ip-forensic.txt

6.3 Identification of footprints (辨識足跡)綜合上述,您目前已經蒐集了:

  • 系統基本資訊
  • 執行中程序( processes )
  • 開啟的通訊埠
  • 網路連線狀態
  • 網路分享狀況
  • 使用者狀況
  • 相關的系統記錄檔( logs )

接下來的步驟就是要尋跡,藉由比對及檢查我們所蒐集的資訊,去發現異常之處,底下則檢查的重點:

  • 檢查異常的程序與開啟的 port (如平常不常見的通訊埠,或是常駐程式)
  • 檢查異常的應用程式要求(包含連線、分享資源等)
  • 驗證正在執行的工作( jobs ),可與正常無誤的系統做比對
  • 分析信任關係(比方來自於沒見過的 user 或是遠端)
  • 檢測可疑的使用者帳號
  • 決定系統內修正檔階層(注意修正的紀錄檔)

透 過檢測以上各點,您將會發現不少可疑之處,將其記錄下來,並且與 event logs 及時間記錄(之前所做的檔案時間記錄)相互比對,尋找該時間點有所關連的檔案、連線、使用狀態、與系統的關係。利用時間點切割方式,可以有助於分析事件發 生的起源及影響的範圍,進一步的,可以再利用外部諸如防火牆、網路設備的系統記錄進行分析,經由比對可以尋找出更多關於事件的證據。 


特 別需要補充說明的是,當您分析 IIS 下的紀錄時,請記住 IIS 是使用 UTC 時間,原因在於其設計用來提供在全球 www 服務 ( 即使用 multiple time zone) ,因此,分析時您必須根據時差進行系統時間的比對,當您分析此類 log 時,這是需要注意的事項。最後,您可以藉由檢測系統 Registry 來發現:

  • 軟體安裝的歷程(包含以前)及目前安裝的軟體
  • 判斷系統之安全狀態
  • 判斷常駐、開機時啟動的程式即可能會出現的木馬程式
  • 判斷曾經使用過的( Most Recently Used, MRU )檔案資訊

七、後續處理
藉由入侵蒐證程序,將可以發現系統中異常之處,判斷出問題的發生點以及影響範圍,當完成這些程序後,接下來您必須思考:

  • 是否需要將整個系統經由備份工具進行整體的調查(或直接將硬碟當作證據)。
  • 是否提升處理等級並採取法律行動。
  • 或是恢復系統至正常狀態( reinstall,patch 或是提升系統安全防護程度)。

當 您完成可疑事件判斷後,將會發現入侵者資訊將不是那麼容易能追溯,此時您可以透過 ISP 進行反應,或是至您所處地的網路危機處理中心進行申訴,以台灣來說,台灣網路危機處理暨協調中心 (TWCERT/CC) ,負責國內及國外入侵事件的回報處理,您可以至該中心入侵回報系統中進行通報,該中心技術人員將會義務為您處理( https://www.cert.org.tw/service/ir_form.php ),若能附上您所蒐集到的資訊及處理的過程,想必一定能順利解決資安問題,並且經由對方 ISP 防堵該入侵者再度侵害您的系統。


八、結論
所 謂防範未然,入侵應變處理計畫及程序的建立,對於個人或是組織資訊安全是不可或缺的部份,沒有人能保證自己的系統絕對安全,也因此,在不安全的環境下, 防護體系的存在是為了將危險性降至最低,而事發處理計畫,則是為了將傷害降低之最低,其重要性與防衛體系是同等的。建立一套標準程序及完整蒐集工具,能有 助於第一時間保存容易損害的電腦資訊,確保所蒐證之資訊可以最接近於事發當時情況,也有助於恢復至原始環境。 

所建立的處理程序,亦可 設計為定期檢測計畫,系統安全檢測與備份系統也是同等重要,若能於日常工 作同時,落實回應計畫的實施,想必對於解決資安事件,將不會再是難事,也可以降低因為關鍵性資訊的流失,造成日後證據上不足,影響處理甚至進一步判案上的 困擾,因此,在閱讀本文後,您應開始思考您的資訊安全策略是否有缺失,並立即建立您的入侵應變計畫,別讓惡意的入侵者造成你的損害。

0 意見: