修改路由器的DNS后我做了什么?

发布时间: 2017-08-19

前言

我在比较早的时候写过一篇文章,说到我连接wifi之后都做了什么,主要目的是想说明局域网内部安全的脆弱。今天来说说路由器一旦被攻陷,将会带来怎样的危害,这里我只想讲讲外网攻击路由器的思路。

场景

我这里将会使用一个真实的场景来描述整个攻击过程,其实是非常有意思的。

我的房东A是一个房地产的老板,我花了1800租下了A的一间公寓,因为A特别有钱,以至于对我这种穷屌丝不屑一顾,对于我经常叫外卖导致外卖小哥经常按错A家里的门铃表示非常不满意。

出于对地产商这种角色的理解,我决定看下A的网络习惯是怎样的。

思路

开始之前我必须理一下思路,首先想到的自然就是社会工程学了,如果社工不成功,自然就会想到wifi破解。OK,这两条路差不多了,我当然知道还有非常多的途径可以走,但是对于他们这种网络小白,够用了。

收集

开始我只知道A的姓名,以及A的手机号码(显然是小号),这些基本信息在租房合同上面已经有了,其他信息我一无所知。

通过各种社工库,并没有查到对应的社交信息,看起来他们似乎并不是很喜欢在网上活动。得知A是地产公司的老板之后,我在百度文库上找到了一份文档,文章中记载了我市所有地产商负责人的手机号码以及姓名。

OK,搞定A的常用手机号码之后继续查其他信息,通过尾随A下电梯,找到A的车,顺便记下A的车牌号码,发现土豪就是土豪,车牌号后4位就是手机号后4位。看来这数字对A来说是个很吉利的数字。

回到住处,我使用wifi分析仪(安卓版)基本确定了A家里的WIFI名称以及放置的大概位置,wifi名称使用的是路由器出厂自带的MECURY_xxxx,推测A并没有认真设置过路由器,那么很可能存在弱口令问题。

通过微信,QQ,支付宝等软件,分别拿到邮箱账号,手机小号等,但都无卵用,wifi密码搞不定是一个大问题。

使用MDK3打死A家里的路由器,然后放出一个相同SSID的wifi出来,无密码,最终A还是链接到我的WiFi上,通过钓鱼页面顺利拿到路由器的登录密码以及WIFI密码。

有了这些信息,接下来就是攻击阶段了。

攻击

使用拿到的wifi密码和路由器管理密码顺利进入路由器,直接使用ARP攻击?No,这个不太好实现,我白天上班没有时间管,晚上A又不一定在线上,我要实现远程控制要怎么做呢?

第一种方案是使用花生壳,映射一个内网IP到我的电脑,然后我可以使用外网接入到我的电脑进行扫描,这种方案虽然不错,但是风险较大,毕竟有花生壳的账号密码在路由器里面。

第二种方案,直接在我的电脑里面运行花生壳脚本,这种也可以实现内网控制,可行。

第三种方案,直接修改DNS地址,这种我就可以实现长期持久化控制了。

最终我选择了第三种方案,修改了路由器的DNS,因为我觉得房租太贵了,所以换了个地方。

有了DNS之后我可以做很多事情,首先来说说劫持的原理。

原理

正常情况下的是这么个流程:客户端向路由器发起请求,询问abc.com的IP地址是多少,路由器收到询问后根据去问DNS服务器abc.com的地址是多少,DNS服务器回答了abc.com的IP地址是1.2.3.4给路由器,路由器回答客户端abc.com的IP地址是1.2.3.4,客户端再与1.2.3.4建立通信连接。

现在DNS服务器被我替换了,所以流程就是这样的:客户端向路由器发起请求,询问abc.com的IP地址是多少,路由器收到询问后根据去问DNS服务器abc.com的地址是多少,DNS服务器回答了abc.com的IP地址是4.3.2.1给路由器,路由器回答客户端abc.com的IP地址是4.3.2.1,客户端再与4.3.2.1建立通信连接。

此时如果4.3.2.1上没有配置任何东西,那么客户端打开的abc.com就是啥也没有,为了让客户端也显示原来的内容那要怎么办呢?

很简单,使用nginx进行反向代理,nginx去真实的abc.com上把内容抓取回来,然后生成一个服务端,这样客户端虽然访问的是假的IP地址,但是内容依然是真的。

那么就有同学要问了,这么做有个锤子用?

当然有用了,nginx去抓取内容,然后再把内容返回给客户端,这中间我可以利用nginx做很多事情了,最常见的就是修改内容,修改内容可以修改图片、文字、插入js代码等等。

你试想一下,页面你都能随意修改了,你还有什么不能做的?

好了,思路有了,咱们就可以开始实战演练。

配置

首先你需要自己搭建一个DNS服务器,一般路由器里面是可以填写两个DNS服务器地址的,为了安全起见,第一个可以填写我们自己的DNS服务器,第二个可以填写一个可用的8.8.8.8,这样做是为了防止我们的DNS服务器挂掉之后客户端依然能够正常上网。

DNS服务器搭建可以使用流行的云服务器,请注意,阿里云服务器是不允许搭建DNS服务器的,一旦流量大了,阿里云会把你的机器识别成DDOS攻击源,因为DNS服务器的工作机制与DDOS攻击行为非常形似,所以选择合适的服务器很重要。

DNS服务器搭建使用bind9这个软件,具体搭建过程不再描述,网上都有对应的文章,记得一定要开启解析记录日志,这对你分析客户端上网行为很有帮助。

DNS服务器搭建完成之后你就可以清楚的看到客户端的解析记录,上了哪个网站,什么时间上去的都有。

如果一切顺利,这个时候客户端设备通过你的DNS服务器已经能够正常上网了,接下来就是关键性的钓鱼阶段了。

钓鱼的方式很多种,最常见的就是直接在网站页面里面写入js代码,你可以监控页面的输入框,用户输入的信息直接发送到你的服务器,你也可以直接弹出一个假的使用QQ登录的窗口,很容易拿到QQ账号密码,当然,其他的账号密码也很简单。

假设你手里有大量的路由器设备,你想大规模的钓鱼或者挂马,你可以使用更简单的方式,首先你构建一个带有攻击性的js,然后写入到jquery的库里面,替换到jquery的CDN连接,这样的话,只要有网站有用jquery的cdn,那么就会直接调用你的恶意代码,实现批量攻击很轻松。

这里需要提示的是,并不是所有的网站都可以这么做,https安全连接的网站你是无法做到直接替换内容的,但是你依然可以代用另外一种方式实现,也就是常见的google镜像原理,这种方法的弊端就是域名会被替换,不能使用原来的域名访问,对于小白来说很容易中招。

nginx没有自带内容替换的模块,需要自行下载编译安装。

后话

前面说的那些已经基本上可以搞定大部分网络小白的各种账户信息了,当然,HTTPS的普及真的是非常有必要,至少能够让一部分不是太白的人能一眼识别出来。小小的DNS劫持就可以目标的隐私全部泄露,你甚至可以替换软件的下载路径,种马,监视目标的一举一动,想想就很可怕。

警告

本文仅仅描述了DNS劫持的一些思路,请自觉遵守相关法律法规,任何非法攻击行为导致的后果均与本人无关。

请在下方留下您的评论.加入TG吹水群