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