MENU

内网-DNS欺骗和ARP欺骗详解

本文目录:

  • 事情起因
  • 环境准备
  • DNS欺骗

    • 原理
    • 实战

      • 用Ettercap实现恶搞
      • 用SET+Ettercap实现钓鱼
      • Bettercap
      • Cain & Abel
  • ARP欺骗

    • 原理
    • 实战

      • arpspoof
      • ettercap
      • bettercap
      • Cain & Abel

事情起因

为了查看隔壁妹子或者兄dei在看啥,或者是提醒隔壁小声一点

参考文章:

环境准备

  • Kali:192.168.1.107,用来攻击
  • Win7:192.168.1.106,用来被攻击

两台机子都是通过桥接网卡上网

使用工具:

  • Ettercap
  • Bettercap
  • Dsniff工具套件中的arpspoofdriftnet

DNS欺骗

原理

  • DNS(域名系统)是什么?

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

当我们访问一个域名,比如soapffz.com时,浏览器会去请求DNS服务器,通过DNS服务器获取域名对应的ip140.143.2.176(我的服务器ip开启了防ping功能)

  • DNS欺骗是什么?

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

  • 所以我们经常听到的运营商的DNS劫持,就是运营商修改了你的网络的默认DNS服务器中的网址对应的ip地址,就会出现弹窗广告等现象,我们阻止运营商DNS劫持的有效办法:修改自己的DNS服务器为公共DNS地址,如114.114.114.114等

关于DNS解析更详细的内容可参考:理解DNS记录以及在渗透测试中的简单应用

那么我们可以用DNS欺骗来实现什么功能呢:恶搞或者钓鱼

实战

在Linux下实现DNS欺骗可用Ettercap(其实也用到了一部分arp欺骗),可配合SET进行钓鱼,也可使用bettercap

在Windows下可使用Cain & Abel

用Ettercap实现恶搞

首先我们使用强大的中间人攻击工具:Ettercap

1.编辑ettercap的dns文件:

vim /etc/ettercap/etter.dns

如果是恶搞,不想让对方访问任何界面,那就让所有网址都指向一个ip,我们这里为了起到善意的提醒作用,让所有的ip指向我的电脑:

2.开一个apache2服务

把apache默认配置界面:/var/www/html/index.html备份之后

把里面的内容替换为自己的内容:

<HTML>

<HEAD>
    <meta http-equiv="content-type" content="txt/html; charset=utf-8" />
    <TITLE>大兄dei你好呀</TITLE>

<BODY>
    <p>是不是很惊喜呀!</p>
    <p>我就是过来和你打个招呼</p>
    <p>没有恶意</p>
    <p>有空一起撸啊撸啊</p>
    <p>我的网站:https://soapffz.com/</p>
</BODY>
</HEAD>

</HTML>

然后重启apache2服务,打开看一眼是不是我们的界面:

OK,没毛病

3.开始欺骗

我们先使用图形化界面:ettercap -G,选择Unified sniffing以中间人的方式进行嗅探:

选择自己对应的网卡进入,然后我们对局域网进行扫描,通过Host list打开主机名单:

将网关添加到目标1,将攻击目标添加到目标2:

接下来在Mitm(中间人攻击)中选择ARP poisoning(arp欺骗):

勾选远程嗅探链接,确定:

在插件中选择dns_spoof:

双击,然后前面会出现一个*号,最后点击Start sniffing,开始我们的dns欺骗攻击:

这样我们的攻击目标打开所有网页时都会显示我们自定义的页面:

但是这样的攻击也有弊端,比如我们不能欺骗https协议的网址还有容易暴露我们的ip:

我们也可以用命令来操作ettercap:开启IP转发,设计欺骗网页等步骤和图形界面是一样的。但是借助命令行,只需要一条命令,就可以执行上述复杂的操作过程:

ettercap -TqM ARP:remote -P dns_spoof /192.168.1.1// /192.168.1.107//

