閱讀739 返回首頁    go 阿裏雲 go 技術社區[雲棲]


我們的算法少女

2016年,阿裏雲安全與天池大數據眾智平台合作,啟動阿裏雲安全算法挑戰賽:在全球範圍內招募安全+算法的跨界挑戰者,集頂尖智慧,幫助阿裏雲更好地保護雲和雲上用戶,推動安全智能的技術發展。

image


在首屆安全算法挑戰賽中,上千名大數據領域的高校人才、資深人士,與安全行業的高手攜手作戰。而一位單槍匹馬迎戰的少女,徐道晨,以創新的算法和邏輯,給評委和主辦方留下了深刻的印象,並成為最終加入阿裏雲安全團隊的選手之一。

今年,第二屆算法挑戰賽啟動,我們希望用人的智慧,推動安全智能更進一步。希望徐道晨的故事,能給你挑戰的動力和靈感;安全智能的下一個故事,是否會由你來續寫呢?

老刑警坐在街角,透過手中香煙的煙霧,瞥見車站旁的一個黑衣行人。

他眉頭一皺,把煙頭踩在腳下,跟著此人走上了公交。

果然不出所料。就在黑衣人把別人的錢夾塞進自己夾克的一瞬間,有人攥住了他的手腕。回頭,老刑警赫然站在背後。

老刑警在和黑衣人眼神接觸的一瞬間,經驗告訴他此人一定有問題。在車站等車的時候,黑衣人僅僅用了十分之一秒,就把所有人的錢包位置檢視了一遍。而正是這個普通人根本無法察覺到的動作,讓老刑警確定這就是小偷。

對於老刑警來說,這一切都已經成為了職業嗅覺,判定過程連貫而準確。而實際上,在他的腦中,對小偷的判定可以抽象為一套複雜的算法流程。而對方的“眼神位置”“神態”“步態步速”“上車動作”等等一係列的特征都一一進入老刑警的算法流程進行篩查。最終在老刑警的內心得出此人是小偷的可能性,他正是根據這個“可能性參數”,才選擇在公交車上進行抓捕。

以上的一切,在網絡世界都有一套翻版。那就是:安全人員如何揪出入侵的黑客。


image


少女VS黑客
文 | 史中




在賽博世界裏,每天要應對各種花式黑客進攻次數最多的,恐怕非阿裏雲莫屬。阿裏雲頂著一個頗為自豪的光環,那就是全中國有37%的網站建立在阿裏雲之上。這樣龐大的數字,讓阿裏雲每天都承受著來自宇宙各地的網絡攻擊。

所以,阿裏雲安全團隊迫切需要一些“老刑警”。對於他們來說,已經沒有任何一個實體的團隊,可以人肉跟蹤鑒別每天數十億次的訪問中,究竟哪些存在風險。解藥隻有一個:大數據算法。

阿裏雲高級安全專家劉誌生告訴我:

所謂算法就是把所有的訪問行為進行關聯計算。以 Web 防護為例,把某些特定訪問動作的“稀有度”“異常性”進行特定分析,形成計算模型。如果某個模型被證明和最終的入侵有關,那麼這就是一個判定入侵的有效模型。

這和老刑警在腦中篩選小偷的模式大致相同。無數個算法模型,就如同一道道激光電網,對於各式各樣的黑客來說,“總有一款適合你”。

劉誌生說,對於阿裏雲的安全技術,占據總量 95% 的普通網絡進攻都可以輕鬆防禦。而剩下的 5% 來自高級黑客的攻擊,才是他們的“重點關照對象”。

在和頂尖的黑客對抗中,攻防兩方的技術都非常高,關鍵就看在頂尖技術中誰更有優勢。目前來看,誰擁有大數據能力,誰就更有優勢。

天文數字的訪問量中,很多高級的進攻利用的都是最新的漏洞或進攻思路。有些方法從黑客的腦中創造出來之後,就直接用來攻擊,屬於未知的威脅。麵對未知的威脅,防火牆的表現一定不盡如人意,這個時候,安全算法是唯一同時滿足“自動化”和“感知未知威脅”的方案。

這場戰爭,阿裏雲打得並不輕鬆。發掘安全與算法的跨界人才,改進技術,是他們舉辦安全算法大賽的重要原因。




選手們去年所迎戰的賽題,大致如下:

1、線上賽,包括“Webshell 檢測”和“釣魚網站檢測”

2、線下賽,為“入侵行為檢測”

簡單來說,線上賽的題目較為簡單。參賽的童鞋要從無數文件和網址中,利用算法來篩選出惡意的文件和網址。而線下賽,就相對更接近於“老刑警”的實戰模式了。需要綜合各台機器的日誌,利用算法綜合判定出哪台主機有惡意動機。

