從免費的物聯網防火牆hihttps談機器學習之生成對抗規則


 hihttps是一款基於MQTT的免費的物聯網防火牆,同時也是web應用防火牆,既支持傳統的檢測功能如SQL注入、XSS、惡意漏洞掃描、密碼暴力破解、CC、DDOS等),又支持無監督機器學習,自主對抗,重新定義網絡安全。

今天筆者就從物聯網安全的角度,介紹hihttps怎樣通過機器學習自動生成對抗規則的5個過程:

 

 

一、   樣本采集

MQTT是物聯網loT最廣泛采用的協議,騰訊百度阿里雲都支持,基礎協議請百度搜索“物聯網防火牆himqtt源碼之MQTT協議分析”。

和圖形圖像的人工智能一樣,機器學習無論是有監督還是無監督,第一步都是先采集樣本。物聯網安全有先天性的樣本采集優勢,成本幾乎為0,方法是:通過反向代理的模式采集完整的MQTT協議數據,可以參考hihttps源碼https://github.com/qq4108863/himqtt/ ,樣本要求如下:

1、足夠的隨機化,在不同的IP地址之間隨機采集。

2、足夠多的樣本,保證99.99%的正確率,至少需要采集數萬份的樣本。

3、足夠的時間,至少在不同的時間段采集3-7天的樣本。

4、盡量是正常流量下采集,減少樣本被黑客攻擊污染的可能性。

5、完整的數據,樣本包括全部的MQTT協議頭和body。

 

基於機器學習的物聯網防火牆hiihttp是怎樣工作的呢?比如有個TOPIC接口"hihttps/read",在正常情況是通過json形式訪問,hihttps先把采集到樣本參數保存在train訓練目錄下,樣本文件主要內容如下:

"topic": "hihttps/read"

{ "id": 123,"token": "2458-a632-3d56-a9bf "}

{ "id": 456,"token": " ce58-a49d-b767-68ed"}

{ "id": 678,"token": "2bd8-c4d2-d324-29b3"}

{ "id": abc,"token": "45d8-35d2-e8f3-fe4a"}

{ "id": abc%20’or 1=1,"token": "2bd8-c4d2-d324-29b3 "}

……

 

當采集到的樣本數量,達到一定數量(如1萬),hihttps機器學習引擎就開始啟動,第一步就是濾噪。

二、 濾噪

在正常的情況下,拿到的樣本絕大多數是大量重復性存在的,但是也不排除樣本存在黑客攻擊,也就是說,個別樣本可能已經被污染了,hihttps在降維和特征提取之前先過濾。

濾噪的方法通常是用聚類方法,把樣本分為兩類,把其中小於3%的樣本去掉,通常有以下幾種做法:

1:json參數過濾。比如正常情況下是{ "id": xxx,"token":xxx},那么如果有小於1%的是{ "sql": xxx,"xss":xxx},那么就要過濾這條樣本。

2:名稱長度過濾。一般來說,字符串長度值分布,均值μ,方差σ3,在切比雪夫不等式范圍外,要過濾掉。

3:參數值長度過濾。一般來說,參數如tolken=xxx,其中xxx的長度值分布,均值μ,方差σ3,在切比雪夫不等式范圍外,要過濾掉。

4:SQL注入過濾。用libinjection庫查一遍,符合SQL注入特征的樣本要過濾。

5:XSS攻擊過濾。用libinjection庫查一遍,符合XSS特征的樣本要過濾。

6:其他已知攻擊過濾。如ModSecurity 的OWASP規則很牛,先跑一遍過濾。

 

經過濾噪處理后,我們把樣本就分為正常和異常樣本,正常的如下:

 

{ "id": 123,"token": "2458-a632-3d56-a9bf "}

{ "id": 456,"token": " ce58-a49d-b767-68ed"}

{ "id": 678,"token": "2bd8-c4d2-d324-29b3"}

{ "id": abc,"token": "45d8-35d2-e8f3-fe4a"}

……

少數異常樣本,如疑似SQL注入攻擊則去掉

{ "id": abc%20’or 1=1,"token": "2bd8-c4d2-d324-29b3 "}

……

 

整個過程,無監督進行,可以用到的數學算法有K均值(K-Mean)、主成分分析PCA、切比雪夫不等式、高斯混合模型GMM、稀疏矩陣……

具體的算法源碼可以參考https://github.com/qq4108863/AI

 

三、 降維

濾噪后最重要的一步就是降維,這是機器學習的核心。降維就是通過特定的數學算法,把復雜的東西,用特征表達向量,變為機器可以理解的東東,降維方法分為線性降維(PCA 、ICA LDA、LFA、LPP等)和非線性降維KPCA 、KICA、KDA、ISOMAP、LLE、LE、LPP、LTSA、MVU等)。

怎么讓機器理解/hihttps?id=abc%20’or 1=1’這就是一條攻擊呢?在物聯網安全領域和圖形圖像完全不同,主要就是涉及自然語言處理,尤其是文本的識別,主要有下面幾種模型:

1、詞袋模型

文本的降維本質上涉及到了文本的表達形式。在傳統的詞袋模型當中,對於每一個詞采用one-hot稀疏編碼的形式,假設目標語料中共有N個唯一確認的詞,那么需要一個長度N的詞典,詞典的每一個位置表達了文本中出現的某一個詞。在某一種特征表達下,比如詞頻、binary、tf-idf等,可以將任意詞,或者文本表達在一個N維的向量空間里。憑借該向量空間的表達,可以使用機器學習算法,進行后續任務處理。

