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