openwrt-智能路由器hack技术(1)---"DNS劫持"

1   导读

PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所以现在整理拆分一下,从小处写起,

本系列介绍了两个关于智能路由器的hack技术,供大家赏玩一下。

本文提到的两个基于网络的hack技术:

  • DNS劫持
  • 数据抓包

基本本质上就是路由器设备的两个主要网络功能:

  • 网关配置功能
  • 网关数据中转功能

但是用于软件开发的正途,就变换成下面的说法:

  • 网络环境迁移
  • 数据监控

由于大家可能对 恶作剧 比较兴趣一些,所以就从hack的角度把内容抽取出来写吧。

2   概述

OpenWrt 可以被描述为一个嵌入式的 Linux 发行版,(主流路由器固件有 dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序 [1] 。

智能路由器也就是智能化管理的路由器,通常具有独立的操作系统,可以由用户自行安装各种应用,自行控制带宽、自行控制在线人数、自行控制浏览网页、自行控制在线时间、同时拥有强大的USB共享功能,真正做到网络和设备的智能化管理 [2]

近几年,智能硬件设备蓬勃发展,智能路由器也开始从实验室走了出来,开始商业化,目前市场上已经出现了各种主流品牌厂商的智能路由器。例如国内的:极路由,小米路由器,华为智能路由系列……

用户只需以较低的价格就可以入手体验到硬件配置良好齐全的智能网络硬件设备了。

[1] Openwrt-百度百科
[2] 智能路由器-百度百科

备注

现在市场上的商用路由器,价格上远低于一台主机电脑,然后网络功能齐全,且带有大容量的硬盘,只要刷成openwrt之后,就可以拥有自己的私有的git服务器或者文件服务器了。

3   准备工作

在正式开始实验之前,要做一些准备工作:

  1. 一台支持openwrt的商用智能路由器硬件设备
  2. 将商用设备刷机成openwrt系统(替换原出厂订制系统)

具体的openwrt支持硬件设备列表见 官方文档 [3] 。

关于各种品牌的路由器如何刷ROM,可以到网上找各种教程,本文主要侧重openwrt后的应用,故刷机过程略去。

备注

本文是在小米官网购买的 小米路由mini ,然后根据教程刷成基于 openwrt 订制的 pandorabox

刷机成功后,就可以通过PC机远程路由了,就像远程一台普通的linux服务器一样,远程登录后,路由器终端界面提示如下:

基本的文件操作,网络操作等命令和普通Linux类似。同时openwrt也可以通过软件仓库安装应用软件,具体参见 openwrt软件包管理 [4]

例如,安装 nginx 应用程序:

opkg install nginx

上面对openwrt的基本知识进行了简单介绍,后面开始一些综合应用了。

[3] Openwrt Table of Hardware <http://wiki.openwrt.org/toh/start>
[4] openwrt软件包管理 <http://wiki.openwrt.org/doc/packages>

4   DNS劫持

关于DNS的定义,在此不再赘述。其功能简单来说:就是网络应用程序在向某个域名请求内容时,其实并不是直接向真实的主机发送,而是先向域名服务器进行查询,得到对应的IP地址,然后才指向具体的主机上的服务进行请求。

基于以上的原理,如何进行DNS劫持就变得很容易了:只需要修改机器的DNS解析,就可以设计出自己想要的网络集群组合了。

有两种方式进行修改:

  • 本机修改

    修改本机hosts,不使用额外的DNS服务器

  • 网关修改

    建立DNS服务器并进行解析设置

直接修改上网设备由于对当事人的私有设备进行了比较深入的入侵,门槛较高,所以可行性不高。还不如把对方引诱到自己的网络领地,即接入到自己的WIFI或者有线网络里面。

可以通过DNS服务器及网关配置,实现同一路由器(网关)下所有机器的网络统一配置。

在linux系统中使用 dnsmasq 配置一台DNS应用服务器。

然后在网关上设置相应的DNS服务器,新的主机接入到此网关(物理表现为路由器)之后,由DHCP分配IP地址和DNS服务器地址。过程如下图所示:

对于智能路由器来说,本身就相当于一台linux主机,所以可以直接在本机上安装DNS服务器,并设置DHCP。 一般情况下,openwrt里面天然集成了dnsmasq。

对 /etc/config/network 文件进行编辑,就可以设置DHCP,修改相应的代码段:

config interface 'lan'
……
option dns '127.0.0.1 223.5.5.5 223.6.6.6'

当然对于不熟悉linux的同学来说,也可以通过openwrt提供的web管理界面进行设置,在此略去不表。

经过上述配置,后续所有连接到此路由下面的设备,都由路由统一分配DNS服务器了。

所有连接在此路由器上的设备,不管是移动设备,还是服务器还是PC都有统一的网络配置。

如果要对整个局域网进行网络修改,只需登录DNS服务器(此处就是智能路由器)。

修改 /etc/hosts 加上域名IP映射记录,然后执行下述命令重启dnsmasq服务即可:

/etc/init.d/dnsmqsq restart

在客户机上执行 ping命令检查一下相应的域名,经过特殊指向的域名返回的都是路由器配置的IP地址了(非特殊设定的,由备用DNS服务器来进行解析,所以其它公网服务仍然正常)。

基本上,只要如上图连接到了你的智能路由器的所有上网设备,都已经在你的掌控之下了,你想劫持就能劫持了。

具体的操作手段如下:

例如,修改路由器的hosts映射:

127.0.0.1 www.baidu.com

然后在浏览器输入 百度 的域名,出来的就是下图(本机已经事先安装了nginx的web服务器了):

使用浏览器的前端调试工具可以看出此域名的实际解析主机已经不再是 百度 的真实服务器,而是nginx的默认主页:

如果hack做一个高仿的 百度 主页,再做一些简单的搜索引擎,那么基于目前都依靠百度来作为互联网导航的广大小白网民来说,杀伤力还是蛮巨大的。

说明

其实对于喜欢hack技术的人来说,上面的技术其实就是 ”DNS劫持技术“ 了。稍微再加一点东西,就可以做成伪装度很高的钓鱼网站,再加一点社会工程学和人类心理学的知识(将上网设备引诱到你的网络领域来),就能产生比较强的破坏力了。所以懂技术的同学请不要做违法的事;不懂技术的同学请注意防范此类的hack技术,不要轻易将设备接入陌生人的网络领地。

5   常见钓鱼手段简介

技术加一点社会工程学,hack做如下事情:

盗取支付信息

  1. 将支付宝登录页面复制一份,做一些修改

    例如:将提交密码的服务器修改成hack服务器

  2. 引诱小白到自己的路由器网络下,进行DNS劫持

    免费WIFI,无密码

  3. 诱导用户进行支付登录

    即使用户不是小白,是IT从业人员,记得支付宝的域名,然后输入了域名,确认进入了一模一样的支付页面,进行登录

  4. 用户发现进入支付宝页面后,即使输入正确的密码也无法登录进去,于是放弃

  5. 然后hacker已经获取了用户的相应的用户名及密码了,进行后续工作

DNS劫持和页面复制,可以让用户在浏览器输入了正确的域名,而且浏览器显示了一模一样的 真实 页面,只是你输入账号密码后,不能登录而已。

QQ诈骗

  1. 前面的手段和上面的例子一样,伪照QQ空间登录页面,获取QQ账号密码
  2. 给好友发诈骗汇款信息
  3. 后续其它操作。。。。

可能大家觉得手段比较低端,但是作为一个还算资深的IT从业人员,个人还是有过相应的经历。

事件1

有人在QQ上发消息,说QQ空间有不可思议的照片,习惯性点击过去,是QQ空间相册界面,和登录弹出框。相册封面内容很吸引人,但是我还是出于职业习惯,看了一下浏览器的域名,发现不是QQ空间域名,于是笑了笑,关闭了窗口。

事件2

很久没有联系的一个朋友,在QQ突然向我发消息:麻烦你给我爸爸打个电话说我手机掉厕所了,让他给我汇500块钱过来一下,急。首先这不是让我直接汇款,紧急间,我差点给打了电话,差点成为对方作为博取别人信任的筹码了。还好,我并不知道他的爸爸的电话,迟疑的一瞬间让我清醒了一下,让他说他爸爸的名字,结果他说不出来。。。。

所以,上述方法其实不一定低端,一旦加入高深的社会工程学和人类心理学的知识,产生的社会危害还是蛮大的。还有,上面的那些信息的分析和收集过程,是可以通过编程自动化实现的,线下只需要不断的设局,就会有一定的转化率的。

其它的也不再说,偏离本文主旨了,希望能够引起大家的网络安全意识就好了吧。

6   后文提要

后面再补充一点东西后,整理后续内容“Openwrt智能路由器的网络数据抓包和监控”,以增加大家的公共上网安全意识。


作者: Harmo哈莫
作者介绍: https://zhengwh.github.io
技术博客: http://www.cnblogs.com/beer
Email: dreamzsm@gmail.com
QQ: 1295351490
时间: 2015-10
版权声明: 欢迎以学习交流为目的读者随意转载,但是请 【注明出处】
支持本文: 如果文章对您有启发,可以点击博客右下角的按钮进行 【推荐】

openwrt-智能路由器hack技术(1)---"DNS劫持"的更多相关文章

  1. openwrt-智能路由器hack技术(2)---"网路信息监控和窃取"

    openwrt-智能路由器hack技术(2)---"网路信息监控和窃取" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所 ...

  2. 智能路由器操作系统OpenWrt

    小米路由器的“MiWiFi”又让路由器成了关键词,每台智能路由器的系统是该款产品的亮点之一,其系统肯定有不少“好玩”的地方.为自己的智能路由器量身打造系统,并且纷纷开发了适合智能手机.平板电脑等使用的 ...

  3. 关于全站https必要性http流量劫持、dns劫持等相关技术

    关于全站https必要性http流量劫持.dns劫持等相关技术 微信已经要求微信支付,申请退款功能必须12月7号之前必须使用https证书了(其他目前为建议使用https),IOS也是2017年1月1 ...

  4. 【智能路由器】让MT7620固件openwrt支持USB

    [智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 首先确定硬件有USB,这个得检查板子是否引出了usb口,一 ...

  5. HTTP劫持和DNS劫持

    HTTP劫持和DNS劫持 首先对运营商的劫持行为做一些分析,他们的目的无非就是赚钱,而赚钱的方式有两种: 1.对正常网站加入额外的广告,这包括网页内浮层或弹出广告窗口: 2.针对一些广告联盟或带推广链 ...

  6. 电信、网通、联通等恶意DNS劫持跳广告页面的解决方法

    中国电信.网通.联通ADSL用户必读:中国电信.网通.联通劫持dns(中国电信.网通.联通劫持ie浏览器)解决方案D... 宽带连接有 也能上网但是本地连接一直显示为受限制的解决方法 我的电脑一直显示 ...

  7. 智能路由器开发指南_book

    最近购得一个openwrt书籍<智能路由器开发指南>,作者张永智. Building a smart router with openwrt 作者网址:http://openwrt.bjb ...

  8. 告别DNS劫持,一文读懂DoH

    如果评选一个差评服务器榜单,除去育碧高居榜首外,一定也少不了 Nintendo Switch 让人头秃的联网服务.尽管任天堂已经架设了香港 CDN 服务器用于加速,但是更新安装的速度也没有什么大幅改变 ...

  9. DNS劫持

    忽然发现我最喜欢的chrome 一直有广告,好些论坛都有大量的广告,原以为是重了什么插件了,找了也没发现,有可能是DNS劫持. 打开路由器,找到 dns 设置里面把里面的全部去掉.然后把 192.16 ...

随机推荐

  1. MySQL——保证数据的完整性

    为了防止垃圾的产生,从而影响数据库的执行效率. 1实体完整性——行数据的有效性   唯一约束(unique).主键约束(primary key) 2域完整性——列数据的有效性 非空约束(not nul ...

  2. My安卓知识3--多个activity之前共享数据的方法

    在网上搜这个问题的时候看到了有一篇文章说有五种方法: 1.基于消息的通信机制  Intent ---boudle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStrea ...

  3. TSuperEnumerator、TSuperAvlIterator、ObjectFindFirst

    通过 ISuperObject.GetEnumerator 可获取一个 TSuperEnumerator 对象. TSuperEnumerator 主要有: MoveNext 方法.Current 属 ...

  4. UINavigationController push时,页面卡顿

    1.A push B A.view.backgroundColor 与 B.view.backgroundColor 不一致. 2. AssistiveTouch打开 关闭则不会出现卡顿情况 3.增加 ...

  5. Android安全之Https中间人攻击漏洞

    Android安全之Https中间人攻击漏洞 0X01 概述   HTTPS,是一种网络安全传输协议,利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护交换数据的隐私与完整性. ...

  6. C++ exe调用dll文件

    生成dll程序 extern "C"_declspec(dllexport) void maopao(int *p,int count);void maopao(int *p,in ...

  7. hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确

    hibernate的update()方法无法更新,不报错 原因是hibernate的update方法操作的是缓存,可以flush下先. 设置缓存为false理论上也可. 在一个serivce方法里,执 ...

  8. 升级到iOS9之后的相关适配

    iOS9AdaptationTips(iOS9开发学习交流群:458884057) iOS9适配系列教程[中文在页面下方]转自@iOS程序犭袁 (截至2015年9月26日共有10篇,后续还将持续更新. ...

  9. hdu 1342(DFS)

    Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  10. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...