P2P 殭屍網路入門

2021-08-27 16:52:37 字數 3003 閱讀 5476

當人們正大肆宣傳zeroaccess被攻克的訊息,malwaretech 博主認為是時候介紹一下p2p殭屍網路(botnets)了。包括殭屍網路的工作原理和應對方法。

傳統殭屍網路圖例

無論使用http、irc或是其他協議,傳統殭屍網路的構成都是相同的。所有的殭屍主機(bot)都通過乙個或多個網域名稱連線到乙個或多個伺服器。儘管網路結構可能千差萬別,或一目了然,或錯綜複雜,通過各伺服器間良好的協作,都可以輕易摧毀殭屍網路。

恢復殭屍主機正常工作最常見的辦法,就是奪取它所使用的網域名稱或伺服器的控制權。然而有些時候由於某些原因我們無法向殭屍主機傳送指令,就需要另一種手段。當然嘗試關閉命令與控**務器(c&c server)一般情況下都是浪費時間的做法,因為主控者(botmaster)不需要花多少時間,就可以找到另乙個伺服器,並將網域名稱重定向到它上面。於是我們就只有在網域名稱上做文章來應對了。

高手操縱的殭屍網路通常會使用多個網域名稱,當其中乙個被關閉時,殭屍主機會連線到另乙個。想要徹底破壞這樣的殭屍網路,有兩個辦法:1、暫時關閉所有和這個殭屍網路相關的網域名稱(需要在短時間內完成,以防主控者操作殭屍主機定向到新的網域名稱);2、把殭屍網路使用的網域名稱定向到乙個有特殊功能的伺服器(如sinkhole路由器),使殭屍主機遠離正常的控**務器,從而切斷主控者對它們的控制。

不同於傳統殭屍網路在網域名稱或伺服器被奪取控制權時表現出的脆弱,p2p殭屍網路會建立乙個相對分散的網路環境。思路就是所有的殭屍主機都互相連線並且進行通訊,從而不再需要乙個中心伺服器,但實際上並不單純是這樣。

如果所有的殭屍主機都能互相通訊,那麼主控者需要確保只有他能向這些主機傳送指令,通常的解決辦法是數字簽名。這個簽名是由不對稱加密演算法生成的,需要兩個金鑰(公鑰和私鑰)。如果其中乙個金鑰用於加密訊息,那麼必須使用另乙個來解密。於是主控者可以自己持有乙個金鑰(私鑰),將另乙個(公鑰)發放到殭屍主機上。他使用私鑰對指令進行加密,然後殭屍主機使用公鑰解密。沒有私鑰,任何人都無法正確加密指令。

圖1大部分人眼中p2p殭屍網路的構造和圖1類似,所有殭屍主機通過ip位址互相連線,互相傳送命令,完全不需要中心伺服器或者網域名稱。很遺憾,這種表述是錯誤的。

那些使用nat、防火牆,或者**訪問網路的計算機,無法接受連入的請求,它們只能向外傳送訊息,這會導致大多數殭屍主機無法被另乙個直接連線。在傳統殭屍網路中,這根本不是問題,因為殭屍主機都是連線到伺服器的。因此在p2p網路中,我們仍然需要伺服器,只不過形式不同罷了。

圖2把那些可以接受連入請求的殭屍主機(沒有使用**、nat或防火牆)作為伺服器(通常稱作節點),同時那些不能連入的主機(通常稱作worker,暫譯工作機)將向乙個或多個節點發起連線,從而獲取指令(圖2)。儘管這些節點僅僅從技術上可以作為伺服器,但是可以利用它們防止殭屍網路被摧毀。辦法就是:所有的工作機在節點間是分布式連線的,這使它們在某個節點失效時,能夠輕易轉移到另乙個節點上。有時關閉所有的節點是一件不切實際的事情,於是p2p殭屍網路得以持續工作。不幸的是,這些節點都是合法的普通計算機,它們可不能像伺服器一樣隨意被我們控制。

每個節點都維護著乙個ip列表,它包含所有和自身有相同工作機的節點。然後工作機再獲取這個列表,於是它們就能夠在其中某個節點失效時轉向另乙個。在這個階段,數個殭屍主機成為一組,並且連線到許多不同的節點,但整個殭屍網路還無法接受指令。為了使指令能夠抵達網路中各台主機,需要殭屍主機連線到多個節點並把接受到的指令傳送到其他節點,或者節點之間相互連線同時相互傳遞指令,亦或者把兩者結合起來。

