论如何黑掉舍友的网络账号

WeChat Screenshot_20180227203721

前几天完了Hacknet写了篇关于如何使用漏洞进行攻击的博客,但是有时候想要拿到某些信息入侵别人的电脑就小题大做了,这篇博客来讲一讲如何在局域网中进行网络欺骗。

这篇博客用途为教育意义,请勿拿其中提到的方法在公共网络中使用。

首先来说一说这次要干什么,就拿我们学校的登录页面做例子吧 https://login.shef.ac.uk ,这次讲述如何窃取局域网中其他人的登录密码。

1 概述

这次得操作还是会在局域网环境中进行,使用一台Linux Mint电脑作为攻击者(Attacker),使用我自己的Google Nexus 6P作为被攻击的对象(Victim)。

下图是网络布局:

我的笔记本电脑作为攻击者IP为172.20.10.5,手机IP为172.20.10.6,路由器的网关地址为172.20.10.1 。

2 中间人攻击(Man-in-the-Middle Attack)

我的手机若想访问互联网,那么他会将请求发送到路由器,路由器再访问互联网,然后将网上的信息传回给手机。那么攻击者根本没有机会看到手机和路由器之间发送了什么,也看不见路由器向手机传回了什么信息。那么,有一种攻击手法叫做中间人攻击(MITM),这是一种很常见的攻击手段,攻击者会通过欺骗方式劫持手机和路由器之间的消息,导致所有受害者的发送给路由器的信息都会被发送到攻击者,并由攻击者进行转发传送到路由器,通过这样的方式,受害者想要发送的消息通通经过攻击者的电脑。

 