参数解释:

  • -i:指定网卡,一般默认为eth0
  • -T:仅使用文本GUI
  • -q:启动安静模式(不回显的意思)
  • -M:执行中间人攻击
  • ARP:remote:使用远程嗅探
  • -P:指定插件
  • 后面的两个位置,第一个为目标1,第二个为目标2,都使用/ //包括着

上面介绍的恶搞的部分,那么如何实现钓鱼呢,只需要在/etc/ettercap/etter.dns文件中把受害者可能访问的网页的ip地址设置为你的即可

那么我们还需要自己写一个google界面或者百度界面,显得很麻烦

用SET+Ettercap实现钓鱼

当然这里只是讲到Ettercap用这个例子,还有其他强大的钓鱼工具例如:BlackEye

此处我们引入社会工程学工具集:Social-Engineer Toolkit,后面简称SET

它和Kali应用程序收藏中的Social Engineering Tools不是同一个东西哦:

顾名思义,SET主要用来进行社工攻击,包括钓鱼网站,无线AP攻击,QRCode攻击等等。

在本次实验中,SET主要用来搭建钓鱼网站,以及监听HTTP请求中发送的帐号密码。

其他的使用方法可参考文章:社会工程学工具集Social-Engineer Toolkit基础使用教程

使用setoolkit命令进入,以下开始偷懒,都是复制这篇文章

 Select from the menu:
   1) Social-Engineering Attacks  // 选择1,社会工程学攻击
   2) Penetration Testing (Fast-Track)
   3) Third Party Modules
   4) Update the Social-Engineer Toolkit
   5) Update SET configuration
   6) Help, Credits, and About
   ......
   99) Exit the Social-Engineer Toolkit

首先,选择菜单中第一个选项,社会工程学攻击。

1) Spear-Phishing Attack Vectors
2) Website Attack Vectors  // 选择2,网站攻击
3) Infectious Media Generator
4) Create a Payload and Listener
5) Mass Mailer Attack
6) Arduino-Based Attack Vector
7) Wireless Access Point Attack Vector
8) QRCode Generator Attack Vector
9) Powershell Attack Vectors
10) SMS Spoofing Attack Vector
11) Third Party Modules

然后,选择菜单中第二个选项,网站攻击。

1) Java Applet Attack Method
2) Metasploit Browser Exploit Method
3) Credential Harvester Attack Method  // 选择3,窃取凭证
4) Tabnabbing Attack Method
5) Web Jacking Attack Method
6) Multi-Attack Web Method
7) Full Screen Attack Method
8) HTA Attack Method

选择第三个选项,窃取凭证。

1) Web Templates  // 使用预定义的网站模板
2) Site Cloner    // 克隆网页
3) Custom Import  // 从指定目录导入网站

在此,为了方便,我们直接选择1,使用SET中内置的网站模板来进行实验。

set:webattack> IP address for the POST back in Harvester/Tabnabbing [192.168.1.107]:

此处注意了,它这里会使用你的默认ip,也就是你的第一个ip:

如果你使用的是双网卡,你想渗透其他内网网段的主机,可以先回车,回车后看到了提示:

新建一个终端,编辑下/etc/setoolkit/set.config这个文件,把网卡改一下就OK了:

选择2,使用Google登录页面作为钓鱼网站:

当出现

[*] Harvester is ready, have victim browse to your site.

这一行的时候表示就可以开始钓鱼了,此时在受害者的电脑上打开我们攻击机的ip就是我们的钓鱼google界面:

同时,SET的控制台打印出来一条访问请求记录:

但是,我们这个也太明显了吧,谁不知道192.168.*是内网ip,所以我们配合Ettercap一起使用:

将以下内容添加到/etc/ettercap/etter.dns

google.com       A      192.168.1.107
*.google.com     A      192.168.1.107
www.google.com   PTR    192.168.1.107

然后执行ettercap:

ettercap -TqM ARP -P dns_spoof /192.168.1.106///

具体的参数前面都解释过了,然后用受害者机器访问google.com

可以看到打开的是我们的钓鱼界面,然后我们登陆一下:

可以看到我们的Ettercap和SET都得到了账户名和密码!钓鱼成功

但是存在以下不足:

1.未考虑HTTPS的情况,HTTPS的访问不会转发到目标IP。

