学习啦>学习电脑>网络知识>局域网知识>

局域网DNS劫持实战

光宁分享

  局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。下面是小编收集整理的局域网DNS劫持实战范文,欢迎借鉴参考。

  局域网DNS劫持实战(一)

  DNS决定的是我们的域名将解析到哪一个IP地址的记录,是基于UDP协议的一种应用层协议

  这个攻击的前提是攻击者掌控了你的网关(可以是路由器,交换机,或者运营商),一般来说,在一个WLAN下面,使用ARP劫持就可以达到此效果。

  你在访问一个网站的过程中,经历了如下几个阶段:

  以访问freebuf的主页为例:

  1、地址栏输入freebuf.com

  2、访问本机的hosts文件,查找 freebuf.com 所对应的 IP,若找到,则访问该IP

  3、若未找到,则进行这一步,去(远程的)DNS服务器上面找freebuf.com 的IP,访问该IP

  可以通过Wireshark抓包来看一下这个过程

  这是一个发向baidu.com的DNS请求

  中间人劫持就发生在第三步:由于恶意攻击者控制了你的网关,当你发送了一个查找freebuf.com的IP的请求的时候,中间人拦截住,并返回给你一个恶意网址的IP,你的浏览器就会把这个IP当做你想要访问的域名的IP!!这个IP是攻击者搭建的一个模仿了目标网站前端界面的界面,当你在该界面输入用户名密码或者付款操作的时候,就会中招。

  由于DNS劫持导向的界面的URL是完全正确的,因此

  这类攻击一般极难分辨!

  攻击者可以将网页的前端做的极为完善!几乎和原网页一模一样,各种链接,也都指向正确的地方,只有这个登陆框是有问题的,一旦输入用户名密码就会被攻击者所接受到。

  2、防范

  一般来说,这种攻击的防范是很难的!因为URL和页面都是正常的,不是对web技术有很深了解的人根本无从下手(如果攻击者的页面复原的足够真实的话,但是我们还是有一些方法来进行防范的

  1、使用SSL(HTTPS)进行登录,攻击者可以得到公钥,但是并不能够得到服务器的私钥

  2、当浏览器提示出现证书问题的时候,谨慎,再谨慎!确定你所在的网络环境是安全的,该网站是可信的再去访问。

  3、不在连接公共wifi的时候随意进行登陆操作

  一般来说,只有一些公司和学校的内网,一些个人站,和(12306) ,会遭遇证书配置的问题。其他的正常大型站点,尤其是我们经常使用的一些网站,不会出现此类问题,而需要登录的,经常遭遇钓鱼的,正是这些站点。因此,遭遇这种情况的时候,一定不要轻易的填写用户名和密码。

  这种攻击的影响的范围一般是很小的,只局限鱼一个内网的范围,总体来说还是不必担心过多,当然,如果是运营商劫持,那就另当别论,不过运营商劫持一般也只是插入广告,不会大胆的直接用这种方式进行钓鱼攻击。

  3、攻击者的目的

  钓鱼攻击盗取密码

  诱导用户进行填写登录表单的操作,将POST的地址改为自己的服务器地址,以获取受害者的用户名和密码

  特别注意:

  有一种这样的情况,用户在填入表单之后,用户犹豫了,并未点击提交/登录 之类的按钮以发送提交表单,但是此时,输入的内容已经通过ajax的方式发送了出去。

  一般来说,这样的submit函数应该是在按钮被点击之后执行,但是攻击者可以可以在用户每一次输入的动作之后使用on事件来执行这个函数,可以使得用户不点击就发送。

  钓鱼攻击劫持支付

  在支付的界面进行劫持使得用户的支付宝,或者银行卡支付,使得支付到攻击者的账户中。

  植入广告

  这种方式的DNS劫持一般是运营商所为的,大面积的劫持

  4、攻击复现

  我们可以对这种攻击方式进行复现,

  在一个路由器下面的多台机器,使用一台进行劫持,另一台进行模拟受害者进行测试

  准备工作

  进行劫持的机器:

  最好使用 kali linux

  在本地或者远程撘一个HTTP服务器,作为钓鱼网站,用于伪装目标网站

  最好安装一个大功率的无线网卡

  安装劫持工具ettercap (kali自带)

  测试机器安装浏览器(废话,是台电脑都有,纯命令行linux用lynx也可以)

  两台电脑接入同一个无线路由器或者集线器(最好不要使用交换机,因为必须要取得交换机本身的控制才可以进行,而路由器只需要进行欺骗就可以)

  操作指南

  首先,在ettercap的配置文件里面配置你要进行劫持的DNS

  有关于ettercap dnS的配置文件的木库在 /etc/ettercap/etter.dns

  打开这个文件,我们可以看到,作者已经内置了一些例子

  局域网DNS劫持实战(二)

  01

  Ettercap是什么?

  我们在对WEB安全检测的时候都会用到Cain和netfuke这两款工具,功能相信用过的朋友多多少少都知道,但这两款工具是在windows下运行的。

  而ettercap是在linux下运行的 。其实功能都是差不多的,我称呼它为嗅探工具,ARP欺骗,DNS,劫持,中间人攻击等等。总之这是一款强大的安全测试工具。

  02

  DNS是什么?

  1、DNS是什么:Domain Name System (域名系统 简称:DNS)

  2、DNS欺骗是什么:攻击者(黑客)冒充域名服务器进行欺骗的一种行为 。

  3、DNS原理原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

  03

  DNS欺骗实战

  【故事纯属虚构,请勿当真!】:

  那是一个夜黑风高的夜晚,又是刮风,有事闪电的,本想在撸几盘撸啊撸,搞的我心情一点都不好,于是关掉电脑准备睡觉了,然而突然啊的一声!瞬间把我从困意中拉了回来,在仔细一听~~~

  在发现是隔壁宾馆在做爱爱,尼玛~~~搞这么大声做什么?让我怎么睡觉啊?尼玛的,决定展开一次入侵隔壁电脑。。。

  准备工作:

  隔壁电脑:192.168.1.12 (宾馆一般都装有还原精灵 所以电脑是裸奔(多数没装防火墙) ) //受害者机器

  自带笔记本:192.168.1.11 (kali linux系统 接上宾馆自己那间房的网线) //入侵者机器

  网关IP:192.168.1.1

  踩点:

  怎么知道隔壁的电脑IP地址?

  先看自己的房间号,比如是5-11(假如表示5楼11间房),在来到自己房间看自己电脑的IP地址,一般是192.168.1.11

  那么隔壁的自己出门去看门牌就知道了,(假如是5-12),那么隔壁的IP地址就是192.168.1.12 最后在ping一下 通了 说明电脑开着,不同,说明电脑关着,或者防火墙什么的。。。

  这个方法比较死?当然其它方法也有,根据自己经验而定。。。

  首先先打开ettercap的DNS文件进行编辑,在kali linux2.0下的文件路径为/etc/ettercap/etter.dns

  在对应的位置添加对应的 标识和IP地址 * 代表所有域名 后边就是你要欺骗为的IP地址,这里是当然是我自己的主机IP地址啦

  然后记得保存。

  再来编辑/var/www/html/index.html文件 改成你定义页面 这里我简单的改了下,因为后边我们要启动apache2 也就是网页服务器 这是主页文件,说白了目的是为了DNS欺骗成功后,当受害者(隔壁宾馆两口)访问域名访问网站后,打开的页面就是我们这里的这个主页文件里边的内容。。。。编辑好了---记得保存!

  现在我们在到终端输入命令/etc/init.d/apache2 start 来启动apache2 服务器 (把本机作为一个服务器) 。

  在输入命令ettercap -G来进入ettercap的图形界面。我喜欢用图形界面,也许也windows玩多的原因吧,不喜欢linux下的命令行 ps:虽然看起来很帅的样子..... - -!

  选择网卡Unfied sniffing---配置

  网卡选择eth0(根据自己的计算机网卡而定)

  再来扫描网关下的所以在线的计算机主机,来到hosts选项下的 scan for hosts

  继续选着Hosts list 列出扫到的主机

  可以看见列出了所有机器,先在列表里选择网关进行添加,我这里的网关是192.18.1.1。点击 Add to target 1

  局域网DNS劫持实战(三)

  DNS是DomainNameSystem(域名系统)的缩写,简单来说就是负责域名与IP地址之间的转换,平时我们用到的大部分是域名转IP,当然也支持IP转域名的反向解析。在方方面面都会有DNS的身影,在负载均衡方面也可以借助DNS来实现,还有就是黑产们喜欢坚持广大用户的DNS来获取利益,可以说DNS是互联网最重要的协议之一。

  0×01 起因

  互联网上的DNS服务器非常非常的多,有公共的DNS 也有公司自己内部使用的DNS也有用于负载均衡的,我们公司呢也要建一个 DNS服务器,搭建DNS我是不擅长,但是搭建完之后需要做一下压力测试这我就比较喜欢了,毕竟这个压力测试说好听叫压力测试,说不好点那就是DOS攻击,接下来我就说说我进行压力测试的过程吧。

  0×02 DNS协议基础

  想要进行压力测试,至少要能模拟出正常用户的DNS请求才行,所以构造DNS请求报文我们需要先了解DNS协议的报文格式。

  DNS是应用层的协议,使用TCP和UDP的53端口,不过一般情况下是使用UDP53端口的,所以呢今天我们构造的DNS也是基于UDP的。

  DNS协议的报文首部是定长的12字节,分别是标识(16bit)、标志(16bit)、问题记录数(16bit)、回答记录数(16bit)、授权记录数(16bit)、附加信息记录数(16bit)。

  标识字段是用来匹配请求和响应的,有点类似ip协议的ID字段,应答报文的标识字段应该和请求报文的相同。

  标志是由多个字段组成的

  QR字段长度是1bit,用来表示这个DNS报文是请求还是响应,因为DNS的请求和响应的报文首部格式相同,0表示请求,1表示响应。

  OPcode字段呢长度是4bit,表示操作类型,0表示正向解析,1表示反向解析,2表示服务器状态请求。

  AA字段长度为1bit,是授权回答标志位,0表示回答是非权威的,1则表示回答的服务器是授权服务器。

  TC字段长度也是1bit,是截断标志位,1表示报文长度超过了512字节,并且被截断成了512字节,不过我在抓包的时候抓到很多超过512字节的

  也并没有被截断。

  RD字段长度为1bit,表示希望递归的标志,1表示请求服务器进行递归解析,0表示希望反复查询,但这个怎么查询还是服务器说了算。

  RA字段只在服务器响应中有效,1表示服务器支持递归,0表示不支持递归。

  RA后面的是保留字段,长度为3bit,必须置0。

  rCode字段是用来表示错误状态的,长度为4bit,0表示没有错误,1表示格式错误,2表示服务器故障,3表示查询域名不存在,4表示不知道的解析类型,5表示管理上禁止。

  问题记录数的16bit表示问题部分所包含的域名解析查询的个数,理论上最大是65535.

  回答记录数也是16bit,相应的也是表示响应报文中回答记录的个数。

  授权记录数也是16bit,表示授权部分所包含的授权记录的个数,请求报文中置0。

  附加信息记录数长度是16bit,表示附加信息部分所包含的附加信息记录的个数。

  以上的这12字节就是DNS包文的首部,我们做压力测试的话,只需要构造请求报文,所以一般情况下回答记录数、授权记录数、附加信息记录数都会置0.

  接下来就是DNS的变长部分了,分别是问题部分、回答部分、授权部分、附加信息部分,我们要做只需要问题部分就可以了。

  这其中查询名就是我们要查询的域名,他是变长的。查询类型和查询类是定长的,都是16bit,这两个要写在整个报文的结尾。

  查询类比较简单,1表示ip协议,符号为IN。其他协议的表示是什么其实我也不知道…

  查询类型字段选择就比较多了,常用的如下图:

  查询名就是我们常说的域名,比如www.freebuf.com,但是在报文中不能直接这么写,而是要改成 3www7freebuf3com0 这种形式,字段之间不再以.分割,而是以字符串前的数字表示这个字符串的长度,最后以0结束。

  0×03 构造报文

  编程语言:C

  运行环境:kali/ubuntu linux

  编译器:gcc version 6.1.1

  在linux中已经构造好了ip和udp的结构体分别在ip.h和udp.h两个头文件中,linux中应该也定义好了DNS协议的结构,不过我没找到…所以咱就自己构造一个也是一样的。

    63718