99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀基于標(biāo)記數(shù)據(jù)學(xué)習(xí)降低誤報率的算法優(yōu)化
基于標(biāo)記數(shù)據(jù)學(xué)習(xí)降低誤報率的算法優(yōu)化
2017-12-30
收藏

基于標(biāo)記數(shù)據(jù)學(xué)習(xí)降低誤報率的算法優(yōu)化

無論是基于規(guī)則匹配的策略,還是基于復(fù)雜的安全分析模型,安全設(shè)備產(chǎn)生的告警都存在大量誤報,這是一個相當(dāng)普遍的問題。其中一個重要的原因是每個客戶的應(yīng)用場景和數(shù)據(jù)都多多少少有不同的差異,基于固定判斷規(guī)則對有統(tǒng)計漲落的數(shù)據(jù)進行僵化的判斷,很容易出現(xiàn)誤判。

在沒有持續(xù)人工干預(yù)和手動優(yōu)化的情況下,策略和模型的誤報率不會隨著數(shù)據(jù)的積累而有所改進。也就是說安全分析人員通過對告警打標(biāo)簽的方式,可以將專業(yè)經(jīng)驗傳授給智能算法,自動得反饋到策略和模型當(dāng)中,使之對安全事件做出更精準(zhǔn)的判斷。本文介紹利用專家經(jīng)驗持續(xù)優(yōu)化機器學(xué)習(xí)的方法,對告警數(shù)據(jù)進行二次分析和學(xué)習(xí),從而顯著地降低安全威脅告警的誤報率。

為了降低誤報率,當(dāng)前大體上有兩種技術(shù)途徑:

根據(jù)不同客戶的各種特定情況修正策略和模型,提高策略或者模型的適應(yīng)能力;

定期(如每月一次)對告警進入二次人工分析,根據(jù)分析結(jié)果來調(diào)整策略和模型的參數(shù)配置。

這兩種方法對降低誤報率都有一定的作用。但是第一種沒有自適應(yīng)能力,是否有效果要看實際情況。第二種效果會好一些,但是非常耗時耗力,而且由于是人工現(xiàn)場干預(yù)和調(diào)整策略和模型,出錯的概率也非常高。

MIT的研究人員[1] 介紹了一種將安全分析人員標(biāo)記后的告警日志作為訓(xùn)練數(shù)據(jù)集,令機器學(xué)習(xí)算法學(xué)習(xí)專家經(jīng)驗,使分析算法持續(xù)得到優(yōu)化,實現(xiàn)自動識別誤報告警,降低誤報率的方法(以下簡稱“標(biāo)簽傳遞經(jīng)驗方法”)。這種把安全分析人員的專業(yè)智能轉(zhuǎn)化成算法分析能力的過程,會讓分析算法隨著數(shù)據(jù)的積累而更加精確。繼而逐漸擺脫人工干預(yù),提高運維效率。如下圖所示:

下面我們通過基于“頻繁訪問安全威脅告警”模擬的場景數(shù)據(jù)來介紹一下實現(xiàn)機制。

什么是頻繁訪問模型?邏輯比較簡單:一段時間內(nèi)(比如1分鐘),一個攻擊者對系統(tǒng)的訪問次數(shù)顯著高于普通訪問者的次數(shù)。此告警規(guī)則可以用簡單的基于閾值,或者是利用統(tǒng)計分布的離異概率?;诖?,我們先模擬一些已經(jīng)被安全分析人員打過標(biāo)簽的告警數(shù)據(jù)。根據(jù)實際應(yīng)用經(jīng)驗,我們盡量模擬非常接近實際場景的數(shù)據(jù)。如下圖:

關(guān)于模擬數(shù)據(jù)的介紹:

總共模擬了20天的告警數(shù)據(jù),從2017-01-01到2017-01-20。前10天的數(shù)據(jù)用來訓(xùn)練模型,后10天的數(shù)據(jù)用來衡量模型的表現(xiàn);

每個告警帶有是否誤報的標(biāo)簽。紅色代表誤報,藍色代表準(zhǔn)確告警。

關(guān)于模擬數(shù)據(jù)的假設(shè):

