基于网页噪声与N-元语法的钓鱼检测

一种利用网页噪声和N‐元语法的钓鱼网页检测算法

摘要

尽管反钓鱼解决方案备受关注,但钓鱼攻击仍然是一个重要的严重问题。本文提出了一种利用网页噪声和N‐元语法的新型钓鱼网页检测算法。首先,该钓鱼网页检测算法从可疑网站中提取网页噪声,然后使用N‐元语法将其表示为特征向量。最后,计算受保护网站与可疑网站之间特征向量的相似度。在钓鱼网站样本数据上的实验结果表明:该算法在检测一个网站是否为钓鱼网站方面,比现有算法更有效、准确且快速。

关键词 :钓鱼攻击 Anti-phishing Web噪声 N-gram

1 引言

钓鱼攻击,这一术语始于1996年,是一种在线身份盗窃[1, 2]。最初,“钓鱼攻击”用于描述窃取美国在线密码及相应账户的行为。如今,典型的钓鱼攻击通常采用通用的“诱饵”。例如,钓鱼者通过复制目标网站,伪装成大型银行机构或热门在线拍卖网站。然而,在过去十年中,钓鱼攻击的定义已不断扩展。如今,钓鱼者使用多种攻击方式,如二维码、电子邮件、木马键盘记录器和中间人攻击,来欺骗受害者。

钓鱼攻击行为虽然简单,但造成的损害却极为巨大。根据中国亚太地区最近的安全报告,每年有4500万成年人因钓鱼攻击直接损失总计300亿人民币[3]。但钓鱼攻击造成的损害并不仅限于金钱财产。间接损失更为严重,包括生产力损失、帮助台接听电话的维护成本、恢复成本,或对在线组织声誉的损害。这反过来又导致了金钱、资源和时间上的重大损失。

另一个现象是,钓鱼者仅模仿一小部分目标站点。为了获取经济利益,钓鱼者通常会选择知名的在线电子商务网站。例如,2016年2月提交给中国亚太地区的唯一钓鱼攻击网站数量为17,116个。其中,淘宝、工商银行、建设银行和中国移动这四个品牌成为钓鱼活动的目标,占据了总数的99.05%[4]。

迄今为止,人们提出了相当多的解决方案来缓解钓鱼攻击[5–9]。总体而言,以往的研究工作可分为基于浏览器端的解决方案和基于服务器端的解决方案。基于浏览器端的解决方案通常将反钓鱼措施“插件”嵌入终端用户的浏览器中。利用启发式方法、相似度、身份识别和机器学习的优势,这些措施能够自动检测钓鱼网站,并警告终端用户远离钓鱼陷阱。然而,这种方法完全是被动的,其有效性取决于用户的能力。众所周知,终端用户也可能缺乏识别钓鱼攻击的能力。

另一种被广泛采用的方法是基于服务器端的解决方案,该方案要求通过在线组织认证来防御钓鱼攻击[10–16]。典型的做法是在服务器端消除钓鱼问题,试图阻止钓鱼邮件到达潜在受害者。业界在对抗钓鱼攻击时严重依赖人工验证的URL黑名单。另一种认证方法是在服务器和终端用户之间共享一个密钥,例如图像、水印、指纹或密码。然而,邮件过滤器和黑名单验证不可避免地会导致误报和漏报,而密钥共享则需要用户意识和先验知识。

这些方法虽然取得了一定成果,但增加了用户体验成本,且面对如今钓鱼攻击快速变化、伪造技术日益精良以及海量网络数据的情况,检测结果的准确性始终不理想。本文提出一种利用网页噪声和N‐元语法的新型钓鱼网页检测算法。首先,提取来自可疑网站的网页噪声,然后使用N‐元语法将其表示为特征向量。最后,计算受保护网站与可疑网站之间特征向量的相似度。在钓鱼网站样本数据上的实验结果表明:该算法处理过程中网页特征具有稳定性,且该算法相比现有算法能更有效、准确和快速地判断一个网站是否为钓鱼网站。

2 算法模型

如今,对钓鱼攻击的防御主要集中在以文本或图片页面作为特征来研究防御方法。这种方法不仅增加了用户体验的成本,而且大多数算法在互联网时代无法保持高检测率和准确率,难以应对高速变化且数据量巨大的情况。基于各类钓鱼网站防御方法的优缺点分析,这些方法通常存在效率低下、过程复杂、精确率和准确性低等不足。