2.钓鱼网页的点击登录后,应该跳转到正常的网站首页,而不是仍停留在登录页面。

BetterCap

中间人攻击最知名的莫过于ettercap,而开发bettercap的目的不是为了追赶它,而是替代它,原因如下:

  • ettercap很成功,但在新时代下它已经老了
  • ettercap的过滤器复杂,使用门槛高
  • 在大型网络下,主机发现功能效果很差
  • 优化不够,对研究人员来说,无用的功能太多
  • 扩展性不够,开发需要掌握C/C++语言

Bettercap的更新频率还是比较高的,新版的bettercap采用类msf的嵌入式终端界面,这种终端界面给人一种沉浸式的体验,但是也存在一些问题,比如输入和输出混在一起的问题以及行标刷新的问题
这版bettercap的功能可以说是极大的丰富了,从原来的一个单纯的网络分析器真正的向所有的“cap”过渡了,不但支持以前的内网arp和dns欺骗,还提供了低功耗蓝牙(BLE)、GPS的嗅探以及给网络内指定MAC的设备发送远程唤醒信号(Wake On LAN)等功能,可以说已经非常强大了

下载地址(有win版):https://github.com/bettercap/bettercap/releases/latest

Kali没有自带:apt-get install bettercap -y

先看一下有哪些基本参数:bettercap -h

参数解释:

参数含义
-autostart string使用逗号分割自动启动需要的模块
-caplet string从文件中读取命令并在交互式会话中执行
-cpu-profile file写cpu配置文件。
-debug打印调试消息。
-env-file string加载环境变量文件
-eval string运行一个或多个以;分隔的命令;在交互式会话中,用于通过命令行设置变量。
-gateway-override string使用提供的IP地址而不是默认网关。如果未指定或无效,将使用默认网关。
-iface string要绑定的网络接口,如果为空,将自动选择默认接口。
-mem-profile file将内存配置文件写入文件。
-no-colors禁用输出颜色效果。
-no-history禁用交互式会话历史文件。
-silent禁止所有非错误的日志。

那么我们用bettercap打开看一下:

打开之后则会自动开始探测当前网段内主机,输入help ,可以看到许多设置选项:

以下为参数解释:

help MODULE如果未提供模块名称,则列出可用命令或显示模块特定帮助。
active显示有关活动模块的信息。
quit关闭会话并退出。
sleep SECONDS睡眠给定的秒数。
get NAME获取变量NAME的值,单独使用,或使用NAME 作为通配符。
set NAME VALUE设置变量NAME的VALUE。
read VARIABLE PROMPT显示PROMPT以询问用户输入将保存在VARIABLE中的输入。
clear清除屏幕。
include CAPLET在当前会话中加载并运行此caplet。
! COMMAND执行shell命令并打印其输出。
alias MAC NAME给定其MAC地址为给定端点分配别名。

模块说明:

any.proxy防火墙重定向到任意指定代理
api.restRESTful API模块
arp.spoofarp欺骗模块
ble.recon低功耗蓝牙设备发现模块
caplets用于列出和更新caplets模块
dhcp6.spoofdhcp6欺骗模块(通过伪造DHCP数据包篡改客户端的DNS服务器,因此需要与dns.spoof一并启用)
dns.spoof回应dns欺骗报文
events.stream默认启用此模块,负责在交互式会话期间显示时间流
gps
http.proxyHTTP透明代理,可以使用Javascript模块
http.serverHTTP服务器
https.proxyHTTPS透明代理
https.serverHTTPS服务器
mac.changer修改活跃接口的mac地址
mysql.server
net.probe通过向子网内每个可能存在的IP发送UDP数据探测网络中主机
net.recon
net.sniff网络嗅探模块
packet.proxy
syn.scan执行 syn 的端口扫描
tcp.proxy
ticker
update
wifiwifi模块,有deauth攻击(wifi杀手)和创建软ap的功能
wol

每个模块的详细使用方法可参考这篇文章:https://blog.csdn.net/u012570105/article/details/80561778

Bettercap实战

在Bettercap中设置需要欺骗的网址和自己的恶意服务器IP:

set dns.spoof.domains *.baidu.com
set dns.spoof.address 1.1.1.1
dns.spoof on

Windows7中设置DNS服务器地址为自己的IP地址:

刷新DNS后通过ping命令(此处ping不通我存有疑惑,ipv4转发是开启的):

在我们的Kali端就能看到DNS请求信息:

Cain & Abel

Cain & Abel 是由Oxid.it开发的一个针对Microsoft操作系统的免费口令恢复工具。号称穷人使用的L0phtcrack。它的功能十分强大,可以网络嗅探,网络欺骗,破解加密口令、解码被打乱的口令、显示口令框、显示缓存口令和分析路由协议,甚至还可以监听内网中他人使用VOIP拨打电话。

下载地址:http://www.oxid.it/cain.html,需要winpacp的支持,但是winpacp的下载界面上写着这么一句话:The WinPcap project has ceased development and WinPcap and WinDump are no longer maintained. We recommend using Npcap instead:WinPcap项目已经停止开发,WinPcap和WinDump也不再维护。我们建议使用Npcap代替。

所以我们直接去下载npacp:https://nmap.org/npcap/,最新版的是0.99-r9版本,点我下载

安装的时候除了默认选项,多勾选最下面那个选项:Install Npcap in WinPacp API-compatible Mode 即可满足Cain & Abel对winpacp的支持要求

Cain & Abel主界面长这样:

看一下Tool界面,看出来主要功能还是密码破解:

ARP欺骗

原理

arp

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

arp欺骗

ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网上上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网上上特定计算机或所有计算机无法正常连线。

实现

在Linux下实现arp欺骗最经典的工具:arpspoof(比较稳定),也可使用ettercap和bettercap

在Windows下可使用

查看本机arp缓存表:

(通用)arp -a:不过在Linux下执行较慢

(Linux)ip neigh show:实现上是通过另一种系统调用netlink来获取的

如果arp欺骗一直不成功,可使用arp -d删除arp缓存表(需管理员权限)

arpspoof

arpspoof即可进行单向欺骗,也可进行双向欺骗(开两个终端),一般参数如下:

arpspoof -i [网卡] -t [被欺骗主机] [自己想要伪装的主机]

-i指定的是网卡,-t指定的是目标(target),如果不指定则对整个网段进行arp毒化

所以我们这里想要欺骗win7(192.168.1.106)我是网关(192.168.1.1),并想要欺骗网关我是win7,可以使用以下命令

arpspoof -i eth0 -t 192.168.1.106 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.106

我们先来看一下没有进行arp欺骗之前win7的arp缓存表:

然后开启欺骗:

再次查看arp缓存表:

发现原来网关的mac地址变得和kali的一样了,那么我们向网关发送的所有流量都会流经kali,而kali也同时欺骗着网关自己是win7,这样win7能正常上网但它不知道所有流量都被窥视了。

但在这里建议把Linux内核的流量转发功能开启,不然可能导致对方上不了网,引起对方的警觉:

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1

ettercap

前面已经介绍过详细使用方法,此处直接给出命令:

ettercap -i eth0 -TqM ARP /192.168.1.106// ///

和上面起到的是一样的效果

bettercap

同样我们使用bettercap命令进入,执行以下命令:

net.sniff on
set arp.spoof.targets 192.168.1.106
(设定只针对一个或多个目标,不设置则针对整个网段开始欺骗)
arp.spoof on

此时就开始了arp欺骗,如果此时我们用wireshark等抓包工具去抓的话,会发现只抓得到tcp数据包,没有http/https的数据包,可以通过命令http.proxy on或者https.proxy on开启http/https代理

如果想开个窗口监视http的网页浏览,可以使用 urlsnarf -i eth0 命令(urlsnarf命令需用在arp欺骗之后):

Driftnet可用于过滤嗅探图片,利用driftnet进行流量监控,显示被害者浏览的图片:driftnet -i eth0

而driftnet和arpspoof都属于Dsniff工具套件

最后编辑于: 2019 年 07 月 13 日