伍星宇,裴旭斌,陳澤堃
(國網浙江省電力公司信息通信公司,浙江 杭州 310020)
人工智能的核心內容之一就是機器學習,機器學習是讓機器模擬人類的思維和行為基礎從而使自己變得更聰明和智能。機器學習是一種不斷學習和進化的過程。機器學習的策略大體分類:機器學習,類比分析,典型事例學習。機器學習常用算法有:概率論、統計學以及數理分析等。目前業界一致認為機器學習的重要組成部分就是邏輯推理和判斷,二者構成了機器學習的基礎。
作為人工智能的重要組成部分機器學習技術一直在工程應用和科學領域有著廣泛應用,概率近似正確以及以概率統計為理論基礎的人工智能方法促進了機器學習技術的極大發展。
機器學習自20世紀80年代以來在人工智能界取得了長足的發展和進步,特別是21世紀以來,機器學習領域的研究工作發展很快,已成為人工智能的重要課題之一。除在基于知識的系統中得到應用之外,機器學習還在模式識別、機器視覺、非單調推理、自然語言理解等許多領域也有廣泛應用。學習能力已經成為一個系統是否智能化的重要判斷依據。機器學習的研究方向主要有以下兩個方面[1]:
傳統的學習,通過模擬人的學習機制來提高機器的邏輯推理水平;大數據環境下的學習,通過對大數據的分析和判斷來分析事物內在的聯系和關系,從而為機器判斷提供依據。
經過多年的發展模擬人腦的多層分片機器學習方法取得了長足的進步,在圖像識別方面已小有成就,在醫療方面配合醫生經驗可以對某些疾病提供診斷。
傳統機器學習的研究方向主要包括:決策樹、隨機森林、人工神經網絡、貝葉斯學習等方面的研究。
決策樹是機器學習常見的一種方法。其發展經歷了AS-SISTANT Algorithm、Chi-Squa統計算法、C4.5算法,CART算法,SLIQ(決策樹分類)算法等,目前決策樹作為機器學習的重要組成部分很好地支撐了傳統機器學習。
隨機森林(RF)作為機器學習重要算法之一,是一種利用多個樹分類器進行分類和預測的方法。近年來,隨機森林算法研究的發展十分迅速,已經在生物信息學、生態學、醫學、遺傳學、遙感地理學等多領域開展的應用性研究。
人工神經網絡(Artificial Neural Networks,ANN)在20世紀40年代就已經受到關注,并一直持續發展,具有非線性適應性信息處理的能力,可克服傳統人工智能方法對于直覺,如模式、語音識別、非結構化信息處理方面的缺陷。
貝葉斯學習是機器學習較早的研究方向,其方法最早起源于梳理統計,由貝葉斯在1763年所證明的一個關于貝葉斯定理的一個特例。后經過多位統計學家和數學家的共同努力,在20世紀50年代逐步建立起來,發展為統計學及機器學習的重要組成部分和發展方向。
大數據的價值主要體現在數據的內聯分析和邏輯判斷上,數據作為信息系統乃至人類社會的重要載體,一直存在于系統的各方面,隨著存儲、計算能力的提升使得數據能發現自身規律,更好的服務系統對系統的判斷提供依據是大數據存在的價值。利用并行和分布式的處理方法能夠使得數據處理能力極大提高,也為機器學習提供了新的思路和辦法。
當今技術發展的主要動力之一是可利用機器學習高效快速地獲取知識,從錯綜復雜的數據中找出其中發展的規律,并伴隨著人工智能等算法的應用不斷發現新的需求。機器學習在大數據時代已成本數據沉淀的一種通用手段和技能。當前大數據的重要研究方向是利用機器學習對繁雜的數據進行分析和提煉,從而對生產提供有利的判斷。智能數據分析成為機器學習的一個重要方向。隨著信息技術指數級的增長,數據的增長也是指數級的增加,結構化、非架構化、半結構化數據的增長需要機器學習朝著更加智能的方向發展,如何快速檢索信息、識別信息已經成為機器學習的重要增長點,制約著大數據技術的發展。在“2015年大數據十大熱點技術與發展趨勢”中,結合機器學習等智能計算技術的大數據分析技術被推選為大數據領域第一大研究熱點和發展趨勢。
機器學習的本質為:獲取數據、處理數據、分析數據、指導生產實踐,處理和分析數據過程伴隨著數據模型和算法,基礎數據模型的建立過程需要科研工作者不斷的探尋和發現,隨著數據存儲能力和計算能力的增強對數據的預測準確性也越來越精準[2]。在信息安全領域機器學習的意義主要體現在:自身的數據處理能力,可以通過數據分析提前預判系統的安全漏洞和突發的異常行為,避免人工因疏忽出現的問題,有助于降低系統的誤判率,有效保障用戶系統的安全,降低系統惡意軟件的安裝率。
極驗驗證碼產品據說是基于深度學習對人類的驗證碼行為和機器的行為進行建模,此外還用了聚類等無監督算法對樣本進行分析。破解極驗教程,就是利用了模型還沒有對這一小撮行為進行標記確定的時間窗口,極驗數據分析人員進行標記之后,自然這類繞過行為就被限制住了。網易也做了類似的驗證碼產品,原理應該也類似。
傳統的殺軟是基于文件簽名和特征碼來確定惡意文件的,這會導致大量漏報,因為惡意代碼稍變形就可以繞過。后來出現了沙盒和虛擬機技術,可以對病毒的動態行為進行檢測。這是從靜態檢測到動態分析的進步,對未知的惡意代碼檢測能力有了很大提升。但從本質上還是基于規則的檢測。機器學習應用于惡意代碼檢測是大勢所趨,大量論文都提出了自己的機器學習應用于惡意代碼行為分析檢測上的思路[3]。ESET、Cylance、CrowdStrike等廠商也推出了基于機器學習的惡意代碼檢測產品。
入侵檢測是指“通過對審計數據、行為、安全日志或審計數據或其他網絡上可以獲得的信息進行操作,檢測到對系統的闖入或闖入的企圖”。早期有個叫作為CIDF(Common Intrusion Detection Framework)的組織,描繪了一個入侵檢測系統的通用模型(見圖1)。

