前言?
在NT系統(tǒng)中以system權(quán)限的進(jìn)程使用net?use訪問(wèn)網(wǎng)絡(luò)共享時(shí)會(huì)產(chǎn)生“系統(tǒng)發(fā)生?1312?錯(cuò)誤。指定的登錄會(huì)話不存在。可能已被終止。”,本文試圖對(duì)此進(jìn)行一下解釋,再有就是使用IIS創(chuàng)建的進(jìn)程通常也不能使用網(wǎng)絡(luò)共享,產(chǎn)生的錯(cuò)誤是一樣的,原因也在這篇文章里闡述了,希望對(duì)大家能有所幫助。
本地系統(tǒng)賬號(hào)?
????當(dāng)用戶登錄系統(tǒng)時(shí),Windows?NT/2000?將驗(yàn)證他的密碼,如果用戶驗(yàn)證成功,系統(tǒng)產(chǎn)生一個(gè)訪問(wèn)令牌,它包含用戶安全標(biāo)示符(SID)、組SID列表、特權(quán)列表和模擬(Impersonating)信息等安全信息。該用戶啟動(dòng)的任何進(jìn)程都將附加該令牌,訪問(wèn)令牌代表進(jìn)程的安全環(huán)境,它控制了進(jìn)程與可保護(hù)對(duì)象(securable?object)的交互。當(dāng)進(jìn)程訪問(wèn)一個(gè)可保護(hù)對(duì)象時(shí),系統(tǒng)將該對(duì)象的訪問(wèn)控制列表(ACL)中的每個(gè)訪問(wèn)控制項(xiàng)(ACE)和訪問(wèn)令牌中的?SID?進(jìn)行比較以確定進(jìn)程是否可以訪問(wèn)該對(duì)象。由于用戶啟動(dòng)的任何進(jìn)程都將附加該用戶的訪問(wèn)令牌,因此任何進(jìn)程都知道用戶的?SID?并且可以訪問(wèn)它。?
????Local?System?賬號(hào)是內(nèi)置的系統(tǒng)賬號(hào),所有系統(tǒng)進(jìn)程都在?Local?System?的安全環(huán)境中運(yùn)行,Local?System?賬號(hào)是用于啟動(dòng)服務(wù)的默認(rèn)賬號(hào),它繼承了服務(wù)控制管理器的安全環(huán)境,在本地計(jì)算機(jī)上擁有幾乎無(wú)限的權(quán)限。在?Local?System?賬號(hào)環(huán)境運(yùn)行的進(jìn)程沒(méi)有與任何已登錄的用戶賬號(hào)相聯(lián)系,沒(méi)有用于驗(yàn)證的信任憑證(用戶名、域和密碼),而該信任憑證(credential)用于網(wǎng)絡(luò)上其他計(jì)算機(jī)的驗(yàn)證,這樣以?Local?System?賬號(hào)運(yùn)行的進(jìn)程就不能訪問(wèn)網(wǎng)絡(luò)資源,如網(wǎng)絡(luò)共享。
????在?Local?System?賬號(hào)環(huán)境運(yùn)行的進(jìn)程和普通進(jìn)程的不同之處在于:
1)?注冊(cè)表的?HKEY_CURRENT_USER?鍵是和缺省用戶而不是當(dāng)前用戶相聯(lián)系的,要訪問(wèn)其他用戶的配置文件,需要先模擬該用戶,然后再訪問(wèn)?HKEY_CURRENT_USER?。?
2)?可以打開(kāi)?HKEY_LOCAL_MACHINE\\SECURITY?注冊(cè)表鍵
3)?該進(jìn)程不能訪問(wèn)網(wǎng)絡(luò)資源,如共享、管道,因?yàn)樗荒芴峁┬湃螒{證,而只能使用空連接。?在?HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters?處的?NullSessionPipes?和?NullSessionShares?的值指明了可以被空連接訪問(wèn)的管道和共享。?或者也可以設(shè)置?RestrictNullSessAccess?=?0,以允許空連接的用戶訪問(wèn)該計(jì)算機(jī)上的所有管道和共享。(呵呵,這個(gè)是個(gè)安全隱患呦,可不要干呀。上邊兩個(gè)值最好也全都設(shè)成空)
4)?不能和其他程序共享對(duì)象,除非在創(chuàng)建對(duì)象時(shí)設(shè)置?DACL?允許用戶訪問(wèn)。
5)?如果啟動(dòng)命令行提示符來(lái)運(yùn)行批處理文件,用戶可以按?Ctrl+C?來(lái)終止批處理的運(yùn)行,并且用戶就獲得了一個(gè)?Local?System?權(quán)限的?shell。
IIS服務(wù)的模擬
????正是由于服務(wù)程序運(yùn)行在權(quán)限極大的?Local?System?賬號(hào)下,如果網(wǎng)絡(luò)客戶也使用該賬號(hào)來(lái)訪問(wèn)系統(tǒng)將給系統(tǒng)帶來(lái)安全隱患,因此?NT/2000?提供了模擬功能?---?服務(wù)程序在處理客戶請(qǐng)求時(shí)使用一個(gè)權(quán)限較低的客戶身份運(yùn)行,處理完客戶請(qǐng)求再恢復(fù)。IIS就是使用這個(gè)原理,雖然配置?IIS?以?Local?System?賬號(hào)運(yùn)行,而一般的匿名請(qǐng)求就是以?IUSR_computer?身份(guests?組)和?IWAM_computer?身份(guests?組)運(yùn)行的。模擬又分兩種,在進(jìn)程里使用模擬令牌來(lái)模擬某個(gè)用戶(模擬令牌里的用戶)和使用主要令牌來(lái)創(chuàng)建新的進(jìn)程。在進(jìn)程內(nèi)的某個(gè)線程可以使用?ImpersonateLoggedOnUser(同時(shí)需要提供一個(gè)代表某個(gè)登錄用戶的模擬令牌)模擬用戶時(shí),這個(gè)線程就是該模擬令牌代表的用戶的身份,處理完成后使用?RevertToSelf?恢復(fù)自己的身份。創(chuàng)建新的進(jìn)程使用?CreateProcessAsUser(比?CreateProcess?函數(shù)多一個(gè)主要令牌的參數(shù)),這樣啟動(dòng)的新進(jìn)程就不是父進(jìn)程的身份,而是主要令牌代表的登錄用戶。對(duì)于asp、asa等ISAPI擴(kuò)展,是動(dòng)態(tài)連接庫(kù)的形式,是進(jìn)程內(nèi)的模擬;而CGI程序(cmd.exe,ncx99.exe)則是使用的創(chuàng)建新進(jìn)程方式進(jìn)行的模擬。
????不過(guò)即使我們通過(guò)IIS啟動(dòng)了進(jìn)程,一般仍然不能使用網(wǎng)絡(luò)資源,就是不能使用?net?use,如果使用將產(chǎn)生“系統(tǒng)發(fā)生?1312?錯(cuò)誤。指定的登錄會(huì)話不存在。可能已被終止。”的錯(cuò)誤,這是因?yàn)椴煌牡卿涱愋驮斐傻摹indows?NT支持以下5種登錄類型:
?登錄類型?含義?
LOGON32_LOGON_INTERACTIVE?交互登錄:這個(gè)是通常的本地登錄或者終端服務(wù)、telnet等??
LOGON32_LOGON_SERVICE?服務(wù)登錄:作為服務(wù)登錄系統(tǒng)??
LOGON32_LOGON_NETWORK?網(wǎng)絡(luò)登錄:用于高性能的服務(wù)來(lái)驗(yàn)證明文密碼??
LOGON32_LOGON_BATCH?批處理登錄:用于批處理服務(wù)器或者同時(shí)處理多個(gè)明文驗(yàn)證的高性能服務(wù)器?
LOGON32_LOGON_UNLOCK?解除鎖定登錄:設(shè)計(jì)用來(lái)為?GINA?DLL?記錄交互登錄用戶解除工作站鎖定的。這種類型允許在工作站解除鎖定時(shí)產(chǎn)生一條審核記錄??????????
????除了以上5種登錄類型外,Windows?2000?還支持以下兩種類型LOGON32_LOGON_NETWORK_CLEARTEXT,LOGON32_LOGON_NEW_CREDENTIALS(詳細(xì)詳細(xì)參見(jiàn)?msdn?里關(guān)于?LogonUser?函數(shù)的解釋)。
根據(jù)?IIS?驗(yàn)證方式的不同,IIS支持不同的登錄類型。IIS?4支持以下5種類型的驗(yàn)證方式:
?驗(yàn)證類型?模擬類型?
匿名登錄(沒(méi)有驗(yàn)證),允許密碼自動(dòng)同步(缺省)?Network?-?網(wǎng)絡(luò)??
匿名登錄(沒(méi)有驗(yàn)證),禁止密碼自動(dòng)同步?IIS?Clear?Text?-?IIS明文?
基本驗(yàn)證?IIS?Clear?Text?-?IIS明文?
集成NT驗(yàn)證,NTLM?Network?-?網(wǎng)絡(luò)??
客戶端使用?SSL?Certificate?Mapping?Interactive?-?交互?
????可否訪問(wèn)網(wǎng)絡(luò)資源由模擬的登錄令牌類型決定,網(wǎng)絡(luò)登錄令牌是不能訪問(wèn)網(wǎng)絡(luò)資源的,因?yàn)檫@種類型的訪問(wèn)令牌是在通過(guò)網(wǎng)絡(luò)完成驗(yàn)證后由服務(wù)器創(chuàng)建的,服務(wù)器使用這種令牌來(lái)訪問(wèn)網(wǎng)絡(luò)上的其他計(jì)算機(jī)是一個(gè)安全隱患。
????交互登錄就和本地登錄一樣,是可以訪問(wèn)網(wǎng)絡(luò)資源的。
????IIS?支持的第三種類型的訪問(wèn)令牌是批處理令牌,它是設(shè)計(jì)用來(lái)在安全的環(huán)境里進(jìn)行批處理工作的,批處理令牌也可以訪問(wèn)網(wǎng)絡(luò)資源。
????IIS?明文驗(yàn)證的概念來(lái)自于IIS是以明文的方式獲得用戶名和密碼的事實(shí)。管理員可以控制明文登錄創(chuàng)建交互令牌、批處理令牌還是網(wǎng)絡(luò)令牌,這由?metabase的?LogonMethod?屬性決定。缺省這種登錄創(chuàng)建交互令牌。
????一般管理員在配置?IIS?時(shí)會(huì)允許密碼自動(dòng)同步(這樣就不用關(guān)心?IUSR_computer?用戶的密碼的更改),還有就是集成?NT?的?NTLM?驗(yàn)證也是比較常見(jiàn)的,不過(guò)這兩者驗(yàn)證都將創(chuàng)建網(wǎng)絡(luò)訪問(wèn)令牌,因此我們就不能訪問(wèn)網(wǎng)絡(luò)資源了。