Press "Enter" to skip to content

基于卷积神经网络的二维码钓鱼检测

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

0x01前言

 

​ 网络钓鱼是攻击者利用欺骗性的邮件和伪造的web站点进行网络诈骗,受害者往往会泄露自己的个人信息,如身份证、信用卡、各类密码等。诈骗者会将网站伪造的和正常网站一样,可以是更新flash界面、游戏活动登录领取奖励等界面,从而植入木马或者盗取用户信息。然而最近新出现的扫描二维码实现钓鱼也频频出现在各种场合。

 

​ 最近偶然看到 Kali Linux 上出现了一种二维码的恶意链接钓鱼方式(以前没怎幺使用过,没太关注)。这种方式比直接使用URL进行钓鱼要更加隐蔽一些,下面使用 TIM微信 截屏证明了。于是就想能不能使用卷积神经网络识别含有恶意链接的二维码,最终发现使用CNN神经网络识别恶意的URL的成功率竟然能达到80%。

 

Kali Linux 生成恶意二维码

 

点开 Social-Engineer Toolkit

 

 

然后就能看到 QRCode Generator Attack Vector

 

 

以百度为例,生成一个二维码

 

 

生成的二维码如图所示,使用微信扫码直接能打开百度网页。

 

 

卷积神经网络识别恶意二维码

 

数据准备

 

从Kaggle数据上下载了一些恶意的钓鱼URL,数据情况如下:

 

 

然后清洗数据集(删除过于长的url),使用python直接转换成二维码的形式:

 

qr = qrcode.QRCode(version=2, error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=5, border=0) #设置二维码的大小
qr.add_data("https://www.baidu.com")
qr.make(fit=True)
img = qr.make_image()
img.save("./baidu.png")

 

使用上面生成的二维码图像如下,这时候使用微信和qq直接扫二维码就能直接打开网页

 

 

并且可以看到使用 微信qq 扫描二维码打开的网页并没有地址栏显示URL,如下图:

 

 

 

左图是使用TIM扫码打开的网页,右图是使用微信扫码打开的网页。均没有显示url地址栏,这样的钓鱼方式比起直接使用url钓鱼更加隐蔽。

 

检测模型的搭建

 

卷积神经网络模型由两个卷积层、两个池化层以及一个全连接层组成:

 

 

卷积神经网络模型源代码如下:

 

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) # 32个过滤器,过滤器大小是3×3,32×26×26
model.add(MaxPooling2D(pool_size=(2, 2)))# 向下取样
model.add(Conv2D(64, (3, 3), activation='relu')) #64×24×24
model.add(MaxPooling2D(pool_size=(2, 2)))# 向下取样
model.add(Dropout(0.25))
model.add(Flatten()) #降维:将64×12×12降为1维(即把他们相乘起来)
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax')) #全连接2层

 

模型评估

 

使用测试集40000多个图片对模型迭代训练到12个epoch,模型准确率能够高达80%左右。这里我尝试了再次多增加几个epoch,但是验证集的准确率并没有增加,二训练集的准确率增加了,说明模型过拟合了,因此准确率只能达到80%左右。损失值和准确率曲线变化图如下

 

 

左边是损失值函数图像,右边是准确率图像。

 

偶然,我的发小说一个不认识的人给他发了一个二维码,咳咳。于是突然想起自己刚写的基于CNN的恶意二维码识别检测。

 

 

 

只有两个类别,所以有两个数字。分别对应是 正常url的概率恶意url的概率 ,可以看到我朋友发的这个二维码包含恶意url的概率直接是100%。

 

总结

 

目前钓鱼的方式层出不穷,使用二维码钓鱼也算是另辟蹊径了。关于如何提高针对二维码钓鱼的攻击还需有待提高。

 

代码托管

 

https://github.com/unihac/Machine-Learning/tree/master/Malcious%20QR%20code

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注