傳統安全防護髮展

1、初期網絡安全防護公司的發展

如同之前所說,網絡安全防護的發展其實一直是落後於攻擊的,換句話說,官方所說的網絡安全市場是落後於黑產市場的,市場規模上,由網絡安全防護引領的市場也遠遠小於黑產地下產業鏈。當然,鑑於各大網絡安全公司之間明爭暗鬥,互相貶低,因此為了不打廣告或引起廠商大佬們的不滿,下面的描述中也不會提及具體公司的名稱。

上面說的市場規模,其實是動態變化的,我們只能說初期網絡安全防護類公司成立的時候,防護市場遠遠小於攻擊的地下市場。看到這裡,可能您會奇怪,為什麼我們這裡老是不停地提及市場規模或者市場模式。我個人認為,人性本質是趨利避害的,韓寒說,小孩子才分對錯,成年人只看利弊。很多事情的產生和發展不是憑空出現的,這個行業的發展動力正是來源於底下的龐大的經濟利益驅使。

作者個人觀念裡,網絡安全是攻防博弈而形成的一個行業,而攻防博弈的本質是人類的逐利的本性。網絡安全的發展總是伴隨著網絡技術的發展,隨之而來的是相應的攻擊技術和手法的發展,最後引起重視,防護技術隨之跟上。是一個螺旋的過程。

所以,在初期的時候,網絡安全防護公司的產品的技術是落後於攻擊的技術的。黑產早期分為針對用戶的攻擊和針對服務器的攻擊,網絡安全防護公司最初的產品也主要有2類,一類是以殺毒軟件為代表的終端防護,一類是以硬件防火牆為代表的網絡流量層防護。這種產品的出現主要目的是對抗主機上的傳統木馬和病毒。

嚴格意義上來說,木馬、病毒、蠕蟲是不一樣的,這種命名方式也很形象,他們的區別主要是目的不一樣,木馬是以竊取信息獲取數據為主,病毒是破壞當前環境為主,蠕蟲的目的主要是傳播和擴散。真實的攻擊中黑客們並不太關心名字應該叫什麼,他們一般關心自己的目的是什麼,再根據目的去製作自己想要的黑客武器。

這種防護產品產生的原因跟當時的環境也比較相關,當時還處於C/S架構盛行的時期,因此網絡安全防護面臨的最主要挑戰就是盜取賬號密碼的木馬、獲取電腦敏感文件的木馬、惡意破壞電腦文件的病毒等等。如果想簡單地形容病毒和木馬的區別,應該就是站在攻擊者的角度來說,病毒是損人不利己的,木馬是利己不損人的。由於早起都是病毒很少有木馬,因此我們基於習慣,把對付危害惡意程序的防護軟件統一稱為殺毒軟件。

那就先聊聊殺毒軟件吧,最早的時候,木馬不多,殺毒軟件殺毒是基於經驗的, 也就是根據木馬的位置、大小、MD5等特徵進行查殺,也就是說,需要發現了木馬,繼而將木馬的明顯特徵加入病毒庫,根據比對進行殺毒。隨著一些所謂的黑客雜誌、黑客論壇、黑客培訓的發展,會開發木馬或病毒的人也越來越多,國內影響力比較大的是一款開源代碼Ghost的開源,這款木馬穩定性強,代碼開源以後迅速成為了黑客們的最愛,基於這個架構無數的黑客小白晉級為懂開發的黑客,實際上只是在代碼里加了一些多餘無用的代碼段,目的是為了編譯以後的木馬跟最初的不一樣從而可以欺騙這種殺毒軟件罷了。這種修改後的木馬我們一般稱其為新的變種,隨著病毒的層出不窮,病毒變種不斷增多,特徵碼法遠跟不上病毒生成速度,各大安全廠商針對以發現的病毒,總結出一些惡意代碼,如在程序中發現這些代碼,就會向用戶報警,發現疑似病毒文件,詢問用戶處理方案。細心的讀者可以發現,以上兩種模式,無論是特徵碼殺毒還是啟發式殺毒,其實都是在獲取到木馬樣本並分析後,將特徵碼或者惡意代碼存入病毒庫以後才可以實現殺入效果的,所以他們的殺毒嚴格意義上來說都是滯後的。也就是說病毒已經出現了一段時間,然後被殺軟公司捕獲再放入病毒庫的,殺毒軟件殺的都是已知病毒,這樣在攻防雙方的博弈中,防守方始終都是處於被動挨打的,而攻擊方可以通過不斷調整自己的代碼的形式達到自己的目的,很多攻擊者為了保護自己的木馬不被殺毒軟件公司分析,多數的木馬此時都自帶自毀功能,在完成自己的邪惡目的以後消失無蹤。

