从免费的物联网防火墙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的天下。
从免费的物联网防火墙hihttps谈机器学习之生成对抗规则的更多相关文章
- ng机器学习视频笔记(十六) ——从图像处理谈机器学习项目流程
ng机器学习视频笔记(十六) --从图像处理谈机器学习项目流程 (转载请附上本文链接--linhxx) 一.概述 这里简单讨论图像处理的机器学习过程,主要讨论的是机器学习的项目流程.采用的业务示例是O ...
- 物联网防火墙himqtt源码之MQTT协议分析
物联网防火墙himqtt源码之MQTT协议分析 himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWall,C语言编写,采用epoll模式支持数十万 ...
- paper 127:机器学习中的范数规则化之(二)核范数与规则项参数选择
机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...
- paper 126:[转载] 机器学习中的范数规则化之(一)L0、L1与L2范数
机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...
- 机器学习中的范数规则化之(一)L0、L1与L2范数
L1正则会产生稀疏解,让很多无用的特征的系数变为0,只留下一些有用的特征 L2正则不让某些特征的系数变为0,即不产生稀疏解,只让他们接近于0.即L2正则倾向于让权重w变小.见第二篇的推导. 所以,样本 ...
- 机器学习中的范数规则化之(一)L0、L1与L2范数(转)
http://blog.csdn.net/zouxy09/article/details/24971995 机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http: ...
- 机器学习中的范数规则化之(一)L0、L1与L2范数 非常好,必看
机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...
- 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署
谁还没遇上过NoClassDefFoundError咋地--浅谈字节码生成与热部署 前言 在Java程序员的世界里,NoClassDefFoundError是一类相当令人厌恶的错误,因为这类错误通常非 ...
- 机器学习中的范数规则化-L0,L1和L2范式(转载)
机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...
随机推荐
- 子网划分及NAT技术总结
近段项目需要用到网络相关的知识,硬着头皮又回顾了一波,这里做一下记录. 一 分类的IP地址 我们使用的IP地址(IP V4)可以划分为A,B,C,D,E 5个类型,其中的D,为组播地址,E类地址为保留 ...
- 「CF1082C」Multi-Subject Competition 解题报告
人生第一篇题解,虽然这道题做的人暂时不多,但我相信它--迟早有一天会发扬光大的!!! 说完废话 步入正题 题意: 传送门 思路: 模拟.枚举 对于每个组里的数字,先排序,然后从一到最大可能的情况,枚举 ...
- 10_时间戳timeStamp 和 时间 time 转换, 根据时间节点倒计时
1: 时间戳 timeStamp 获取的几种方法及其优劣, 第一种只能精确到秒, 故不推荐使用, 最最常用的也是最官方的是第三种, 通过原型方法进行调用获取精确到毫秒数 : var timestamp ...
- Winform在控件内实现简单画笔功能
using System.Drawing; using System.Windows.Forms; namespace ZhuoHuiSchoolroom.ZhuoHuiClass { /// < ...
- Map2Shp软件字符编码解决方案——彻底杜绝Shape格式乱码
在使用Shape文件时,如果里面有中文属性信息时,经常会遇到属性信息变为乱码.尤其是ArcGIS10.2.1之后,Esri改变了软件的默认字符编码规则,打开之前保存的Shapefile文件,总会不时遇 ...
- vue学习--组件之间的传值方式
1.概述 vue由多个组件构成页面,在不同的组件中有不同的联系,组件之间的传值是十分有必要的 2.父子组件之间传值 --props和$emit 父传子:通过props 方法:子组件:props:['m ...
- 关于django中的get_or_create方法的坑
最近在项目中发现了这样的一个坑,那就是我们的需求是不能添加一个相同的对象到数据库中,就通过某些字段的值组合成唯一值到数据库中去查找数据,如果没有找到对象,那就创建一条新的数据库记录,而刚好django ...
- TCP/IP协议与HTTP协议(一)
1.什么是TCP/IP 如果要了解一个人,可以从他归属的集体聊起来.我们的HTTP协议就属于TCP/IP协议家族中的一员,了解HTTP协议再整个网络流程中的地位,也能更加充分的理解HTTP协议. 要 ...
- Mysql-SQL优化-子查询替代LEFT JOIN
表A:批次信息表, 表B:实际批次明细表, Mysql版本:5.6.36 两表之间的数据体量差异:表B是表A的10000倍. 经过结转,表B通常保留 1千5百万数据.表A就是1千多条数据. 计算近24 ...
- Docker + node(koa) + nginx + mysql 线上环境部署
在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...