圖1 早期CIDF描繪的入侵檢測模型
事件產生器(Event generators),如E盒;
事件分析器(Event analyzers),如A盒;
事件數據庫(Event databases),如D盒;
響應單元(Responseunits),如R盒;
E盒采集數據并傳遞給A盒,A盒通過誤用模式開始檢測;A、E盒的數據存儲在D盒,D盒可提供判斷信息;R盒從A、E盒中提取數據,D盒啟動適當的響應。A、D、E、R盒之間靠通用入侵檢測對象GIDO(Generalized Intrusion Detection Objects,)和CISL(Common Intrusion Specification Language,通用入侵規范語言)協議進行通信。通過對GIDO實現標準化并使用CISL可在A、E、D及R盒之間實現不同種類互操作。
入侵檢測的過程可以說是將問題分類的過程,主要目的是將“合法”流量與“惡意”流量區分開來。目前有很多威脅檢測和入侵檢測的方法。一般來說,網絡入侵檢測系統(NIDS)按照檢測方式可以分為異常入侵檢測(Anomaly Detection)和誤用入侵檢測(Misuse Detection)。
2.3.1 誤用入侵檢測
利用已知系統和應用軟件的弱點攻擊模式和已知惡意行為來檢測入侵稱為誤用入侵檢測。這是比較簡單的檢測方式,利用關于“壞”行為的特定描述,通過特征標識(Signatures)、黑名單以及其他入侵指標的學習完成訓練過程。訓練過程完成后,就能按照各種指標對新數據進行檢測。如果沒有擊中任何標識,那么這個新數據就被判定為“好”數據。
傳統的誤用入侵檢測技術主要有以下兩種:
(1)基于專家系統的攻擊檢測技術。對專家在業務現場和實際運維中碰到的真實案例進行總結和提煉,翻譯成機器可識別的語言再次碰到這個情況時可直接觸發,專家模型依賴于專家經驗的總結和沉淀適應性較廣。
(2)基于模型推理的攻擊檢測技術。對已發生的攻擊行為進行總結,通過大數據對行為進行總結和判斷。通過大數據特定算法建立模型,監控特定行為觸發判斷機制,模型推理的攻擊檢測技術適用于大數據場景,依賴于算法的正確性和運算能力。
2.3.2 異常入侵檢測
根據計算機資源使用情況和異常行為來檢測入侵。通過定量方式描述可接受的行為特征是異常入侵檢測的基本特征,可用以區分潛在的、非正常的入侵性行為。相比于誤用入侵檢測方式該方式更加量化指標,可通過量化指標區分出攻擊流量和非攻擊流量。
異常入侵檢測可檢查出非正常行為,從另一個維度發現問題。
異常入侵檢測技術分以下兩種情況:
(1)基于統計方法的攻擊檢測技術。對用戶的歷史數據進行統計和分析,通過正態分布圖來分析用戶的歷史行為,當用戶的數據超出正態分布區間時進行告警,該模式可預防90%以上攻擊和異常,存在一定誤報的風險;
(2)基于神經網絡的攻擊檢測技術。神經網絡算法作為一種全新的技術,實現算法較復雜需要開發者經驗豐富,對算法本身的邏輯判斷有很高的要求,能對實時檢測得到的信息進行有效的處理,并做出攻擊可能性的判斷。
異常入侵檢測的細微特征體現在不會設置一系列關于好壞不同的精確描述,而是可以利用機器學習找到某種程度上“突出”的信息。從原則上來說,如果不要求關于檢測目標的精確描述,機器學習的算法就會非常有助于異常檢測。
利用機器學習進行WebShell檢測,主要思路分為靜態檢測、動態檢測和流量檢測。靜態檢測是把WebShell文件當作普通文本序列,使用詞袋模型(BOW)、TD-IDF進行特征提取;動態檢測是對opcode或系統調用序列進行建模;流量檢測的思路是基于Web流量,根據一系列參數特征、信息熵、時間分布特征等對正常流量和WebShell訪問流量樣本訓練分類模型,從而發現WebShell的訪問行為。
機器學習在垃圾郵件檢中的應用可以看成是對其運行原理的特殊應用,如:可將郵件定義為[-1,1],上限1代表垃圾郵件,下限-1代表正常郵件,通過專家經驗確定垃圾郵件常用關鍵詞,再通過機器學習提煉豐富垃圾郵件詞庫,提高垃圾郵件的檢測率。
域名作為互聯網訪問的門戶,往往作為黑客攻擊的頭道要素。過去通過域名系統、黑名單攔截、防火墻等的作用下,來實現對域名惡意攻擊的檢測。在新的機器學習方法下可通過對合法域名訓練數據集的建立、惡意域名的剔除,進一步的調整和驗證。以此來判斷其是否屬于惡意域名。
異常檢測一般應用于白樣本黑樣本數量極不均衡(有監督的異常檢測),或者沒有標記信息(無監督的異常檢測)的情況。常用的算法包括單分類SVM、周志華教授提出的孤立森林(Isolation Forest)、局部異常因子算法(Local Outlier Factor,LOF),對于序列樣本有隱馬爾可夫模型(HMM)、循環神經網絡(RNN)、LSTM、Encoder-Decoder等算法可以用于異常檢測[4]。
3.1.1 主動外聯檢測
現在的病毒大多采用分體形式進行感染,為了逃避安全域邊界上的惡意代碼檢測機制,常先感染病毒母體,再釋放自身在互聯網上下載子體。還有基于隱蔽通道的SQL注入攻擊、SSRF攻擊、RFI攻擊、反彈Shell等,也會出現由內網服務器主動對外發出請求的情況。針對此類攻擊,可以在網絡邊界處進行流量收集,提取端地址、域名、協議、端口等維度的頻次、時間段、數據包特征,對每個內網服務器的外聯情況進行建模[5]。
3.1.2 內網流量異常檢測
在APT或滲透攻擊過程中,當黑客通過一定手段獲取了某一臺服務器權限,會利用這臺服務器進行一定內網嗅探和漏洞利用嘗試,因此安全防御機制需要考慮到來自內網服務器的攻擊識別。當然可以用WAF或IDS之類的傳統安全設備來做,但可能會丟掉很多有用的信息。比如在內網正常時的網絡流量信息和Socket建立情況,其實可以利用這部分數據進行建模,當某個服務器突然出現了大量的對內網其他服務器的請求,這時就可以用模型來進行異常檢測,從而進行報警。
3.1.3 Web異常訪問檢測
一個特定的線上網站,對于每個訪問主體,訪問序列和訪問參數應該是有一定規律的。通常一個特定的訪問序列對應著訪問主體的某一個特定的訪問目的,以修改網站個人信息為例,一般的訪問頁面序列應該是登錄-首頁-個人信息頁-修改個人信息,而如果出現了登錄-個人信息頁500,這樣的訪問序列自然是不正常的,很有可能出現了水平越權查看其他用戶信息的攻擊。再以搜索接口為例,正常的搜索參數可能有3個,A是int,B和C是str,如果某個請求中A、B、C順序不對、全都是str而且長度比同接口其他請求大很多,一定也是有問題的。
可以提取大量正常樣本作為訓練集,對參數key、value(包括請求參數和請求頭等)進行分別建模,還可以提取其他必要的統計、分布特征,作為每個請求的特征向量。再對請求序列的URL路徑進行詞向量訓練,這樣就獲得了訪問序列的二維特征矩陣,和每個請求的特征向量合并在一起,作為模型訓練集,得到異常檢測模型。
強化學習(Reinforcement Learning,RL)也是可以應用在信息安全領域的。強化學習有其天生的優勢,可以解決傳統機器學習和深度學習難以解決的序貫決策問題,在與環境進行交互的過程中訓練模型,如圖2所示。

圖2 強化學習
3.2.1 代碼動態審計
目前常見的代碼審計工具還都是基于規則的,把一些危險函數、SQL拼接語句等作為目標進行正則匹配,如果匹配到就報漏洞。而且基本上都是靜態審計,也即沒有運行代碼,只是通過解析代碼查找漏洞。
3.2.2 自動化滲透測試
目前的滲透測試基本上是手動的,當然有一些掃描工具,如AVWS、Nessus、APPScan等,雖然很省力,但測試覆蓋面和深度上肯定是不如手動測試的。其實滲透測試也有一套成熟框架,單說漏洞挖掘和利用這個環節。一般都是滲透測試人員:(1)看到一個頁面(或截包看到接口返回結果);(2)分析頁面內容;(3)找到可嘗試的參數;(4)設計Payload;(5)發送攻擊請求;(6)查看返回結果,這樣一個循環。
這個循環流程可以利用強化學習模型來模擬。首先使用深度學習算法對正常頁面進行建模。實際進行滲透測試時,將當前頁面抽象為狀態(state)特征向量,按某種搜索策略選擇Payload或者生成新的Payload,作為動作(action)向Web系統發送請求,根據已經訓練好的深度網絡模型判斷返回頁面的正常程度,返回Agent與正常程度成反比的回報(reward)。訓練后,可以得到一個高效率的使頁面返回不正常的滲透測試智能體。
號稱基于機器學習的滲透測試工具GyoiThon,仔細看其源碼和原理說明,發現其應用機器學習只是做了系統識別這一方面的工作,比如根據一些字段和頁面內容的特征確定是哪個Web容器、CMS系統等,而實際的滲透測試還是調用了Metasploit框架進行的。
生成式對抗網絡(Generative Advertorial Networks,GAN)是一項無監督學習技術,可以通過訓練兩個模型:生成模型(Generative Model)和判別模型(Discriminative Model)來用于無中生有。生成模型隨機生成樣本,判別模型對生成的樣本進行判斷真偽,如果與真實樣本很像則返回接近1,一點都不像則返回接近0。當生成模型生成的樣本判別模型看不出真假來了(返回接近0.5),則我們的生成模型就可以拿來用于生成以假亂真的新樣本了。GAN可應用于信息安全以下幾個方面。
3.3.1 生成蜜罐響應內容
蜜罐用來迷惑入侵攻擊者,給安全管理人員寶貴的應急響應時間窗口和取證機會。如果蜜罐的返回結果不夠真實(不像是正常系統被入侵后返回的結果),入侵者就會反應過來,不會再訪問蜜罐,這個蜜罐的效果就不夠好。GAN可以用來訓練模型生成與正常系統很相似的響應內容,使蜜罐更具有迷惑性。
3.3.2 生成訓練集
信息安全機器學習應用時常常遇到的最大困難就是黑白樣本不均衡問題,黑樣本獲取難度大,導致絕大多數的訓練樣本都是白樣本。此時可以在原黑樣本集上增加一些隨機少量擾動的方式生成黑樣本,也可以嘗試使用GAN自動生成一些黑樣本。例如在已經收集的攻擊Payload基礎上,自動生成一些其他的Payload,其相似度很高,可以起到類似Fuzzing的效果。
文章在基于機器學習在安全領域應用的基礎上,借助于異常檢測、深化學習和生成對抗網絡應用思想,提出一種解決提升產品安全系數和運行穩定性目的的可行性操作。利用該操作安全信息問題時,基本能夠保證信息安全滿足需求。在目前普遍的機器學習研究領域,提供一種新的可供參考的思路。但正如前文提到的,各個方案存在有個體上的差異性,其在處理過程中只能求同存異。因此,在方案選擇方面還存在諸多值得繼續研究完善之處。