国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于機(jī)器學(xué)習(xí)的網(wǎng)站漏洞預(yù)警研究
——以代購(gòu)系統(tǒng)為例

2023-10-24 07:35:36鄧明體
裝備制造技術(shù) 2023年8期
關(guān)鍵詞:爬蟲(chóng)貝葉斯漏洞

鄧明體

(廣西水利電力職業(yè)技術(shù)學(xué)院,廣西 南寧 530023)

0 引言

當(dāng)前,各家代購(gòu)公司模式競(jìng)爭(zhēng)眾多,競(jìng)爭(zhēng)激烈,比如專(zhuān)注于海外直郵的公司、代購(gòu)公司、代售公司等,在市場(chǎng)競(jìng)爭(zhēng)中人們非常關(guān)注品牌的影響力及安全問(wèn)題。對(duì)于代購(gòu)系統(tǒng)來(lái)說(shuō),對(duì)于未來(lái)的發(fā)展,除了完善物流服務(wù),暢通的物流鏈?zhǔn)箍蛻裟芗皶r(shí)收到貨物,提高了消費(fèi)者的整體體驗(yàn),還要有技術(shù)創(chuàng)新,持續(xù)提升技術(shù),建立健全的移動(dòng)終端等網(wǎng)絡(luò)代購(gòu)系統(tǒng),使購(gòu)物者可以直接通過(guò)手機(jī)或電腦進(jìn)行海外代購(gòu),免去了傳統(tǒng)繁瑣的流程,而保證代購(gòu)系統(tǒng)的健康安全運(yùn)行是上述條件的基礎(chǔ)。由于代購(gòu)系統(tǒng)存在漏洞,讓不法分子有機(jī)乘,可修改程序,破壞系統(tǒng)運(yùn)行,嚴(yán)重可給公司的運(yùn)行帶來(lái)了災(zāi)難的打擊[1]。因此,及時(shí)的修補(bǔ)代購(gòu)系統(tǒng)的安全漏洞是安全管理員的重要工作之一。漏洞預(yù)警是代購(gòu)系統(tǒng)建設(shè)中的重要的一個(gè)步驟,越是及時(shí)收到漏洞預(yù)警信息越能夠及時(shí)進(jìn)行響應(yīng)。比如當(dāng)阿里云漏洞庫(kù)更新了一條漏洞預(yù)警信息(圖1),安全管理員想第一時(shí)間收到通知,實(shí)現(xiàn)漏洞監(jiān)控預(yù)警具有顯著的現(xiàn)實(shí)意義。

圖1 阿里云漏洞庫(kù)

安全管理員傳統(tǒng)的做法是設(shè)置python 定時(shí)爬蟲(chóng),提取包含漏洞信息的對(duì)應(yīng)

1 樸素貝葉斯算法

把監(jiān)控頁(yè)面變更前后的所有文本變化信息提取出來(lái),再使用基于機(jī)器學(xué)習(xí)識(shí)別變更內(nèi)容是否是漏洞預(yù)警信息,在這里方案中使用的機(jī)器學(xué)習(xí)算法是樸素貝葉斯[2]。分類(lèi)是數(shù)據(jù)分析和機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)基本問(wèn)題,現(xiàn)實(shí)生活中樸素貝葉斯算法應(yīng)用廣泛,如文本分類(lèi)、垃圾郵件的分類(lèi)、釣魚(yú)網(wǎng)站分類(lèi)等。例如想知道哦一個(gè)人的年收入是否達(dá)到中產(chǎn)階級(jí)水平,可以收集樣本人群的信息,根據(jù)年齡、工作單位的性質(zhì),學(xué)歷、受教育時(shí)長(zhǎng)、職業(yè)、家庭情況、性別、資產(chǎn)所得等信息來(lái)評(píng)估,這樣就可以建立分類(lèi)模型來(lái)判斷個(gè)人的年收入等級(jí)。

