天天看點

一文讀懂網絡攻擊

作者:三正科技

網絡攻擊是指針對計算機資訊系統、基礎設施、計算機網絡或個人計算機裝置的,任何類型的進攻動作。對于計算機和計算機網絡來說,破壞、揭露、修改、使軟體或服務失去功能、在沒有得到授權的情況下偷取或通路任何網絡裝置的資訊,都會被視為網絡攻擊。攻擊與防禦是伴生的,而因為防禦的被動性,在實際網絡世界中攻擊總能技高一籌,就像沒有絕對安全的鎖一樣,沒有絕對安全的計算機網絡。本文力求讓非專業人士可以看懂并了解網絡攻擊的方式、方法,有效提升自己的安全意識,未雨綢缪防範攻擊。而網絡攻擊的技術、方法、程式、技巧等都可以認為是武器、是工具,黑帽子用來犯罪,紅帽子則使其成為發現弱點、協助防禦、犯罪驗證等的利器。

網絡攻防的技術發展

1.1 不設防的網絡就像木桶裝水,并且存在短闆,有時候不用人攻擊,自己的水(資訊)都能主動流出來;有時候稍稍用點技術手段,就可能通過虹吸擷取桶中的水(資訊)。

一文讀懂網絡攻擊
一文讀懂網絡攻擊
一文讀懂網絡攻擊

1.2 防禦者是不會放棄的,最直接的方式就是我把木闆壁加高,加到超過水能産生一個大氣壓的高度(10米),看你還怎麼虹吸?攻擊者還是有辦法的,隻要通道已經建立,就可以先放入被控裝置一個專用程式,像在這個高高的木桶中放入了一個電機,就可以産生更大的壓強把水(資訊)輸送出去了。

一文讀懂網絡攻擊

1.3 有人會說:這種比喻是不恰當的,你架了一根管子(通道)人家看不到麼?這就跟網絡的概念相關了,上網的資訊是需要合法者正常使用的,事實上有很多這樣的合法的管子,我們隻是在其中混入了一根而已。這時,新的防禦方案就出現了,這就是白名單與黑名單。合法的列入白名單允許通路或互動,或者确定不合法(有前科)的列入黑名單禁止通路與互動。攻擊者仍然有辦法,我不能直接拿下核心伺服器,我可以先從你的合法使用者入手,畢竟總有人的防禦意識是比較弱的,先拿下一個合法使用者,通過它去擷取資訊,若權限不夠就繼續進行内網滲透和提權。

一文讀懂網絡攻擊

1.4 第一個弱雞當然就是我們的殭屍電腦了,它給我們打開了很多友善之門。一旦有了内網的若幹權限,就可以展開網絡上的代理人戰争了。有時候,對方的網絡資料進行加密傳輸和存儲,攻擊者還可以采取中間人攻擊的方案去破獲傳輸中的加密資訊。

一文讀懂網絡攻擊

1.5 攻擊與防禦都在不停的發展,技術更新速度非常之快。若目标網絡的防禦措施非常嚴密,可能就需要祭出社會工程學這個殺手锏武器了。不管技防多麼嚴密,使用者仍然是人,是人就會犯錯,是人的操作就有規律可循。在攻擊之前,詳細了解目标網絡的拓撲結構和人員資訊,會使攻擊工作事半功倍。

三正攻擊團隊的技術優勢

三正科技有限公司網絡攻擊團隊成員均擁有多年的實戰經驗,時刻跟蹤相關技術發展前沿,不斷創新攻擊技術方法。

2.1 一機一馬的木馬編寫技術,大大降低了木馬被群殺的風險。針對特定的殺軟更新,及時對木馬程式進行監測,若發現有異常,可以用自動生成程式制作新的服務端程式,在目标機器未對殺軟更新之前更換木馬服務端程式,有效避免目标丢失。

一文讀懂網絡攻擊

2.2 木馬子產品化編寫與即時上傳、執行、銷毀技術有效保證了代碼安全性。木馬在潛伏存活狀态下,僅有加解密子產品和通信子產品駐留在目标機器上,當需要進行檔案管理、鍵盤記錄、螢幕監控等操作時,才上傳相關子產品并執行,任務完成後即在目标機器上銷毀相關子產品,不留痕迹。

一文讀懂網絡攻擊
一文讀懂網絡攻擊

2.3 擁有針對專用軟體的0day漏洞挖掘能力和針對系統及常用軟體的1day漏洞快速響應能力。

2.4 擁有強大的網情分析團隊和拓撲分析團隊,針對特定目标網絡可以快速完成社會工程學方面的資訊搜集、甄别,發現其網絡拓撲結構中的薄弱環節,制定最有效的攻擊路徑和方案。

漫談攻擊代碼實作與免殺(撸代碼)

程式是由程式員編寫的,C語言是攻擊者最常用的程式設計語言。下面我們就用C語言來描述一些功能實作與免殺技巧。

3.1 遠端程序注入

為了保護木馬主駐留程式,一般情況下,涉及比較敏感的操作會讓系統程序來完成,這樣防毒軟體也隻是發現系統程序在幹敏感的事情(咱不能暴露自己呀)。

遠端注入的一般流程是用OpenProcess打開遠端程序,用VirtualAllocEx在遠端程序中開辟一小段空間,用WriteProcessMemory把要執行的線程Dll全路徑寫入開辟的位址空間,最後用CreateRemoteThread建立并執行遠端線程。這樣就完成了一個經典的遠端注入過程。

一文讀懂網絡攻擊

我們從代碼中可以發現,這還是存在一個動态庫檔案的,如果它執行了敏感操作,防禦軟體可以追殺到這個動态庫檔案,怎麼辦呢?shellcode!事實上,CreateRemoteThread函數就是去執行了第四個參數(或者說是指針)的首位址,若把功能子產品寫成shellcode(盡量小一些),在調用WriteProcessMemory的時候不是寫入dll的路徑,而是直接寫入shellcode代碼,最後在調用CreateRemoteThread的時候第四個參數直接用這個位址,第五個參數設為NULL,就可以成功執行這一段shellcode功能子產品了。

3.2 shellcode與資料執行保護

提到了shellcode,就不得不說一說資料執行保護的問題。一般情況下,程式中的shellcode都是以資料的形式存在的,若系統的安全級别設定為進階,它極有可能執行不了,攻擊者必須繞過資料執行保護。

一文讀懂網絡攻擊
一文讀懂網絡攻擊

當然,我們也可以在彙編代碼中預留大段的0x90(nop)用于後續插入shellcode代碼并執行。

防禦者的行為清除對正常木馬、漏洞利用等程式産生了很大的威脅,很多殺軟對諸如系統資料庫通路、服務增加或修改、驅動增加或修改、鍵盤消息HOOK、螢幕截取等行為中的多個同時存在的程式直接判定為高風險。這時候攻擊者就要分析殺軟是如何來判定這些行為存在的,不同的殺軟方式不同。有的是采用沙盒進行試運作,有的是把程式上傳進行雲分析,有的是對程式中解析出來的所有API函數調用進行比對。針對不同的沙盒,攻擊者可以采用擷取系統資訊的方式進行沙盒判定,發現運作環境為沙盒時跳轉執行其它正常操作即可規避;針對上傳雲分析,一般來說增加程式體積就比較有效;針對API解析,一般可以用簡單HASH定位的方式直接去調用相關API,而不是用系統提供的調用方式即可規避。

繼續閱讀