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