Windows Vistaæ“作系統最新安全特性分æžï¼šæ”¹é€²å’Œå±€é™ (上)
ç”³æ˜Žã€‚æ–‡ç« åƒ…ä»£è¡¨å€‹äººè§€é»žï¼Œèˆ‡æ‰€åœ¨å…¬å¸ç„¡ä»»ä½•è¯ç³»ã€‚
1.
概述
微軟最新發行的Windows Vistaæ“作系統,特別強調了å°å®‰å…¨ç‰¹æ€§çš„支æŒã€‚å¯ä»¥æ¯«ä¸å¤¸å¼µåœ°èªªï¼Œå®‰å…¨ç‰¹æ€§çš„æ高是Windows Vistaæ“作系統åŒä»¥å¾€ç™¼å¸ƒçš„Windowsæ“作系統相比,改進最大的地方之一,也是促使用戶å‡ç´šåˆ°Windows Vistaæ“作系統的é‡è¦è€ƒæ…®å› ç´ ã€‚
Windows Vistaæ“作系統æ供的å„類最新的安全特性,涵蓋以下四個大部分:
·
基礎平臺
。包括安全軟件開發周期(SDL),系統æœå‹™ä¿è·ï¼ˆService Hardening),防æ¢ç·©å˜æº¢å‡ºï¼Œ64ä½å¹³è‡ºå®‰å…¨æ”¹é€²ã€‚
·
權é™ä¿è·
。包括用戶帳戶控制(UAC),智能å¡/登陸體系,網絡權é™ä¿è·ï¼ˆNAP)。
·
防æ¢æœ‰å®³è»Ÿä»¶å’Œæƒ¡æ„入侵
。包括安全ä¸å¿ƒï¼Œå間諜軟件(Windows Defender)和有害軟件刪除工具,防ç«å¢»ï¼ŒIE安全改進。
·
數據ä¿è·
。包括BitLockerï¼ŒåŠ å¯†æ–‡ä»¶ç³»çµ±ï¼Œç‰ˆæ¬Šä¿è·ï¼ŒUSBè¨å‚™æŽ§åˆ¶ã€‚
本文會é€ä¸€åˆ†æžæ¯ä¸€å€‹å®‰å…¨ç‰¹æ€§çš„開發背景,Windows Vistaä¸åšå‡ºçš„改進,åŠæ‡‰ç”¨èŒƒåœã€‚并且特別強調了æ¯ä¸€å€‹å®‰å…¨ç‰¹æ€§çš„å±€é™æ€§ã€‚å› ç‚ºåœ¨å®‰å…¨é ˜åŸŸä¸æœ‰ä¸€å¥è©±ï¼šæ¯”沒有安全更糟糕的是虛å‡çš„安全。
通éŽå°æ¯ä¸€å€‹å®‰å…¨ç‰¹æ€§çš„分æžï¼Œå¸Œæœ›è®€è€…能得到以下兩個關éµä¿¡æ¯:
·
Windows Vista æ供了許多éžå¸¸å¥½çš„安全特性
·
Windows Vista ä¸èƒ½è§£æ±ºä½ 所有的安全å•é¡Œã€‚在æŸç¨®ç¨‹åº¦ä¸Šï¼Œæ„è˜é€™ä¸€é»žæ›´ç‚ºé‡è¦ã€‚
2.
安全是什么?
安全是一個整體的,系統的概念。安全的范åœåŒ…括硬件安全,軟件安全,員工培訓ç‰ç‰ã€‚其主è¦ç›®çš„,就是為了ä¿è‰è¢«ä¿è·çš„æ ¸å¿ƒæ•¸æ“šä¸è¢«æ害,這æ„味著:
·
權é™æŽ§åˆ¶ï¼šåˆæ³•ç”¨æˆ¶æ“有權é™ï¼Œè€Œéžæ³•ç”¨æˆ¶å‰‡ç„¡æ³•è¨ªå•ã€‚
·
å¯é 性:åˆæ³•ç”¨æˆ¶å¯ä»¥æˆåŠŸåŸ·è¡Œæ•¸æ“šæ“作。
·
完整性:åˆæ³•ç”¨æˆ¶æ‰€å¾—到的數據是æ£ç¢ºçš„,未經篡改的。
無論是計算機病毒,間諜軟件,或黑客ç‰ï¼Œå…¶è¡Œç‚ºéƒ½æ˜¯é‡å°æ•¸æ“šçš„æ£å¸¸è¨ªå•ã€‚例如:刪除數據,竊å–數據,篡改數據,DDOS攻擊ç‰ç‰ã€‚
圖
1:Windows Vista在å¯ç”¨æ€§å’Œå®‰å…¨çš„å–èˆ
在這個世界上,沒有åå…¨å美的安全系統。任何一個æ“ä½œç³»çµ±å¿…é ˆåœ¨ä¸åŒç‰¹æ€§ä¸ä½œå‡ºå–èˆã€‚以Windows 95舉例,它的å¯ç”¨æ€§å¥½ï¼Œä½†å®‰å…¨æ€§å·®ã€‚ 而Windows Vistaä¸ï¼Œé‡å°å®‰å…¨ç‰¹æ€§çš„æ高,有時候則ä¸å¾—ä¸çŠ§ç‰²éƒ¨åˆ†å¯ç”¨æ€§ã€‚例如,用戶帳戶控制這個Windows Vistaä¸æ–°å¢žå®‰å…¨ç‰¹æ€§å°±æ˜¯ä¸€å€‹å…¸åž‹çš„例å。
3.
基礎平臺
3.1安全軟件開發周期
背景:沖擊波病毒。眾所周知,當年Blaster病毒給微軟åŠå…¶ç”¨æˆ¶å¸¶ä¾†äº†å·¨å¤§çš„æ失。安全軟件開發周期(SDL - Security Development Lifecycle)å¯ä»¥èªªæ˜¯ä¸€å€‹å¾®è»Ÿç—›å®šæ€ç—›åŽï¼Œæ±ºå¿ƒåŠ 強產å“安全的產物。
SDLçš„ä¸å¿ƒæ€æƒ³å°±æ˜¯å°‡å®‰å…¨ç‰¹æ€§çš„考慮滲é€åˆ°ç”¢å“生命周期的æ¯ä¸€å€‹éšŽæ®µã€‚
·
è¨è¨ˆ
。æ¯ä¸€å€‹åŠŸèƒ½æ¨¡å¡Šå‡éœ€è¦åˆ¶å®šå…¶ç›¸æ‡‰çš„風險模型(threat model),來é 測å¯èƒ½çš„攻擊方å¼ï¼Œç›¸æ‡‰å制措施ç‰ç‰ã€‚
·
開發
。éµå¾ªåš´æ ¼çš„代碼è¦èŒƒã€‚å°ç¦æ¢ä½¿ç”¨é‚£äº›å®¹æ˜“誤用的API調用。使用éœæ…‹ç¨‹åºåˆ†æžå·¥å…·æŸ¥å°‹å¯ç–‘的代碼片斷。
·
測試
ã€‚ç‰¹åˆ¥åš´æ ¼æ¸¬è©¦é¢¨éšªæ¨¡åž‹æŒ‡å‡ºçš„é«˜é¢¨éšªä»£ç¢¼ã€‚å¹¶å»£æ³›é‡‡ç”¨â€œFUZZâ€æ¸¬è©¦ã€‚“FUZZâ€æ¸¬è©¦æŒ‡é€šéŽæ¨¡æ“¬éŒ¯èª¤çš„,ä¸åˆè¦èŒƒçš„輸入數據,來測試軟件代碼é‡å°éŒ¯èª¤è™•ç†çš„響應。它被è‰æ˜Žæ˜¯ä¸€å€‹æœ‰æ•ˆçš„發ç¾ç”¢å“æ¼æ´žçš„測試手段。
·
審查
。產å“代碼在æ£å¼ç™¼å¸ƒå‰è¦ç¶“éŽåš´æ ¼çš„安全審查,
·
ç¶è·/
響應
。一旦æ£å¼ç™¼å¸ƒçš„產å“代碼ä¸ç™¼ç¾å®‰å…¨æ¼æ´žï¼Œéœ€è¦æœ‰ä¸€å¥—åš´æ ¼çš„å®‰å…¨éŸ¿æ‡‰ç¨‹åºï¼Œä»¥è¿…速,æ£ç¢ºåœ°æ供安全補ä¸ã€‚
我們用å°ç·åçš„è¨è¨ˆä¾†èˆ‰ä¾‹SDLå°ç”¢å“安全的影響。在普通è¨è¨ˆä¸‹ï¼Œè€ƒæ…®çš„å› ç´ ä¹Ÿè¨±æ˜¯ç·å的易用,çµå¯¦ï¼Œå¥½çœ‹ã€‚åŠ å…¥SDL安全考慮,就需è¦è€ƒæ…®ï¼šå¦‚何ä¸è®“別人æ¶èµ°æˆ‘çš„ç·å?如何ä¸è®“別人的ç·å伸到我的碗里?如何ä¸è®“別人å½é€ 我的ç·åç‰ç‰åœ¨æ™®é€šè¨è¨ˆä¸å¿½è¦–è€ƒæ…®çš„å› ç´ ã€‚
Windows Vista是第一個從é 至尾采用SDL進行開發的æ“作系統。通éŽSDLåš´æ ¼çš„é–‹ç™¼è¦ç¨‹ï¼Œå¾®è»ŸæœŸæœ›ï¼ŒWindows Vista安全水準較先å‰Windowsæ“作系統有顯著æ高。
但是,任何開發人員都是無法完全é 知未來攻擊的所有模å¼ã€‚æ›å¥è©±èªªï¼Œå°±æ˜¯é–‹ç™¼è€…是ä¸å¯èƒ½é 測到攻擊者是怎么想,會怎么用æ“作系統的。所以說,SDL并ä¸èƒ½ä¿è‰æ“作系統æœçµ•æ‰€æœ‰çš„安全æ¼æ´žã€‚Windows Vistaæ“作系統會有自身的安全æ¼æ´žã€‚而我們希望的是,SDLå¯ä»¥æ¸›å°‘這些安全æ¼æ´žçš„數目和嚴é‡ç¨‹åº¦ã€‚
3.2系統æœå‹™ä¿è·ï¼ˆService Hardening)
背景:系統æœå‹™ç¨‹åºï¼ˆSystem Service)被惡æ„è»Ÿä»¶æ”»æ“Šçš„æ¬¡æ•¸æ—¥ç›Šå¢žå¤šã€‚åŽŸå› æœ‰ä»¥ä¸‹å…©é»žï¼š
·
系統æœå‹™ç„¡éœ€ç”¨æˆ¶äº¤äº’,å³å¯è‡ªå‹•é‹è¡Œã€‚
·
系統æœå‹™é‹è¡ŒäºŽâ€œLocalSystemâ€è³¬è™Ÿä¸‹ï¼Œæ“有å°ç³»çµ±çš„完全控制權。一旦被æˆåŠŸæ”»æ“Šï¼Œæƒ¡æ„程åºå°±å¯ä»¥åœ¨ç³»çµ±ä¸Šç‚ºæ‰€æ¬²ç‚ºã€‚
最著å的例å就是沖擊波病毒。它就是攻擊DCOMçš„é 程調用(RPC)系統æœå‹™ã€‚
在Windows Vistaæ“作系統æ供了系統æœå‹™ä¿è·åŠŸèƒ½ã€‚包括:
·
許多系統æœå‹™ç¨‹åºé‹è¡Œåœ¨è¼ƒä½Žæ¬Šé™çš„用戶帳號下,如LocalService or NetworkService。
·
系統æœå‹™ç¨‹åºæœ‰ç›¸æ‡‰çš„é…置文件,用以指定該æœå‹™å¯ä»¥åŸ·è¡Œçš„文件,注冊表和網絡行為。例如,é 程調用(RPC)系統æœå‹™è¢«é™åˆ¶ç‚ºä¸èƒ½æ›´æ”¹ç³»çµ±æ–‡ä»¶å’Œæ³¨å†Šè¡¨ã€‚通éŽå’Œé˜²ç«å¢»é…置的çµåˆï¼Œå¯ä»¥é™åˆ¶ç³»çµ±æœå‹™çš„異常網絡行為。這樣,å³ä½¿ä¸€å€‹ç³»çµ±ç¨‹åºè¢«æ”»æ“Šï¼Œç”±äºŽä¸èƒ½ä¿®æ”¹é‡è¦çš„系統文件和注冊信æ¯ï¼Œæˆ–è€…é€£æŽ¥ç¶²çµ¡ï¼Œå®ƒæ‰€é€ æˆçš„å±å®³ä¹Ÿæœƒå¾—到é™åˆ¶ã€‚
å±€é™æ€§ã€‚Service Hardening是ä¸å¯èƒ½é™åˆ¶æ‰€æœ‰çš„系統æœå‹™çš„。關éµçš„系統æœå‹™é‚„是需è¦åœ¨ç³»çµ±æ ¸å¿ƒæ¬Šé™ä¸‹é‹è¡Œã€‚一旦這些æœå‹™å‡ºç¾å®‰å…¨æ¼æ´žï¼Œé‚„是會導致嚴é‡çš„安全å•é¡Œã€‚
3.3防æ¢ç·©å˜æº¢å‡º
背景:緩å˜æº¢å‡ºæ˜¯æ“作系統最為嚴é‡çš„安全æ¼æ´žã€‚幾個有å的例å是:
·
Code Red: IISç·©å˜æº¢å‡º
·
Blaster: DCOM RPCç·©å˜æº¢å‡º
·
Zotob: PnPç·©å˜æº¢å‡º
å…¶åŽŸå› åœ¨äºŽï¼Œç·©å˜æº¢å‡ºçš„安全æ¼æ´žå¾€å¾€å°Žè‡´æƒ¡æ„代碼å¯è¢«é ç¨‹åŸ·è¡Œã€‚ä»¥ä¸‹æ˜¯ä¸€å€‹å †æ£§ç·©å˜æº¢å‡ºçš„例å:
/*以下UnSafeNetRecv代碼*/
void UnSafeNetRecv(char* payload)
{
char localBuffer[128];
… …
strcpy (localBuffer, payload);
}
在編è¯éŽç¨‹ä¸ï¼Œå †æ£§ç©ºé–“是自高å‘低分é…的。函數UnSafeNetRecvçš„å †æ£§åˆ†é…如下:
圖
2:緩å˜æº¢å‡ºçš„安全æ¼æ´ž
在執行到strcpy (localBuffer, payload) 時,如果從網絡傳輸的payload長度超éŽ128個å—節,函數的返回地å€å°±è¢«è¦†è“‹ã€‚é‡æ–°å¯«å…¥çš„地å€æœƒæŒ‡å‘傳入的惡æ„數據(代碼)。這樣,當函數返回時,IP寄å˜å™¨ä¸æ˜¯æŒ‡å‘上一層調用,而是從惡æ„數據(代碼)處開始執行。
3.3.1 NXä¿è·
NXçš„å«ç¾©æ˜¯â€œNo Executionâ€ã€‚在以上的緩å˜æº¢å‡ºçš„例åä¸ï¼Œæƒ¡æ„ä»£ç¢¼åœ¨å †æ£§ä¸Šè¢«åŸ·è¡Œã€‚NXä¿è·å¯ä»¥æŒ‡å®šç‰¹å®šçš„é é¢ï¼ˆå¦‚å †æ£§æ‰€åœ¨é é¢ï¼‰æ˜¯æ•¸æ“šé é¢ï¼Œä¸å…許在上é‹è¡ŒæŒ‡ä»¤ã€‚這樣,一旦IP寄å˜å™¨æŒ‡å‘äº†å †æ£§æ‰€åœ¨é é¢ï¼Œæœƒå°Žè‡´ç¡¬ä»¶ç•°å¸¸ï¼Œè€Œä¸æ˜¯åŸ·è¡Œæƒ¡æ„數據(代碼)。
圖
3:NXä¿è·
Windows Vista相å°Windows XP SP2,æ供了更多NXä¿è·æ”¯æŒã€‚在32ä½å¹³è‡ºä¸Šï¼ŒWindows Vista的缺çœè¨ç½®æ˜¯ç³»çµ±ä»£ç¢¼è¨ç½®æ»¿è¶³NX標準(NX-compliant)。åŒæ™‚,還å¯ä»¥æŒ‡å®šæŸå€‹ç‰¹å®šçš„應用程åºæ˜¯å¦æ»¿è¶³NX標準。這樣,在確ä¿å‘å‰å…¼å®¹æ€§çš„å‰æ下,å¯ä»¥æœ€å¤§å¯èƒ½çš„æ高系統ä¸è¢«NXä¿è·çš„比例。在64ä½å¹³è‡ºä¸Šï¼ŒNXä¿è·ç¼ºçœè¨ç½®ç‚ºæ‡‰ç”¨äºŽæ‰€æœ‰ä»£ç¢¼ã€‚
3.3.2å°‹å€ç©ºé–“隨機分布(ASLR)
åŒæ¨£å¾žä¸Šå€‹å †æ£§æº¢å‡ºçš„例å說起。如果寫入的新的返回地å€ä¸æ˜¯æŒ‡å›žå †æ£§é é¢ï¼Œè€Œæ˜¯æŒ‡å‘了一個系統函數的入å£åœ°å€ï¼Œé‚£æ¨£NXä¿è·å°±ä¸èµ·ä½œç”¨ã€‚這類攻擊有一個å‰æ,å³ç‰¹å®šç³»çµ±å‡½æ•¸çš„å…¥å£åœ°å€æ˜¯å¯ä»¥äº‹å…ˆç¢ºå®šçš„。
å°‹å€ç©ºé–“隨機分布(ASLR: Address Space Layout Randomization)就是é‡å°æ¤é¡žæ”»æ“Šæ‰‹æ®µã€‚在Windows Vista啟動時,æ“作系統隨機從256個地å€ç©ºé–“ä¸é¸å‡ºä¸€å€‹è¼‰å…¥DLL/EXE。這樣攻擊方就難以事先確定系統函數的入å£åœ°å€ã€‚
å°‹å€ç©ºé–“隨機分布和
NX
ä¿è·çµåˆåœ¨ä¸€èµ·ï¼Œå¯ä»¥æœ‰æ•ˆé™åˆ¶ç·©å˜æº¢å‡ºå±å®³ç¨‹åº¦ã€‚
圖
4:尋å€ç©ºé–“隨機分布
å±€é™æ€§ã€‚盡管緩å˜æº¢å‡ºæ˜¯æ“作系統最為嚴é‡çš„安全æ¼æ´žï¼Œå¹¶ä¸æ˜¯æ‰€æœ‰åš´é‡çš„安全æ¼æ´žéƒ½æ˜¯ç”±ç·©å˜æº¢å‡ºå°Žè‡´çš„。例如,2006å¹´Windows系統最嚴é‡çš„安全æ¼æ´žä¹‹ä¸€ï¼ŒMS06-001 WMF安全æ¼æ´žï¼Œå°±å’Œç·©å˜æº¢å‡ºæ²’有關系。在這種情æ³ä¸‹ï¼ŒNXä¿è·ï¼Œæˆ–是尋å€ç©ºé–“隨機分布,都是ä¸èµ·ä½œç”¨çš„。
3.4 64ä½å¹³è‡ºå®‰å…¨æ”¹é€²
背景:有缺陷或惡æ„的驅動程åºå°Žè‡´ç³»çµ±å´©æ½°ï¼Œä¸ç©©å®šï¼Œå’Œæ¥µç‚ºåš´é‡çš„安全å•é¡Œã€‚
這里需è¦ç°¡å–®ä»‹ç´¹â€œRootkitâ€é€™å€‹æ¦‚念。這個術語來自于Unix系統。最早的一個版本是出ç¾åœ¨SunOS 4。它特指那些用于修改æ“作系統,以改變æ“作系統的表ç¾è¡Œç‚ºçš„工具軟件 。而這種改變,往往ä¸æ˜¯æ“作系統è¨è¨ˆæ™‚所期望的。
Rootkit最典型的目的就是“隱è—â€ã€‚éš±è—çš„å°è±¡å¯ä»¥æ˜¯æ–‡ä»¶ï¼Œç‰¹å®šçš„注冊表,特定進程,打開的網絡端å£ç‰ç‰ã€‚這個“隱è—â€æ˜¯é€šéŽä¿®æ”¹æ“作系統本身來實ç¾çš„。下é¢æ˜¯Win32 API的調用éŽç¨‹ï¼š
圖
5:Win32 API的調用éŽç¨‹
Rootkitå¯ä»¥å°‡è‡ªèº«ä»£ç¢¼æ’入到æ¯ä¸€å€‹ç®é 連接處,以控制函數的返回çµæžœã€‚舉個例å,一個應用程åºï¼ˆå¦‚å病毒軟件)需è¦æŸ¥è©¢ç³»çµ±ä¸é‹è¡Œçš„當å‰é€²ç¨‹ï¼ŒRootkitåªéœ€è¦å°‡æ‰€æƒ³éš±è—的進程從返回的進程列表ä¸åˆªé™¤ï¼Œé‚£ä¹ˆä¸Šå±¤çš„應用程åºå°±æ ¹æœ¬ä¸çŸ¥é“有這樣一個進程æ£åœ¨ç³»çµ±ä¸é‹è¡Œã€‚
為什么說Rootkit會導致嚴é‡çš„安全å•é¡Œï¼Ÿè©¦æƒ³ä¸€ä¸‹ï¼Œå¦‚果一個惡æ„程åºæŠŠè‡ªèº«æ–‡ä»¶å’Œé‹è¡Œé€²ç¨‹å¾žç³»çµ±ä¸éš±è—起來,那么如何指望å病毒軟件/å間諜軟件能æˆåŠŸçš„檢測/清除這個程åºï¼Ÿï¼
在64ä½å¹³è‡ºWindows Vistaï¼Œç‰¹åˆ¥å¢žåŠ äº†ä¸‹é¢å…©å€‹é‡è¦çš„安全特性。
·
è¨å‚™é©…動程åºæ•¸å—èªè‰ã€‚
在64ä½å¹³è‡ºWindows Vistaä¸ï¼Œæ‰€æœ‰å·¥ä½œåœ¨æ ¸å¿ƒæ¨¡å¼ä¸‹çš„è¨å‚™é©…動程åºéƒ½å¿…é ˆæ供數å—èªè‰ï¼Œæ‰èƒ½è¢«ç³»çµ±åŠ 載。由于需è¦ä¿®æ”¹æ“作系統行為,Rootkitå¾€å¾€æ˜¯ä¸€å€‹å·¥ä½œåœ¨æ ¸å¿ƒæ¨¡å¼ä¸‹çš„è¨å‚™é©…動程åºã€‚那么,數å—èªè‰é¦–å…ˆå¯ä»¥æŒ‡æ˜Žä¸€å€‹é©…動程åºæ˜¯ç”±å“ªå€‹å» 商發布的。其次,數å—èªè‰å¯ä»¥é©—è‰é€™å€‹é©…動程åºçš„代碼完整性,也就是å¦è¢«ç¯¡æ”¹éŽã€‚這樣,就å¯ä»¥é˜²æ¢ç³»çµ±åŠ 載Rootkit驅動程åºã€‚
·
æ ¸å¿ƒæ¨¡å¼ä¿è·ï¼ˆKernel Patch Protection
)。
這個技術也被稱為PatchGuard。它用來防æ¢æœªç¶“èªè‰çš„代碼自由修改æ“ä½œç³»çµ±çš„æ ¸å¿ƒç‹€æ…‹ï¼ˆKernel State)。最為å±éšªçš„Rootkitå¾€å¾€ç›´æŽ¥ä¿®æ”¹æ ¸å¿ƒæ¨¡å¼çš„é‡è¦æ•¸æ“šï¼Œä¾‹å¦‚系統的進程控制表,ä¸æ–·æŽ§åˆ¶è¡¨ç‰ç‰ã€‚通éŽå°æ ¸å¿ƒç‹€æ…‹çš„ä¿è·ï¼Œå¯ä»¥æœ‰æ•ˆé˜»æ¢é€™é¡žæ”»æ“Šã€‚
å±€é™æ€§ã€‚由于å‘å‰å…¼å®¹çš„åŽŸå› ï¼Œè¨å‚™é©…動程åºçš„數å—èªè‰ï¼Œå’Œæ ¸å¿ƒæ¨¡å¼ä¿è·åªåœ¨64ä½å¹³è‡ºä¸Šæœ‰æ•ˆã€‚也就是說,32ä½å¹³è‡ºWindows Vista上的Rootkitå¨è„…并沒有得到有效控制。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1583601