那麼怎麼才能在攻防博弈中佔據主動呢?無論是什麼體育項目或是辯論之類的,如果想要在博弈中佔據主動,最好的選擇就是不要跟著對方的節奏走,儘量將對方帶到自己的節奏中來。防守方需要防禦的是操作系統和系統中的文件不被攻擊方竊取或者破壞,那麼對操作系統的敏感區域入系統文件夾、註冊表啟動項等部位進行重點監控就是最好的辦法,一旦發現有程序對敏感部位進行可疑修改,便提醒用戶,詢問用戶是否允許進行修改。這樣可以有效地阻斷很多病毒和木馬的攻擊。或者也採取沙箱的形式,對所有輸入的應用程序先模擬運行,觀察程序的行為來對程序是否有害進行判斷。實際上,目前市場上主流的殺軟基本都是這些模式的結合,市場上由於某數字公司殺毒軟件的免費,直接導致了傳統的僅僅會修改木馬特徵值的小白黑客沒有了生存的空間,他們的木馬還沒放出去就會被殺。如同侵犯人體的病毒會隨著醫療條件的提高而演變得越來越複雜一樣,現在依然存活著非常難以查殺的病毒木馬,這種攻防的對抗開始逐漸細節化,“白加黑”、內存執行等多種形態的病毒木馬不斷湧現。具體的攻防用到的技術後面會再介紹,這裡不再細述。

再來看看防火牆。防火牆從原理上看是不防禦那種破壞性的病毒的。談防火牆之前我們先來看端口的概念。我們先試想一個場景,我們要去一個菜場買菜,採購的目標是土豆和茄子,那麼我們就需要去賣土豆的大嬸和賣茄子的大叔那裡去買,而不是去肉攤。如果電腦是菜場,裡面五花八門應有盡有的話,那麼他就是通過各個攤位跟用戶進行具體的交易。任意兩臺電腦之間想要傳送文件都是通過端口實現的,準確地說,是兩臺電腦上的兩個應用程序通過各自的端口來收發數據,木馬也不例外,木馬一般是分為控制端和被控端,被控端想要把自己拿到的數據傳遞給控制端就需要通過端口來進行傳遞。防火牆的主要功能就是對主機上的所有端口進行監控和過濾,把符合標準的數據交互拉入白名單,把明確的不符合標準的數據交互拉入黑名單。防火牆的好處是可以隔絕木馬控制端和被控端的通道,攔截雙方的通信。木馬也分為兩種,一種是主動開端口監聽,一種是去外聯控制端的監聽端口。這兩種模式都可以通過設定規則的方式攔截,尤其是前一種。當然了,攻防博弈是此消彼長的,在這種情況下,偽裝成合法應用使用協議的木馬開始出現,他們在流量中模仿合法應用達到規避防火牆的目的。而目前基於AI技術的發展,防火牆也越來越智能,判斷木馬通信行為的規則也越來越精確。

2、應用層防護的發展

隨著B/S架構的流行,針對服務器的攻擊開始越來越多地成為主流。實際上瘦客戶端並非只是B/S架構,只是流行度上Web比較發達罷了。

市場就是這樣,當B/S架構攜帶的數據越來越敏感,導致其被攻擊越來越多,也帶來了專門針對Web應用服務器的安全防護需求。Web服務器與普通的個人主機不同,防火牆沒辦法完全攔截每一個端口,因為至少必須開放一個端口用來給用戶訪問架設在上面的網站,通常這個端口的號碼為80和443。所有開放的允許外部連接的端口都有一定的風險,攻擊是針對端口的,那麼應用層防護需要做到的就是規範所有針對端口的輸入。Web應用防火牆或者簡稱WAF(Web Application Firewall)應運而生,它是通過執行一系列針對HTTP/HTTPS的安全策略來專門為Web應用提供保護的一款產品。WAF代表了一類新興的信息安全技術,用以解決諸如防火牆一類傳統設備束手無策的Web應用安全問題。與傳統防火牆不同,WAF工作在應用層,因此對Web應用防護具有先天的技術優勢。基於對Web應用業務和邏輯的深刻理解,WAF對來自Web應用程序客戶端的各類請求進行內容檢測和驗證,確保其安全性與合法性,對非法的請求予以實時阻斷,從而對各類網站站點進行有效防護。