隻有在線上賽中晉級的選手,才能到杭州參加線下賽。

在這次比賽中,有一位特別的選手,在各個參賽隊伍齊裝滿員的情況下,來自清華大學的顏值少女徐道晨居然單槍匹馬手刃諸多大咖,拿到了第二名的成績。

她以“新時代的萌妹子就該懂技術”為格言,殺入了評委和公眾的視線。“道晨粉絲團”關注的,更多的是她深夜在電腦前獨自迎戰的美麗側臉,而包括道哥吳翰清在內的評委們,更驚歎於她答辯時的縝密邏輯,和算法本身的創新度。比賽半年之後,徐道晨也正式加入了阿裏雲安全團隊。


image
當時微博上徐道晨的粉絲團

故事的開始是這樣的。

徐道晨和朋友杜海章組成了“Audi_RS7”戰隊,順利晉級到了線下賽。然而,就在線下賽開始之前,杜海章童鞋因故不能來參賽。於是,徐道晨的“單騎冒險”就這樣開始了。

從大二才開始學習編程和算法的徐道晨是一個死理性派,凡事喜歡刨根問底。之前隻是在學校裏簡單接觸過入侵檢測的她從來沒有反入侵的實踐經驗。這次上場前又失去隊友,頗有一種“壯士一去兮不複返”的悲壯。

比賽時間是從當天下午兩點到次日下午兩點。每兩個小時我們提交一次規則。主辦方給出我們的檢出率和誤報率。我們根據這兩個數據來改進算法,目標是找出其中25個惡意入侵行為。當時我就想,如果到第一天成績不好,我就直接回家睡覺了。

作為主辦方專家的劉誌生告訴我,平常安全團隊每天麵臨的是對幾十萬台服務器進行規則運算,而作為比賽,僅僅抽取了一百台服務器的日誌,這在運算規模和難度方麵,都比真實情況要小很多。

然而即使是這樣,也有10億條會話之多。參賽者的目標是,從中“算出”25個入侵的會話。

在簡單的培訓中,參賽者得到了一例黑名單(攻擊案例)和一例白名單(正常訪問)。而在比賽中,徐道晨拿到的所有信息,通俗來講就是兩個列表:

1、哪些機器進行了通信,誰連誰。

2、主機本身在什麼時間被哪一個用戶用什麼進程做了什麼事。

麵對龐大的數據,徐道晨決定先用一條規則減小計算級別。




徐道晨告訴我,她的強項在於大數據算法。但作為非安全從業者,又是單打獨鬥的一個人,根本沒有時間研究複雜函數的意義。所以她必須采用劍走偏鋒的“玩法”,用一種獨特的方法大幅縮減“嫌疑範圍”。

她腦海裏浮現出曾經做過社交網站的算法研究,在那個領域中,Pagerank 是一種頗為有效的技術。

簡單科普一下,Pagerank 是由穀歌創始人,天才的拉裏·佩奇創造的一項技術。大概可以理解為:

通過網絡的超鏈接關係來確定一個頁麵的等級。即把從A頁麵到B頁麵的鏈接解釋為A頁麵給B頁麵投票,然後根據投票來源(甚至來源的來源,即鏈接到A頁麵的頁麵)和投票目標的等級來決定新的等級。簡單來的說,一個高等級的頁麵可以使其他低等級頁麵的等級提升。


image
Pagerank 示意圖

她決定把和安全技術本不相關的 Pagerank 引入算法,她說:

主機之間要進行通信,這就像網頁訪問一樣。例如百度每天有很多人訪問,這樣提供服務的流量是巨大的。所以我認為,訪問量大的,也就是一台主機被其他很多主機連接,就應該是正常的。利用這個規則,我很快就把候選樣本從十億級別縮減到幾十萬級別。

這個方法,搭配上其他的限定條件,使得可能目標迅速減少。然而,由於對攻擊代碼不熟悉,她沒有辦法準確地定位出攻擊行為所在。不過在第一天晚上,她的成績突然衝到了第一,這讓她信心大增。

僅僅睡了幾個小時,她決定繼續改進自己的算法。

如果要完成入侵,黑客就一定要利用漏洞。也就是說,對於某些動作而言,它在之前的動作中已經植入了木馬或者利用了服務器漏洞。所以它的父進程為正常服務進程或腳本進程,子進程為攻擊行為。通過這種對攻擊方法的認識,我又成功定位出兩三條。

對於25條惡意進程的基數來說,每增加一條檢出,都是決定性的優勢。最終徐道晨的算法保持了穩定,從25條中檢出了12條。和第一名的成績僅僅差了3條。她單槍匹馬麵對數十人的對手,拿到這個成績讓人驚歎。

