未來安全趨勢:基於軟體定義網的移動防禦

wyzsk發表於2020-08-19
作者: 小飛 · 2015/02/25 9:52

0x00 前言


如今的企業內網,大多是都是建立在靜態體系上的,所以那些內網攻擊框架,工具,也是為靜態網路度身定做。如Nmap,蠕蟲病毒,DDOS,Cain等。那麼如果讓我們的防禦體系轉向,化靜為動,會為內網安全帶來什麼呢?

0x01 背景


軟體定義網路(SDN)是由美國史丹佛大學clean slate研究組提出的一種新型網路架構。簡而言之就是,利用SDN技術將控制邏輯(控制器)從網路交換裝置中“分離”了出來。當控制器是可程式設計的時候,我們就能透過控制器給網路裝置的FLOW TABLE(流表)進行修改,讓路由裝置靈活地達到我們的需求。

而本文說的是基於SDN的MTD技術,這個MTD是MOving Target Defence(移動防禦技術)的縮寫。翻譯過來就是基於軟體定義網路的移動防禦技術

移動目標防禦技術是近年來美國科學技術委員會提出的網路空間“改變遊戲規則”的革命性技術之一。今天我要介紹的就是將MTD透過SDN網路來實現。

現在大部分內網掃描工具,如Nmap,x-scan的掃描機制都大同小異,所以,我們今天就以著名的Nmap為例,講解對抗Nmap資訊收集的最新保護策略和技術展望。

0x02 SDN下的移動防禦技術


移動防禦技術(MTD)是相對於傳統的靜態網路提出的新型防禦策略,它的目的在於混淆網路環境,讓內網情況“亦真亦假” 最後達到阻止,拖延內網中惡意流成員攻擊的目的。

我們來看看一個攻擊者(小A)是如何一步步走向MTD佈下的迷魂陣吧。

下面分成了三個部分,分別用主機存活性的隨機(A),軟體版本資訊的隨機(B),IP地址的隨機(C)來保護這個SDN控制下的內網

Step A 網路踩點,掃描


在大多數內網滲透過程中,攻擊的第一步就是研究攻擊面,試圖找出弱點和漏洞,這種踩點就包括識別存在已知漏洞的服務,或是掃描整個網段來找出同一個內網中的存活主機(用來傳播蠕蟲),用基於SDN的移動防禦技術可以阻止這種踩點掃描讓攻擊成果顯著減少。

大多是網路掃描工具都是透過ICMP,TCP或UDP掃描來完成。ICMP包的作用用來確認目標是否可連線可到達。TCP,UDP埠掃描能用來識別目標上執行著哪些服務。

這些掃描行為的應答(TCP RST,silent drop 或ICMP 不可達)也可能透露哪些服務被傳輸裝置允許(過濾),另外IP包裡面的TTL區段也被駭客用來識別靶機和目的地之間的節點距離。

於是,小A做好內網代理之後 執行了nmap -sP 192.168.1.0/24

基於SDN的路由裝置能用來對抗這種網路掃描。 本文中,針對目標的非法通訊是能夠根據過濾規則被SDN裝置發現並丟棄的,然後SDN設施還能生成不同的響應來迷惑攻擊者,只有當通訊是符合預編譯好的過濾策略的時候,才能暢通無阻地經過路由器,要不然,充斥的將是來自SDN的欺騙。

接下來的虛擬碼向我們解釋了SDN網路交換裝置是怎樣攔截,轉發TCP包

#!bash
Require: Probabilities PrSA < PrA < PrPA < PrR < 1 hash table action buffer ← NULL
while (new TCP packet p is received) do
  if (p is illegitimate traffic) then
    if (p.dest port not in action buffer) then
      r ← random real number ∈ [0, 1]
      store r in action buffer
    else
      r ← as in action buffer 
    end if
    switch (r)
      case r < PrSA:
        respond with TCP SYN-ACK
      case r < PrA:
        respond with TCP ACK
      case r < PrPA:
        respond with TCP PUSH-ACK with random payload
      case r < PrR:
        respond with TCP RST packet
      default:
        drop silently
      end switch 
     end if
end while

從程式碼裡面能看出,針對每一個非法的TCP連線請求,響應資訊是由SDN路由器直接響應的,而並沒有到達目標。 這樣一來,返回的埠開閉狀況,主機存活狀況其實完全是隨機的,無疑起到迷惑攻擊者的作用(試想小A向一個根本沒有開啟1433的主機進行MSSQL弱口令碰撞的場景)

Step B 服務版本和系統指紋掃描


為了能夠在內網裡面能夠利用一個已公佈的軟體漏洞,小A最開始要做的事情無疑是識別目標機上有哪些缺陷服務以及他們的版本(當然如果小A掌握了通殺的0day那就另當別論)。舉個例子,小A如果想攻擊一個執行這Apache Tomcat 2.x的伺服器,他就會發起一個HTTP GET請求到這個伺服器的web埠,然後根據伺服器的響應,他就能判斷伺服器是不是跑著有漏洞的apache元件啦。 於是,他執行了nmap -A 192.168.1.x

那麼在這種情況下,一旦伺服器的元件版本不可判斷,攻擊面就會變寬,隨之而來的結果就是增加攻擊成本和攻擊事件,讓攻擊更容易被(IPS)發現。

不同的服務會有不同的技術來傳送自己的版本資訊,比如HTTP伺服器就會在HTTP header的HTTP 200 OK響應中加入自己的httpd守護程式版本。運用基於SDN的MTD技術,我們能讓SDN裝置防止真實版本資訊的洩露,並且替換其成一個虛假的version資訊傳送給攻擊者

下面是一段對抗OS fingerprinting(Nmap)掃描的MTD虛擬碼

#!bash
while (new TCP packet p destined to target is received)do                          
  if (p is illegitimate traffic) then
    if (p has TCP SYN set) then
      s ← random 32-bit number
      respond with TCP SYN-ACK and s as the seq#
    else
      generate random payload and respond
    end if 
   end if
end while

除此之外,還需要提及的是,TCP,UDP 和ICMP的包也總會洩露對攻擊產生幫助作用的資訊。雖然現代作業系統已經有產生隨機響應的機制,但TCP 序列號以及針對某些包的TCP ICMP UDP響應還是能被識別出目標執行的是什麼作業系統。比如說一個linux的系統的隨機TCP序列碼的生成方式是和其他是系統不一樣的。上面這段虛擬碼就描述了SDN的控制器是如何給非法的通訊生成隨機TCP響應和載荷。

Step C 隨機主機變換(RHM) #核心


其實從上文並不難發現,隨機化是移動防禦技術一個主要策略和手段,這是由於如果目標的ip在一直變化。或者說目標和攻擊者之間的網路策略一直在發生改變,那麼攻擊難度實際上是顯著上升的。所以,我們完全可以把這種隨機化上升到ip地址這個層面來看,在這個層面上進行了MTD保護的網路,是可以很好抵禦蠕蟲攻擊和DDOS攻擊的。

本文的重點也是在於基於openflow的隨機主機變換(OpenFlow Random Host Mutation)下面就簡稱OF-RHM。

OF-RHM機制說明白一點就是讓後端主機的ip看起來是隨機變化的,這個隨機包括了地址隨機和變換間隔隨機兩個方面。在這樣的網路中,那些假定了內王的IP在一段有效時間(比如一個月)內是靜態的攻擊程式(絕大多數蠕蟲病毒,DDOS攻擊)都會失去作用。

我們來看看SDN實現ip隨機的業務邏輯是怎樣的

enter image description here

OF-RHM需要兩個客觀條件:

一,IP變換對於後端主機應該是透明的,也就是說,OF-RHM應該讓後端的真實ip(rIP)保持不變,但是主機之間的聯絡使用的應該是存活期很短的虛擬ip(vIP),vIP在一段間隔時間內就應該變化一次。 由於由vIP->rIP的轉換是在SDN控制器所操縱的流表內進行的,而流表是完全有能力建立這種對應關係,所以完全不用擔心內網主機之間不能通訊這個問題。

二,這種IP變換應具有高不可預測性以及頻率,讓攻擊者在摸清網路環境之前就發生一次變換,使攻擊者始終處於迷惑狀態。

說了 這麼多其實並不夠具體,我們用圖解法來看看內網中主機通訊到底是如何進行的。

根據研究,有兩種主機通訊辦法

一:透過name進行通訊

圖解很清楚,這裡我簡單解釋下。這裡的DNS伺服器是有NOX控制器實時更新的,保證v--r的轉換

enter image description here

二,透過rIP進行通訊

透過rIP通訊需要某些主機(認證主機)具有指定的幾臺的rIP(真實ip)所以,這種主機之間的通訊一定程度上其實是偽隨機的,不過,大可不必擔心的,NOX 控制器裡的認證過程完全能夠規避風險,比如mysql伺服器和web之間的認證關係是儲存在NOX 控制器裡的,所以這裡WEB伺服器就是認證主機了,然而,它就不能透過rIP訪問到具有員工資訊的oracle伺服器

enter image description here

相信你們能從上面的虛擬碼中看到,其實這些策略中相當重要的一環就是判斷策略,來判斷哪些是非法訪問,哪些是能被伺服器放行無阻的。其實判斷策略可以有很多種。 比如,可以基於ACL(預設訪問名單)STEP C 隨機主機變換中的透過rIP通訊就是這種;也可以是啟發式的,透過行為判斷(類似IPS)觸發隨機機制。

0x03 結語


總而言之,用SDN構建出的網路是靈活的,目前華為等大廠商也逐漸在高階路線上考慮SDN路由器(儘管SDN路由器動輒上千,但是對於大型企業來說,安全和功能強大顯然更加重要)

傳統的靜態網路已經走過從ARPNET到INTERNET走過了屬於它的幾十年,在絕大多數攻擊模式都是針對靜態內網的今天,擁有創新思維,化靜為動地去思考如何保護內網顯得尤為重要和關鍵。雖然SDN和MTD又都是走在前面的美國人所提出的,但從跟上腳步,也不失一種智慧,中國人的智慧。(我們不都是這麼幹的嗎)

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章