IIS配置文件后門(mén)的方法
更新時(shí)間:2007年06月09日 00:00:00 作者:
作者:tombkeeper pgn 來(lái)源:www.loveling.net/黑客基地
本文的內(nèi)容是如何利用IIS本身的一些特性建立后門(mén)。當(dāng)然,這主要是一份供網(wǎng)絡(luò)管理員和網(wǎng)絡(luò)安全工作人員參考的“Know Your Enemy”類(lèi)文檔,作者希望這篇文章能夠?qū)z查和清除后門(mén)有所幫助,而并不鼓勵(lì)或贊同利用本文的技巧進(jìn)行違法活動(dòng)。
首先簡(jiǎn)單介紹一下IIS的配置文件MetaBase.bin。這個(gè)文件位于%SystemRoot%system32inetsrvMetaBase.bin,包含了幾乎所有IIS的配置信息,是非常重要的系統(tǒng)文件。簡(jiǎn)單的說(shuō),我們?cè)凇癷ntenet服務(wù)管理器”中所作的一切設(shè)置最終都會(huì)被保存在MetaBase.bin中。在日常的系統(tǒng)管理中除了通過(guò)“intenet服務(wù)管理器”來(lái)對(duì)MetaBase.bin進(jìn)行操作外,Windows還提供了一個(gè)腳本adsutil.vbs可以對(duì)MetaBase.bin進(jìn)行操作。
MetaBase的結(jié)構(gòu)類(lèi)似于注冊(cè)表,也是樹(shù)形結(jié)構(gòu),有類(lèi)似鍵、值、項(xiàng)的概念。事實(shí)上在IIS3和PWS中,MetaBase的內(nèi)容就是存儲(chǔ)在注冊(cè)表中的。MetaBase有兩個(gè)主鍵:LM和Schema。其中,Schema保存了系統(tǒng)默認(rèn)的一些配置,通常不需要修改,一旦改錯(cuò)也非常危險(xiǎn),所以無(wú)論是“intenet服務(wù)管理器”還是adsutil.vbs都沒(méi)有提供修改Schema的機(jī)制。LM中包含了IIS的HTTP服務(wù),F(xiàn)TP服務(wù),SMTP服務(wù)等的配置信息。其中,LM/W3SVC/下是我們要用到的HTTP服務(wù)的配置信息。
幾個(gè)下面會(huì)提到的值:
LM/W3SVC/InProcessIsapiApps,進(jìn)程內(nèi)啟動(dòng)ISAPI。這是一個(gè)數(shù)組,里面包含的是一組指向一些ISAPI的路徑。在這個(gè)數(shù)組里面的ISAPI運(yùn)行的時(shí)候都是由inetinfo.exe直接啟動(dòng)的,繼承inetinfo.exe的local system權(quán)限;而不在其中的ISAPI則是由svchost.exe派生的dllhost.exe進(jìn)程啟動(dòng)的,運(yùn)行的身份是IWAM_NAME,當(dāng)然,這是IIS默認(rèn)的安全級(jí)別“中”的情況下,如果設(shè)為低,那么所有ISAPI都會(huì)由inetinfo.exe直接派生。另外,如果設(shè)定的時(shí)候不指定路徑,而是僅指定一個(gè)擴(kuò)展名,那么任何路徑下的同名ISAPI在被調(diào)用的時(shí)候都會(huì)以system權(quán)限執(zhí)行。
ScriptMaps,腳本映射。在某個(gè)目錄下設(shè)定該值后,則向該目錄請(qǐng)求的特定擴(kuò)展名的文件會(huì)交給指定的ISAPI執(zhí)行。需要強(qiáng)調(diào)的是,設(shè)定ScriptMaps的目錄并不一定要真實(shí)存在的,只要在MetaBase中某個(gè)HTTP實(shí)例的root鍵下建了一個(gè)子鍵,對(duì)該字鍵同名目錄的HTTP請(qǐng)求IIS會(huì)認(rèn)為是合法的,并會(huì)交由映射的ISAPI處理。這也算是IIS的一個(gè)問(wèn)題吧。
CreateProcessAsUser,在某個(gè)目錄下指定改值為0,則該目錄下的應(yīng)用程序會(huì)繼承inetinfo.exe的local system權(quán)限。
AccessWrite,決定某個(gè)目錄是否允許寫(xiě)入,也就是WEBDAV的PUT方法。
AccessExecute,決定某個(gè)目錄是否允許執(zhí)行應(yīng)用程序。
后門(mén)思路:
創(chuàng)建一個(gè)特定擴(kuò)展名的腳本映射,指向我們的ISAPI,并把該ISAPI添加到InProcessIsapiApps列表中。那么我們向服務(wù)器請(qǐng)求該擴(kuò)展名類(lèi)型文件時(shí)就會(huì)在服務(wù)器上以local system權(quán)限執(zhí)行該ISAPI,且所請(qǐng)求的文件并不需要是真實(shí)存在的。
技巧:
1、既然并不需要真的建一個(gè)目錄來(lái)設(shè)定ScriptMaps,那么就可以只寫(xiě)一個(gè)鍵,并給這個(gè)鍵加上ScriptMaps。這樣,從“intenet服務(wù)管理器”里是看不出這個(gè)目錄的,更看不到這個(gè)ScriptMaps。
2、雖然“intenet服務(wù)管理器”里面看不出來(lái),但是有經(jīng)驗(yàn)的管理員可能習(xí)慣于偶爾用adsutil.vbs enum /p來(lái)看一下:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版權(quán)所有(C) Microsoft Corporation 1996-2001。保留所有權(quán)利。
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root/evildir]
這樣就暴露了。因?yàn)槲覀冊(cè)O(shè)的那個(gè)鍵并不是真實(shí)存在的虛擬目錄,只是配置文件中的一個(gè)字符串,所以可以使用0x08這樣的字符來(lái)做鍵值。0x08是Backspace鍵對(duì)應(yīng)的16進(jìn)制值,控制臺(tái)上顯示的效果是向左邊刪除一個(gè)字符,其實(shí)就是把“/”給刪了:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版權(quán)所有(C) Microsoft Corporation 1996-2001。保留所有權(quán)利。
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root]
面對(duì)這種輸出,一般人是不會(huì)留意的。
當(dāng)然也可以設(shè)為類(lèi)似_vti_script,_vti_bin這樣的名字,只要不設(shè)KeyType,在“intenet服務(wù)管理器”中是看不見(jiàn)的。
因?yàn)橄到y(tǒng)中本身InProcessIsapiApps中有一個(gè)WINNTSystem32msw3prt.dll,是.printer的映射,一般用不上。我們可以刪掉D:WINNTSystem32msw3prt.dll的值,換上WINNTSystem32inetsrvmsw3prt.dll。
美中不足的是HTTP請(qǐng)求會(huì)留下痕跡,但是HTTP也有好處,那就是可以隨便用一個(gè)代理服務(wù)器做跳板。另外,也可以用插入0x0D 0x0A來(lái)偽造日志的方法,(詳見(jiàn)《Apache,IIS等多種http服務(wù)器允許通過(guò)發(fā)送回車(chē)符偽造日志》一文)這就是構(gòu)造目錄的技巧了。
具體實(shí)現(xiàn):
當(dāng)然可以用adsutil.vbs手工來(lái)加。不過(guò)需要注意,adsutil.vbs只能設(shè),不能改,所以用adsutil.vbs的時(shí)候一定要把原先的也加上,否則原先的就會(huì)丟失。不同條目之間用空格分開(kāi)。
先用下面命令取得當(dāng)前的InProcessIsapiApps列表: adsutil.vbs get /W3SVC/InProcessIsapiApps
取到之后把自己的ISAPI路徑也加進(jìn)去。 adsutil.vbs set /W3SVC/InProcessIsapiApps "C:WINNTSystem32idq.dll" "C:WINNTSystem32inetsrvhttpext.dll" ………………
ScriptMaps的設(shè)定同InProcessIsapiApps。
當(dāng)然這樣比較麻煩,也無(wú)法寫(xiě)入0x08這樣的鍵值,所以我干脆自己寫(xiě)個(gè)VBS一次性搞定。至于那個(gè)做后門(mén)的ISAPI,能實(shí)現(xiàn)的功能就完全取決于想象力了。這里是一個(gè)簡(jiǎn)單例子的屏幕拷貝:
# nc 10.11.0.26 80
POST /%08/anything.tom
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版權(quán)所有 1985-1998 Microsoft Corp.
C:WINNTsystem32>whoami
NT AUTHORITYSYSTEM
C:WINNTsystem32>exit
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 08 Jan 2003 06:49:37 GMT
更隱蔽的方法是寫(xiě)一個(gè)特殊的ISAPI,并注冊(cè)為解析asp的。通常情況下,該程序把收到的請(qǐng)求轉(zhuǎn)給系統(tǒng)原來(lái)的asp.dll,并把結(jié)果返回,當(dāng)收到一個(gè)特殊POST請(qǐng)求時(shí)就啟動(dòng)自己的后門(mén)代碼,這樣日志里面也不會(huì)有什么顯示。審核時(shí)也很難發(fā)現(xiàn)。
除了上面所述利用腳本映射的方法外,還可以賦予某個(gè)虛擬目錄AccessWrite和AccessExecute權(quán)限。需要運(yùn)行后門(mén)的時(shí)候利用WEBDAV上載ISAPI,然后運(yùn)行,使用完了再刪除。(是否能刪除?還是需要restart W3SVC ?我沒(méi)有試驗(yàn)。)如果上載的不是DLL而是EXE文件,那么把該目錄下的CreateProcessAsUser設(shè)為0也可以獲得local system權(quán)限,這個(gè)方法早有人撰文論述。但AccessWrite和AccessExecute的改變都可以在“intenet服務(wù)管理器”中看出來(lái),隱蔽性就差了。
本文的內(nèi)容是如何利用IIS本身的一些特性建立后門(mén)。當(dāng)然,這主要是一份供網(wǎng)絡(luò)管理員和網(wǎng)絡(luò)安全工作人員參考的“Know Your Enemy”類(lèi)文檔,作者希望這篇文章能夠?qū)z查和清除后門(mén)有所幫助,而并不鼓勵(lì)或贊同利用本文的技巧進(jìn)行違法活動(dòng)。
首先簡(jiǎn)單介紹一下IIS的配置文件MetaBase.bin。這個(gè)文件位于%SystemRoot%system32inetsrvMetaBase.bin,包含了幾乎所有IIS的配置信息,是非常重要的系統(tǒng)文件。簡(jiǎn)單的說(shuō),我們?cè)凇癷ntenet服務(wù)管理器”中所作的一切設(shè)置最終都會(huì)被保存在MetaBase.bin中。在日常的系統(tǒng)管理中除了通過(guò)“intenet服務(wù)管理器”來(lái)對(duì)MetaBase.bin進(jìn)行操作外,Windows還提供了一個(gè)腳本adsutil.vbs可以對(duì)MetaBase.bin進(jìn)行操作。
MetaBase的結(jié)構(gòu)類(lèi)似于注冊(cè)表,也是樹(shù)形結(jié)構(gòu),有類(lèi)似鍵、值、項(xiàng)的概念。事實(shí)上在IIS3和PWS中,MetaBase的內(nèi)容就是存儲(chǔ)在注冊(cè)表中的。MetaBase有兩個(gè)主鍵:LM和Schema。其中,Schema保存了系統(tǒng)默認(rèn)的一些配置,通常不需要修改,一旦改錯(cuò)也非常危險(xiǎn),所以無(wú)論是“intenet服務(wù)管理器”還是adsutil.vbs都沒(méi)有提供修改Schema的機(jī)制。LM中包含了IIS的HTTP服務(wù),F(xiàn)TP服務(wù),SMTP服務(wù)等的配置信息。其中,LM/W3SVC/下是我們要用到的HTTP服務(wù)的配置信息。
幾個(gè)下面會(huì)提到的值:
LM/W3SVC/InProcessIsapiApps,進(jìn)程內(nèi)啟動(dòng)ISAPI。這是一個(gè)數(shù)組,里面包含的是一組指向一些ISAPI的路徑。在這個(gè)數(shù)組里面的ISAPI運(yùn)行的時(shí)候都是由inetinfo.exe直接啟動(dòng)的,繼承inetinfo.exe的local system權(quán)限;而不在其中的ISAPI則是由svchost.exe派生的dllhost.exe進(jìn)程啟動(dòng)的,運(yùn)行的身份是IWAM_NAME,當(dāng)然,這是IIS默認(rèn)的安全級(jí)別“中”的情況下,如果設(shè)為低,那么所有ISAPI都會(huì)由inetinfo.exe直接派生。另外,如果設(shè)定的時(shí)候不指定路徑,而是僅指定一個(gè)擴(kuò)展名,那么任何路徑下的同名ISAPI在被調(diào)用的時(shí)候都會(huì)以system權(quán)限執(zhí)行。
ScriptMaps,腳本映射。在某個(gè)目錄下設(shè)定該值后,則向該目錄請(qǐng)求的特定擴(kuò)展名的文件會(huì)交給指定的ISAPI執(zhí)行。需要強(qiáng)調(diào)的是,設(shè)定ScriptMaps的目錄并不一定要真實(shí)存在的,只要在MetaBase中某個(gè)HTTP實(shí)例的root鍵下建了一個(gè)子鍵,對(duì)該字鍵同名目錄的HTTP請(qǐng)求IIS會(huì)認(rèn)為是合法的,并會(huì)交由映射的ISAPI處理。這也算是IIS的一個(gè)問(wèn)題吧。
CreateProcessAsUser,在某個(gè)目錄下指定改值為0,則該目錄下的應(yīng)用程序會(huì)繼承inetinfo.exe的local system權(quán)限。
AccessWrite,決定某個(gè)目錄是否允許寫(xiě)入,也就是WEBDAV的PUT方法。
AccessExecute,決定某個(gè)目錄是否允許執(zhí)行應(yīng)用程序。
后門(mén)思路:
創(chuàng)建一個(gè)特定擴(kuò)展名的腳本映射,指向我們的ISAPI,并把該ISAPI添加到InProcessIsapiApps列表中。那么我們向服務(wù)器請(qǐng)求該擴(kuò)展名類(lèi)型文件時(shí)就會(huì)在服務(wù)器上以local system權(quán)限執(zhí)行該ISAPI,且所請(qǐng)求的文件并不需要是真實(shí)存在的。
技巧:
1、既然并不需要真的建一個(gè)目錄來(lái)設(shè)定ScriptMaps,那么就可以只寫(xiě)一個(gè)鍵,并給這個(gè)鍵加上ScriptMaps。這樣,從“intenet服務(wù)管理器”里是看不出這個(gè)目錄的,更看不到這個(gè)ScriptMaps。
2、雖然“intenet服務(wù)管理器”里面看不出來(lái),但是有經(jīng)驗(yàn)的管理員可能習(xí)慣于偶爾用adsutil.vbs enum /p來(lái)看一下:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版權(quán)所有(C) Microsoft Corporation 1996-2001。保留所有權(quán)利。
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root/evildir]
這樣就暴露了。因?yàn)槲覀冊(cè)O(shè)的那個(gè)鍵并不是真實(shí)存在的虛擬目錄,只是配置文件中的一個(gè)字符串,所以可以使用0x08這樣的字符來(lái)做鍵值。0x08是Backspace鍵對(duì)應(yīng)的16進(jìn)制值,控制臺(tái)上顯示的效果是向左邊刪除一個(gè)字符,其實(shí)就是把“/”給刪了:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版權(quán)所有(C) Microsoft Corporation 1996-2001。保留所有權(quán)利。
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root]
面對(duì)這種輸出,一般人是不會(huì)留意的。
當(dāng)然也可以設(shè)為類(lèi)似_vti_script,_vti_bin這樣的名字,只要不設(shè)KeyType,在“intenet服務(wù)管理器”中是看不見(jiàn)的。
因?yàn)橄到y(tǒng)中本身InProcessIsapiApps中有一個(gè)WINNTSystem32msw3prt.dll,是.printer的映射,一般用不上。我們可以刪掉D:WINNTSystem32msw3prt.dll的值,換上WINNTSystem32inetsrvmsw3prt.dll。
美中不足的是HTTP請(qǐng)求會(huì)留下痕跡,但是HTTP也有好處,那就是可以隨便用一個(gè)代理服務(wù)器做跳板。另外,也可以用插入0x0D 0x0A來(lái)偽造日志的方法,(詳見(jiàn)《Apache,IIS等多種http服務(wù)器允許通過(guò)發(fā)送回車(chē)符偽造日志》一文)這就是構(gòu)造目錄的技巧了。
具體實(shí)現(xiàn):
當(dāng)然可以用adsutil.vbs手工來(lái)加。不過(guò)需要注意,adsutil.vbs只能設(shè),不能改,所以用adsutil.vbs的時(shí)候一定要把原先的也加上,否則原先的就會(huì)丟失。不同條目之間用空格分開(kāi)。
先用下面命令取得當(dāng)前的InProcessIsapiApps列表: adsutil.vbs get /W3SVC/InProcessIsapiApps
取到之后把自己的ISAPI路徑也加進(jìn)去。 adsutil.vbs set /W3SVC/InProcessIsapiApps "C:WINNTSystem32idq.dll" "C:WINNTSystem32inetsrvhttpext.dll" ………………
ScriptMaps的設(shè)定同InProcessIsapiApps。
當(dāng)然這樣比較麻煩,也無(wú)法寫(xiě)入0x08這樣的鍵值,所以我干脆自己寫(xiě)個(gè)VBS一次性搞定。至于那個(gè)做后門(mén)的ISAPI,能實(shí)現(xiàn)的功能就完全取決于想象力了。這里是一個(gè)簡(jiǎn)單例子的屏幕拷貝:
# nc 10.11.0.26 80
POST /%08/anything.tom
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版權(quán)所有 1985-1998 Microsoft Corp.
C:WINNTsystem32>whoami
NT AUTHORITYSYSTEM
C:WINNTsystem32>exit
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 08 Jan 2003 06:49:37 GMT
更隱蔽的方法是寫(xiě)一個(gè)特殊的ISAPI,并注冊(cè)為解析asp的。通常情況下,該程序把收到的請(qǐng)求轉(zhuǎn)給系統(tǒng)原來(lái)的asp.dll,并把結(jié)果返回,當(dāng)收到一個(gè)特殊POST請(qǐng)求時(shí)就啟動(dòng)自己的后門(mén)代碼,這樣日志里面也不會(huì)有什么顯示。審核時(shí)也很難發(fā)現(xiàn)。
除了上面所述利用腳本映射的方法外,還可以賦予某個(gè)虛擬目錄AccessWrite和AccessExecute權(quán)限。需要運(yùn)行后門(mén)的時(shí)候利用WEBDAV上載ISAPI,然后運(yùn)行,使用完了再刪除。(是否能刪除?還是需要restart W3SVC ?我沒(méi)有試驗(yàn)。)如果上載的不是DLL而是EXE文件,那么把該目錄下的CreateProcessAsUser設(shè)為0也可以獲得local system權(quán)限,這個(gè)方法早有人撰文論述。但AccessWrite和AccessExecute的改變都可以在“intenet服務(wù)管理器”中看出來(lái),隱蔽性就差了。
相關(guān)文章
備份和恢復(fù)Windows IIS服務(wù)器設(shè)置的方法
備份和恢復(fù)Windows IIS服務(wù)器設(shè)置的方法...2007-04-04
如何在一臺(tái)服務(wù)器上實(shí)現(xiàn)多個(gè)web站點(diǎn)的方法
如何在一臺(tái)服務(wù)器上實(shí)現(xiàn)多個(gè)web站點(diǎn)的方法...2007-04-04
WIN2003系統(tǒng)IIS下PHP5+MySQL5+ZendOptimizer配置圖解教程
WIN2003系統(tǒng)IIS下PHP5+MySQL5+ZendOptimizer配置圖解教程...2007-03-03
Apache服務(wù)器的設(shè)置文件位于/usr/local/apache/conf/目錄下,傳統(tǒng)上使用三個(gè)配置文件httpd.conf,access.conf和srm.conf,來(lái)配置Apache服務(wù)器的行為。httpd.conf提供了最基本的服務(wù)器配置,是對(duì)守護(hù)程序httpd如何運(yùn)行的技術(shù)描述;srm.conf是服務(wù)器的資源映射文件,告訴服務(wù)器各種文件的MIME類(lèi)型,以及如何支持這些文件;access.conf用于配置服務(wù)器的訪問(wèn)權(quán)限,控制不同用戶(hù)和計(jì)算機(jī)的訪問(wèn)限制;這三2008-03-03
花生殼與Windows2003 建立WEB服務(wù)器的圖文教程
花生殼與Windows2003 建立WEB服務(wù)器的圖文教程...2007-08-08
Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案
請(qǐng)注意本文已刊載在《開(kāi)放系統(tǒng)世界》2003年第二期,該文章版權(quán)屬于該雜志所有,請(qǐng)勿隨意轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)保留該聲明摘要:對(duì)于所有的ICP來(lái)說(shuō),除了保證網(wǎng)站穩(wěn)定正常運(yùn)行以外,一個(gè)重要的問(wèn)題就是網(wǎng)站訪問(wèn)量的統(tǒng)計(jì)和分析報(bào)表,這對(duì)于了解和監(jiān)控網(wǎng)站的運(yùn)行狀態(tài),對(duì)提高各個(gè)網(wǎng)站的服務(wù)能力和服務(wù)水平是必不可少的。通過(guò)對(duì)Web服務(wù)器的日志文件進(jìn)行分析和統(tǒng)計(jì),能夠有效掌握系統(tǒng)運(yùn)行情況以及網(wǎng)站內(nèi)容的受訪問(wèn)情況、加強(qiáng)對(duì)整個(gè)網(wǎng)站及其內(nèi)容的維護(hù)與管理。本文對(duì)Web服務(wù)器日志分析的原理和技術(shù)進(jìn)行討論。2008-03-03