不過,劉誌生告訴我,雖說選手可以做到50%左右的檢出率,但其實他們沒有檢出來的另一半,絕大多數是中等和高級的攻擊。而要檢出這樣的攻擊,不僅要結合算法,還需要相當齊備的安全對抗技術。


image




徐道晨坦言:

如果我是安全專家。我就會更多地研究具體的行為,例如:命令的實施過程,連接的具體方式。用這方麵的規則來防住進攻。但鑒於我對安全了解沒有那麼深,就不能過多糾結它的過程。轉而需要更多異常統計的東西。

劉誌生告訴我,雖然阿裏雲在安全算法方麵有不錯的技術積累,但黑客的攻擊方式是無孔不入的,每一次攻擊成功都是對已知的突破或未知的創新。

實際上,算法在安全的應用仍然處於開始階段。在阿裏雲,會有許多針對內部全員的算法培訓,目的是讓每個安全工程師都掌握一些有關算法的知識,提升技術能力。

他舉例說:

以常用的WAF(網絡安全防火牆)為例,每天我們的係統可以產生幾十條規則,經過人工審核之後,平均每天有不到一個規則被部署到係統中。那些未被采用的規則,主要是可能存在誤殺的情況。

在保證不漏攔又不誤殺的情況,我們把明確的正常請求和攻擊請求進行訓練,采用機器學習算法技術,最終產出純算法模型,這樣每個請求過來時會同時經過規則和算法的判斷,既保證了不誤殺又大大降低了漏報率。

那麼,如何去驗證這些算法規則切實有效,而不是“自我安慰”呢?

劉誌生告訴我,阿裏雲采取了紅藍軍對抗的辦法。

玩法如下:

阿裏雲安全的童鞋全部作為紅軍,時刻處於待命狀態。而其他部門的專家作為藍軍,目標就是用各種姿勢對阿裏雲係統進行滲透,但是所有的進攻時間、方法,都不會預先通知紅軍。

在算法係統研發不到一年的時間裏,大部分的藍軍攻擊都被檢測到了,漏過的藍軍攻擊主要發生在算法模型上線的前幾個月,通過不斷訓練調優,算法模型成熟後,藍軍變化再多的花樣也基本都可以檢測到了。

另外,之前基於人工規則的預警係統會產生出大量的誤報,每天都需要投入安全工程師大量的人工成本做告警的分析和確認,算法模型可以從曆史的海量數據中自動學習到正常用戶的行為,可以對告警中正常的用戶行為進行有效的過濾,並保持真正有威脅的告警,從而大大節省人工成本和提升安全工程師分析的效率,也做到了更智能化的檢測防禦聯動。


image
徐道晨

熱鬧的比賽歸於平靜,徐道晨回到了北京。然而這個世界卻有了些許的不同。“算法”,這個嫻靜的詞匯,在世人麵前展現了它的巨大力量。

一個柔弱的女孩,輕輕敲打幾行代碼,就召喚出洪荒巨力,抵禦千軍萬馬。
這樣的情景,一如當年摩西舉起手杖,劈開紅海萬頃波濤。


image




一年過去了,徐道晨成為了阿裏雲安全團隊的一員。這次,她要麵對的是真實網絡世界中的對抗。

這位顏值女學霸發現,真實世界的攻擊場景比大賽中的題目更加凶殘:

比賽過程中不存在攻防對抗,而真實場景中卻並不是這樣。我今天發現一種新的攻擊方法,做了防護模塊,黑客發現這樣攻擊失效以後,就會改變進攻的辦法。

所以在比賽中那種“靜態”的防護方法就不是那麼好用了。所以我需要思考,有什麼東西是黑客不管怎麼繞都一定會幹的事情。我需要找到這個點,就不會每天追著黑客屁股打,而是在這裏守株待兔了。

據此,她對雲安全有了新的認識:

傳統模式下,是case by case地分析安全事件,生產力的源頭是上報的安全事件。而雲安全可以通過數據找出訪問的異常,並針對各種異常做出不同反應,生產力的源頭是多維數據的沉澱。

作為元老,徐道晨很期待今年8至10月第二屆算法大賽的舉行。因為,僅僅半年過去了,黑客的攻擊手段又有了很多“創新”,這使得防護的難度又上了一個台階。

我問徐道晨,經過了一年的實戰和進步,如果她參加第二屆算法大賽,有沒有信心取勝。她想了想說,前浪很可能死在沙灘上。


image

來源:阿裏雲安全
原文鏈接

最後更新:2017-08-28 11:32:39

  上一篇:go  企業財務分析方法
  下一篇:go  筆記:Ceph and Swift: Why we are not fighting.