Kali渗透测试: 络数据的嗅探与欺骗
无论什么样的漏洞渗透模块,在 络中都是以数据包的形式传输的,因此如果我们能够对 络中的数据包进行分析,就可以掌握渗透的原理。 另外,很多 络攻击的方法也都是发送精心构造的数据包来完成的, 如常见的ARP欺骗。利用这种欺骗方式,黑客可以截获受害计算机与外部通信的全部数据,如受害者登录使用的用户名与密码、发送的邮件等。
“The quieter you are the more you are able to hear”(你越安静,你能听到的越多)。如使用HTTP、FTP或者Telnet等协议所传输等数据都是明文传输的, 一旦数据包被监听,里面的信息就会被泄漏。而这一切并不难做到,任何一个有经验的黑客都可以轻而易举地使用抓包工具来捕获这些信息,从而突破 络,窃取 络中的“秘密”。 络中最为著名的一种欺骗攻击被称为“中间人攻击”。这种攻击方式中,攻击者会同时欺骗计算机A和计算机B,攻击者会设法让计算机A误认为攻击者的计算是计算机B,同时还会设法让计算机B误认为攻击者的计算机是计算机A,从而计算机A和计算机B之间的通信都会经过攻击者的计算机。
络数据的嗅探:在Kali Linux中提供了很多可以用来实现 路数据嗅探的工具,其实这些工具都是基于相同的原理。所有通过你 卡的 络数据都是可以被读取的。这些 络数据按照各种各样不同的协议组织到一起,所以我们只要掌握了各种协议的格式,就可以分析出这些数据所表示的意义。当然,目前互联 所使用的协议数目众多,而且还在不断增长(或许将来会有你设计的)。
络数据的欺骗:在互联 创建之初,提供的服务和使用的人员都很少,也无需考虑安全方面的问题, 所以作为互联 协议基础的几个重要协议都没有使用安全措施。随着互联 的规模越来越大,使用者越来越多,有人开始利用互联 的缺陷或者漏洞篡改 络数据来实现自己的目的,可能出于炫耀或者恶作剧,
如果你想彻底了解一个 络,最好的办法就是对 络中的流量进行嗅探。
1.1 使用TcpDump分析 络数据
TcpDump是款“资深” 络工作人必备的工具,这款工具极为强大。在戴维·马兰(David J.Malan)主讲的哈佛大学公开课计算机科学CS50中,他就在上课时使用TcpDump捕获了教师中的 络流量。
在Kali中打开一个命令行输入tcpdump命令就可以启动TcpDump,如下图所示:
Wireshark的启动界面如下图所示:
接下来会弹出“Wireshark · Capture Interfaces”对话框,在这个对话框中我们选择需要使用的 卡,如这里选择最常用的eth0,如下图所示:
Wireshark的工作界面可以分成3个面板:1显示数据包列表 2 显示数据包详细信息 3显示数据包原始信息。这3个面板相互关,在数据包列表面板中选中一个数据包之后,在数据包详细信息面板处就可以查看这个数据包的详细信息,在数据包原始信息面板处就可以查看这个数据包的原始信息。
一般而言,数据包详细信息中包含的内容是我们最关心的。一个数据包通常需要使用多个协议,这些协议一层层将要传输的数据包装起来。下图所示为DHCP数据包的详细信息。
因为正常情况下,计算机会有大量的通信数据包产生,为了提高效率,Wireshark为使用者提供了两种过滤器,一个是显示过滤器,另一个是捕获过滤器。两种过滤器的语法不同,显示过滤器可以只显示符合条件的数据包,显示过滤器位于工具栏的下方,如下图所示:
我们在文本框中输入“icmp”来设置这个显示过滤器的条件,然后按Enter键即可,如下图所示:
打开这个显示过滤器的构造窗口,如下图所示:
首先在左侧的“Field Name”列表中找到IP,并展开找到ip.src字段,然后在“Relation”中找到“==”,并在“Value”中填写IP地址。填写完毕以后可以看到下方显示的构造好的过滤器,完成之后点击“OK”按钮即可。
1.3 Wireshark的部署方式
1.3.1 交换机环境下的流量捕获
如下图所示,一个包含4个端口的交换机,连接了A、B、C、D共4台计算机,其中的计算机A要将一条信息发送到计算机B,而交换机作为 络的中心对信息进行转发。只有计算机B才能接收到来自计算机A的信息,其他计算机是接受不到这个信息的。
目前很多交换机都具备了端口镜像的功能。我们可以将其中的一个端口设置为镜像端口,然后把需要监视的流量转发到这个镜像端口,这样我们需要监控的计算机A连接到这个端口就可以对其进行监控了。我们构建一个包含3台设备的 络,设备间的连接方式如下表所示:
3台设备的IP地址以及与交换机连接的端口
设备 | IP地址 | 与交换机连接的端口 |
---|---|---|
客户端 | 192.168.68.242 | Ethernet0/0/1 |
监控端 | 192.168.68.125 | Ethernet0/0/2 |
服务端 | 192.168.68.129 | Ethernet0/0/3 |
在本例中,我们使用监控端来监听发往服务端的通信流量,这里需要将Ethernet0/0/2配置为观察端口,将Ethernet0/0/3配置为镜像端口。下面给出配置命令:
到此为止,凡是从Ethernet0/0/3端口发出的通信流量,都会被交换机复制一份到Ethernet0/0/2上。很多路由器也实现了端口镜像功能,这个功能在实际工作中也是十分便利的。
1.3.1.2 ARP欺骗
很多情况下,我们既不能更改 络物理线路,也不能使用交换机的端口镜像功能。这时可以使用ARPSpoof或者Cain之类的工具来实现中间人攻击。这种技术经常被黑客用来进行 络监听,所以也被看作一种入侵行为。
ARP欺骗无须对 络做出任何的改动,只需要在自己的计算机上运行欺骗工具即可,但是需要注意的是这种行为往往会被认定为入侵行为。ARP欺骗的原理如下所示。
1)如下图给出了正常情况下,计算机B通过 关和外部进行通信的过程
3)计算机B将原来本发往 关的数据包都发给计算机A,如下图所示:
-
桥接模式
我们需要考虑VMware(另一款虚拟机软件VirtualBox与此相同)的 络连接方式,在使用虚拟机进行 络通信的时候,我们需要在几种模式中做出选择,这些模式有各自适用的场合,也有各自不同的捕获数据的方式。如下图所示:
-
仅主机模式
处于仅主机(Host- only)模式的主机相互之间可以通信,也可以与物理宿主机进行通信,但是不能连接到除此以外的设备上。我们只需要在选择 卡的时候选择“VMware Network Adapter VMnet1” 卡就可以监听仅主机模下的所有通信流量。
-
NAT模式
我们只需要在选择 卡的时候选择“VMware Network Adapter VMnet8” 卡就可以监听NAT模式下的所有虚拟机的通信流量。
1.4 使用Ettercap进行 络嗅探
捕获在 络中传输的数据信息的行为称为 络嗅探。我们来介绍一个集成了ARP欺骗功能的工具—Ettercap。Kali中集成了Ettercap,启动方式也是两种,既可以在图形化操作界面中也可以在命令行中。启动Ettercap的命令如下:
启动之后的Ettercap图形化界面如下图所示:
点击下图红框中的“对 ”,
首先我们要查看整个 络中可以进行欺骗的目标,这些目标可以使用菜单栏“Hosts”选项下拉菜单中的“scan for hosts”来查看,如下图所示:
其中192.168.68.1是 关地址,192.168.68.141是目标主机的IP地址.我们将中两个地址添加微Target 。首先选中192.168.68.1,然后单击下面的“Add to Target1”,然后选中“192.168.68.141”,单击下面的“Add to Target2” ,这样就选择好了要欺骗的目标。如果想要查看设置好的目标,可以单击菜单栏上的“Targets”,如下图所:
接下来会弹出一个中间人攻击选项,这里面一共有两个可选项,勾选“Sniff remote connections”即可,如下图所示:
现在从IP地址为192.168.68.141的iPad发出的数据都将发送到我们主机上。此时单击Ettercap菜单栏上的3个点选项,然后选中“Connections”可查看连接内容,如下图所示:
成功进行 络嗅探后,从目标主机发向 关的所有流量都将现经过你的计算机,而现在该目标主机与外界的所有通信都“摆在你眼前了“。
1.5 实现对HTTPS的中间人攻击
启动抓包工具Wireshark,就可以发现目标在浏览某个 站时实际产生的书包,如下图所示:
其实上面显示的这部分数据包就是在用户浏览页面时产生的,但是为什么显示的不是直接可以看到的内容的HTTP呢为目前大部分 站已经不再是使用HTTP了,而是转而采用更加安全的HTTPS。
1.5.1 HTTPS与HTTP的区别
HTTP主要存在以下缺点
◆ 在通信的过程使用明文传输,一旦信息被截获,用户的隐私就会被泄漏
◆ 不对通信方的身份进行验证,因而通信双方可能会被黑客冒充
◆ 无法保证通信数据的完整性,黑客可能会篡改通信数据
安全套接字(Secure Sockets Layer, SSL)协议用以保障在Internet上数据传输的安全,利用数据加密技术,可确保数据在 络上的传输过程中不会被截取和窃听。SSL协议提供的安全通道有以下3个特性:
◆ 在通信的过程中使用密钥加密通信数据,即使信息被截获,用户的隐私也不会被泄漏
◆ 服务器和客户都会被认证,客户的认证时可选的
◆ SSL协议会对传送的数据进行完整性检查,黑客无法篡改通信数据
而HTTPS相当也HTTP+SSL协议。因为在原有的结构中多了SSL这一层,所以HTTP首先需要使用SSL来建立连接。HTTP与HTTPS的区别如下图所示:
④ 客户端对证书进行解析,并验证数字证书是否有效,如果发现异常,就会弹出一个警告框,提示该数字证书存在问题。如果该数字证书验证通过,客户端就会生成一个随机数R
⑤ 客户端使用数字证书中的公钥对随机数R进行加密,然后发送给服务端
⑥ 服务端使用私钥对传输数据进行解密,得到随机数R
⑦ 客户端使用随机数R和协商加密算法加密一条消息发送给服务端,验证服务端是否能正常接收自客户端的消息
⑧ 服务端也通过随机数R和协商加密算法加密一条消息发送给客户端,如果客户端能够正常接收来自服务端端消息,则表明SSL层连接已经成功建立。
1.5.2 数字证书颁发机构的工作原理
服务端如果想要获得数字证书,就需要向证书颁发机构申请。证书颁发机构生成一对公钥和私钥、一个服务端端数字证书,并使用私钥对数字证书进行加密,该私钥不是公开的。 证书颁发机构向服务器A颁发包含CA公钥的数字证书,并向客户端提供CA公钥。证书颁发机构的工作原理如下图所示:
可以打开mitmweb的工作界面(工作在8081端口),如下图所示:
在命令行功中使用mitmweb命令启动mitmproxy。然后访问mitmproxy提供的证书颁发机构下载数字证书,如下图所示
1.5.3.3 使用mitmproxy与中间人攻击协同工作
这种情形指的是使用mitmproxy来解密从其他设备发出的流量。黑客首先运行中间人攻击程序,将它的全部流量劫持到自己的设备上。
因为mitmproxy只能运行在8080端口,所以需要将劫持的流量转发到这个端口上。考虑到mitmproxy用来处理HTTP、HTTPS产生的流量,所以我们只需要将目标端口为80和443的流量过滤出来,然后转发到本机的8080端口。这一点在Linux操作系统中使用iptable可以很容易做到。下面给出转发的命令:
上面的命令要在root权限下执行。如果是在Windows操作系统下,由于没有iptables,实现这个操作会变得十分困难,如下图所示:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
-