钓鱼网站分类检测算法的比较性研究

2019-05-16 01:30王文腾王传涛
北京建筑大学学报 2019年1期
关键词:贝叶斯分类器页面

王文腾, 王传涛, 袭 薇, 佟 晖

(1.北京建筑大学 机电与车辆工程学院, 北京 100044; 2.北京市公安局, 北京 100740;3.上海市信息安全综合管理技术研究重点实验室, 上海 200240)

“钓鱼网站”就是指钓鱼者利用带有欺骗性的电子邮件和伪造的非常相似的网站对受害者进行欺骗[1]. 攻击者会仿制一个和目标网站十分相似的网站作为钓鱼网站,或者制作成虚假信息的网站. 当受害者访问该网站并提交个人信息时,攻击者就可能从中获取受害者提交的敏感信息,如各类账号、密码等,或者是直接造成受害者财产损失. 由于这类攻击的隐蔽性很好,造成危害较大,所以属于严重的互联网犯罪.

1 相关研究

目前关于钓鱼网站研究主要分以下几类:一是基于黑白名单过滤[2]的浏览器插件. 这些检测插件大多采用URL(统一资源定位符)黑名单技术,将待测网站的URL在黑名单数据库中进行匹配. 但钓鱼网站更新快存活时间短,所以无法检测最新钓鱼网站. 第二类是分析钓鱼网站URL地址[3]. 这种方法对于部分钓鱼网站的识别效果很显著,但URL特征并不能完全鉴别钓鱼网站, 这种方式可能会伴随漏判和误判的概率. 第三种方式是根据页面内容特征来识别钓鱼网站[4]. 这种方式会比第二种方式的查全率和准确率更高,但面临的问题就是获取页面内容会降低识别的效率,在提取页面特征时也会比URL特征提取要复杂.

针对检测方式,很多学者都采用机器学习的分类算法进行分类检测. 顾晓清等[5]提出,针对URL特征,通过比较阈值改进贝叶斯算法. 赵加林[6]提出对针对网页的K-Means与SVM结合算法. 可以看出,机器学习中的监督式的分类方法[7]在钓鱼网站识别研究中应用较多.

上述研究通常是侧重钓鱼网站检测的某一方面,使用一种分类算法作为模型建立的算法. 本文着重通过实验比较常见的3种分类算法(KNN[8],SVM[9],朴素贝叶斯[10])分别通过URL特征和页面文本特征,对钓鱼网站进行检测,区分其性能差异.

2 网站URL特征

钓鱼网站的主要欺骗方式之一是通过URL地址的相似性加以伪装. 但是部分钓鱼网站的URL与被模仿网站的URL还是有很多区别的. 根据参考资料,将已有钓鱼网站URL与正常网站URL做比对得到的特征组成特征集合.

通过相关文献研究的基础和对已有的钓鱼网站URL分析,本文选取出由11个特征组成的特征向量FV:

FV=〈F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11〉

F1:在URL的域名部分含有特殊符号“-”,这个符号通常放置于被模仿网站域名中间或者用某些词和被模仿网站域名连接,这种方式在URL的域名处迷惑用户.

F2:在URL的查询部分含有“@”“·”,有些钓鱼网站在查询部分以邮箱账号的形式作为查询参数.

F3:在URL路径中包含“·”“\”,这两种符号经常用于在URL的路径中添加了被模仿URL的真实域名,然后再用这两种符号连接.

F4:URL的长度,在没有查询参数的URL长度定义的最大阈值为85,如果有查询参数,最大阈值为115.

F5:URL域名的长度,定义域名长度的最大阈值为39.

F6:URL域名级数,有些钓鱼网站通过多级域名,在中间添加了真实域名的字符串,导致用户被迷惑. 定义级数的最大阈值为4.

F7:URL路径级数,与URL域名级数类似,通过多级路径,将被模仿的域名添加到路径中. 定义级数的最大阈值为6.

F8:URL以IP地址替换域名,这种方式会阻止用户从域名中了解网站,从而迷惑用户.

F9:URL路径中出现某些品牌,在路径中包含品牌以此迷惑用户. 从PishingTank上收集了99个品牌作为一个品牌集合.

F10:URL域名的长度,定义域名长度的最小阈值为7.

F11:URL中包含敏感词. 有些钓鱼者为了迷惑用户,在URL刻意添加“account”“banking”这些词. 由8个敏感词组成的集合:

(1)

i∈{1,2,3,4,5,6,7,8,9,10,11}

(2)

3 网站页面特征

用户通过钓鱼网站的URL访问该网站,但要使用户相信该钓鱼网站的内容,还需对其页面结构或页面内容进行处理. 钓鱼网站通常仿冒相关网站的结构和文本内容,但由于它的目的性与正常网站不同,所以其内容又与被仿网站有一定的区别,因此利用这一特点便可以通过网页的文本内容或页面结构进行判断区分.

根据网页内容进行提取特征. 详细步骤如下:

1) 首先请求可以正常访问的钓鱼网站,然后提取网页中所有的字符串.