为了应对随着互联网发展而日益严重的网络安全问题,本文提出了一种利用网页噪声和N‐元语法的新型钓鱼攻击检测算法。

定义1

网页噪声指的是不符合应用目的的页面内容,例如导航栏、标志和联系信息、横幅广告和图像等。通常,网页噪声意味着这些信息频繁出现在来自同一组织的所有网页中。

通过研究我们发现,每个网页包含大约20%–40%的模板,且每个页面模板相对固定[17]。同时,n‐gram语言模型能够简单直接地表达各个元素词之间的概率关系。将网页噪声提取为特征来描述网站,然后由n‐gram语言模型进行处理。与那些将页面文本作为网页特征的方法相比,该方法需要处理的数据量大大减少。这种利用噪声数据表达网页特征的算法,能够以更低的成本和更高的效率更清晰简洁地实现。因此,通过测试阈值计算钓鱼网站与受保护网站之间的特征相似规则,用于检测钓鱼网站。

2.1 网页噪声提取模型

研究大量噪声样本发现,网页总噪声的内容量小且稳定。如果使用词特征并选择网页噪声作为网页特征来描述,将节省大量存储空间,显著提高网页处理效率,同时也能使最终的检测结果更加准确。

在提取噪声模型时,HTML 是一种简单的标记语言,其树形结构本身与一系列标签(如 <head> <title> <script> <style> <img> <table> 等)之间存在一定的关系,用于描述网站内容。因此,可以通过按照嵌套关系将网站中的主要标签组合起来,简单直观地描述网页,并构成 DOM(文档对象模型)树结构。此外,通过对大量样本数据的实验观察发现,网页内容通常不会出现在 <script> <style> <img> 标签中。这些标签通常包含大量链接和网页信息的描述。因此,本文通过分析标签中的噪声,可将网页源代码中的噪声分为三类,如以下表1所示:

类别 Tags
I 类 <script> , <noscript> , <style> , <图像> , <input> , <form> , <object> , <label> , <br> , <option> , <一个>
II 类 <param> , <meta> , <optgroup> , <textarea> , <area> , <map> , <ifram> , <embed>
III 类 <head> , <table> , <span> , <body> , <tbody> , <p> , <Hr> , <br> , <tr> , <td> , <dt> , <dd> , <dl> , <div> , <ol> , <ul>

分析本研究收集的网站样本数据,一类标签和二类标签中的噪声总量约占所有网站的98%。但根据统计的样本特征,二类标签在样本源中出现次数较少;甚至某些标签的出现次数为0。而三类标签包含与主题和内容相关的所有信息。

因此,我们首先将受保护的网页代码和测试网页代码解析为DOM树结构。解析后,直接从DOM树中提取I类标签节点的内容,作为该新算法的实验数据。

2.2 N‐元语法

N‐元语法是一种语言模型,能够计算文本信息中的句子概率。通过使用 n‐gram语言模型,文本信息可以以概率的形式进行描述,便于研究和计算。假设已提取网页特征,则第n个词语的出现与前n−1个词语相关。如果仅与前一个词语相关,则称其为2‐gram,记作双元模型。

定义2

在提取的网页特征中,我们假设第n个词的出现仅与它前面的n−1个词语相关,而与其他任何词语无关,因此整个句子的概率可以用每个词出现概率的乘积来表示。如果网页特征中有一个句子T,且句子T由W1, W2,…, Wn这几个词语组成,则句子T在文本中的概率为:

$$
P(T) = P(W_1W_2W_3…W_n) = \prod_{i=1}^{n} P(W_i | W_1W_2…W_{i-1})
$$

类似地,如果一个词语元素同时与前一个和后一个词语相关,则称为 3‐gram。通过观察发现,双元模型和三元模型已在实践中得到广泛应用。而四元或更高阶的算法模型由于需要大量语料库进行训练且准确性较低,适用领域相对较少。根据这一特点,选择双元模型来计算每个标签中一个词语及其前一个词语出现的概率。将结果作为噪声特征矩阵,矩阵的维度由出现词语的数量决定。

由于测试的是英文网站,将去除英文单词和数字符号作为分词标识。取两个字符之间的字母或数字每个词作为一个基本单元词。鉴于文本之间的差异,选择各个基本单元词出现的频率作为特征矩阵的元素。遍历噪声文本,记录所有词语出现的频率为m + 1。第m个+1基本单元词与第m个基本单元词同时出现的频率记为am。因此,第(m + 1)个基本单元词与第m个基本单元词在文本中同时出现的频率是:

