前言
所谓的MITM攻击(即中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知。这个很早就成为黑客常用的手段,一会聊的315晚会窃取个人信息只是MITM最基础入门的一种攻击方式。大牛绕道,此篇小白普及篇。
目录
一、事件回顾
二、什么是MITM攻击
三、MITM攻击-信息窃取实战
四、软件测试的反思
原创,如转载还请保留出处与作者姓名Findyou,谢谢!
一、事件回顾
2016年315晚会,现场提供了一个免费WIFI,给现场观众连接。当观众玩手机APP一定时间后(有进行数据请求),315技术人员收集了观众包括姓名、电话号码、家庭住址、身份证号码、银行卡号等,观众惊恐,电视机前观众后背凉~~~
2016年315晚会观看地址: http://315.cntv.cn/special/2016/video/index.shtml
温馨提示
信息泄漏都是一些消费类的APP(OTO什么的),但是为什么不是从银行类APP泄漏?请看下文~~~
二、什么是MITM攻击
维基百科:中间人攻击 https://en.wikipedia.org/wiki/Man-in-the-middle_attack
百度百科:中间人攻击 http://baike.baidu.com/view/1531871.htm
所谓的MITM攻击(Man-in-the-Middle Attack, 简称MITM攻击,中文一般叫中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知。
MITM攻击方式有信息篡改、信息窃取,攻击技术有DNS欺骗、会话劫持、代理服务器等。
本文主要介绍的是信息窃取,维基百科的讲解决演绎实例比较适合有HTTPS什么SSL知识基础的人。此处我找了一张图,不涉汲公钥、私钥对小白折磨的基础知识。
请看图就懂:
三、MITM攻击-信息窃取实战
MITM好高深,小白不懂耶~~~,不懂没关系,根据下面步骤你就会了。咳、咳~~~~,有没有听过局域网抓包,没有那也没关系。今天不讲这个,哈哈。
信息窃取简单白话说就是:用个工具把通过WIFI(路由器)的数据都记录下来。
3.1 信息窃取的前提
当然信息不是随随便便就可以获得的,需要满足一定前提,才得获取到信息:
-
连接黑客的WIFI
不连有危险的WIFI,你就堵住了由此泄露信息的途径。三个条件中有且只有这一点,是用户你自己可以控制,不过也控制不了,4G资费贵哈,有免费WIFI怎能不蹭呢?哪个WIFI是安全,哪个是不安全的WIFI,黑客知,你不知~~~,如果你用的房东的,或者从别人那拉的网线,房东随便装个上网行为管理软件什么的,你做啥看啥都知道了,装个抓包软件,密码什么的随便看。哦,你说你公司也装了行为管理软件,没事你现在看的学习站点,领导不会找你谈话的。
-
APP须有网络数据请求
但风是个APP,不管消费不消费类的都要连下互联网,什么上网订餐、网购、团购等等...都会上报这样那样的信息,返回这样那样的数据。但此处的网络数据请求特指的是传输包含用户信息的请求,例如购买订单、历史帐单、个人设置(地址、手机)等数据请求。
-
APP请求是HTTP未加密的传输
APP基本就是HTTP(或Socket)未加密的传输,除了银行APP用HTTPS+SSL加密传输外(此处也回应此文开头的那个问题),基本上APP都很少会使用HTTPS,基本不对请求数据与返回数据进行加密, 最多只是对帐号密码传输加密(有些APP也是明文传),因手机电量什么性能的关系,大都会减少请求与处理简化,基本就是Json格式,内容明文,抓个包想看就看的,截获想改就改(篡改不是本文重点,不深入),HTTPS的也是可以的,但用户可能会察觉,也存在一定难度,但此处不深入剖析。。
3.2 安全实战
借鉴315晚会,给出一种最简单的实战思路(学习交流,请勿违法),让你了解数据如何不知不觉得被人收集的。
-
准备
1).笔记本一台
2).随身WIFI一个(不要360,手机连上360WIFI后会有一个二逼广告页弹出,这就露馅了)
3).笔记本装个抓包工具:WireShark (网上有好多不一一列举)
-
抓取数据
1).选址:找一些比较特色免费WIFI的地方,比如
Starbucks
Starbucks1
Starbucks2
2).笔记本连网,开启随身WIFI
3).随身WIFI取名,跟所在店名类似或一样规则如 Starbucks3
4).随身WIFI密码,根据情况,与所提供免费WIFI店的密码一致
5).开启WireShark,点杯喝咖啡,坐等别人连你随身WIFI,一定时间后停止抓包,分析请求数据
结果分析举例
至此,315晚会MITM攻击-信息窃取还原讲解完毕。
-
学习资料
1).热点WireShark抓包介绍: http://www.cnblogs.com/findyou/p/3491065.html
2).Fiddler代理抓包介绍:http://www.cnblogs.com/findyou/p/3491014.html
3).早前一项目密码中间人攻击的文章 http://www.cnblogs.com/findyou/p/3244917.html
说明
1).用户无感知型,如同315晚会现场信息窃取,315技术人员肯定对数据进行了处理,其抓包工具很有可能是有针对性编写的。
2).另一个代理FQ逛网页,代理服务器只要写个记录数据软件,任何通过代理服务器的数据想看就看,所以没事就不要用代理上网,如果你公司上网用代理,咳、咳~~~没事就好好干活,少看逛网,少看片~~~
-
规避315晚会免费WIFI问题建议
1).不连公共WIFI !不连公共WIFI !不连公共WIFI !
2).手机用4G网络进行购买、包含个人信息的查询!
3).个人信息没事别用真信息
4).给有问题APP提安全问题,天天骚扰客服!要不你就换安全一点的APP,测试方式请见文中安全实战。
四、软件测试的反思
现在的APP为什么没有进行安全测试?大约想到以下几点(抛砖引玉)
1.无安全意识:
研发架构设计就未曾考虑安全,测试负责人太水,测试人员经验不足。好多APP大都是创业公司,来个人已不容易,高薪低能(抬高了软件人员薪资也是件好事,呵呵)。大部分只考虑背景是否BAT公司,很少会去考虑创业型公司人员真正的需求:人员的专业能力、综合能力。当队伍大了时精力又花在"内耗"。测试人员经验、能力、全局观都达不到要求,最后一道防线薄弱,于是乎有这样多的APP产品。你会问,不是有很多云平台也做安全,那做的只是一部分APP防反编译,主要目的是保护APP源码,保护公司利益的,非直接的用户利益与数据的。
题外话:其实我觉得高薪低能应该也是导致很多APP项目流产的原因,绝大数原因招了不合适的人员,现1年半工作经验会个只会APP功能测试,都开口10K、12K叫,遇到老板面试谈得来看心情给,遇到更水的测试面试,觉得都是大牛。近年流行创业,创业型公司多了去,有钱任性的烧,不死那才怪。
2.狭隘安全测试:
还是能力与视角的问题,说安全测试焦点就在帐号、密码是否安全,是否加密传输这一块。其实安全测试范围应该很广,所有泄漏用户与自身业务数据的可能都应该进行考虑,所有伪造的数据顶替冒充真正用户的也要进行考虑。
3.项目特性导致时间不够:
因需求多变,功能测试已费尽心力(自动化?多变的项目你搞UI自动化,滚犊子),目光聚焦在功能上,后续测试前期的思考慢慢就淡忘了,到功能稳定了,说要上线了,性能、安全都没搞,当然公司会考虑的成本问题,用户量没有,不值去做这个安全加固,先把日存活、月存活数据给弄起来先~~~
4.测试言轻:
面试过很多测试,有要求对方对测试岗位做一个解读或他的理解,很多有意无意会带进一句测试就是背锅的天天被骂。片面的说一说这个问题,很多时候领导或项目经理会觉得测试过于夸大问题,小题大做,让我想到扁鹊和他哥哥故事,事情在没有造成损失前都不是问题,在造成损失后,测试为主要责任~~~
问责:为什么会漏测?
测试:这个安全问题很早就有提,当时确认说小问题不影响,客户要连不安全的网络,那是客户应该为自己的行为负责!
问责:测试报告有没有提风险?有邮件反馈给测试负责人?有没有提问题单,单号是多少?
测试:。。。。(卧槽、口头沟通、没有提单、没有邮件、没有纳入测试范围....)
最后,借用一句话做为结尾:安全无小事!