這種方式被稱為n-gram語法,指文本中連續出現的n個語詞。當n分別為1、2、3時,又分別稱為一元語法(unigram)、二元語法(bigram)與三元語法(trigram)。

 

2、維度選擇方法

常用的有卡方、互信息這種統計檢驗的方法;還有借助機器學習模型降維的方法。比如,使用隨機森林,或者邏輯回歸等模型,篩選出那些在分類任務中具有較大特征重要性,或者系數絕對值較大的TOP特征作為降維后的特征集合。

 

3、主題模型

主題模型同時具備了降維和語義表達的效果,比如LSI、LDA、PLSA、HDP等統計主題模型,這些模型尋求文本在低維空間(不同主題上)的表達,在降低維度的同時,盡可能保留原有文本的語義信息。

 

4、神經網絡

如卷積神經CNN、循環神經RNN等。

 

 

理論可能有點復雜,那我們直接拿4條樣本來舉例說明吧:

{ "id": 123,"token": "2458-a632-3d56-a9bf "}

{ "id": 456,"token": " ce58-a49d-b767-68ed"}

{ "id": 678,"token": "2bd8-c4d2-d324-29b3"}

{ "id": abc,"token": "45d8-35d2-e8f3-fe4a"}

 …..

降維的目的就是為了讓機器能夠理解id是什么,token又是什么,什么情況是攻擊。我們先來定義一些稀疏編碼:

N:整數,0-9

C:字符,a-z

X: 16進制數字,0-9 a-f

D:標點分隔符.-|

……..

{ "id": 123,"token": "2458-a632-3d56-a9bf "} 這種我們就用稀疏編碼把其維度降為id=N,token=XDXDXDX,這樣機器就可能理解了,哦,原來id就是數字嘛。

當然這是最簡單的情況,實際場景可能很復雜,比如10.1究竟是代表數字?或者錢?或者版本號呢?就需要做更多的參數關聯運算(如money或者version)。如果我們觀察到的樣本,大於99.9%的參數id都是數字,就可以認為{ "id": abc,"token": "45d8-35d2-e8f3-fe4a"}就是一條非法攻擊,這就是機器學習能夠檢測未知攻擊的核心原理。

實際生產環境中情況更復雜的,所以讓機器達到網絡專家的智能水平,還有很長的路要走,但這是必然的發展方向。

四、特征提取

下一步,hihttps就是對正常流量進行數值化的特征提取和分析。通過對大量樣本進行特征分布統計,建立數學模型,特征提取包括:JSON參數個數、參數值長度的均值和方差、參數字符分布、TOPIC訪問頻率等等。如下表所示:

 

類別

序號

特征名稱

特征描述

語法特征

1

Topic_len

TOPIC 長度

2

Path_len

路徑長度

3

Path

路徑最大長度

4

Path_Maxlen

路徑平均長度

5

Argument_len

參數部分長度

6

Name_Max_len

參數名最大長度

7

Name_Avglen

參數名平均長度

8

Value_Max_len

參數值最大長度

9

Value_Avg_len

參數值平均長度

10

Argument_len

參數個數

11

String_Max_len

字符串最大長度

12

Number_Maxlen

連續數字最大長度

13

Path_number

路徑中的數字個數

14

Unknow_len

特殊字符的個數

15

Number_Percentage

參數值中數字占有比例

16

String_Percentage

參數值字母占有比例

17

Unkown_Percentage

參數值中特殊字符的比例

18

BigString_Percentage

大寫字符所占比例

20

Spacing_Precentage

空格字符所占比例

攻擊特征

21

ContainIP

參數值是否包含IP

22

Sql_Risk_level

SQL 類型危險等級

23

Xss_Risk_level

Xss 類型危險等級

24

Others_Risk_level

其他類型危險等級

自然語言

25

NLP

自然語言理解處理

 

五、生成對抗規則

最后hihttps通過大量的樣本采集 ,精確給這個"hihttps/read"接口參數,生成對抗規則,保存在rule目錄下,和傳統OWASP規則放在一起,保護物聯網服務器不被攻擊。

下面的一律視為攻擊,只有機器學習才有可能檢測未知攻擊,這是網絡安全專家也難以做到的。

{ "id": 123 }                                 參數缺少

{ "id": abc,"token": " ce58-a49d-b767-68ed"}    參數id值不正確

{ "admin": %0acdef,"token": "2bd8-c4d2"}      未知攻擊

….....

最后總結如下:

1、整個過程完全是無監督的機器學習,有些特殊的參數,也可以由網絡安全專家人為干預半監督,從而從99.9%到100%准確率的進化。

2、傳統的規則很難對付未知漏洞和未知攻擊。讓機器像人一樣學習,具有一定智能自動對抗APT攻擊或許是唯一有效途徑,但黑客技術本身就是人類最頂尖智力的較量,物聯網安全仍然任重而道遠。

3、幸好hihttps這類免費的物聯網防火牆在機器學習、自主對抗中開了很好一個頭,未來物聯網安全很可能是特征工程+機器學習共同完成,必然是AI的天下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM