基于SURF算法的Android恶意应用钓鱼登录界面检测
徐强, 梁彬 , 游伟, 石文昌    
中国人民大学信息学院,北京100872
摘要:针对恶意应用以伪造目标应用登录界面的方式进行钓鱼攻击,该文提出了一种基于计算机视觉技术的检测方法.该方法利用SURF算法度量当前登录界面与目标应用登录界面的相似度,进而实现对含有钓鱼登录界面的恶意应用的检测.该文最终在Android平台上实现了一个原型检测系统,用于检测钓鱼登录界面.实验结果表明,所提出的检测方法可以有效地辨别钓鱼登录界面.
关键词钓鱼攻击    SURF算法    Android    
Detecting Android malware phishing login interface based on SURF algorithm
XU Qiang, LIANG Bin , YOU Wei, SHI Wenchang    
School of Information,Renmin University of China, Beijing 100872, China
Abstract: A detection method was developed based on computer vision technology to deal with the malicious application that makes phishing attacks through faking the login interface of the target application. The method detects malicious applications containing phishing login interfaces by measuring the similarities between the current login interface and the target application login interface using the SURF algorithm. A prototype system was implemented on the Android platform to detect phishing login interfaces. The experimental results indicate that the proposed detection method can effectively identify phishing login interfaces.
Key words: phishing    SURFalgorithm    Android    

钓鱼攻击是攻击者利用欺骗性电子信息或伪造Web站点,意图引诱用户泄露敏感信息的一种网络诈骗活动。钓鱼攻击并不是一种新的攻击方法,但却是威胁最大的网络攻击之一,最新的调查报告显示[1],因欺诈信息、 假冒网站所引发的网络安全事件仍然在网民遇到的各种安全问题中占有相当比重。此外,钓鱼攻击是一种社会工程攻击[2],其危害范围在逐渐扩大,越来越多的钓鱼攻击发生在与人关系更加密切的手机设备中。

目前,Android系统在手机操作系统的市场份额中占据领先地位。由于很多用户并不重视手机的安全性,导致容易将恶意应用安装到手机上。恶意应用会给手机安全带来严重危害,一些恶意应用通过钓鱼手段获取用户隐私及敏感信息。

恶意应用通过嗅探用户操作,在用户打开目标应用时,显示一个伪造的目标应用登录界面。由于该钓鱼界面与目标应用的登录界面高度相似,用户单凭人眼无法辨别真伪,很容易在钓鱼界面中输入个人账户信息,导致用户隐私信息被恶意应用窃取。

针对以上攻击情景,本文运用计算机视觉技术,提出了一种基于SURF算法的钓鱼登录界面检测方法。通过对图像进行特征检测和匹配来计算当前登录界面与目标应用登录界面的相似度,进而判定该界面是否为钓鱼登录界面,从而防止钓鱼登录界面绕过人眼的判别实施恶意应用,以达到保护用户隐私和手机安全的目的。

1 Android登录界面特征分析

在手机平台上,用户登录界面是手机应用展示给用户的门户界面。随着应用开发者越来越重视用户体验,多数手机应用登录界面的设计非常简洁,以实现简单、 快捷操作。图1列出了2款应用的登录界面,可以发现这些登录界面的设计有着较为一致的特点。首先,由于登录界面功能单一,不需要用户进行复杂操作,因此控件数量少,而且界面布局简单; 其次,作为应用的门户,登录界面上都会放置一个醒目的应用图标,对于设计简单的登录界面来说,界面上的应用图标具有很强的特征性,用户在很大程度上是通过应用图标来辨识该界面是属于哪个应用; 此外,登录界面背景图片设置简洁,颜色单一,这使得界面上的控件和图标轮廓清晰,特征明显。

图1 登录界面示例

登录界面的简单设计使得攻击者容易通过伪造界面来进行钓鱼攻击。攻击者伪造登录界面的理想情况是钓鱼界面与目标界面完全相同。在这种情况下可以将界面图像完全相同作为标准,通过进行界面图像比对实现对钓鱼登录界面的检测。而现实情况是伪造的登录界面很难与目标登录界面完全相同,如果仅以界面图像是否完全相同作为检测标准,检测效果将会大打折扣。即使攻击者可以伪造出与目标登录界面完全相同的钓鱼界面,在面对上述检测时,只需使钓鱼界面与目标界面高度相似,就会绕开检测。而且,用户也很难识别出高度相似的登录界面之间的差异,使得该类钓鱼登录界面容易获取用户的信任,导致隐私信息泄露。图2a是目标登录界面,图2b、 c是伪造的登录界面,三幅图存在差异,但人眼很难识别出。

图2 目标界面与钓鱼界面

对于上述情况,本文提出的方法是: 描述当前登录界面与目标登录界面的相似度,如果相似度在预设的范围内,那么认为该登录界面与目标界面相似,并判断当前登录界面是恶意软件的钓鱼界面。

本文提出通过对当前界面图像和目标界面图像进行特征检测和匹配来描述两个界面之间的相似度。对图像进行特征检测和匹配是计算机视觉应用的一个重要组成部分。在一幅图像中,存在一些关键点可以反映图像的局部特征,通过描述这些关键点并进行匹配,就可以依据匹配结果来判断图片的相似性。关键点的检测和匹配流水线可以分为3个阶段[3]

首先是特征提取阶段,需要在图像中找到适合的、 稳定的特征点;

第2步是进行特征描述,把检测到的关键点周围区域转化为一个紧凑和稳定的描述子;

第3步是进行特征匹配,将待比较的图像特征描述子进行匹配; 在匹配的过程中,匹配效果不但取决于特征描述算法,还取决于匹配策略,简单的蛮力匹配策略会使结果存在误报和漏报现象,因此需对匹配策略进行优化,筛选合适的匹配,再根据优化后的匹配结果计算界面相似度。

针对手机应用的登录界面,通过对界面图像进行特征检测和匹配来描述相似度是非常合适的。原因在于,登录界面布局简洁,背景颜色单一,控件边沿轮廓清晰,这使得大多数特征点都分布在控件以及界面的应用图标区域,特征点的集中有利于检测时钓鱼界面与目标界面的特征匹配。但是,由于待检测界面与目标界面并非完全一致,存在控件尺寸较目标界面有微调、 控件位置有偏移等情况。此外,屏幕视图旋转为横屏也会对检测带来干扰。因此,所选择的特征点检测算法需要具有尺度缩放和旋转、 平移保持不变的特性。这样不但可以提高特征检测的稳定性和准确性,同时也使得攻击者很难通过微调界面的方式来绕过检测。

2 方法及实现 2.1 SURF算法

Lowe[4, 5]提出和改进的尺度不变特征变换(scale invariant feature transform,SIFT)算法是一种重要的图像识别算法。SIFT算法的优点在于对旋转、 尺度缩放、 亮度变化保持不变性,匹配能力较强。但其缺点也很突出,算法数据量大、 复杂度高、 耗时长,并不适用于处理能力有限的手机设备。

Bay等[6]所提出的加速鲁棒特征(speeded up robust features,SURF)算法是一种稳健的图像特征描述算法。该算法是SIFT算法的加速版,不但保持了SIFT算法尺度缩放和旋转、 平移不变的特性,而且在稳健性上也更好。

本文运用SURF算法来实现对登录界面的特征检测并完成对特征点的描述。图3显示了对登录界面进行SURF检测后的特征点分布,可以发现检测出的特征点分布较为集中,主要分布在应用图标以及控件区域。

图3 SURF算法检测出的特征点
2.2 匹配策略与相似度描述

从图像中提取特征点及其描述子后,需要在图像间建立特征点之间的匹配。由于伪造的登录界面与目标界面会存在差异,通过SURF算法得到的特征点及其描述子也会存在差异。如果直接使用蛮力匹配方法有误匹配现象,这会影响相似度的度量,因此需要对匹配进行优化,筛选出优质匹配,进而依据匹配结果,计算出界面相似度,最终判断界面相似性。

本文提出通过设定最近邻距离比率(nearest neighbor distance ratio,NNDR)[7]作为匹配策略。设DA为目标描述子,DB和DC是它的两个最近匹配,d1和d2则分别是这两个匹配的欧式距离,可以得到最近邻距离比率:

$$NNDR = {{{d_1}} \over {{d_2}}} = {{|{D_A} - {D_B}|} \over {|{D_A} - {D_C}|}}$$ (1)

设定最近邻距离比率阈值(一般设置为0.8)[8] ,只匹配阈值范围内的特征描述子,从而实现匹配的优化。图4是使用暴力匹配和优化后匹配的效果比对,可见优化后的匹配可有效减少误匹配数量。

图4 匹配效果

在优化匹配后,就需要描述两幅界面图像的相似度。假设A、 B分别是待检测界面与目标登录界面特征点的集合。则A、 B的关系可以抽象为图5所示的文氏图。

图5 特征点关系

设集合C是两个界面共有的特征点集合。则如图5所示,图5a中C=A=B,表示两幅图像特征点完全一致; 而在图5b、 c两图中,分别有C=B∈A 和C=A∈B,表示一幅图像包含了另一幅图像的特征点; 图5d中C=A∩B,表示两幅图像中只有部分特征点重合; 图5e中C=A∩B=Φ,表示两幅图像没有相同的特征点。

由以上分析可知,不论A、 B的范围如何,总存在如下表述:

$$C = A \cap B$$ (2)
假设集合C中的特征点数为N,集合A、 B中的特征点数分别为NA、 NB,则取最大值有 N=min NA,NB ,设最优匹配的数目为Nm,可定义R来描述图像相似度:
$$R = {{{N_m}} \over N} = {{{N_m}} \over {\min \left\{ {{N_A},{N_B}} \right\}}}$$ (3)

2.3 Android平台上的实现

本文实现了一个原型检测系统,系统流程图如图6所示。系统中预先存储了目标应用的登录界面图像。检测开始后,系统首先会提取当前界面图像,并将其保存到手机中。

图6 系统流程图

然后,系统会利用SURF算法检测所提取界面图像和目标界面图像的特征点及特征描述子。为了在Android平台上实现SURF算法,系统运用了OpenCV技术。OpenCV是一个开源的计算机视觉库,并且已经实现了SURF算法组件[9],但由于其采用C/C++语言编写,因此需要利用JNI技术和Android NDK工具将本地C/C++代码实现的SURF算法组件移植到Android平台上。 JNI(Java native interface)是Java语言提供的Java和C/C++相互沟通的机制 ,Java可以通过JNI调用C/C++代码。Android NDK(Android native development kit)开发工具集可以使Android开发者更方便地通过JNI机制实现Java和本地C/C++进行交互。在移植时需要将本地C/C++代码通过Android NDK编译生成Android可使用的.so库文件,然后通过JNI机制使用Java调用.so库文件,最终使用Android SDK生成Android平台应用程序[10]

获取到两幅图像的特征描述子后,需要对特征点进行匹配,匹配策略是通过设定最近邻距离比率阈值,筛选出最优的匹配。此时系统已经获取到了两幅图像中的特征点数目和匹配数目,就可以依据本文所述的相似度算法计算出两幅图像的相似度。

系统预先设定了一个相似度目标值区间,将得到的相似度与该区间作比对。如果相似度在这个区间内,就认为当前界面与目标登录界面相似,该界面可能是钓鱼界面,并对用户发出警告消息; 如果相似度不在该区间内,那么认为该登录界面与目标登录界面不相似。

3 实 验

为了测试本文提出的方法对钓鱼登录界面的检测能力,实验选择Facebook应用的登录界面作为目标界面。图7是所选取的实验图像,其中,图7a是Facebook登录界面原图,图7b是界面旋转为横屏时Facebook的登录界面,图7c是伪造的钓鱼登录界面,图7d是其他应用登录界面。

图7 实验检测界面

图7a 为目标界面,通过SURF算法分别对图7a、 b、 c、 d进行特征点检测并对特征描述子进行匹配,最终计算出相似度并做出判断。实验中设置NNDR的阈值为0.8,所得的匹配效果如图8所示,实验数据如表1所示。

表1 登录界面检测结果
对比(图8)特征点数匹配数相似度结果
(a),(a)63,63631.000相同
(a),(b)63,49300.612相似
(a),(c)63,59310.525相似
(a),(d)63,46 60.130不相似

表1中的实验数据可以看出,使用本文提出的方法对登录界面进行检测,对于完全相同的两幅图像,特征匹配后的相似度为1.000,匹配数与检测出的特征点数一致(如图8a); 而从图8b、 c的匹配结果,可以看出在界面旋转、 尺度微调、 位置变换等干扰的情况下,使用本文方法仍然可以计算出图像间有较高相似度,并能判定出两个界面相似; 由图8d所示的检测结果表明,对于两个差别明显的登录界面,检测得到的相似度也相应很低,系统可以判定出两个界面不相似。可见,本文提出的方法在判断两个登录界面相似度上有比较好的效果和较高准确度。

图8 实验匹配效果
4 结 论

本文提出一种基于SURF算法的检测方法,以实现对Android平台钓鱼登录界面的检测。SURF算法可以较好地描述登录界面图像的特征点,其运行速度和功耗也可以被手机设备承受。本文使用最近邻距离比率来筛选优质的匹配,并通过计算界面图像间相似度来对钓鱼界面做出判断。为了测试方法的可行性,本文实现了原型系统并设计了实验。实验结果表明,本文所提出的方法对Android应用登录界面图像进行特征检测的速度较快,特征点筛选匹配效果理想,所得到的相似度检测结果可信度高,能够对钓鱼登录界面做出较为准确的判断。由于该检测方法需要采集目标应用登录界面的图像,这容易受到软件版本更新的影响,因此,如何更好地实现该方法的实际应用需要进一步的研究和探索。

参考文献
[1] 中国互联网络信息中心. 2013年中国网民信息安全状况研究报告[Z/OL]. (2013-12-19). http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/mtbg/201312/P020131219359905417826.pdf.
[2] Wikipedia. Phishing[EB/OL]. [2014-06-10]. http://en.wikipedia.org/wiki/Phishing.
[3] Szeliski R. Computer: Algorithms and Applications [M]. Springer London Science, 2010.
[4] Lowe D G. Object recognition from local scale-invariant features [C]//Proceedings of the Seventh IEEE International Conference on Computer Vision. Kerkyra, Greece: IEEE, 1999, 2: 1150-1157.
[5] Lowe D G. Distinctive image features from scale-invariant key points [J]. International Journal of Computer Vision, 2004, 60: 91-110.
[6] Bay H, Ess A, Tuytelaars T, et al. SURF: Speeded up robust features [C]//9th European Conference on Computer Vision. Computer Vision-ECCV 2006. Graz, Austria: Springer Berlin Heidelberg, 2006: 404-417.
[7] Schmid M. A performance evaluation of local descriptors [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2005, 27(10): 1615-1630.
[8] 白延柱, 侯喜报. 基于SIFT算子的图像匹配算法研究 [J]. 北京理工大学学报, 2013, 33(6): 622-627.BAI Yanzhu, HOU Xibao. An improved image matching algorithm based on SIFT [J]. Transactions of Beijing Institute of Technology, 2013, 33(6): 622-627. (in Chinese)
[9] OpenCV. Feature Detection and Description [EB/OL]. [2014-06-12]. http://docs.opencv.org/modules/nonfree/doc/feature_detection.html.
[10] 王家林. 细说Android 4.0 NDK编程 [M]. 北京: 电子工业出版社, 2012.WANG Jialin. Elaborating Android 4.0 NDK Programming [M]. Beijing: Publishing House of Electronics Industry, 2012. (in Chinese)