算法分為有監(jiān)督、無(wú)監(jiān)督的學(xué)習(xí)算法,而樸素貝葉斯是有監(jiān)督算法,它是基于貝葉斯定理與特征條件來(lái)假設(shè)的分類(lèi)方法[3]。監(jiān)督學(xué)習(xí)它的目的是讓模型能夠從已知的輸入和輸出之間的關(guān)系中學(xué)習(xí),并且能夠?qū)π碌妮斎胱稣_的預(yù)測(cè)。監(jiān)督學(xué)習(xí)有很多種算法,每種算法都有自己的優(yōu)缺點(diǎn),適用于不同的問(wèn)題和數(shù)據(jù)。比如常見(jiàn)的監(jiān)督學(xué)習(xí)算法有線性回歸、邏輯回歸、決策樹(shù)、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)等。不同的算法適用于不同的問(wèn)題和數(shù)據(jù),選擇合適的算法需要考慮很多因素,比如數(shù)據(jù)的特征、規(guī)模、分布、噪聲等,以及模型的復(fù)雜度、可解釋性、穩(wěn)定性等。一般來(lái)說(shuō),沒(méi)有一種算法是萬(wàn)能的,需要根據(jù)具體的情況進(jìn)行比較和測(cè)試,才能找到最優(yōu)的解決方案。在上述方案中,為什么選擇樸素貝葉斯算法,原因分析如下:使用邏輯回歸算法,缺點(diǎn)是不能處理非線性的關(guān)系,也不能處理回歸問(wèn)題。使用決策樹(shù)算法,缺點(diǎn)是容易出現(xiàn)過(guò)擬合,也容易受到噪聲和異常值的影響。使用支持向量機(jī),可以出來(lái)復(fù)雜的關(guān)系,但是計(jì)算效率低,選擇參數(shù)困難。綜上所述,使用樸素貝葉斯算法效率將優(yōu)于其他算法。

2 功能結(jié)構(gòu)設(shè)計(jì)

根據(jù)前面的分析,我們需要實(shí)現(xiàn)4 個(gè)功能:(1)爬蟲(chóng)腳本功能;(2)漏洞預(yù)警判斷功能;(3)機(jī)器學(xué)習(xí)訓(xùn)練功能;(4)結(jié)果信息郵件推送功能。結(jié)構(gòu)關(guān)系如圖2所示。

圖2 功能結(jié)構(gòu)

爬蟲(chóng)腳本功能:主要實(shí)現(xiàn)采集網(wǎng)站的信息,并把他轉(zhuǎn)換成文本形式保存到文檔中。機(jī)器學(xué)習(xí)訓(xùn)練:主要實(shí)現(xiàn)選擇合適算法,導(dǎo)入合適的樣本數(shù)據(jù),訓(xùn)練模型。漏洞預(yù)警判斷:主要實(shí)現(xiàn)采集真實(shí)的安全網(wǎng)站信息頁(yè)面,并把漏洞信息分離出來(lái)。結(jié)果信息郵件推送:主要實(shí)現(xiàn)把漏洞信息通過(guò)郵件發(fā)送到安全管理員的郵箱中。

3 關(guān)鍵技術(shù)具體實(shí)現(xiàn)

我們從國(guó)內(nèi)一些漏洞預(yù)警平臺(tái)(比如:阿里云漏洞庫(kù)、360 、riskivy)收集漏洞預(yù)警樣本,基于樸素貝葉斯算法訓(xùn)練程序識(shí)別漏洞預(yù)警信息特征。每十分鐘爬取一次監(jiān)控頁(yè)面,對(duì)比上一次頁(yè)面信息,提取差異內(nèi)容,基于機(jī)器學(xué)習(xí)訓(xùn)練結(jié)果讓程序判斷差異內(nèi)容是否是漏洞預(yù)警信息,如果是則通報(bào)。

(1)爬蟲(chóng)腳本采集樣本

第一步,我們先使用爬蟲(chóng)腳本采集安全網(wǎng)站上的25 份漏洞預(yù)警樣本,單獨(dú)把每一個(gè)樣本放入文件txt中。在訓(xùn)練漏洞預(yù)警樣本時(shí),去掉一些高頻詞,比如“的”“一”“在”,具體去掉的高頻詞和標(biāo)點(diǎn)符號(hào)整理到stopwords_cn.txt。因?yàn)槿サ魳颖局械倪@些非關(guān)鍵詞,后續(xù)調(diào)用程序判斷時(shí),可以提高分類(lèi)準(zhǔn)確率。第二步,我們?cè)僬?5 份非漏洞預(yù)警樣本,單獨(dú)把每一個(gè)樣本放入文件txt 中。

(2)機(jī)器學(xué)習(xí)訓(xùn)練-基于樸素貝葉斯算法進(jìn)行樣本

通過(guò)上述50 份樣本進(jìn)行訓(xùn)練,保存訓(xùn)練結(jié)果到vocabList,p0V,p1V,pSpam 參數(shù)中。為了檢查訓(xùn)練結(jié)果的準(zhǔn)確度,我們又整理了10 份漏洞預(yù)警信息,10份普通文本信息,測(cè)試效果如圖3 所示。

圖3 測(cè)試結(jié)果

測(cè)試結(jié)果:錯(cuò)誤率為0%,即正確率為100%。其結(jié)果符合預(yù)期的要求。

(3)漏洞預(yù)警判斷

大部分站點(diǎn)頁(yè)面內(nèi)容都是基于JS 渲染出來(lái)的,簡(jiǎn)單的requests.get 獲取不到頁(yè)面信息,因此使用phantomjs 模擬瀏覽器解析JS。phantomjs 是一個(gè)基于WebKit 的無(wú)界面的瀏覽器,可以用于自動(dòng)化網(wǎng)頁(yè)操作和測(cè)試。它具有以下功能:網(wǎng)頁(yè)截圖,可以將網(wǎng)頁(yè)完整地截圖保存為圖片文件;頁(yè)面渲染,可以將網(wǎng)頁(yè)加載并渲染,獲取渲染后的頁(yè)面內(nèi)容;頁(yè)面交互,可以模擬用戶的點(diǎn)擊、輸入等操作,與頁(yè)面進(jìn)行交互;網(wǎng)絡(luò)監(jiān)控,可以捕獲網(wǎng)頁(yè)中的網(wǎng)絡(luò)請(qǐng)求和響應(yīng),用于網(wǎng)絡(luò)性能分析和調(diào)試;自動(dòng)化測(cè)試,可以用于編寫(xiě)和執(zhí)行自動(dòng)化測(cè)試腳本,對(duì)網(wǎng)頁(yè)進(jìn)行功能和性能測(cè)試;網(wǎng)絡(luò)爬蟲(chóng),可以用于抓取網(wǎng)頁(yè)內(nèi)容,進(jìn)行數(shù)據(jù)采集和分析。網(wǎng)頁(yè)性能分析:可以分析網(wǎng)頁(yè)的加載性能,包括資源加載時(shí)間、渲染時(shí)間等;腳本執(zhí)行,可以執(zhí)行JavaScript 腳本,操作網(wǎng)頁(yè)元素,修改頁(yè)面內(nèi)容等??傊琍hantomJS 提供了一種無(wú)界面的瀏覽器環(huán)境,可以用于實(shí)現(xiàn)各種網(wǎng)頁(yè)操作和測(cè)試的需求。監(jiān)控目標(biāo)列表放在項(xiàng)目根目錄下的urls.txt 文件里,默認(rèn)url 列表如下:

https://vti.huaun.com/Vulnerability

https://poc.shuziguanxing.com/#/issueList

https://avd.aliyun.com/high-risk/list

https://nox.qianxin.com/vulnerability

https://sec.sangfor.com.cn/security-vulnerability

http://www.cnnvd.org.cn/web/vulnerability/querylist.tag

在crawlspider 爬蟲(chóng)腳本目錄下面有以下幾個(gè)文件:monitor.py、phantomjs,上述方案中把功能實(shí)現(xiàn)的代碼寫(xiě)在monitor.py 中,關(guān)鍵代碼如下:

#先提取html 文本,再進(jìn)行比較

def compareHtml(self,file1,file2):

text1 = ''

text2 = ''

with open (file1,'r',encoding='utf-8') as f://讀取第一個(gè)網(wǎng)頁(yè)的文本

text1str = f.read()

text1=self.filter_tags(text1str)

with open (file2,'r',encoding='utf-8') as f://讀取第一個(gè)網(wǎng)頁(yè)的文本

text2str = f.read()

text2=self.filter_tags(text2str)

d = difflib.HtmlDiff() //比較兩個(gè)網(wǎng)頁(yè)的文本的不同

htmlContent = d.make_file(text1,text2)

with open('diff.html','w',encoding='utf-8')as f:

f.write(htmlContent) //把兩個(gè)網(wǎng)頁(yè)的文本的不同的地方寫(xiě)入文件

soup = BeautifulSoup (htmlContent,'html.parser')

diffContentHtml = soup.find_all ("span",class_="diff_add")

diffContent = ''

for dif in diffContentHtml:

diffContent += HTMLParser(dif.text).text()

diffContentHtml = soup.find_all ("span",class_="diff_chg")

for dif in diffContentHtml:

diftext = dif.text

if diftext not in text1str:

diffContent += HTMLParser(diftext).text()return diffContent

最后把爬取的結(jié)果保存在1.html 和2.html 中,把比較不同的信息保存在result.log 的文件中。例如在爬去取阿里云漏洞庫(kù)網(wǎng)站的結(jié)果如圖4 所示。

圖4 文件

(4)機(jī)器學(xué)習(xí)核心功能實(shí)現(xiàn)

我們使用機(jī)器學(xué)習(xí)判斷爬取的信息是否是漏洞信息,爬取的核心代碼如下:

def samTest(self):

.. ...

for folder in folder_list:

new_folder_path = os.path.join('./Sample/vulnsWarn',folder)

with open(new_folder_path,'rb') as f:

raws = f.readlines()

for raw in raws:

wordList = self.textParse(raw)

docxList.append(wordList)

claList.append(1) # 標(biāo)記漏洞信息,1 表示是漏洞預(yù)警信息

folder_list = os.listdir('./Sample/normal')

for folder in folder_list:# 遍歷文件夾

new_folder_path = os.path.join('./Sample/normal',folder)

with open(new_folder_path,'rb') as f:

raws = f.readlines ()# 讀取文件

for raw in raws:

wordList = self.textParse(raw)

docxList.append(wordList)

claList.append (0) # 標(biāo)記非漏洞樣本,0 表示不是漏洞預(yù)警信息

vocabList = self.createVocabList (docxList)# 建立分詞列表

trainMat = []# 訓(xùn)練集矩陣

trainClasses = []# 訓(xùn)練集類(lèi)別向量

for docIndex in range (len (docxList)):# 遍歷訓(xùn)練集

trainMat.append(self.setOfWords2Vec(vocabList,docxList[docIndex]))

trainClasses.append(claList[docIndex])

p0V,p1V,pSpam = self.trainNB0(np.array(trainMat),np.array(trainClasses))

# 訓(xùn)練模型

return vocabList,p0V, p1V, pSpam# 返回結(jié)果

4 實(shí)驗(yàn)測(cè)試

該程序十分鐘爬取一次,將爬蟲(chóng)結(jié)果保存下來(lái),1.html 是上一次爬蟲(chóng)結(jié)果,2.html 為最新爬蟲(chóng)結(jié)果。對(duì)比前后十分鐘結(jié)果,提取新增內(nèi)容的文本信息,根據(jù)機(jī)器學(xué)習(xí)效果判斷是否是漏洞預(yù)警信息,在result.log里可以看到每次對(duì)比信息。其實(shí)本身一個(gè)站點(diǎn)只監(jiān)控一個(gè)頁(yè)面,訪問(wèn)頻率可以適度加大也沒(méi)有問(wèn)題。檢測(cè)效果如圖5 所示。

圖5 運(yùn)行效果

5 基于機(jī)器學(xué)習(xí)的網(wǎng)站漏洞預(yù)警的建議

為了提高分類(lèi)的準(zhǔn)確率,方案設(shè)計(jì)時(shí)要從以下幾方面去入手。擴(kuò)大數(shù)據(jù)集,有實(shí)驗(yàn)證明,良好的樣本的數(shù)據(jù)能打敗更好的算法。如果想要提高機(jī)器學(xué)習(xí)的分類(lèi)準(zhǔn)確率,首先想到的就是擴(kuò)大數(shù)據(jù)集。樣本數(shù)據(jù)足夠多,只要機(jī)器學(xué)習(xí)花費(fèi)的時(shí)間在可以接受的范圍內(nèi),數(shù)據(jù)集就可以繼續(xù)擴(kuò)大,它可以使方案設(shè)計(jì)時(shí)獲得更優(yōu)秀的分類(lèi)準(zhǔn)確率。主要在這幾方面改進(jìn):(1)訓(xùn)練階段改進(jìn);(2)算法改進(jìn)。

6 結(jié)語(yǔ)

方案通過(guò)分析網(wǎng)頁(yè)漏洞信息的特征,采用了基于貝葉斯算法的網(wǎng)頁(yè)漏洞信息的檢測(cè),給出了利用該模型進(jìn)行網(wǎng)頁(yè)漏洞信息預(yù)警推送的設(shè)計(jì)方案。實(shí)驗(yàn)測(cè)試數(shù)據(jù)分析,該方案可以檢測(cè)出網(wǎng)頁(yè)漏洞信息,為了提高判定數(shù)據(jù)的準(zhǔn)確率,我們可以增加樣本數(shù)據(jù)。綜上所述,代購(gòu)行業(yè)正在經(jīng)歷飛速發(fā)展,其增長(zhǎng)的空間還是很大的,但要想實(shí)現(xiàn)長(zhǎng)足發(fā)展,還需要繼續(xù)加強(qiáng)行業(yè)的技術(shù)創(chuàng)新,優(yōu)化行業(yè)服務(wù),完善有關(guān)政策,以推動(dòng)行業(yè)的可持續(xù)發(fā)展。

猜你喜歡
爬蟲(chóng)貝葉斯漏洞
利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
漏洞
基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
貝葉斯公式及其應(yīng)用
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
基于貝葉斯估計(jì)的軌道占用識(shí)別方法
一種基于貝葉斯壓縮感知的說(shuō)話人識(shí)別方法
電子器件(2015年5期)2015-12-29 08:43:15
宁武县| 高青县| 鞍山市| 交口县| 顺义区| 确山县| 吉木萨尔县| 阳泉市| 微山县| 南开区| 泗洪县| 沂南县| 雷波县| 迭部县| 高雄市| 和静县| 博客| 萨迦县| 恭城| 房产| 庆城县| 嘉黎县| 易门县| 靖西县| 焦作市| 禄劝| 馆陶县| 洛川县| 江门市| 抚宁县| 宁明县| 临汾市| 大冶市| 玉树县| 木兰县| 察隅县| 镇沅| 桃园市| 沿河| 开远市| 襄城县|