誤報聚集在某個時間段,模擬數(shù)據(jù)假設(shè)的范圍是18:00-19:00。在安全運維實踐中,的確存在某個特定的時間段,由于業(yè)務(wù)邏輯或者系統(tǒng)原因?qū)е抡`報增多的現(xiàn)象。所以上述假設(shè)是合理的,告警時間可以作為有效的特征值。但并不是所有的誤報都聚集在這個時間段,同時并不是這個時間段的所有告警都是誤報;

誤報大多來自于一批不同的IP。所以訪問來源IP也是有用的特征值;

任何數(shù)據(jù)都不是完美的,所以在模擬數(shù)據(jù)中加入了~9%的噪音。也就是說再完美的智能模型,誤報率也不會低于9%。

這些假設(shè)在實際的應(yīng)用場景中也是相對合理的。如果誤報是完全隨機產(chǎn)生的,那么再智能的模型也不能夠捕捉到誤報的提出信號。所以這些合理的假設(shè)幫助我們模擬真實的數(shù)據(jù),并且驗證我們的機器學(xué)習(xí)模型。

簡要模擬數(shù)據(jù)的代碼實現(xiàn):

下圖顯示利用PCA降維分析的可視化結(jié)果,可以看到明顯的分類情況:

紅色代表誤報,藍色代表正確告警?;谠O(shè)定特征值的降維分析可以得到兩個聚集,即誤報和非誤報有明顯的區(qū)分的,也就是說誤報的是有一定規(guī)律,不是完全隨機的,因此是可以被機器學(xué)習(xí)捕捉到的。

簡要代碼實現(xiàn):

基于模擬數(shù)據(jù),我們想要達到的目的是通過持續(xù)的強化機器學(xué)習(xí)能夠降低誤報率。所以我們采取的策略是:

訓(xùn)練一天的數(shù)據(jù)2017-01-01,測試10天的數(shù)據(jù)2017-01-11到2017-01-20;

訓(xùn)練兩天的數(shù)據(jù)2017-01-01到2017-01-02,測試10天的數(shù)據(jù)2017-01-11到2017-01-20;

以此類推,來看通過學(xué)習(xí)越來越多的數(shù)據(jù),在測試數(shù)據(jù)中的誤報率是否能夠得到不斷的改進。

簡要代碼如下:

此安全威脅場景相對簡單,我們不需要太多的特征值和海量的數(shù)據(jù),所以機器學(xué)習(xí)模型選擇隨機森林(RandomForest),我們也嘗試了其他復(fù)雜模型,得出的效果區(qū)別不大。測試結(jié)果如下:

達到我們所預(yù)期的效果,當(dāng)訓(xùn)練數(shù)據(jù)越來越多的時候,測試數(shù)據(jù)當(dāng)中的誤報率從20%多降低到了10%。通過對告警數(shù)據(jù)和標(biāo)簽的不斷自學(xué)習(xí),可以剔除很多告警誤報。前面提到,數(shù)據(jù)當(dāng)中引入了9%的噪音,所以誤報率不會再持續(xù)的降低。

在我們的機器學(xué)習(xí)模型當(dāng)中,我們利用了4個主要的特征值:

srcIP,訪問源IP

timeofday,告警產(chǎn)生的時間

visits,訪問次數(shù)

destIP,被訪問IP

下圖顯示了特征值在模型中的重要性:

和我們的預(yù)期也是一致的,訪問源IP(srcIP)和告警發(fā)生的時間(timeofday)是區(qū)分出誤報告警效果最好的特征值。

另外,由于隨機森林模型以及大部分機器學(xué)習(xí)模型都不支持分類變量(categoricalvariable)的學(xué)習(xí),所以我們把srcIP和destIP這兩個特征值做了二值化處理。簡要代碼如下:

總結(jié)

本文通過一組模擬實驗數(shù)據(jù)和隨機森林算法,從理論上驗證了“標(biāo)簽傳遞經(jīng)驗方法”的有效性。即通過安全分析專家對告警日志進行有效或誤報的標(biāo)記,把專家的知識技能轉(zhuǎn)化成機器學(xué)習(xí)模型的分析能力。和其他方法相比,此方法在完成自動化學(xué)習(xí)之后就不再需要人工干預(yù),而且會隨著數(shù)據(jù)的積累對誤報的剔除會更加精確。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }