利用遠程注冊表加強系統安全
2019-11-02 14:06:56
供稿:網友
遠程訪問機器的注冊表通常是令人皺眉的事情;畢竟,您想讓其他人在您不知道的情況下查看您的注冊表嗎?但是,如果正確處理的話,這個過程可以成為抽取機器信息和識別您網絡中潛在 漏洞的強大工具。在這里,Brian 運用他在 WebSphere Business Integrator Team 中的工作經驗,描述了遠程注冊表訪問如何允許您從多臺機器中抽取信息 ― 并且識別那些易受攻擊的系統。本文還包括了代碼樣本。
在一個軟件開發測試環境中,跟蹤機器被證明是非常困難的,尤其是當機器的數量達到兩位數的時候。在哪臺機器上使用了什么軟件?使用的 NT 是什么版本?服務包(service pack)的級別是什么?安裝了什么修訂程序?您可以走到每臺機器前手工檢查核對所有這些問題,但是當機器分散在一個廣闊的區域內,這樣做會是一個非常費時的過程。
在這樣的情形下,如果有一種方法,能夠不必實際使用某臺機器并且不安裝額外軟件,就可以獲取那臺機器的信息,那將是很有用的。然后,收集到的信息可以用來分配資源和識別那些可能易受惡意的用戶和程序攻擊的機器。本文描述了利用遠程注冊表訪問的某些方面。
警告:通過使用本文中描述的遠程注冊表功能,您能節省系統管理的大量時間。但是仍要小心,因為編輯另一個系統的注冊表會與編輯您自己的注冊表一樣危險(如果不比編輯您自己的更危險的話)。
利用安裝功能
在這里的 WebSphere Business Integrator(WSBI)測試環境中,我們有大約 40 臺測試機器,它們的地理位置分散在整個英國 Hursley 實驗室中。在最初的測試階段期間,我們的注意力主要集中于 WSBI 的安裝和配置。在測試機器上不斷地安裝和重新安裝各種產品以及服務包和必備軟件 ― 通常必須重新安裝整個操作系統。很快,我們發現要監視每臺測試機器狀態幾乎是不可能的。我們需要一種方法,它可以在不必訪問每臺機器的情況下,快速知道該機器所處的狀態。
在 WSBI 安裝中,我們要在單一安裝封裝器中安裝并配置了大約 15 個 IBM 產品 ― 例如 DB2 V7.2、MQSeries V5.2、HTTP Server V1.3.12。正如對于所有好的安裝程序,在任何安裝開始之前,都要檢查目標機器以確保它滿足要安裝的軟件的前提條件 ― 例如服務包級別和相關產品。這個檢查通常在 InstallShield 腳本中由編寫注冊表腳本檢查相關值來完成的。
例如,一種最常見的檢查就是驗證 NT 服務包級別。鍵 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion 下的注冊表項,它們會出現在 Regedit.exe 中。
當在腳本中查詢一個注冊表項時,需要知道三樣東西:
要查詢的鍵名稱 ― 本例中,是 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion 鍵中值的名稱,這里是“CSDVersion”
正在查詢的值類型,這里是一個字符串值
使用 InstallShield 腳本函數 RegDBGetKeyValueEx 來執行注冊表查詢。但是假設您想要檢查安裝了什么級別的服務包。清單 1 顯示可以如何達到這一點。
清單1. 抽取服務包級別
STRING szKey, szName, svServicePackVersion;
NUMBER nvType, nvSize;
begin
svKey = ";SOFTWARE//Microsoft//Windows NT//CurrentVersion";;
svName = ";CSDVersion";;
nvType = REGDB_STRING;
RegDBGetKeyValueEx (szKey, szName, nvType, svServicePackVersion, nvSize);
end; 清單1 將返回值“Service Pack 6”并把它存儲在 svServicePackVersion 中。然后,您可以知道這臺機器上安裝了 Service Pack 6。通過執行類似這樣的各種查詢,可能確定一臺機器的配置以及在它上面安裝了什么軟件。
當我們意識到可以對遠程機器的注冊表執行這些查詢時,我們的實驗室工作取得了突破性的進展。