【賽迪網-IT技術報道】目前造成網絡不安全的主要因素是系統、協議及資料庫等的設計上存在缺陷。由於當今的計算機網絡操作系統在本身結構設計和代碼設計時偏重考慮系統使用時的方便性,導致了系統在遠程訪問、權限控制和口令管理等許多方面存在安全漏洞。
網絡互連一般採用TCP/IP協議,它是一個工業標準的協議簇,但該協議簇在制訂之初,對安全問題考慮不多,協議中有很多的安全漏洞。同樣,資料庫管理系統(DBMS)也存在資料的安全性、權限管理及遠程訪問等方面問題,在DBMS或應用程序中可以預先安置從事情報收集、受控激發、定時發作等破壞程序。
由此可見,針對系統、網絡協議及資料庫等,無論是其自身的設計缺陷,還是由於人為的因素產生的各種安全漏洞,都可能被一些另有圖謀的黑客所利用並發起攻擊。因此若要保證網絡安全、可靠,則必須熟知黑客網絡攻擊的一般過程。只有這樣方可在?/客攻擊前做好必要的防備,從而確保網絡運行的安全和可靠。
一、黑客攻擊網絡的一般過程
1、信息的收集
信息的收集並不對目標產生危害,只是為進一步的入侵提供有用信息。黑客可能會利用下列的公開協議或工具,收集駐留在網絡系統中的各個主機系統的相關信息:
(1)TraceRoute程序 能夠用該程序獲得到達目標主機所要經過的網絡數和路由器數。
(2)SNMP協議 用來查閱網絡系統路由器的路由表,從而瞭解目標主機所在網絡的拓撲結構及其內部細節。
(3)DNS伺服器 該伺服器提供了系統中可以訪問的主機IP地址表和它們所對應的主機名。
(4)Whois協議 該協議的服務信息能提供所有有關的DNS域和相關的管理參數。
(5)Ping實用程序 可以用來確定一個指定的主機的位置或網線是否連通。
2、系統安全弱點的探測
在收集到一些準備要攻擊目標的信息後,黑客們會探測目標網絡上的每台主機,來尋求系統內部的安全漏洞,主要探測的方式如下:
(1)自編程序 對某些系統,互聯網上已發佈了其安全漏洞所在,但用戶由於不懂或一時疏忽未打上網上發佈的該系統的"補丁"程序,那麼?/客就可以自己編寫一段程序進入到該系統進行破壞。
(2)慢速掃瞄 由於一般掃瞄偵測器的實現是通過監視某個時間段裡一台特定主機發起的連接的數目來決定是否在被掃瞄,這樣黑客可以通過使用掃瞄速度慢一些的掃瞄軟體進行掃瞄。
(3)體系結構探測 黑客利用一些特殊的資料包傳送給目標主機,使其作出相對應的響應。由於每種操作系統的響應時間和方式都是不一樣的,?/客利用這種特徵把得到的結果與準備好的資料庫中的資料相對照,從中便可輕而易舉地判斷出目標主機操作系統所用的版本及其他相關信息。
(4)利用公開的工具軟體 像審計網絡用的安全分析工具SATAN、Internet的電子安全掃瞄程序IIS等一些工具對整個網絡或子網進行掃瞄,尋找安全方面的漏洞。
3、建立模擬環境,進行模擬攻擊
根據前面兩小點所得的信息,建立一個類似攻擊對象的模擬環境,然後對此模擬目標進行一系列的攻擊。在此期間,通過檢查被攻擊方的日誌,觀察檢測工具對攻擊的反應,可以進一步瞭解在攻擊過程中留下的"痕跡"及被攻擊方的狀態,以此來制定一個較為周密的攻擊策略。
4、具體實施網絡攻擊
入侵者根據前幾步所獲得的信息,同時結合自身的水平及經驗總結出相應的攻擊方法,在進行模擬攻擊的實踐後,將等待時機,以備實施真正的網絡攻擊。
二、協議欺騙攻擊及其防範措施
1、源IP地址欺騙攻擊
許多應用程序認為若資料包可以使其自身沿著路由到達目的地,並且應答包也可回到源地,那麼源IP地址一定是有效的,而這正是使源IP地址欺騙攻擊成為可能的一個重要前提。
假設同一網段內有兩台主機A和B,另一網段內有主機X。B 授予A某些特權。X 為獲得與A相同的特權,所做欺騙攻擊如下:首先,X冒充A,向主機 B發送一個帶有隨機序列號的SYN包。主機B響應,回送一個應答包給A,該應答號等於原序列號加1。然而,此時主機A已被主機X利用拒絕服務攻擊 "淹沒"了,導致主機A服務失效。
結果,主機A將B發來的包丟棄。為了完成三次握手,X還需要向B回送一個應答包,其應答號等於B向A發送資料包的序列號加1。此時主機X 並不能檢測到主機B的資料包(因為不在同一網段),只有利用TCP順序號估算法來預測應答包的順序號並將其發送給目標機B。如果猜測正確,B則認為收到的ACK是來自內部主機A。此時,X即獲得了主機A在主機B上所享有的特權,並開始對這些服務實施攻擊。
要防止源IP地址欺騙行為,可以採取以下措施來盡可能地保護系統免受這類攻擊:
(1)拋棄基於地址的信任策略 阻止這類攻擊的一種十分容易的辦法就是放棄以地址為基礎的驗證。不允許r類遠程調用命令的使用;刪除.rhosts 文件;清空/etc/hosts.equiv 文件。這將迫使所有用戶使用其它遠程通信手段,如telnet、ssh、skey等等。
(2)使用加密方法 在包發送到 網絡上之前,我們可以對它進行加密。雖然加密過程要求適當改變目前的網絡環境,但它將保證資料的完整性、真實性和保密性。
(3)進行包過濾 可以配置路由器使其能夠拒絕網絡外部與本網內具有相同IP地址的連接請求。而且,當包的IP地址不在本網內時,路由器不應該把本網主機的包發送出去。有一點要注意,路由器雖然可以封鎖試圖到達內部網絡的特定類型的包。但它們也是通過分析測試源地址來實現操作的。因此,它們僅能對聲稱是來自於內部網絡的外來包進行過濾,若你的網絡存在外部可信任主機,那麼路由器將無法防止別人冒充這些主機進行IP欺騙。
2、源路由欺騙攻擊
在通常情況下,信息包從起點到終點所走的路是由位於此兩點間的路由器決定的,資料包本身只知道去往何處,而不知道該如何去。源路由可使信息包的發送者將此資料包要經過的路徑寫在資料包裡,使資料包循著一個對方不可預料的路徑到達目的主機。下面仍以上述源IP欺騙中的例子給出這種攻擊的形式:
主機A享有主機B的某些特權,主機X想冒充主機A從主機B(假設IP為aaa.bbb.ccc.ddd)獲得某些服務。首先,攻擊者修改距離X最近的路由器,使得到達此路由器且包含目的地址aaa.bbb.ccc.ddd的資料包以主機X所在的網絡為目的地;然後,攻擊者X利用IP欺騙向主機B發送源路由(指定最近的路由器)資料包。當B回送資料包時,就傳送到被更改過的路由器。這就使一個入侵者可以假冒一個主機的名義通過一個特殊的路徑來獲得某些被保護資料。
為了防範源路由欺騙攻擊,一般採用下面兩種措施:
對付這種攻擊最好的辦法是配置好路由器,使它拋棄那些由外部網進來的卻聲稱是內部主機的報文。 在路由器上關閉源路由。用命令no ip source-route。
三、拒絕服務攻擊及預防措施
在拒絕服務攻擊中,攻擊者加載過多的服務將對方資源全部使用,使得沒有多餘資源供其他用戶無法使用。SYN Flood攻擊是典型的拒絕服務攻擊。
SYN Flood常常是源IP地址欺騙攻擊的前奏,又稱半開式連接攻擊,每當我們進行一次標準的TCP連接就會有一個三次握手的過程,而SYN Flood在它的實現過程中只有三次握手的前兩個步驟,當服務方收到請求方的SYN並回送SYN-ACK確認報文後,請求方由於採用源地址欺騙等手段,致使服務方得不到ACK回應,這樣,服務方會在一定時間內處於等待接收請求方ACK報文的狀態,一台伺服器可用的TCP連接是有限的,如果惡意攻擊方快速連續的發送此類連接請求,則伺服器的系統可用資源、網絡可用帶寬急劇下降,將無法向其它用戶提供正常的網絡服務。
為了防止拒絕服務攻擊,我們可以採取以下的預防措施:
(1) 建議在該網段的路由器上做些配置的調整,這些調整包括限制Syn半開資料包的流量和個數。
(2)要防止SYN資料段攻擊,我們應對系統設定相應的內核參數,使得系統強制對超時的Syn請求連接資料包復位,同時通過縮短超時常數和加長等候隊列使得系統能迅速處理無效的Syn請求資料包。
(3)建議在路由器的前端做必要的TCP攔截,使得只有完成TCP三次握手過程的資料包才可進入該網段,這樣可以有效地保護本網段內的伺服器不受此類攻擊。
(4)對於信息淹沒攻擊,我們應關掉可能產生無限序列的服務來防止這種攻擊。比如我們可以在伺服器端拒絕所有的ICMP包,或者在該網段路由器上對ICMP包進行帶寬方面的限制,控制其在一定的範圍內。
總之,要徹底杜絕拒絕服務攻擊,最好的辦法是惟有追根溯源去找到正在進行攻擊的機器和攻擊者。 要追蹤攻擊者可不是一件容易的事情,一旦其停止了攻擊行為,很難將其發現。惟一可行的方法是在其進行攻擊的時候,根據路由器的信息和攻擊資料包的特徵,採用逐級回溯的方法來查找其攻擊源頭。這時需要各級部門的協同配合方可有效果。
四、其他網絡攻擊行為的防範措施
協議攻擊和拒絕服務攻擊是黑客慣於使用的攻擊方法,但隨著網絡技術的飛速發展,攻擊行為千變萬化,新技術層出不窮。下面將闡述一下網絡嗅探及緩衝區溢出的攻擊原理及防範措施。
1、針對網絡嗅探的防範措施
網絡嗅探就是使網絡接口接收不屬於本主機的資料。計算機網絡通常建立在共享信道上,以太網就是這樣一個共享信道的網絡,其資料報頭包含目的主機的硬體地址,只有硬體地址匹配的機器才會接收該資料包。一個能接收所有資料包的機器被稱為雜錯節點。通常賬戶和口令等信息都以明文的形式在以太網上傳輸,一旦被黑客在雜錯節點上嗅探到,用戶就可能會遭到損害。
對於網絡嗅探攻擊,我們可以採取以下措施進行防範:
(1)網絡分段 一個網絡段包括一組共享低層設備和線路的機器,如交換機,動態集線器和網橋等設備,可以對資料流進行限制,從而達到防止嗅探的目的。
(2)加密 一方面可以對資料流中的部分重要信息進行加密,另一方面也可只對應用層加密,然而後者將使大部分與網絡和操作系統有關的敏感信息失去保護。選擇何種加密方式這就取決於信息的安全級別及網絡的安全程度。
(3)一次性口令技術 口令並不在網絡上傳輸而是在兩端進行字符串匹配,客戶端利用從伺服器上得到的Challenge和自身的口令計算出一個新字符串並將之返回給伺服器。在伺服器上利用比較算法進行匹配,如果匹配,連接就允許建立,所有的Challenge和字符串都只使用一次。
(4)禁用雜錯節點 安裝不支持雜錯的網卡,通常可以防止IBM兼容機進行嗅探。
2、緩衝區溢出攻擊及其防範措施
緩衝區溢出攻擊是屬於系統攻擊的手段,通過往程序的緩衝區寫超出其長度的內容,造成緩衝區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。當然,隨便往緩衝區中填東西並不能達到攻擊的目的。最常見的手段是通過製造緩衝區溢出使程序運行一個用戶shell,再通過shell執行其它命令。如果該程序具有root權限的話,攻擊者就可以對系統進行任意操作了。
緩衝區溢出對網絡系統帶來了巨大的危害,要有效地防止這種攻擊,應該做到以下幾點:
(1)程序指針完整性檢查 在程序指針被引用之前檢測它是否改變。即便一個攻擊者成功地改變了程序的指針,由於系統事先檢測到了指針的改變,因此這個指針將不會被使用。
(2)堆棧的保護 這是一種提供程序指針完整性檢查的編譯器技術,通過檢查函數活動記錄中的返回地址來實現。在堆棧中函數返回地址後面加了一些附加的字節,而在函數返回時,首先檢查這個附加的字節是否被改動過。如果發生過緩衝區溢出的攻擊,那麼這種攻擊很容易在函數返回前被檢測到。但是,如果攻擊者預見到這些附加字節的存在,並且能在溢出過程中同樣地製造他們,那麼他就能成功地跳過堆棧保護的檢測。
(3)數組邊界檢查 所有的對數組的讀寫操作都應當被檢查以確保對數組的操作在正確的範圍內進行。最直接的方法是檢查所有的數組操作,通常可以採用一些優化技術來減少檢查次數。目前主要有這幾種檢查方法:Compaq C編譯器、Jones & Kelly C數組邊界檢查、Purify儲存器存取檢查等。
未來的競爭是信息競爭,而網絡信息是競爭的重要組成部分。其實質是人與人的對抗,它具體體現在安全策略與攻擊策略的交鋒上。為了不斷增強信息系統的安全防禦能力,必須充分理解系統內核及網絡協議的實現,真正做到洞察對方網絡系統的"細枝末節",同時應該熟知針對各種攻擊手段的預防措施,只有這樣才能盡最大可能保證網絡的安全。
(