基于机器学习算法识别恶意url

参考链接:

https://blog.csdn.net/solo_ws/article/details/77095341?utm_source=blogxgwz5

https://www.freebuf.com/articles/network/131279.html

下面的说法直接拷贝上面链接这篇博客。是为了自己更好地阅读。有兴趣的,可以直接阅读原文,忽略下文内容。

建议直接看第一条链接的内容。

 

逻辑回归的算法:

Logistic回归是一种广义线性回归(generalized linear model),目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。
Logistic回归模型的适用条件二分类问题 所以选择逻辑回归做url分类.
支持向量机:

支持向量机(英语:Support Vector Machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

数据向量化

机器学习的算法需要输入一个固定结构的向量,而每一条url都没有特定的结构。故需要将每条url的文本特征转化成固定的数字特征。这里可以借鉴文本处理中将文本向量化的常用方法:TD-IDF.
TD-IDF 是一种用于资讯检索与文本挖掘的常用加权技术,被经常用于描述文本特征。
TF 词频(Term Frequency),表示词条在某文档中出现的频率。
IDF 逆向文件频率(Inverse Document Frequency),作用在于如果包含词条的文档越少,则 IDF越大,说明该词条具有很好的类别区分能力。TF-IDF 倾向于过滤掉常见的词语,保留重要的词语。
TD-IDF输入的是文本的词语,需要将url分词。我们选择通过长度为N的滑动窗口将文本分割为N-Gram序列。n越大 ,产生的字母组合种类越多(256^n),产生的向量维度会更大,运算开销会增大,考虑到本机的性能,这里我们选择n=2。

总结

逻辑回归判断和svm都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。两者的根本目的都是一样。所以在很多实验中,两种算法的结果是很接近的。
但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些。但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注。还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。

局限:

使用的是监督学习下的二分类器。需要标定的数据集。然而在现实环境中,由于攻击方式的多样性,很难获得覆盖全面的恶意攻击url数据集,导致在面对零日攻击这类比较新的攻击url具有一定的脆弱性。
此外本次课题由于硬件的限制,样本数据集还没有到达百万集,准确度会受到影响。
改进思路:

在探寻改进方式时,我们找到了一篇发表在Elsevier Science上的论文 McPAD:A Multiple Classifier System for Accurate Payload-based Anomaly Detection
该论文指出,由于我们只有大量白样本,可以考虑通过单分类模型,学习单类样本的最小边界,边界之外的则识别为异常。通俗的讲,就是与其学习攻击的url特征,不如直接学习正常url的特征,拒绝所有不符合正常特征的url,以不变应万变。
这里简单介绍论文实现的思路:
mcpad通过训练多个svm单分类器同时判断url是否正常,来提高系统的精确度。
为了训练多个不同分类器,需要不同的样本,通过ngram中n取不同值的方式来将url划分成不同的向量是一种解决方案,然而此举会导致特征空间成指数性增长(特征空间=256^n)增加计算的复杂度和空间开销。论文提出2ν-gram的向量化方式,ν代表所取两个字母间的间隔。通过数学验证了该方法既不会损失信息也不会增加运算的复杂度。使用kmeans对数据进行降维后训练出多个单分类器来进行url的判断。单分类器的组合方式:Average, product, maximum and minimum probabilities, major voting
 

你可能感兴趣的:(python学习,机器学习)