【编者按】这篇文章将详细讲解DNS欺骗(DNS投毒)及钓鱼网站原理知识,并通过Ettercap工具复现某购物网站的钓 鱼漏洞,本文的重点是让您 对ARP欺骗、DNS欺骗和钓鱼攻击有一定认识。 真心希望这篇基础文章对您有所帮助,也欢迎大家讨论。
作者 | 杨秀璋
责编 | 夕颜
来源 | CSDN博客专家
PS:本文参考了B站(千峰教育峰老师)、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study
DNS欺骗和ARP攻击机钓鱼网站制作
1.基础知识
DNS欺骗:
DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
网站钓鱼:
钓鱼者运用社会工程学(Social Engineering)知识诱骗受害者,以在未授权情况下获取对方的姓名、年龄、邮箱账号,甚至是银行卡密码等私人信息。钓鱼往往和社会工程学相结合进行诱导,而社会工程学是黑客的内功,能否灵活运用可以体现一个黑客的个人修为,所以说“防人之心不可无”这句话并非没有道理,凡事不要害人但是总要留个心眼,否则最终受伤的就是自己。
社会工程学黑客常用伎俩:
电话号码欺骗
利用坏消息作案
垃圾邮件诱骗
滥用网民对社交网络的信任
二维码引诱
恶意APP劫持
…
那么,如何防御社工呢?别占小便宜,没有充分信任情况下别去点击任何链接或下载任何APP。本文的案例将利用虚假的某购物网站,使用DNS与ARP欺骗手段使用户输入真是的用户名和密码。该方法还能截获HTTPS加密信息。
PS:作者本来想分享一个亲身经历的社会工程学案例,黑客朋友是如何一步步定位我的信息,但这篇文章太长,有时间再分享吧!
2.实验基础
实验目标:
使用Kali系统模拟攻击者,利用中间人的攻击手段来对受害者进行DNS欺骗,使受害者通过访问假的某购物网站,来获取用户登录的用户名与密码。通过三种攻击来窃取登录的用户名和密码:
中间人攻击
DNS欺骗
钓鱼网站
为什么不直接使用中间人攻击获取用户的账户与密码呢?因为如果信息加密,中间人攻击(推荐前文)就不能截获了。但是如果访问假的钓鱼网站,就能获取信息。
注意:本文的实验绝对禁止在真实环境中去完成,作者将引用B站视频中虚拟机实验复现,未经授权的测试或攻击行为我们一律禁止。
我们这篇文章的目的是为了学会防御,同时多一种安全手段,在授权情况下可以进行钓鱼网站攻击测试。这种方法适合各大网站、银行、购物、邮箱等。
实验环境:
这次实验会开三台虚拟机,一台XP系统、一台2003系统、一台Kali攻击机。
虚拟机软件:VMware V12.0版本
三台虚拟机:Windows XP(模拟客户机)、Windows Server 2003(模拟WEB及FTP服务器)、Kali(模拟攻击机)
假的某购物网站素材
工具:Ettercap软件
基本流程:
构建的拓扑图如下所示,首先开3台虚拟机,然后有1台交换机,这3台虚拟机都连接在这台交换机上,共同构成一个虚拟的局域网,来进行这个实验。实验基本流程如下:(配置过程参考前文)
第一步是构建整个局域网,并且配置好IP地址且能相互通讯(ping通)。
第二步是将Windows 2003系统作为服务器(现实中也可以将该系统设置为服务器),接着将Windows XP系统设置为客户机,它需要去登录某购物网站。
第三步是搭建Kali攻击机,之前是客户机和服务器直接通讯,现在是客户机发送的信息流经Kali机,再传至服务器。由于经过中间人,Kali机就可以监听客户机和服务器的通讯内容,甚至篡改数据。
3.实验原理
接着作者分享DNS域名解析和DNS欺骗原理知识。
域名解析:
假设左侧电脑是某公司的电脑,比如企业员工电脑(受害者);右侧这个是互联网,比如某购物官方网站(Web服务器),假设IP地址为2.2.2.2,并按照上节课讲述的内容搭建一个网站,通过IIS或Apache搭建。
域名解析(Domain Name Resolution)
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
员工通过 http://2.2.2.2 就能访问,但是这个地址不好记,我们平时都是输入“www”上网。所以需要做域名解析,把这个域名地址解析成IP地址再访问,这里比如绑定域名 http://www.gw.com。当浏览器中访问“http://www.gw.com”后,首先我们访问本地缓存或本地HOST文件(第一次访问会存储至本地缓存),如果本地都没有,则会寻找公网上的DNS服务器,它里面会有一个解析文件gw.com,如下图所示。
问一个问题:这是正向解析还是反向解析呢?
答案是正向解析的过程,即已知域名解析IP地址。那么,DNS又是怎么知道这个记录的呢?怎么知道“www.gw.com”就是“2.2.2.2”呢?这是该购物网站花钱购买域名(gw.com),购买之后服务器上会为你创建解析文件,然后该购物网站的相关人员会绑定IP地址并将该记录添加至DNS服务器上。此时,全世界都能访问这个域名并解析。
万网可以购买域名地址,比如作者的域名“www.eastmountyxz.com”。
正常访问过程:
当企业员工电脑访问该购物网站时,会去DNS服务器进行解析;然后找到地址2.2.2.2,并返回给企业员工电脑;最后访问该购物Web服务器,假设是IIS,它会将购物网站的首页返回给你的浏览器。
恶意访问过程:
假设现在出现了一个坏蛋,地址是3.3.3.3。首先它用了ARP攻击(中间人攻击),能截获数据。那么现在企业员工向服务器(4.4.4.4)发送请求,要经过坏蛋,坏蛋一看是向4.4.4.4发送请求,是一个DNS服务器,而且要解析gw.com域名,它不进行修改和中断。接着,DNS回应会发送2.2.2.2地址,这个过程中坏蛋只是开启了中间人攻击,监听数据并没有进行任何操作。
接着坏蛋想:我能不能把自己也伪装成DNS服务器,并且提供错误的DNS解析记录呢?
他把该购物网站域名(www.gw.com)解析成3.3.3.3地址。注意,当企业员工发送的信息再经过坏蛋时,明明是给4.4.4.4发送请求,但坏蛋会把自己伪装成DNS服务器,说“我才是那台DNS服务器”,并且它能控制这个信息终止与真实的DNS服务器通讯,说“我才是4.4.4.4,我通过解析找到记录了,它是3.3.3.3”。此时,员工被骗了,这种方式称为——DNS投毒。
为什么叫DNS投毒呢?
员工访问成功之后,会把这个域名(gw.com)和IP地址存到缓存中,所以它的缓存会记录一条信息,gw.com对应3.3.3.3。DNS缓存投毒也是非常令人头疼的一个攻击。因为它也做验证,后面将会分享具体实验,但它的验证非常差,所以导致除了上节课讲述得ARP投毒外,DNS投毒、DNS欺骗、DNS污染也是非常头疼的问题。
此时,成功诱骗了企业员工电脑。IE浏览器访问“www.gw.com”是向坏蛋发送请求,和真实的购物网站Web服务器、DNS服务器就没有关系了。换句话说,后续的请求就是企业员工和坏蛋他们两个。
钓鱼网站搭建:
接着我们开Apache,然后发布一个假的gw网站。注意,这篇文章对某购物网站没有任何恶意,我们主要是做一个科普,提高博友们网络安全的意识和防御措施。
钓鱼网站和真实网站尽量相近,而我们实验仅做简单的测试,有登录页面即可。接着,当受害者输入真实用户名和密码,点击提交之后,我们会连接后台数据库收集相关信息即可。表单form中action会指向php,获取用户名和密码,并写入数据库或TXT文件。我们称这个网站为——钓鱼网站。
注意:银行门户网站尤其需要注意该防范。同时,一般提交后数据保存,然后网页跳转到真正的购物网站,用户会以为密码输入错误,重新输入。信息也被收集,而且不易觉察。
DNS投毒实验环境搭建
接着开始做这个实验,左边是受害人,中间是坏蛋,右边是模拟某购物官方网站和DNS服务器。在现实中,真实网站和钓鱼网站通常会很像。
首先,我们开三台虚拟机。先还原快照,然后直接开启虚拟机。
实验流程:
开启虚拟机并配置IP
在Win2003中搭建JD购物网站Web服务器及DNS服务器
客户机尝试访问真正的购物网站
开启ARP欺骗和DNS欺骗
网站钓鱼
第一步,通过VMware设置虚拟网络。
开启三台虚拟机(XP、2003、Kali),VMware软件在安装时会在电脑上内嵌一个虚拟交换机,理解为虚拟网络。选择虚拟机,点击右键,然后点击“设置”。这里作者使用“还原快照”,读者可以尝试自己配置环境。
第二步,配置虚拟机IP地址并能够ping通。
将三台虚拟机(XP、win2003、Kali)桥接到同一个虚拟网络中去。右键设置,点击“网络适配器”,选择“VMnet2”,三台虚拟机都桥接到该虚拟网络“VMnet2”中,这样三台虚拟机就成功连成了同一个局域网。
配置XP系统(员工电脑)的IP地址需要选中“网上邻居”,再右键“属性”,点击“本地连接”右键“属性”。
设置IP地址如下“10.1.1.1”,子网掩码设置为“255.255.255.0”。
接着登录Windows 2003服务器。
登录Kali系统。
在Kali系统中输入命令配置IP地址,eth表示网卡名称。
ifconfig eth0 10.1.1.2/24
然后尝试查看是否IP地址建立成功。Linux默认一直ping,如下图所示小杨是连接成功的。
ping 10.1.1.1
接着尝试连接小娜的电脑。
ping 10.1.1.3
到此,我们成功建立了如下图所示的虚拟局域网。
第三步,在Win2003中搭建某购物网站Web服务器及DNS服务器。
点击“管理工具”->“DNS”。现实中,很多企业也都是使用该DNS工具软件来部署DNS服务器。一般中大型公司都有自己的DNS服务器。
点击之后,如下图所示,点开DNS,发现里面有正向查找区域和反向查找区域。
DNS(Domain Name Service) 域名解析服务,就是将域名和 ip 之间做相应的转换。
正向解析:根据域名查找对应的ip地址
反向解析:根据ip地址查找对应的域名
选择“正向查找区域”,右键点击“新建区域”。该区域是建立DNS解析文件。
点击下一步,如下图所示。
区域名称填写“jd.com”。
点击下一步,直至完成。
最终创建成功。
此时存在了“jd.com”区域,它表示以后全球范围内,凡是解析这个域名后缀的权威服务器就是这台“shimisi”服务器。
什么是权威服务器呢?
假设JD的DNS权威服务器在北京,现在贵阳的DNS怎么办呢?贵阳的公网DNS只有部分域名,贵阳的员工想访问JD,他只能请求当地的服务器,如果没有JD记录,它又会去请求JD的权威服务器,权威服务器会把记录传递给贵阳的服务器并缓存,再发送给员工。当地的其他员工访问时,它会返回本地缓存记录,这称之为非权威应答。
接着我们调用nslookkup命令,查看结果如下图所示。它是非权威应答,表示真正域名是“www.jd.com”,还有个别名是“www.jdcdn.com”,真正地址为“117.169.11.1”。
如果我们想要攻击该网站,需要获取JD地址“117.169.11.1”,该地址是“192.168.43.1”解析的。非权威应答表示地址“117.169.11.1”并没有记录在“192.168.43.1”服务器上。如果使用nslookup命令发现解析的应答没有显示“非权威应答”这句话,表示是权威应答,但很难看到。
本地nslookup查看百度如下图所示:
此时,该实验域名区域配置文件是在这台服务器上写好了,所以它就是权威服务器。接着点击“查看”->“高级”。
可以看到“缓存的查找”信息如下图所示。如果不是JD服务器,就没有区域配置文件“jd.com”,员工就会寻找真正的JD服务器并存储至缓存。所以说,DNS服务器只要有这个区域配置文件就代表权威。
接着搭建一个网站,右键“新建主机(A)”,其中A记录代表正向解析记录。
输入“www”,它会自动补全,并且指向10.1.1.3Web服务器。
此时显示信息如下图所示,创建了正向解析记录。
第四步,点击“管理工具”->“IIS”,新建Web服务器。
显示如下图所示:
右键停用默认网站,再选中“网站”点击“新建”->“网站”。
描述随便填写,比如“jd”,再点击“下一步”。
网站IP地址选择“10.1.1.3”。
网站路径选择本地JD网站。
钓鱼网站如下图所示:
显示如下图所示:
选择该文件夹并勾选“读取”,因为它是静态网页,所以这里仅选择“读取”权限。
那么,这个网站如何保存下来的呢?
通常黑客不会撰写大量的HTML代码,会通过真实网站保存后修改,模拟成钓鱼网站。比如在IE浏览器中点击“文件”->“另存为”即可,它会将CSS、图片、资源等保存至本地。
在添加jd网站之后,右键“属性”设置主页。
在“文档”中添加“index.html”主页。
问题1:此时通过XP系统访问我们搭建的服务器,在浏览器中输入“www.jd.com”,为什么访问失败呢?
在CMD中输入nslookup解析查看,显示无法响应。
原因是没有指定DNS。现在Windows 2003是DNS服务器,而你输入域名之后为什么解析不成功,你根本不知道谁是DNS服务器。打开网络连接,选中“本地连接”,右键“属性”。
需要将Windows 2003的DNS服务器地址写到XP系统中,再进行访问,这里填写“10.1.1.3”。
设置成功之后能成功访问。
问题2:此时填写用户名和密码能登录成功吗?答案是不能。因为我们只搭建了一个主页面,该表单不能处理。后续会制作一个点击提交后登录失败,再跳转到真实的京东网站的案例。
问题3:怎么判断访问的这个网站是真实的JD网站还是钓鱼搭建的网站呢?
开启ARP欺骗和DNS欺骗
接下来需要在Kali系统做一些操作。
配置IP地址
ARP攻击
伪装DNS服务器
发布钓鱼网站
这里先做好伪装DNS服务器,开启钓鱼网站,最后再设置ARP攻击。当企业员工访问时,就会访问假的网站。
查看之前搭建的局域网是否能够ping通。
ping 10.1.1.1
ping 10.1.1.3
第一步,配置伪装DNS。
打开一个文件,通过vim命令实现。“etc”目录一般放置配置文件,设置ettercap软件的配置文件。
打开如下图所示:
找到下面黑色字体的位置,它表示“解析记录域名+A记录+IP地址”,接着进行修改(连续按两个字母D+D能删除一行)。
按下“I”键,进入输入模式,添加内容如下所示。其中A表示正向解析,PTR表示反向解析,补充一个反向解析能增加实验的成功性,防止浏览器的反向验证。
现实中也可以尝试修改成“*”,表示任何域名都会解析为“10.1.1.2”。
接着输入“:wq”保存退出。此时的解析记录创建成功了,接着后续会在Ettercap软件中开启攻击阀门。
第二步,打开Apache并配置服务。
开启服务
systemctl start apache
查看服务端口是否开启成功
netstat -antpl
此时属于监听状态,端口为80,监听号为1985。
服务开启了,那么我们Apache的网站在哪里呢?
Apache默认站点路径在根目录下“/var/www/html”中,其中“var”目录主要存放可变文件,比如日志、缓存、站点,它们经常会被更新。查看如下所示。
此时里面虽然有网页,但与本文的实验无关。因此我们需要清除当前目录内容,输入命令“rm - rf *”。
注意:该命令千万别错误写成“rm - rf /* ”,它表示删除根目录下所有东西。而“rm - rf *” 表示删除当前目录,-r表示删除所有子文件或子文件夹,f表示强制。
第三步,制作假的jd网站并放置Kali系统中。
接下来我们要放置假的jd网站。新建一个“1.txt”记事本,一个“error.php”网站。现在我们希望用户点击提交,把提交表单的内容发送给“error.php”文件,然后把账号和密码提取出来放在“1.txt”文件中。同样,我们可以设置数据库进行实时抓取及存储。
“error.php”代码如下,调用stripslashes()函数获取POST表单元素,赋值为name和pass变量,最后文件操作存储至“1.txt”文件中。HTML代码表示存储内容之后,然后返回原网页。
1<?php
2 $name = stripslashes($_POST['name']);
3 $pass = stripslashes($_POST['pass']);
4 $content = "您已捕获JD账号及密码1个:" . "用户名" . $name . "密码" . $pass;
5 $filed = @fopen("1.txt", "a+");
6 @fwrite($filed, "$content\n");
7?>
8<html>
9 <head>
10 <script type="text/javascript">
11 function goBack() {
12 window.history.back(); //后退+刷新
13 }
14 </script>
15 </head>
16 <body onload="goBack()">
17 <!-- 加载之后立即执行一段JavaScript代码 -->
18 </body>
19</html>
审查元素如下图所示,定位“name”和“pass”元素。
同时修改“index.html”代码,表单提交给该php文件。
接着将制作好的假网站放置到Kali系统的桌面。
拷贝文件及文件夹至“/var/www/html”默认站点目录中。
1cp -r /root/Desktop/jd/* ./
接着需要开启Linux写入权限。通过“ls -l”命令查看权限,以“1.txt”权限为例,第一块“-rwx”代表文件主人root的权限,即管理员权限;第二块“r–”代表这个文件所在组的其他人的权限;第三块“r–”代表其他人的权限,Apache属于其他人权限。“r”代表读取权限、“w”达标写入权限、“x”代表执行权限。
1ls -l
调用命令“chmod 777 1.txt”修改权限,“chmod”表示change mod修改文件属性;“1.txt”表示所修改的文件;“777”表示权限列表,每个“7”表示一组,总共三组,“r–”二进制表示“100”,其值为4,而“111”二进制值为7(4+2+1),即所有权限都开启。
1chmod 777 1.txt
再比如,我们尝试使用“chmod 766 1.txt”命令,可以看到修改权限为“-rwxrw-rw-”。
到此,我们的网站就搭建好了,接下来开始攻击。
第四步,设置ARP欺骗攻击及Sniff嗅探功能。
Kali中包含了丰富的渗透和安全测试软件供大家使用。
我们接下来要使用的软件叫“Ettercap”。
该软件打开如下图所示,它不仅仅能ARP投毒,还能进行各种DNS投毒等。
点击“Sniff”第一个选项“Unified sniffing”。
选择网卡接口“eth0”。
选中网卡之后,开始点击“Host list”,列出所有主机。
再点击第三个按钮“Scan for hosts”扫描。
输出结果如下图所示,包括“10.1.1.1”和“10.1.1.3”。本实验只有三台主机,而现实中员工会通过交换机、路由器去连接互联网,真正的JD在互联网上,而攻击者如果要截获你和JD的数据,需要截获员工主机和网关的通信数据。接下来我要在它们两个之间做中间人,怎么做呢?
选择第一个,添加目标1“Add to Target 1”;再选择第二个,添加目标2“Add to Target 2”。
再点击“Mitm”->“ARP poisoning”,并且勾选“Sniff remote connections”,此时就建立了ARP投毒,把10.1.1.1和10.1.1.3欺骗,并且开始数据拦截。
此时,中间人攻击或ARP欺骗攻击已经搭建完成,我们能截获员工(XP系统)和服务器(2003系统)的通信数据。但本篇文章是介绍如何实现DNS欺骗攻击和钓鱼,所以我们需要在Kali系统布局诱骗操作,收到员工请求之后不再转发至2003服务器,而是主动给你一个假的解析,这就称为——DNS投毒。
第五步,设置DNS投毒。
选择“Plugins”->“Manage the plugins”。
可以看到这个软件非常强大,双击“dns_spoof”激活DNS投毒。
此时,我们在XP系统浏览器中访问“www.jd.com”网站,输入用户名和密码点击登录,但仍然失败,这是为什么呢?因为刚刚我们的Windows XP系统访问过Windows 2003服务器,该记录被存储在缓存中,再访问京东时就不再询问服务器,所以Kali就无法欺骗。现实中该实验是在没有访问情况下进行,等待缓存消失即可。
打开CMD,输入“ipconfig /flushdns”清除DNS缓存。
再次访问JD网站,然后点击登录,此时实验成果。如果hacker将其跳转回真实的京东网站,其隐藏性会更好。
此时Kali系统截获的内容如下图所示:
总结
写到这里,这篇基础性文章就此结束,希望文章对您有所帮助。真的感觉自己技术好菜,要学的知识好多。这是第42篇原创的安全系列文章,从网络安全到系统安全,从木马病毒到后门劫持,从恶意代码到溯源分析,从渗透工具到二进制工具,还有Python安全、顶会论文、黑客比赛和漏洞分享。未知攻焉知防,人生漫漫其路远兮,作为初学者,自己真是爬着前行,感谢很多人的帮助,继续爬着,继续加油。
侠之为大,为国为民。向一线医护人员、军人、工人、科学家和所有工作者致敬。咱们中国人一生的最高追求,为天地立心,为生民立命,为往圣继绝学,为万世开太平,他们真的做到了。生活哪有什么岁月静好,只不过这些人替我们负重前行。希望每一个人都健康平安,戴口罩不出门,勤洗手多吃饭。武汉加油,湖北加油,中国加油。众志成城,加油必胜!!!
原文链接:
https://blog.csdn.net/Eastmount/article/details/104065639