2) 对提取的整段字符串进行清洗,去除整段字符串中的特殊字符和转义字符. 然后利用NLTK[11]进行分词、去除停用词,得到每一个词组成的字符串集合.

例如:{facebook help center facebook update your security…}

3) 接下来利用TF-IDF方法对每个词加权. TF-IDF是一种统计方法[12],它就是为了克服词频统计技术的缺陷而产生的. 它引入了“逆文档频率”概念,衡量了一个词的常见程度. TF-IDF的假设是:如果某个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出,那么它很可能就反映了这篇文章的特性,因此要提高它的权值. 在网页内容上有很多出现频率很高的词,但并不能凸显出这个文本的特性,要适当降低这类词的寻找.

假设Xi为某个词,Number(j,Xi)为在j文件中出现Xi词的次数,Number(j,Xmax)表示j文件中出现最多的词的个数. 那么Xi的词频TF为:

(3)

假设ContainFile(Xi)为出现Xi的文件数,SumFile为文件的总数,那么逆文档频率IDF为:

(4)

所以结合式(1)和式(2)Xi的TF-IDF值为:

TF-IDF(Xi)=TF(Xi)IDF(Xi)

(5)

4) 将每个文本按权重由大到小选取前n个的词,再将所有选取的词整合在一起组成特征词集合.

4 分类算法

本文主要涉及3种常见分类算法:最近邻算法(KNN),支持向量机算法(SVM)和朴素贝叶斯算法(Naive Bayes).

4.1 KNN算法

KNN算法是通过测量不同特征值之间的距离进行分类. 它的思路是:一个样本在特征空间中的K个最临近的样本中的大多数属于某一个类别,则该样本也属于这个类别. KNN算法中,所选择的邻居都是已经正确分类的对象. 该方法在决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别.

在KNN算法中,通过计算对象间的距离作为对象之间的非相似性指标,一般使用欧式距离公式计算:

(6)

其算法描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在的类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类.

4.2 SVM算法

SVM(Support Vector Machines)在分类算法中应用广泛,它在处理高纬度数据集时有很好的分类效果. SVM的目的是寻找一个超平面,使样本分成两类,并且间隔最大.

对于二类分类问题,假设训练集为:

T={(x1,y1),(x2,y2),…,(xn,yn)}

其中xi为相应样本,yi为样本类标记,且yi∈{0,1}.

分类平面形式为:

g(x)=wtx+b

(7)

其中w是分类权重向量,b是分类阈值. 若使式(5)对两类样本都满足|g(x)|≥1, 即:

yi(wtx+b)-1≥0,i=1,2,…,n

(8)

(9)

s.t.yi(wtx+b)-1≥0

(10)

考虑异常点的情况,可以加入松弛变量ε来处理:

yi(wtx+b)-1≥1-ε

(11)

则把目标函数变为:

(12)

其中,C为惩罚函数,通过构造拉格朗日函数并求解偏导数可以得到等价对偶问题:

(13)

(14)

如果是非线性问题,一般采用低维空间映射到高维空间x→(x)后实现线性可分. 在SVM的等价对偶问题中目标函数中有样本点的内积,在空间变换后,由于维度增加导致内积计算成本增加,这时核函数(kernel function)便派上用场了,将映射后的高维空间内积转换成低维空间的函数:

K(x,z)=φ(x)φ(z)

(15)

将其代入式(11)可得非线性SVM的最优化问题:

(16)

(17)

4.3 朴素贝叶斯算法

朴素贝叶斯(Naive Bayes)属于监督学习的生成模型,实现简单,没有迭代,学习效率高,在大样本量下会有较好的表现.

朴素贝叶斯的主要思路是:通过联合概率P(x,y)=P(x|y)P(y)建立模型后,通过运用贝叶斯定理求解后验概率P(y|x),将后验概率最大者对应的类别作为预测分类.

假设训练集为:T={(x1,y1),(x2,y2),…,(xn,yn)},其类别为yi∈{c1,c2,…,ck},由贝叶斯定理可知:

(18)

其中对于ck而言,p(x)是恒等的,所以可以舍弃. 先验概率p(y=ck)可以通过计算频率得到,而条件概率p(x|y=ck)通过朴素贝叶斯对条件概率做了条件独立性的假设,即条件相互独立的为前提,则:

(19)

可得预测类别:

(20)

5 实验结果与分析

5.1 实验评估方法

采用准确率(precision)、召回率(recall)和综合的准确率和召回率的分类率(F1)作为本次实验的分类型评价指标. 其中准确率是指模型判为正的所有样本中有多少是真正的正样本;召回率是指所有正样本有多少被模型判为正样本;而F1是准确率和召回率的结合.

假设模型输出正样本集合(模型检测出的钓鱼网站集合)为A,真正的正样本集合(钓鱼网站总体集合)为B,则:

(21)

(22)

(23)

5.2 实验数据准备