3 ARP欺骗 (ARP Spoofing

那么既然知道了中间人攻击的大致原理,那么具体有什么攻击手段呢,最常用的手段就是ARP欺骗。

在局域网中,区分不同的机器并不是使用普通的IP地址,所有的网络流通都是通过MAC地址流通的,比如我的电脑(攻击者)IP为172.20.10.5,他的MAC地址可能为 aa-bb-cc-11-22-33 之类的序列,这个序列在一台机器上是惟一的,路由器通过这个地址为我发送消息。这样的IP地址与MAC地址的映射是通过ARP来实现的。

ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议,处于OSI中的网络层。在所有使用tcp/ip协议的电脑中,都会有一个缓存表,缓存表里面IP地址与MAC地址一一对应,通过这张ARP缓存表,可以知道每一台机器的IP地址对应的MAC地址是什么。

就像刚才说的,路由器(网关+交换机)与整个网络中的其他设备都会有这样一张ARP缓存表,那么这张缓存表是怎么得到的呢?比如路由器想要向手机(172.20.10.5)发送消息,但是缓存表里面没有172.20.10.5的MAC地址,那么路由器将会发送一个广播,询问整个网络里所有的设备 172.20.10.5 的MAC地址是多少,其中真正拥有这个IP地址的设备会回应他自己的MAC地址,然后路由器就会将这对地址加入到ARP缓存表中,下次再要向172.20.10.5发送数据的时候就有地址了。

因为所有tcp/ip协议的机器都有这个功能,局域网两台机器要是想传数据,都会预先发送广播询问,特定IP的MAC地址是什么并等待其他机器回应。

那么,这个机制是可以被利用的,攻击者可以询问发送广播询问网关和被攻击者的MAC地址,并且回复相应错误的信息,这样就可以造成信息不对称,使得受害者认为攻击者的地址为路由器的地址,而路由器会以为被攻击者地址为攻击者的地址。这样,被攻击者机器发送的所有的数据都会经过攻击者转发到路由器,反之,路由器想要发给被攻击者的数据也会通过攻击者转发到被攻击者。

4 Ettercap

想要进行ARP攻击,可以使用Ettercap,这是一款嗅探和欺骗工具。

进入工具后点击Host,Scan,然后List将网络环境中的机器列出来,从上图可以看到172.20.10.1就是网关了,172.20.10.6就是手机(被攻击者),将网关作为Target1,手机作为Target 2.

然后点击MITM,选择ARP Poisoning,勾选Sniff Remote Connections点击确定。然后点击Start之后我们的笔记本电脑(172.20.10.5)已经发起了中间人攻击,之后手机所有的网络流量都会经过我的笔记本电脑。

5 流量分析

之后既然所有的网络流量都从我的电脑走,那么可以使用Wireshark来进行抓包和分析操作,试着去分析一下情景,就拿我以前的学校举个例子好了。(主要是因为这个站还在使用http协议)

我输入了用户名TEST,密码123456,然后点击Login按钮。

然后就可以在Wireshark上看见了,首先过滤一下协议为http。Wireshark会把每次请求按帧罗列出来。然后大概看一下就可以看到刚才点击login之后手机发送的请求。

 

然后拷贝出来拆分一下,我们已经可以看到user_id=TEST,至于密码,网站加密了一下,但是稍微有编程经验的人可以看出来这是一个base64编码后的字符串,随便百度下base64解码然后就能解出来密码是123456。

 

这个方法两年前用可能还方便,但是现在网站都用https了,这个方法也就不能再使用了,因为抓到的https包都是加密过的,解密很困难。

 

6 社会工程学 (Social Engineering)

那么既然抓取https包很难分析出来密码,那么我觉得使用社会工程学来解决问题更方便些。可以伪造出来一个和真实页面一样的页面放在自己的电脑上,引导他人访问自己的钓鱼网站。

首先在Linux上部署好Web服务器,Apache2,然后访问下localhost或者127.0.01看下Apache有没有成功启用,如果启用了,将会看到类似如下的页面。

然后可以使用httrack来客隆一下学校的登录页面,拷贝到Web服务器的根目录 /var/www/html。 然后重新访问localhost试一试。

左边的是真的,右边的是假的,长得一样,为了区分我在假的页面Log into旁边加了一个X。

然后只要在局域网内,让别人访问你的IP,172.20.10.5就能进入这个钓鱼页面,不过。。。对方又不傻,你说这个地址是学校的登录页面他就信吗。

7 DNS欺骗 (DNS Spoofing/ DNS cache poisoning

DNS(Domain Name System),域名系统,是一个用来储存域名与服务器IP地址映射的数据库,比如你想访问百度,那么你的请求会先通过DNS服务器,DNS查抄到baidu.com的ip然后直接访问这个IP。

那么,可以伪造一个DNS服务器,使得被攻击者对学校登录页面https://login.shef.ac.uk的IP查询被引导到我的IP地址(172.20.10.5)就好了,刚好Ettercap也有这个功能。

首先编辑Ettercap的DNS映射,在/etc/ettercap/目录下的etter.dns文件。

映射login.shef.ac.uk的A记录到我的IP172.20.10.5,然后保存这个文件

回到Ettercap点击Plugin,找到dns_spoof双击启用即可。

之后被攻击者访问login.shef.ac.uk的时候,我伪造的DNS服务器会返回给他我自己的ip,导致对方访问进入我的钓鱼页面。

来看下DNS欺骗前后的对比,可以看到经过DNS欺骗,login.shef.ac.uk的地址已经被修改为172.20.10.5,也就是钓鱼页面的地址。

 

8 防范措施

至于如何防范中间人攻击,现在已经到了https的时代,如果你的机器被中间人攻击了,访问页面的时候浏览器会有相应的提示:

 

并且我伪造出来的钓鱼网站没有https的证书,在Chrome浏览器上也会有个感叹号(夸克浏览器就不会,可能是因为他们产品经理屁都不懂去掉了这个功能,夸克浏览器虽然是出了名的好用,但是上我的钓鱼网站根本看不出来)

 

并且有技术的同学可以用Wireshark抓一下包,如果ARP被做了手脚,抓ARP的包之后是能看出来的,会显示一个Duplicate IP Address detected的警告。

本文作者周毅刚,未经允许请勿转载。

 

 

 

 

 

打赏

8 thoughts on “论如何黑掉舍友的网络账号

  1. 来自一个正在AP中努力的少年的问题:Mike是怎么考上谢大的?是一开始就读的IB吗?还是AP转的?现在很迷茫,感觉前景扑朔迷离

  2. 感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/5h0y1b 欢迎点赞支持!
    欢迎订阅《MikeTech》https://toutiao.io/subject/71583

Leave a Reply

Your email address will not be published. Required fields are marked *