編者按:所謂旁注攻擊,其實就是從旁邊進(jìn)行攻擊。在虛擬主機中往往存在很多個Web 網(wǎng)站,黑客從正面進(jìn)攻受挫后,就會了解該網(wǎng)站所在的虛擬機中存在的其它網(wǎng)站地址,這些網(wǎng)站中一旦存在漏洞,黑客就可能控制整個虛擬主機,進(jìn)而控制整個服務(wù)器。
同腳本攻擊相比,旁注攻擊對虛擬主機的危害很大,即使您精心設(shè)計扥網(wǎng)站沒有安全問題,只是因為與之同處一臺虛擬主機的別的網(wǎng)站存在漏洞,導(dǎo)致攻擊者可以利用旁注攻擊手法,采取迂回戰(zhàn)術(shù)控制整個虛擬主機,您的網(wǎng)站自然陷落。
從旁注原理上分析,當(dāng)我們的網(wǎng)站設(shè)計的很安全,讓攻擊者無計可施的話,他們就會利用旁注的方法,來搜尋與我們網(wǎng)站處于同一服務(wù)器上的別的網(wǎng)站。利用其存在的安全漏洞,來獲得WebShell 甚至是整個服務(wù)器的控制權(quán),之后我們的網(wǎng)站也沒有任何安全性可言了。
旁注的首要條件就是Whois 查詢,即查處同一服務(wù)器上的網(wǎng)站信息,可以查知IP 地址和域名所有者等級資料的Whois 服務(wù)器。黑客只需要知道了網(wǎng)站的IP 地址,之后利用Whois的查詢功能,就可能在服務(wù)的記錄資料里面找到該網(wǎng)站所在的主機中的網(wǎng)站列表信息。
接下來攻擊者就可能會對這些網(wǎng)站進(jìn)行逐一探測,來發(fā)現(xiàn)存在漏洞的站點。這其中攻擊者還會利用旁注入侵專用工具,對虛擬主機中的所有域名進(jìn)行自動掃描檢測,來發(fā)現(xiàn)其中存在漏洞的網(wǎng)站(例如暴露數(shù)據(jù)庫路徑或文件上傳等)。
獲得WebShell 控制接口往往權(quán)限很小,對虛擬主機的危害并不是很大(例如只能瀏覽目錄等)。而如果進(jìn)一步執(zhí)行提權(quán),攻擊者就可能獲得虛擬主機的控制權(quán),那么服務(wù)器上的所有網(wǎng)站(包括目標(biāo)網(wǎng)站)就完全處于黑客的掌控。黑客可以隨心所欲的對網(wǎng)站進(jìn)行修改,盜取數(shù)據(jù),嵌入木馬等操作。
由此可見,攻擊者沒有采用太高的技術(shù),就攻破了原本嚴(yán)密設(shè)防的網(wǎng)站。從中不難看出,旁注攻擊對虛擬主機的危害極大。
有時,當(dāng)攻擊者對目標(biāo)虛擬主機進(jìn)行檢測時,會發(fā)現(xiàn)其中的域名很少,而且這些網(wǎng)站也不存在什么漏洞,這時他們會盯上虛擬主機用戶的某些二級域名。有些網(wǎng)站管理員也會將空間劃分為幾個目錄,并分別綁定二級域名。攻擊者會通過查詢其中存在的二級域名來尋找攻擊的突破口。因此,這些方面也是用戶必須引起重視的地方。
了解到了旁注攻擊的過程,就需要采取措施,對服務(wù)器進(jìn)行嚴(yán)密的安全配置,讓黑客無法通過旁注來危害網(wǎng)站的安全。
由于黑客往往會上傳ASP或PHP 木馬來對服務(wù)器進(jìn)行滲透,這些木馬或者WebShell接口主要使用了Wscript.Shell、Wscript.Shell.1、Wscript.Network、Wscript.Network.l、FileSystem Object 以及Adodb.Stream 等組件,對服務(wù)器上的文件執(zhí)行讀寫、刪除、復(fù)制及更名等操作。所以如果服務(wù)器對FSO組件要求不高的話,通過禁用或修改FSO 組件,可以有效禁止這類木馬的活動。
木馬腳本中的各種功能,諸如瀏覽目錄刪除文件等,都是基于某些模型對象之上,這需要微軟提供的腳本運行時間DLL 文 件“scrun.dll”的支持。點擊“Windows+R”組合鍵,執(zhí)行“regsvr/u c:windowssystem32scrrun.dll”命令,來注銷FSO 組件。對于基于Shell.application組件的木馬來說,可以執(zhí)行“regsvr32 shell32.dll/u/s”命令進(jìn)行刪除。
熟悉ASP 語法的用戶都知道,在ASP 程序中調(diào)用組件的語法通常是“set 對象名=Server.CreateObject("Progid")”,其中的關(guān)鍵就是“Progid”值。不同的組件對應(yīng)不同的Progid 值,而FSO 組件的調(diào)用也是通過Progid 值來完成的。因此修改Progid 值,也可以禁止FSO 組件。
在注冊表編輯器中打開“HKEY_CLASSES_ROOTScripting.FileSystem Object”分支,然后將其中的“Scripting.FileSystem Object”名稱進(jìn)行修改,比如說修改為“Scripting.FileSystemObjectxx”等。這樣,在ASP 木馬試圖調(diào)用FSO 組件的Progid 值時,對應(yīng)語句就變成了“Set 對象名=Server.CreateObject("Scripting.Filesystem Objectxx")”格式,讓使用FSO 組件的ASP 木馬失去作用。
為了防止黑客通過FSO的類標(biāo)識符CLSID 在網(wǎng)頁中調(diào)用組件,最好在上述分支中選擇“CLSID”項,在窗口右側(cè)雙擊默認(rèn)項,修改其CSLID 值,防止非法調(diào)用。同理,對“HKEY_CLASSES_ROOTWScript.Shell.1” “HKEY_CLASSES_ROOTWScript.Network” “HKEY_CLASSES_ROOTWScript.Network.1”“HKEY_CLASSES_ROOTShell.Application” “HKEY_CLASSES_ROOTShell.Application.1”等鍵值進(jìn)行同樣的修改,來抵御ASP 木馬等惡意程序的威脅。為了防止黑客隨意調(diào)用CMD.exe 程序,可以執(zhí)行“cacls C:WindowsSystem32cmd.exe/e/d guests”命令,禁止Guests 組用戶訪問CMD.exe 程序。
當(dāng)然,使用上述方法雖然在一定程序上提高了安全性,不過有時會明顯影響主機的運作效率。如何既允許FSO 組件的存在,又可以避免黑客利用ASP 木馬對主機進(jìn)行入侵呢?這就需要利用Windows的權(quán)限控制機制來實現(xiàn)了。例如,在各個盤符的屬性窗口中的“安全”面板上點擊“添加”按鈕,之后搜索本機中的所有賬戶信息,將“Administrators”“Backup Operators” “Power Users”以及“Replicator”等賬戶組添加進(jìn)來,并為其分配“完全控制權(quán)限”。將“Guests” “IWAM_ 主機名”“IUSR_主機名” “everyone”等賬戶或組刪除。其中的“IUSR_主機名”是運行ASP時訪問硬盤的賬戶,將其從訪問列表中刪除,ASP 木馬就無法對硬盤進(jìn)行讀寫操作。運行“l(fā)usrmgr.msc”程序,打開賬戶管理程序,為虛擬主機中的每個用戶分別創(chuàng)建賬戶名,在創(chuàng)建賬戶窗口中不選擇“用戶下次登錄時須更改密碼”項,選擇“用戶不能更改密碼”和“密碼永不過期”項。
假設(shè)創(chuàng)建的賬戶名為“IUSR_one”,在CMD 窗口中執(zhí)行“net localgroup user IUSR_one/del”和“net localgroup guests IUSR_one/add”命令,將“IUSR_one”賬戶從默認(rèn)的用戶組中刪除,并將其添加到Guests組。在IIS 服務(wù)管理器中找到對應(yīng)的虛擬主機項目,在其右鍵菜單上點擊“屬性”項,在彈出窗口中的“主目錄”面板中點擊“瀏覽”,設(shè)置虛擬主機的Web 路徑。之后在該路徑的屬性窗口中的“安全”面板中將存在的賬戶全部清除,點擊“添加”,將“Administrator”和“IUSR_one”添加進(jìn)來,并為其設(shè)置完全控制的權(quán)限,可以根據(jù)需要添加所需的賬戶,但是Guests 和“IUSR_ 主機名”之類的賬戶不要添加進(jìn)來。
選擇上述IIS 管理窗口中的“目錄安全性”→“匿名訪問和驗證控制”,點擊“編輯”按鈕,在驗證方法窗口中點擊“編輯”按鈕,在匿名用戶賬號窗口中將默認(rèn)賬號修改為“IUSR_one”,并輸入其密碼信息。這樣,所有訪問該網(wǎng)站的用戶都是使用“IUSR_one”賬戶來操作的,該賬戶只對虛擬主機本地的Web 網(wǎng)站目錄有操作權(quán)限,對其他的目錄沒有任何權(quán)限,這樣就可以防止攻擊者利用WebShell 接口來瀏覽或者跳轉(zhuǎn)目錄。即使攻擊者獲得了“IUSR_one”的密碼和對應(yīng)的Web 網(wǎng)站目錄中的全部權(quán)限,但由于該賬戶輸入Guests組,權(quán)限非常低,根本無法運行任何程序。
按照同樣的方法,為虛擬主機的不同Web 網(wǎng)站分別配置管理賬戶。
實際上,攻擊者要想實施旁注攻擊,需要滿足一些條件。例如,目標(biāo)主機安裝了IIS 服務(wù)器,在主機上可以運行CMD 命令,主機需要支持FSO、ADO 和WSH 組件,主機安裝了FTP 及終端服務(wù)等程序等條件。這樣,黑客才可以執(zhí)行掃描、探測、分析和攻擊以及提升權(quán)限等動作。
所以,對服務(wù)器上的應(yīng)用程序和系統(tǒng)軟件進(jìn)行合理的安全配置,對防止黑客入侵有著非常大的作用。例如,將各種程序升級到最新版本,為其設(shè)置復(fù)雜的密碼,為系統(tǒng)打上各種補丁等,都可以增大黑客攻擊的難度。
例如,刪除無關(guān)的網(wǎng)絡(luò)協(xié)議,不僅可以提高訪問效率,也就可以降低黑客攻擊的風(fēng)險。禁止系統(tǒng)在出錯時自動生成各種報告文件。這樣可以防止泄露系統(tǒng)配置信息。禁止允許建立空連接,禁止自動啟動服務(wù)器共享,關(guān)閉135 及445 等危險端口,都可以提高系統(tǒng)的安全性。針對IIS 目錄,管理員可以設(shè)置拒絕特定的IP 地址,子網(wǎng)甚至域名來訪問服務(wù)器。此外,利用WhosOn 工具,能夠讓管理員了解哪些IP 地址正在試圖訪問服務(wù)器上的特定文件。如果發(fā)現(xiàn)攻擊者正在試圖訪問服務(wù)器上的“CMD.exe”程序,管理員可以選擇拒絕其訪問Web 服務(wù)器。
利用NTFS 權(quán)限控制機制,合理設(shè)置磁盤和文件訪問權(quán)限,對于防范黑客入侵意義重大。特別是對各邏輯盤、系統(tǒng)盤和系統(tǒng)文件夾等重點目標(biāo),盡可能只保留Admibistrators 組和SYSTEM賬戶,將其余的賬戶全部刪除,尤其是everyone 等危險性較大的賬戶。
對于系統(tǒng)自帶的可能被攻擊者利用的程序(例如“net.exe 等”),也需要配置合理的權(quán)限,只允許Admini strators 組 和SYSTEM 賬 戶對其進(jìn)行控制。利用組策略,設(shè)置復(fù)雜的密碼策略,可以提高密碼的安全性。利用審核機制,便于及時發(fā)現(xiàn)黑客的入侵痕跡。關(guān)閉無關(guān)的系統(tǒng)服務(wù)(比如注冊表遠(yuǎn)程訪問等),防止黑客乘機進(jìn)行滲透。如果使用FTP 服務(wù)器,盡可能使用IIS 中提供的FTP 組件,并為其合理配置賬戶和權(quán)限。如果使用終端服務(wù),可以采取修改訪問端口,設(shè)置監(jiān)控腳本,利用安全策略攔截?zé)o關(guān)IP 等手段來提高安全性。當(dāng)然,這些安全設(shè)置方法有很多技巧和注意事項,這里不再贅述。
除了采用常規(guī)方法來防御旁注攻擊外,還可以采用一些特殊的技巧。
例如,使用端口轉(zhuǎn)發(fā)技術(shù),就可以讓旁注攻擊鎩羽而歸。在服務(wù)器上,通過禁用危險的組件合理設(shè)置目錄訪問機制,可以提高系統(tǒng)安全性。不過,對于一般用戶來說,只能訪問虛擬主機,而無法對真實服務(wù)器進(jìn)行有效控制。所以,服務(wù)器的安全設(shè)置對于一般的網(wǎng)站管理員是無法做到的。從旁注的原理上看,一旦黑客通過Whois查出目標(biāo)網(wǎng)站對應(yīng)的IP 地址,要想禁止其查詢該IP 上綁定的其他域名幾乎是不可能的。那么,只要將網(wǎng)站的IP 地址隱藏起來,就可以避免遭到黑客的旁注攻擊。
為了實現(xiàn)該想法,首先需要有一臺沒有開啟80 端口,并且有公網(wǎng)IP的主機作為轉(zhuǎn)發(fā)機來使用。假設(shè)虛擬主機的IP地址為“192.168.0.5”,網(wǎng)站的域名為“www.xxx.com”,作為轉(zhuǎn)發(fā)機的主機IP為“192.168.0.3”。
先登錄到域名管理界面,來更改DNS 設(shè)置信息,將域名“www.xxx.com”的A 記錄指向192.168.0.3的IP。之后當(dāng)訪問“www.xxx.com”域名時,就會導(dǎo)向192.168.0.3的這臺主機,但是網(wǎng)站其實并不在這臺主機上,所以就會出現(xiàn)訪問失敗的情況。為了順利訪問到我們的網(wǎng)站,可以利用端口轉(zhuǎn)發(fā)來實現(xiàn),即 將192.168.0.3的80 端口轉(zhuǎn)發(fā)到192.168.0.5的主機的80 端口上。
端口轉(zhuǎn)發(fā)有很多工具可以利用,這里以Fpipe 為例進(jìn)行說明:
在IP 為192.168.0.3的主機上運行“fpipe–l 80 r 80 192.168.0.5”,就可以將訪問本機80 端口的數(shù)據(jù)轉(zhuǎn)發(fā)到IP 為192.168.0.6的主機中的80 端口上。之后當(dāng)訪問“www.xxx.com”主機時,可以順利訪問我們的網(wǎng)站了。使用Ping 命令對“www.xxx.com”網(wǎng)站進(jìn)行探測時,顯示的IP 地址為“192.168.0.3”,即轉(zhuǎn)發(fā)機的IP。使用“nslookup”命令進(jìn)行檢測,探測到的IP 依然為“192.168.0.3”。這樣,攻擊者會因為找到不真實的IP而無法進(jìn)行侵襲網(wǎng)站。
根據(jù)以上分析可以看出,利用Whois 域名查詢功能解析的IP 地址其實就是我們在域名管理的A 記錄中填寫的IP地址。因此反過來考慮,如果在域名管理的A 記錄中寫入一個錯誤的解析地址,Whois的查詢功能自然隨之失效。當(dāng)然,這樣雖然可以避開Whois 查詢,不過同時也就無法解析域名了,因此在設(shè)置A 記錄時就需要采取一些特殊的技巧。
按照正常的DNS 解析順序,當(dāng)訪問者在瀏覽器中輸入目標(biāo)域名后,瀏覽器會先在本機中查找域名綁定信息,如果沒有發(fā)現(xiàn)的話,就會到Internet 上特定的域名服務(wù)器中查詢該域名,查詢到之后,就可以根據(jù)與之對應(yīng)的IP 來訪問目標(biāo)站點。而如果域名IP 綁定關(guān)系是錯誤的,訪問就會出錯,接著瀏覽器就會再次到域名服務(wù)器上查找正確的綁定信息。利用這一點,這要為特定的域名綁定多個IP 地址,其中第一個是錯誤的IP,之后的才是正確的IP,那么就可以讓W(xué)hois 查詢失效,讓攻擊者無法進(jìn)行旁注攻擊。
具體的操作并不復(fù)雜,您可以根據(jù)虛擬主機提供商的不同,進(jìn)入對應(yīng)的域名管理網(wǎng)站,在域名管理模塊中進(jìn)入域名解析界面,點擊“新增”按鈕,在A 記錄添加一個域名解析到某個IP,假設(shè)為“192.168.0.10”,與該地址對應(yīng)的是一臺沒有開啟Web 服務(wù)的主機,而不是實際的真實IP。之后按照同樣方法,在A 記錄添加一個域名解析到真實的IP,假設(shè)為“192.168.0.20”。這 樣,一個域名就綁定了兩個IP,這并不影響網(wǎng)站的訪問操作。當(dāng)訪問我們的網(wǎng)站時,瀏覽器的訪問速度明顯降低,但是最終訪問成功了。這是因為其執(zhí)行了兩次域名解析操作,第一次解析的是錯誤的域名IP 綁定關(guān)系,第二次才解析成功。
注意,首次解析成功后,之后的解析動作非常順利了,因為系統(tǒng)已經(jīng)將域名信息下載到本機,直接在本機解析就可以了。當(dāng)攻擊者使用旁注檢測工具對網(wǎng)站進(jìn)行探測時,只能得到錯誤的IP。自然無法執(zhí)行之后的旁注攻擊動作。
當(dāng)然,該方法并非滴水不漏。比如使用某些程序可以在瀏覽器中顯示目標(biāo)網(wǎng)站的真實IP。因為首次順利訪問成功后,會將域名信息現(xiàn)在到本機中,使用“ipconfig/displaydns”命令,就可以查看本機存儲的域名信息。