$$
F_m = \frac{a_m}{m+1}
$$

定义3

假设一个噪声文本由n+1个元素词组成,特征词频矩阵表示为 $ m = (f_1, f_2, …, f_m) $,其中 $ f_m $ 表示第(m + 1)个元素词的频率,并且第m个元素词同时出现在文本中。例如,该文本依次由四个词语组成:“这”,“是”,“一个”,“书”。其中“这”和“是”同时出现的概率是 0.2,“是”和“一个”同时出现的频率是0.4,“一个”和“书”同时出现的频率是0.7。因此,得到该文本的特征矩阵:$ m = (0.2, 0.4, 0.7) $。

选择一个实验网站样本数据进行噪声提取。然后,对先前提取的节点文本进行字符串分割,得到所有词语。统计“一个词后另一个词出现的频率”,并将其作为“特征”保存到字典中。

通过该语言模型处理网页噪声数据,可以得到所有被测网站的噪声特征频率矩阵。当所有样本都通过此方法获取后,结果将被分类并保存为后续实验的样本数据。

2.3 相似度算法

我们选择余弦定律来检测文本相似性。假设受保护网站的特征频率矩阵为x,第i个被测网站的特征频率矩阵为yi。$ f_{xt} $ 和 $ f_{yit} $ 分别表示受保护网站特征频率矩阵的第i个元素和第i个监控网站特征频率矩阵的第i个元素。计算两个网站特征频率向量之间的余弦角度,从而确定受保护网站与被测网站的相似度。假设受保护网站为x,被测网站为yi,计算公式如下:

$$
\cos(x, y_i) = \text{sim} 1 = \cos(\theta) = \frac{\vec{x} \cdot \vec{y_i}}{|\vec{x}| \cdot |\vec{y_i}|} = \frac{\sum {t=1}^{m+1} f_{xt} \cdot f_{yit}}{\sqrt{\sum_{t=1}^{m+1} f_{xt}^2} \cdot \sqrt{\sum_{t=1}^{m+1} f_{yit}^2}}
\quad (1)
$$

3 实验结果和分析

相关实验验证了该算法的可靠性,并得出结论:该算法的准确率和召回率较高。此外,基于实验结果的研究发现,对于相同的保护站点,存在大量相似度较高的钓鱼网站。通过对实验结果中的新钓鱼网站数据进行聚类分析,客观且真实地验证了钓鱼攻击团队存在的可能性,同时进一步证实了实验中钓鱼网站阈值具有较高的实际价值。

3.1 实验数据收集

通过 PhishTank 网站(http://www.phishtank.com/)[18],我们获取用户报告的已识别钓鱼网站 URL 链接和相关 Whois 信息,并进行分类保存。本实验主要针对 PayPal 和 eBay 网站收集数据用于研究。目前,已从 PhishTank 保存了总共 4812 个钓鱼网站,其中包括来自 PayPal 的 2610 个,来自 eBay 的 2202 个。经过标签筛选后,参与实际钓鱼网站测试的有来自 PayPal 的 2490 个和来自 eBay 的 1699 个。

3.2 相似度结果与分析

收集PayPal和eBay的钓鱼网站数据,通过公式计算官方与测试钓鱼网站之间的相似度值由公式(1)得出。分布情况如图2所示。

在图2(a)和(b)中,横坐标是通过余弦公式计算出的0到1之间的值,即相似度,纵坐标是具有相同相似度的网站数量。通过图2(a)发现,PayPal受保护网站与钓鱼网站的相似度集中在0.67附近,约占总样本数据的60%。在相似度值0到0.65范围内,网站数量相对较少,仅在0.32处略有上升。图2(b)显示,eBay受保护网站与钓鱼网站的相似度集中在0.56、0.57和0.69这三个值上,尤其是在0.57和0.69处。而在0到0.3之间,其网站数量非常少。网站数量在0.3到0.56之间分布较为集中,但在0.56附近对应的相似度值的网站数量更多。

在相似度值大于0.7的范围内,网站数量最少。因此,PayPal受保护网站与被测网站的相似度值主要集中在0.67或0.65至0.67之间;而eBay受保护网站与被测网站的相似度值则分布在0.56、0.57和0.69,这三个值对应的网站数量较多。

3.3 检测相似度

为了更直观、清晰地观察本次实验的数据,通过实验观察可知相似度值数据是二维连续空间。基于以上所有信息,使用通常用于在n维连续空间中检测对象的 K‐均值方法来分析本次实验的数据。因此,可以更准确地确定钓鱼网站的阈值。

基于K‐均值聚类的特征和基于原型类别的特征,我们选择k = 7。在此计算所得的数据中,考虑到相似度值为0以及超过0.8的网站数量非常少,因此不予考虑。基于此,将相似度值设定在0到0.8之间,并划分为八个相等部分作为初始状态。我们选择区间端点作为初始聚类中心的相似度值点。接着通过K‐均值聚类算法处理实验数据,该算法步骤分为以下三个步骤:

(1) 在每个中心点对应的初始中心点与距离的相似度值之间任取一个相似度值,并计算其曼哈顿距离,然后找出最短距离。将相似度值点归入其对应最短距离的中心。

(2) 当所有对象分配完成后,计算每一类中所有相似度点到中心相似度点的平均距离,并将其设为新的中心点。

(3) 重复步骤(2)和(3),直到没有相似度值数据需要再分配为止。

因为在本实验中收集的钓鱼网站样本,一些网站源代码不包含任何所需的实验HTML标签。因此,去除那些不作为实验对象的网站。检测数据的结果如表2和表3所示。

对上图的综合观察结果进行分析,在钓鱼网站与保护站点对齐的相似度中,出现了大量相似或一致的相似度值。根据钓鱼特征可以推测,这可能是由一个或多个相同保护站点组成的、重复且具有强针对性的恶性钓鱼行为。因此,针对特定站点可设置相应的相似度阈值,以检测其是否为钓鱼网站。结合实验结果,设定 PayPal 钓鱼网站筛选的阈值范围:$ 0.65 \leq a_{\text{PayPal}} \leq 0.67 $,设定 eBay 钓鱼网站筛选的阈值范围:$ 0.55 \leq a_{\text{eBay}} \leq 0.57 $ 或 $ a_{\text{eBay}} = 0.68 $。

分类 数量 相似度中心点
0 110 0.1
1 50 0.179733203789006
2 107 0.30579304313606
3 77 0.426420700418534
4 171 0.592828124464023
5 497 0.635070781276205
6 1578 0.690915230136077

表2. 对PayPal的检测结果

分类 数量 相似度中心点
0 62 0.0265207649943965
1 47 0.20707073028211
2 106 0.339163534778367
3 97 0.430406891337013
4 242 0.512931517614603
5 432 0.56898435015218
6 713 0.686381847541975

表3. 对eBay的检测结果

3.4 精确率的检测

为了检测阈值的准确性,使用精确率来反映算法的准确性,召回率反映算法的漏报特征,并使用F值来评估检测结果。具体计算公式如下:P表示数据中第i类的精确率。R表示数据中第i类的召回率。Nc表示被正确判断的钓鱼网站数量。Np表示实际参与比较的钓鱼网站数量。N表示网站样本总数。

$$
P = \frac{N_c}{N_p} \quad (2)
$$

$$
R = \frac{N_c}{N} \quad (3)
$$

$$
F = \frac{2P \cdot R}{P + R} \quad (4)
$$

相应的数据被代入公式(2)和(3),结果如下:$ P_{\text{PayPal}} = 0.8863 $,$ R_{\text{PayPal}} = 0.8550 $;$ P_{\text{eBay}} = 0.8964 $,$ R_{\text{eBay}} = 0.8299 $。根据公式(4),可得 $ F_{\text{PayPal}} = 0.91 $,$ F_{\text{eBay}} = 0.86 $。

4 结论

该算法利用网页噪声和N‐元语法来检测钓鱼网站。与现有的反钓鱼方法相比,该算法成本较低。此外,我们选取了在网站中相对稳定的网页噪声作为特征来描述整个网站,能够提升算法的性能,同时相应的稳定性也更好。与此同时,设置了针对PayPal和eBay的钓鱼网站检测阈值,以更有效且高效地应对针对其钓鱼网站的恶意攻击。与其他算法相比,该算法计算量更少,准确性更高。同时,更能应对当今互联网的快速变化和大量数据的情况。考虑到当前互联网带来的大数据和云计算的发展趋势,未来的工作将致力于使钓鱼网站防御在检测中实现大数据化、智能化,并达到效率与性能的平衡。

在接下来的工作中,我们应该找到通用的特征项,并设计更准确和敏感的检测算法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值