本次实验所用的钓鱼网站(正类)来自PhishTank[13]上提供的黑名单数据. 实验总共提取两次,第一次是2017年8月8日提取了3 123条钓鱼网站用于URL检测部分;由于钓鱼网站存活期较短,所以第二次是从2018年2月18日和2018年2月23日两天中提取有效2 000钓鱼网站用于网站页面检测部分. 实验中用到的可信网站(负类)来自Alexa[14]上排名前500,在这500个网站中,每个网站以深度为1进行遍历,总共得到38 019个网站,从中提取有效可信网站1 307条用于URL检测部分,提取2 000条用于网站页面检测部分. 对于训练数据和测试数据采用的分配方式,如表1所示.

表1 训练数据和测试数据

5.3 不同分类器测试结果比较

首先通过实验确定KNN算法中的最优k值,从图1中可以看出,随着k值的增加,KNN分类器的F1值呈递减趋势,在页面内容检测的折线图更为明显. 当k值为5时KNN分类器的效果最佳,对于URL检测和页面内容检测的F1分别为89.18%和94.69%. 因此后续采用k值为5的KNN分类器进行实验.

图1 不同k值下的KNN分类器的F1值Fig.1 F1 value of KNN classifier under different k values

4种分类方法在URL检测中的性能比较,支持向量机(SVM)分类器. 本实验分别选择线性SVM和径向基核函数的SVM作为非线性SVM. 径向基核函数的形式为:

表2是4种分类方法在URL检测方面的性能比较. 其中URL特征数为11个. 在表中可以看出,除朴素贝叶斯方法外的其他三种方法的准确率和召回率相差都不大,准确率达到85%左右. 由于训练和测试的数据集不大,而且特征数也不多,所以训练和测试的时间比较短.

表2 4种分类方法在URL检测方面的性能比较

表3是4种分类方法在页面内容方面的性能比较,其中页面特征为2 000个钓鱼网站页面的权重由大到小排名前5的特征组成,所得的页面特征数为1 165个. 可以从表中很明显看出线性SVM分类器的准确率和召回率都是最高,都近似96.88%,而采用径向基核函数的SVM分类器的准确率和召回率都是最低的,所以在选用SVM算法的时候,对于线性和非线性SVM算法的选择很重要.

综合表2和表3可以看出,对于页面内容检测的准确率和召回率都要高于针对URL特征检测. 笔者认为出现这种现象有以下几个原因:

表3 4种分类方法在页面内容方面的性能比较

1)网站URL没有进行黑白名单的过滤,导致很多正规网站由于也存在敏感词汇而被认为存在了钓鱼网站URL的特征;

2)有一部分钓鱼网站并没有出现钓鱼网站的URL特征,而正常网站却有部分存在,导致分类器误判;

3)页面内容检测中,很多钓鱼网站针对的目标网站比较集中,导致很多钓鱼网站的制作与目标网站比较类似,所以特征也较为相似,因此分类器分类比较准确;

4)还有一个原因是页面内容特征的特征维度远远高于URL特征,这个方面也导致部分分类器的训练和测试时间都大大增加.

图2 对于4种分类器在不同页面特征数下的F1值比较Fig.2 Comparison of F1 values for four classifiers with different page feature numbers

图2是对于在页面内容检测部分,对于不同特征数的情况,4种分类器的F1比较. 通过以每篇文档中权重由大到小排名前2、5、10、15、20的词为基准提取特征,可以得到图中横轴的4个特征数. 从图中可以明显观察出线性SVM分类器的F1最高,并且当特征数为1 893个时效果最佳. 当特征数从1 893个继续增加分类器的效果都会相对降低. 笔者认为,特征个数的选取不能无限制的增加,而应该以实际情况选取. 本次实验样本总数为4 000个,而当特征个数逐渐增加的过程中,样本总量却没变,造成维度较高,分类器训练和测试不能达到很好的效果.

6 结论

本文通过实验对比朴素贝叶斯、KNN和SVM算法针对钓鱼网站的分类效果. 对于以URL特征的实验中,朴素贝叶斯分类器的效果相对较差,而其他分类器相差不大;而对于特征维度较高的页面内容特征的实验中,线性SVM分类器表现出了不错的效果,准确率和召回率都高于其他分类器. 对于英文类页面内容,通过实验对比选取最佳特征数量,改良后的线性SVM分类器检测准确率可以达到96%. 针对研究存在的不足,后续研究工作主要对两方面进改进:

1)对特征优化,在特征提取前可以加入黑白名单过滤;

2)SVM方法中核函数及其参数的选取,SVM核函数还可以选择多项式核函数进行比较. 模型完善后创建web应用,可以部署到线上服务器,为用户提供钓鱼网站检测的一项应用服务.

猜你喜欢
贝叶斯分类器页面
刷新生活的页面
学贯中西(6):阐述ML分类器的工作流程
答案
基于朴素Bayes组合的简易集成分类器①
让Word同时拥有横向页和纵向页
基于贝叶斯网络的海盗袭击事件影响因素
一种自适应子融合集成多分类器方法
租赁房地产的多主体贝叶斯博弈研究
租赁房地产的多主体贝叶斯博弈研究
贝叶斯公式的应用和推广