要將一台主機擁入殭屍網路的懷抱,它至少需要獲取乙個節點的ip位址,這時引導增殖的過程便開始了。殭屍程式裡硬編碼了一系列可提供自身繁衍所需資訊的伺服器(暫譯引導伺服器),當程式第一次在被感染的計算機上執行時,它就會連線到這些伺服器。引導伺服器的工作就是維護乙個海量的節點位址,將其中一部分發放到殭屍主機上(把主機引入殭屍網路)。通常來說,引導伺服器使用某種簽名,防止被安全人員劫持,也避免提供無效的節點位址。

顯然引導伺服器是中心要點,就像傳統殭屍網路一樣,他們可以被破壞,然而這也不算什麼大不了的事。如果所有的引導伺服器在一瞬間被全部拿下,這也不會影響到已經存在的殭屍主機,只是阻止了新殭屍的加入。主控者可以從容地暫停感染新機器,直到他設定好新的引導伺服器。因此這個辦法只能算是乙個臨時措施,去攻擊殭屍網路的引導增殖系統意義並不大。

攻擊引導伺服器只是臨時地阻止了網路的感染,而包含數字簽名的指令使得除了主控者以外的人無法操縱殭屍主機,同時節點數量又太多以至於很難同時被擊破,那麼我們還能做什麼呢?

幾乎所有的p2p殭屍網路都有乙個弱點,那就是所有的對等主機會使用相同的執行機制。像之前描述過的那樣,節點主機需要維護包含其他節點的列表,同時共享給工作機,使它們能夠分布式地連線到一系列節點上。如果主控者手動為每個節點提供其他節點的位址,將耗費難以估計的時間,甚至是不可能做到的,因此交給節點自動完成。當乙個殭屍節點被認定可以接受連入請求時,節點主機便連線到它,並給它共享乙個節點列表。

那麼如果你引入一台對殭屍網路來說居心叵測的計算機呢,它有條件作為節點主機,並且向其他節點共享乙個包含無效ip的列表。很可能效果不是很大,節點會校驗新獲取的ip以確保它們可用。但是既然想到了這點,離成功也就不遠了!

安全人員可以引入許多這樣的「惡意」計算機,並非提供無效的節點ip,而是提供它們各自的ip。資源充足的情況下,「惡意」計算機會成為殭屍網路中重要的一部分,並且把殭屍主機和節點主機分離。通過這樣的方式,可以使工作機只能獲取「惡意」的節點,從而顯著降低它們重新成為殭屍網路一員的可能性。在一定的時間內,「惡意」節點會阻止正常節點傳播命令,於是工作機也無法接收到指令,打了主控者乙個措手不及。這個辦法不太可能將所有的工作機分離出來,但已大大削弱了殭屍網路的影響程度。保持「惡意」節點持續執行能夠將更多的主機占為己有,也時刻監視著那些可能存有「正常」節點ip位址的殭屍主機。

P2P網路模型

1 靜態配置模型 靜態配置模型是一種相對靜態而簡單的對等點定位模型。在該模型中,每個對等點都確切地知道存在於其p2p 網路中其它對等點的位置以及它們所提供的共享資源內容。缺點 網路無法應付不能預知的隨機事件和臨時變更,比如對等點隨機進入和退出網路。優點 整個網路在外部攻擊面前表現得很穩固。2 動態配...

認識P2P,利用P2P

是peer to peer的縮寫 好象還看到過文章說是point to point,我也不清楚,網上的資料也不清楚,鬱悶 peer在英語裡有 地位 能力等 同等者 同事 和 夥伴 等意義。這樣一來,p2p也就可以理解為 夥伴對夥伴 的意思,或稱為對等聯網。目前人們認為其在加強網路上人的交流 檔案交換...

以太坊 P2P網路

1.chord 概念 chord是什麼 chord是乙個演算法,也是乙個協議。作為乙個演算法,chord可以從數學的角度嚴格證明其正確性和收斂性 作為乙個協議,chord詳細定義了每個環節的訊息型別。chord還可以被作為乙個一致性雜湊 分布式雜湊 dht 的實現。覆蓋網路 overlaynetwo...