■ 河南 許紅軍
編者按:在很多網(wǎng)絡(luò)入侵案例中,黑客之所以可以輕松得手,很大程度上是“得益”于各種漏洞的存在。因此,及時發(fā)現(xiàn)并修補(bǔ)各種安全漏洞,對于網(wǎng)絡(luò)安全是極為重要的。這就需要對系統(tǒng)以及各種服務(wù)器軟件進(jìn)行有效的安全測試,來確定其是否存在潛在的漏洞。這里就從測試Web 服務(wù)器、FTP 服務(wù)器等角度,來分析進(jìn)行安全測試的具體方法。
實(shí)際上,當(dāng)我們使用各種網(wǎng)絡(luò)軟件訪問遠(yuǎn)程主機(jī)時,雙方會進(jìn)行大量的數(shù)據(jù)交換操作。遠(yuǎn)程主機(jī)上的各種服務(wù)器軟件正是利用這種數(shù)據(jù)交換來實(shí)現(xiàn)不同的服務(wù)功能。而使用Acunetix Web Vulnerability Scanner(AWVS)這款軟件,就可以對數(shù)據(jù)包進(jìn)行修改,之后將其發(fā)送給目標(biāo)Web 服務(wù)器,來實(shí)現(xiàn)測試目的。
在該軟件主界面左側(cè)的“Tools Explorer”列表中,依次選擇“Tools”→“HTTP Editor”項(xiàng),在右側(cè)窗口中的“URI”欄中輸入目標(biāo)Web 主機(jī)地址,點(diǎn)擊“HTTPS”按鈕,可以在HTTP 和HTTPS 之間進(jìn)行切換,來測試不同類型的Web 主機(jī)。在“Protocol”列表中可以根據(jù)目標(biāo)主機(jī)的不同,選擇HTTP 1.0 或者HTTP 1.1 規(guī)范。在執(zhí)行測試之前,必須準(zhǔn)備好自定義數(shù)據(jù)包。
使用IE 對目標(biāo)Web 主機(jī)進(jìn)行訪問,并使用WinSock Expert 攔截所需的數(shù)據(jù)包,之后根據(jù)需要對其進(jìn)行修改。例如,在訪問數(shù)據(jù)包中的第三行一般為“Accept-Language:”,其后面跟隨的為“zh-cn”,表示其語言類型為中文。這里對其進(jìn)行修改,將“zh-cn”刪除,取代的是一行很長的雜亂的字符串。當(dāng)然,您可以針對不同的關(guān)鍵字信息來進(jìn)行修改。之后從修改行開始,將它和之后的數(shù)據(jù)包內(nèi)容復(fù)制到剪切板上。在AWVS 的“HTTP Editor”界面中的“Request Headers”面板中的右鍵菜單上點(diǎn)擊“Paster From Clipboard”項(xiàng),將自定義數(shù)據(jù)包的內(nèi)容粘貼進(jìn)來。點(diǎn)擊工具欄上的“Start”按鈕,AWVS 就可以將該自定義數(shù)據(jù)包發(fā)送給目標(biāo)Web 主機(jī),在“Response Hdaders”面板中顯示目標(biāo)Web 主機(jī)回應(yīng)該本機(jī)的數(shù)據(jù)。
如果返回信息正常,說明目標(biāo)Web 主機(jī)可以很好處理這些數(shù)據(jù)包。如果返回信息異?;蛘吒緵]有返回信息,說明目標(biāo)Web 服務(wù)器存在安全漏洞,導(dǎo)致在處理這些數(shù)據(jù)包時崩潰。
當(dāng)然,在發(fā)送自定義數(shù)據(jù)包時,也可能引發(fā)目標(biāo)Web服務(wù)器的其它安全漏洞,例如信息泄露等。在“Response Hdaders” “Response Data”“View page”等面板中可以查看數(shù)據(jù)包頭信息、數(shù)據(jù)包中的數(shù)據(jù)信息和網(wǎng)頁數(shù)據(jù)信息。對這信息進(jìn)行分析,有助于發(fā)現(xiàn)目標(biāo)主機(jī)潛在的其它安全漏洞。當(dāng)然,還可以在目標(biāo)服務(wù)器上運(yùn)行OllyICE 這款調(diào)試工具,來實(shí)時監(jiān)控服務(wù)器是否崩潰以及是否存在安全漏洞。
使用WebFuzz 安全工具,同樣可以對目標(biāo)Web服務(wù)器進(jìn)行安全測試,來檢測其可能存在的安全漏洞,而且其功能更加強(qiáng)大。
WebFuzz需要安裝.Net FrameWork 組件。該工具的特點(diǎn)是可以利用自動化的Web 數(shù)據(jù)包,連續(xù)對遠(yuǎn)程Web 服務(wù)器進(jìn)行安全檢測。將Web Fuzz 解壓后,運(yùn)行其中的“binDebug”文件夾中的“WebFuzz.exe”程序,在其主界面頂部的“Host”欄中輸入目標(biāo)Web 服務(wù)器的IP或者網(wǎng)址,在“Port”欄中可以更改端口號,默認(rèn)為80。在“Timeout”欄中輸入超時時間,單位為ms,默認(rèn)為5 s。當(dāng)測試超過該值后,就執(zhí)行下一次測試。
您可以根據(jù)需要,自定義測試所需的Web 數(shù)據(jù)包。在“Request Headers”欄中任一行上點(diǎn)擊右鍵,在彈出菜單中點(diǎn)擊“Add Header”項(xiàng),在分支菜單中顯示所有的Header 關(guān)鍵字。所謂Header,指的是Web 數(shù)據(jù)包是按照HTTP 規(guī)則組織的,在HTTP 規(guī)則中定義了很多關(guān)鍵字,在Web 數(shù)據(jù)包的每一行開始都會出現(xiàn)這些關(guān)鍵字,例如“Accept” “Referer”“Host”等,這些關(guān)鍵字就是Header。
在對目標(biāo)主機(jī)進(jìn)行測試時,需要其發(fā)送包含不同Hdader 關(guān)鍵字的數(shù)據(jù)包,測試服務(wù)器處理這些數(shù)據(jù)的情況,在上述菜單中選擇選擇需要測試的Header 關(guān)鍵字。僅選擇了Header 關(guān)鍵字還不夠,必須在其后跟對不同的數(shù)值,才可以執(zhí)行有效測試,尤其是需要檢測目標(biāo)服務(wù)器在處理畸形Web數(shù)據(jù)包時會不會出現(xiàn)漏洞。
在上述菜單中點(diǎn)擊“Add Fuzz Type”項(xiàng),在彈出菜單中可以選擇所需的數(shù)據(jù)類型,之后WebFuzz 會根據(jù)您的選擇,在程序路徑下選擇與該項(xiàng)對應(yīng)的文本文件。例如,先選擇“SQL Injection”項(xiàng),WebFuzz 就會在解壓路徑下尋找名為“sqlinjection.txt”的文件,當(dāng)找到該文件后,Web Fuzz 就會將其內(nèi)容添加到當(dāng)前的Web 數(shù)據(jù)包中,如“Accept-Language:enus[Traversal]”等。每自動加入一行數(shù)據(jù),就發(fā)送一次數(shù)據(jù)包,這樣就可以實(shí)現(xiàn)連續(xù)不斷的測試操作。
打開程序目錄下的對應(yīng)文件,在其中添加所需的測試數(shù)據(jù)。例如,可以通過打開“dirtraversal.txt”文件,加入數(shù)量不等的字符等。準(zhǔn)備好Web 數(shù)據(jù)包后,點(diǎn)擊窗口右上角的“Request”按鈕,開始對目標(biāo)Web 服務(wù)器執(zhí)行測試動作。在測試期間,在窗口中部的“Responses”欄中顯示接收目標(biāo)Web 服務(wù)器返回的數(shù)據(jù)包信息,如果在測試沒有結(jié)束的情況下,在“Responses”欄已經(jīng)無法顯示無法接收到返回?cái)?shù)據(jù)包信息,就說明目標(biāo)服務(wù)器存在安全漏洞,無法完美的處理發(fā)送的測試Web 數(shù)據(jù)包。根據(jù)自定義Web 數(shù)據(jù)包的組成數(shù)據(jù)進(jìn)行分析,就可以找到目標(biāo)Web 服務(wù)器可能存在的安全漏洞。
在Internet 上,F(xiàn)TP 服務(wù)器的使用極為廣泛,利用FTP 服務(wù),可以很方便的傳輸文件。但如果您使用的FTP服務(wù)器存在安全漏洞,那么黑客就可以借助此漏洞侵入FTP 服務(wù)器甚至是內(nèi)網(wǎng)之中。使用FTPFuzz、beSTORM 等軟件,可以對目標(biāo)FTP 服務(wù)器進(jìn)行安全監(jiān)測。
這里以beSTORM 為例進(jìn)行說明,先在服務(wù)器端運(yùn)行beSTORM Monitor 程序,在其主界面左側(cè)的進(jìn)程列表中顯示服務(wù)器上的所有進(jìn)程,從中選擇FTP 服務(wù)進(jìn)程,在“Host”欄中輸服務(wù)器IP,點(diǎn)擊“ATTACH”按鈕,激活beSTORM Monitor 監(jiān)控功能。
在客戶機(jī)上安裝其客戶端軟件beSTORM Client,在服務(wù)器端安裝監(jiān)控程序beSTORM Monitor。在客戶端運(yùn)行beSTORM Client 程序,在向?qū)Ы缑嬷悬c(diǎn)擊“Create New Project”項(xiàng),新建一個測試項(xiàng)目,在下一步窗口中輸入項(xiàng)目名稱,存儲路徑,選擇測試模式,默認(rèn)為“Simple”簡單測試模式,也可以選擇“Advancesd”高級測試模式。點(diǎn)擊“Next”按鈕,在Basic Configuation 窗口選擇“Choose from beSTORM predefined modules”,選擇預(yù)設(shè)的測試網(wǎng)絡(luò)模塊類型,包括DHCP、DNS、DNS Server、FTP 及HTTP 等。例如,選擇“FTP”項(xiàng),表示對FTP 服務(wù)器進(jìn)行安全測試。
在Target Host Settings面板中輸入目標(biāo)FTP 地址、連接端口及協(xié)議類型(如TCP 等),點(diǎn)擊“Next”,在下一步窗口的參數(shù)列表中的“Username for FTP login”欄中輸入FTP 賬戶名,然后在“Password for FTP login”欄中輸入登錄密碼。在下一步窗口中設(shè)置每次測試的時間(默認(rèn)為3 s),并在“Hostname or IP address”欄中輸入目標(biāo)服務(wù)器的IP。點(diǎn)擊“Next”按鈕,在下一步窗口中選擇“Auto-start beSTORM scan now”項(xiàng),然后執(zhí)行自動測試操作。點(diǎn)擊“Finish”按鈕,開始對目標(biāo)FTP 主機(jī)執(zhí)行連續(xù)測試操作。
如果發(fā)現(xiàn)目標(biāo)FTP 服務(wù)器出現(xiàn)了安全漏洞,beSTORM Client 程序程序會彈出提示窗口,顯示詳細(xì)的漏洞信息。這對于查找目標(biāo)FTP 的安全漏洞很有參考價值。
上面談到的安全測試,針對的都是明文數(shù)據(jù)包格式而言的,不管是HTTP 或者是FTP 數(shù)據(jù)包來說,都沒有進(jìn)行加密處理。但是,對于采取加密格式的數(shù)據(jù)包來說,處理起來就比較復(fù)雜了。
例如,使用Sniffer 監(jiān)聽工具,對SSH 加密通道進(jìn)行數(shù)據(jù)攔截監(jiān)聽時,就會發(fā)現(xiàn)攔截到只是一堆雜亂的十六進(jìn)制代碼,根本無法了解其具體內(nèi)容。當(dāng)對這種類型的服務(wù)程序(例如SSH、VPN 服務(wù)程序等)進(jìn)行安全測試時,因?yàn)樘幚淼氖羌用軘?shù)據(jù)包,按照常規(guī)方式處理起來就比較棘手。
利用beSTORM 自建測試網(wǎng)絡(luò)數(shù)據(jù)模塊功能,就可以輕松解決以上問題。例如,在beSTORM 中新建一個測試項(xiàng)目,在Basic Configuration 窗口中選擇“Build a Network Module”項(xiàng),點(diǎn)擊“LEARN”按鈕,在Auto Learn 窗口左上角的的“Act As”欄中選擇“Manin -the Middle”項(xiàng),可以讓beSTORM 接收所有發(fā)給目標(biāo)主機(jī)的數(shù)據(jù)包,然后由其轉(zhuǎn)發(fā)給目標(biāo)主機(jī)。選擇“HTTP Proxy”項(xiàng),使用HTTP 代理功能,選擇“Network Sniffer”項(xiàng),直接攔截?cái)?shù)據(jù)包。
例如,選擇最后一種方式,在“Device”列表中選擇所需的網(wǎng)卡設(shè)備,在“To Address(IP)”欄中輸入目標(biāo)主機(jī)的IP,在“To Port”欄中設(shè)置對應(yīng)的端口。點(diǎn)擊“LISTEN”按鈕,可以攔截到所需的數(shù)據(jù)包。
之后在數(shù)據(jù)包編輯欄中對其內(nèi)容進(jìn)行適當(dāng)?shù)男薷?,便于對目?biāo)主機(jī)進(jìn)行安全測試。
其實(shí),點(diǎn)擊“GENERATE”按鈕,beSTORM 就可以自動對其進(jìn)行分析操作。然后在彈出窗口中選擇測試的數(shù)據(jù)包類型,點(diǎn)擊“USE”按鈕,完成數(shù)據(jù)包的攔截和生成操作。之后就可以利用這些數(shù)據(jù)包對目標(biāo)主機(jī)進(jìn)行安全測試了。
利用beSTORM 提供的自動攔截、分析和生成數(shù)據(jù)包功能,不管目標(biāo)服務(wù)器使用的是明文或者加密數(shù)據(jù)包,以及正?;蛘叻钦>W(wǎng)絡(luò)協(xié)議,都可以快速高效的對其執(zhí)行深入全面的安全測試。這對于及時發(fā)現(xiàn)潛在的安全漏洞,并及時對其進(jìn)行封堵是非常重要的。