通常針對網站服務器的防護中,防火牆也是存在的,用以保護服務器主機層面的安全,而WAF也會存在,目的是保護應用層面的安全。

現實中還有很多其他的服務器,比如數據庫服務器、文件服務器、工控服務器等等,由於大多數這類服務器不用直接聯網跟外界共享數據,因此這些服務器的防護大多采用邏輯隔離進行防護,即直接設置成不連接外網的模式即可,隨著互聯網技術的發展,這些服務器的聯網的需求也越來越多,針對性的數據庫防火牆、工控防火牆也都在不斷地發展和進步,但是由於攻擊還不夠多,因此整體的防護能力目前仍然值得懷疑。

作為有過幾年短暫開發經驗的程序員,我一直覺得大多數程序員不是代碼的生產者,只是代碼的搬運工。我覺得國內可能不止是我,大部分公司的程序員們都有過類似的“先進”經驗。大家也都是從互聯網各個地方搬運各類代碼進行組裝和調試,至於這大段代碼裡面是否有什麼不足,在當今效率至上的社會里,並不過多也無暇關心。

這裡提一下國外有個知名的網站叫Github,這個網站簡直就是國內高薪的軟件工程師們的聖地,基本需要的代碼都可以在上面找到。很多開發的大佬們也都比較贊同這種模式,他們經常會說一句話,叫做“不要重複造輪子”,所以在他們看到一段可能比較稚嫩的代碼的時候,他們會高傲地告訴開發者,在哪裡可以找到更好的代碼,不要做這種沒有意義的工作。這種價值導向下,現在的開發人員越來越像一個組裝者,而不是一個創造者。開發的任務主要是找到各種模塊進行組裝,這種模式本身沒有問題,我們傳統工廠比如汽車製造商也是這樣,生產出來汽車的各個組件最後在加工廠進行組裝而成行,對功能開發進行模塊化組裝可以很有效地提升產品開發的效率,但是也有一些隱患,典型的就是國內似乎很好再找到能生產這些輪子的程序員了。這兩年Python語言的發展異常火爆,我有一個徒弟,他最早跟我用C語言開發各種小的桌面應用,他接觸python以後立馬轉向了這種語言,我問過他為什麼,他說python太方便了,以前需要寫幾百行的代碼才能完成的功能,使用python只要5-6行就行了,大大提高了開發效率。我一度很奇怪,因為我一直認為無論什麼開發語言都只是工具而已,各類開發語言都是相通的,怎麼會存在一種語言可以大大提高開發效率的說法。看了他的代碼以後我才發現,他在做一個網站爬蟲的功能的時候僅僅調用了一個庫然後運行就直接完成了以前需要的所有功能。這種組裝已經到了具體功能模塊的代碼確實能大大提升開發的速度,程序員們的時間也得到了大幅的節約。

這種模式在開發上的流行,帶來一定的問題,如國內很多的論壇都使用了Dedecms或者Discuz等框架,很多博客類資訊類都用了Wordpress框架等等,還有出現問題最多的JAVA開發框架struts2。直接使用這些框架做上層的修改和開發確實節約了時間,但是這些框架也成為了黑客們最感興趣的目標。如果能挖掘出來這些框架的一個漏洞,那麼就可以在互聯網上一次性攻擊很多系統,獲取很大的收益。這些漏洞因為通殺性強,在底下黑市可以直接進行售賣,一般來說,越流行的框架產生的高危的漏洞價格就越高,同樣地,很多國內主流的漏洞通報平臺也都在通過收購這種漏洞的形式對漏洞進行收集,以督促框架開發者對其框架進行及時的漏洞修補。即使到了今天,利用框架漏洞攻入服務器,並實施加密勒索,數據竊取等操作,也是黑客攻擊的比較流行的方式之一。這種漏洞的防護也是WAF需要重點關注的,也是衡量WAF能力的一個重要指標。


分享到:


相關文章: