2015年全国大学生信息安全竞赛作品报告作品名称:Wi-Fi反钓卫士——基于Android平台的Wi-Fi安全检测软件电子邮箱:791060802@qq.com提交日期:2015年7月31日填写说明1.所有参赛项目必须为一个基本完整的设计。作品报告书旨在能够清晰准确地阐述(或图示)该参赛队的参赛项目(或方案)。2.作品报告采用A4纸撰写。除标题外,所有内容必需为宋体、小四号字、1.5倍行距。3.作品报告中各项目说明文字部分仅供参考,作品报告书撰写完毕后,请删除所有说明文字。(本页不删除)4.作品报告模板里已经列的内容仅供参考,作者也可以多加内容。目录1.摘要2.作品概述a)背景分析b)相关工作c)特色间接3.作品设计与实现a)技术方案b)软件设计c)系统流程d)模块功能实现4.作品测试分析5.总结6.参考文献摘要随着Wi-Fi技术的普遍使用,Wi-Fi安全形势日益严峻。在免费Wi-Fi提供便捷上网的同时,“钓鱼Wi-Fi”时刻威胁着用户的隐私信息安全和财产安全。针对免费Wi-Fi的主要安全风险——“钓鱼Wi-Fi”问题进行防范,其重点在于提高用户的Wi-Fi连接安全意识,通过在用户Wi-Fi连接时评估Wi-Fi安全性以识别“钓鱼Wi-Fi”,并提醒用户,避免连接“钓鱼Wi-Fi”,从而避免隐私泄露和经济损失的发生。该软件是一款主要针对Wi-Fi安全问题,对接入的网络做出安全检测的手机应用。该应用是基于安卓平台下开发,做到对网络环境信息进行识别,并对其做特征检测;同时对所在Wi-Fi网络进行主动探测例如路由跟踪等,通过测量数据包在网络中处理和响应结果获知网络状态;将获取的数据提交到云端,对所连接的Wi-Fi网络安全进行评估,对于可能存在风险的Wi-Fi提交危险警告给用户进行最终决断。本文在对“钓鱼Wi-Fi”的命名特征、网络环境、安全性等进行分析的基础上,提出基于多特征识别技术和多特征交叉检测的Wi-Fi安全性评估方法,以下是实现内容。本作品的测试结果,突出效果。关键词:Wi-Fi安全;第一章作品概述1.1背景分析1.1.1国内移动终端的发展现状2011年初数据显示,仅正式上市两年的操作系统Android以其极大优势,发展空间更胜一筹,超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。业界预计,到今年底时,中国将拥有5亿智能手机用户.1.1.2移动互联网时代的Wi-Fi安全威胁随着移动互联网在近几年的飞速发展,WIFI已成为商家、家庭、单位不可或缺的一部分。随着通过移动互联网访问的应用越来越多、愈发便捷,在各种利益的驱使下,不法分子们开始逐渐将作恶手段升级并转移至其他阵地,移动互联网逐渐成为信息安全的重灾区。根据调查报告显示:在Android用户中有49.75%的人会使用Wi-Fi联网,但仅有49.14%的人会关注安全问题。而在如今移动应用火热的背景下,用户的各种上网账号、网银密码、隐私文件等私密数据,都会通过这一陷阱而被黑客截获,那么之后所造成的影响及损失,将是不可估量的。1.1.3WiFi安全防护的缺乏从今年3.15WiFi安全威胁曝光至今,可以说这些威胁仍然充斥在整个网络中,但是相关安全软件公司却罕有涉及这一领域,关注的重心依旧停留在对电脑等大型用户机上,这就使得市场上对手机用户的WiFi安全防护一直是一个薄弱环节。1.2相关工作1.2.1对其它WiFi安全软件信息收集WiFi安全助手:该软件仅仅对WiFi是否连接给出一个提示。提供可信WiFi热点,但是只有一些类似CMCC等知名WiFi,但是对于一些极强伪造性的钓鱼WiFi来说,不具备任何识别能力。360手机助手V6.2.1.1053这是构建一个类似VPN通道技术,利用隧道技术对信息进行加密传输,但是并不提供对WiFi安全检测的功能。百度卫士V6.7.0百度卫士没有提供任何关于WiFi的安全功能WiFi管家该软件也不提供任何WiFi安全检测功能。以上是我目前找到的安卓平台下的一些涉及WiFi的安全软件,可以看见,无论是否存在安全检测的功能,他们都不会告知用户如何确保WiFi安全,甚至一些安全软件都没有提供对手机WiFi安全的防护。但是时下WiFi的安全问题又亟待解决,我们便提出了针对WiFi安全开发一款基于安卓平台的WiFi防护软件。1.2.2异常Wi-Fi表现要对WiFi安全进行有效防护,就要先了解其危险WiFi的情况。因此,根据现阶段针对WiFi的恶意攻击,我们大致可以将其归为两类:人为主动构造危险WiFi、安全的WiFi网络环境中存在用户恶意对他人攻击。而部分危险WiFi可以根据用户接入WiFi后的一些行为表现特征可以判断出网络中可能存在威胁。这些危险特征在用户接入时主要具体表现在以下几个方面:1、异常跳转未知网页2、不提供数据交互服务3、DNS异常1.2.2Wi-Fi异常检测上述几类都是在用户前台可视界面中可以直观显现出来的,但是,现阶段钓鱼WiFi的构造越来越复杂,也愈加接近正常WiFi,这些无疑使检测出异常的难度大大增加。我们根据所学理论并结合借鉴现阶段一些已存在的电脑WiFi检测软件,我们计划将从以下几个方面入手对WiFi进行判断:1、WiFi的热点信息2、DNS信息3、ARP检测4、网络中其它用户状态但是这些单一的侦测特征的结果往往不能够有效结合体现出WiFi的安全性,因此就需要人为统计计算,所以,提出使用贝叶斯网络对各项特征类计算得出最终的安全概率。1.3特色简介1.3.1侧重考虑用户被其它用户主动攻击时下WiFi安全的检测软件对用户所在的网络环境检测大都止步于WiFi热点信息以及网关服务器异常判断,可以说绝大部分忽略了对其它接入用户行为的检测,而我们会对其它用户行为检测,将WiFi环境中存在Kali主机、存在网卡开启混杂模式主机、发生ARP攻击都将其纳入对WiFi安全性的判断规则。1.3.2一种基于贝叶斯网络的Wi-Fi安全检测方案钓鱼Wi-Fi的构造往往比较复杂,一般会同时采用多重迷惑手段,建立十分接近于真实网络的Wi-Fi环境,仅仅基于本地的安全检测识别的内容有限。本软件将采用基于贝叶斯网络的Wi-Fi安全检测方案,手机只要收集必要的数据,进行简单整合之后,交给贝叶斯网络处理即可得到结果。在云端,我们将采集大量Wi-Fi相关安全数据,通过机器学习,建立一个Wi-Fi安全识别库。应用这一个安全识别库,利用贝叶斯算法将手机上传的数据进行计算,得出对手机所连接Wi-Fi的安全评估结果,将结果返还给用户。第二章作品设计与实现2.1技术方案针对用户可能面临的两大类WiFi安全威胁,我们提出了个工作系统,主要完成对WiFi信息的收集以及对用户的告警,实现对接收的信息分析判断并回执结果。2.1.1被动信息获取1、WiFi热点信息获取调用系统函数,获取SSID、IP、加密方式信息。将这三个信息上传贝叶斯网络。2、ARP流量统计我们将手机一定时间内收到的包过滤,得到只有ARP包的流量数据。根据ARP流量数据判断这个时间内收到的ARP包的个数,将数量上传至贝叶斯网络。2.1.2主动探测网络1、DNS信息获取首先让手机对某一知名域名发出请求,通过服务器将解析回一个IP地址之后我们获取IP地址后直接将解析回的IP地址上传至贝叶斯网络2、路由信息获取自主构建traceroute函数,主动ping某一地址,不需要把整个路由表都录下来,仅仅只需要第一跳的IP地址信息。因此我们获取到第一跳IP地址后将信息上传贝叶斯网络。3、主动探测网络中渗透攻击主机渗透主机通常会固定打开一些特定的端口,而在无法准确获取整个网络拓扑时,这些特定端口开启与否就是我们对主机类型的判断,我们向外广播探测包,根据回复的GTL字段判断是否存在Linux主机,同时对端口进行探测,等待一定时间,根据收到的回应包来判断是否存在渗透攻击主机,并将信息传至贝叶斯网络。4、主动探测网络中开启混杂模式网卡的主机对于存在开着混杂模式网卡的主机的判断,同样是构建特殊的探测包,由于混杂模式会让所有包通过硬件过滤器,所有反应都是内核完成,因此,我们广播探测包,根据回应回来的消息判断是否存在混杂模式网卡的主机2.1.3安全概率计算对用户的信息整理统计计算安全概率,我们决定使用贝叶斯网络。有八项类:SSID、IP、加密方式、路由信息、DNS信息、ARP流量统计、Kali主机判断、混杂模式主机判断。这八大类去利用大量数据对网络进行训练,得到各项类的先验概率供给网络计算下次输入的数据。在消除关联性后,我们将其与存储在云端的行为准则比较,获取其先验概率,各个特征都将得到的先验概率输入网络中可以计算出最终安全概率,同时将这一安全概率提交。2.2软件设计我们在对系统提出规划设计时,首先考虑到贝叶斯网络需要学习数据训练才能投入使用,其次贝叶斯网络的对计算的需求较为苛刻,而且该网络同样需要数据的再学习使网络中的各项先验概率越来越迫近真实,优化用户体验。所以我们打算利用时下热门的云端网络技术,将我们这款软件设计成具有前后台分隔的系统。将贝叶斯网络置于云端服务器上,既保证计算效率同时又能收集大量用户使用软件后的结果反馈再进行自训练。前台系统我们针对上述的判断技术方案收集所需要的信息,将信息传递到后同时根据后台反馈的信息对用户发出告警。后台系统我们打算采取利用贝叶斯网络计算安全概率,将收集到的特征信息量化后通过训练后的贝叶斯网络,得到最终的概率后,返回给用户。2.3系统流程2.4模块功能实现2.4.1被动信息获取模块1、热点信息获取针对WiFi热点信息获取,主要利用系统函数获取WiFi的热点信息。通过函数将会获取所链接WiFi的热点信息,其中包括:SSID、加密方式、IP地址、Mac地址、DNS信息、WiFi信号强度将SSID、加密方式、IP地址上传至服务器2、ARP流量统计借助TCPdump脚本,(安装脚本需要手动获取权限,这个没办法手动安装,这要不要写进来)运行如下指令,手机流量拦截过滤,只收集ARP的包。Runtime.getRuntime().exec(/data/local/tcpdump-p-vv-c200-s0-w/sdcard/test.caparp);十秒内收集到所有的ARP数据包流量,由于被手机取包分析格式速度的限制,我们决定简化分析过程,将获取的流量大小除以ARP包格式的最小大小,得到ARP包数量。将包的数量上传。2.4.2主动探测模块1、DNS信息获取我们选取百度域名作为请求的域名。对百度域名发出一个ping包,会回执一段字符串信息给用户,使用正则表达“d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}”将xxx.xxx.xxx.xxx格式的信息获取出来,将获取到的解析过的IP地址上传至服务器2、路由信息获取自主构建traceroute文件,将tracert函数存储在其中,为脚本搭好环境后,执行以下指令,就可以获取回执回来的路由信息cmd=.+app_path+/traceroute+IP地址“newThread(newRouteRun(cmd)).start();在这里我们对IP地址选择仍然是百度,IP地址选取为115.239.210.27对于回执的第一跳信息依旧使用正则表达式“d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}”将第一跳信息获取出来,上传给服务器。2、渗透攻击主机存在的判断我们向外广播探测包,根据回复的GTL字段判断是否存在Linux主机,同时针对渗透攻击主机一般会开放的功能端口4444号端口构建探测包,向网络广播,仅仅只有打开了4444端口的主机会对构建的包产生响应,当收到了对我们探测包的响应包就判定网络中存在渗透攻击主机。4、存在开启混杂模式的网卡的主机构建的特殊的ARP查询包,产生一个ARP查询包来解析本机IP地址的硬件地址。为了使网络上的所有节点都能够收到这个查询包,把这个包的目的地址设置为广播地址,这样,就能够到达网络中的每一个节点了。实际上,是不