DHCP DNS 欺骗武器化——实用指南

news/2024/9/22 16:36:43/

DHCP 枚举

在我们之前的文章中,我们分享了 DHCP DNS 欺骗背后的理论。实际上,需要几条信息才能有效地执行我们描述的攻击。对于攻击者来说幸运的是,发现DHCP 服务器并了解其配置的能力是 DHCP 协议的一部分,这使得侦察过程变得微不足道。

在以下章节中,我们将描述攻击者可以从未经身份验证的环境中使用来收集这些不同信息的不同方法和技巧。

识别 DHCP 服务器

DHCP DNS 攻击中最重要的部分是目标 DHCP 服务器,因此第一步是识别一个 DHCP 服务器。识别网络中的活跃 DHCP 服务器非常简单。攻击者可以发送 DHCP Discover 广播并检查服务器的 Offer 响应。

要发送 DHCP 消息,我们可以运行dhclient Linux 实用程序 — 一个可配置的 DHCP 客户端,允许与 DHCP 服务器交互。我们可以通过编辑其配置文件来配置dhclient,该文件位于**/etc/dhcp/dhclient.conf**。

当我们运行它时,dhclient将从 DHCP 服务器请求网络配置并将其应用于我们的机器 - 覆盖我们当前的 IP 地址。为了避免这种情况,我们可以使用以下语法在虚拟接口上运行它:

  dhclient <interface_name>:<virtual_interface_name>

复制

运行此命令后,我们可以看到我们的原始IP地址(172.25.14.55)保持不变,而我们的虚拟接口从DHCP服务器接收到了一个新的IP地址(图1)。

如果我们记录流量并检查 DHCP Offer 消息,我们将能够识别所有活动的 DHCP 服务器(图 2)。

图 2:发送 DHCP Discover 来识别网络中的活动 DHCP 服务器

获取 DHCP 服务器的域和 DNS 服务器

在识别网络中的 DHCP 服务器后,我们需要知道哪些记录可以通过每个服务器进行伪造。DHCP 服务器只能在其关联的 ADI 区域内创建记录 - 与“aka.test”域关联的服务器只能写入具有相同后缀的 DNS 记录:.aka.test。要了解我们可以伪造哪些记录,我们需要识别此后缀。

此外,我们想知道哪个 DNS 服务器将托管新记录,这将使我们能够查询它们并验证攻击是否成功。

攻击者可以使用一种技巧来找出这两个参数,即参数请求列表选项,该选项允许查询 DHCP 服务器以获取特定设置。对于我们的目的,我们可以查询服务器关联的域名域名服务器选项。

我们可以再次使用dhclient 。为了将参数请求列表选项添加到我们的发现消息中,我们在**dhclient的配置文件中包含以下行:

  request domain-name, domain-name-servers;

复制

当我们运行dhclient(像以前一样,在虚拟接口上)并检查我们的发现消息时,我们看到它包含带有我们请求的字段的参数请求列表选项(图 3)。

图 3:DHCP Discover 消息中的参数请求列表

监听的 Microsoft DHCP 服务器应向此 Discover 消息发送带有所请求参数的 Offer 响应(图 4)。图 4:DHCP 服务器响应我们请求的设置

推断名称保护状态

尝试滥用 DHCP DNS 动态更新时,另一个重要的设置是名称保护,因为此设置将决定某些


http://www.ppmy.cn/news/1514782.html

相关文章

【Android】Navigation动态设置Graph和Launch参数

需求 Activity和Fragment可以服用&#xff0c;不同的启动方式&#xff0c;Fragment调用栈不同 方案 不同的启动方式&#xff0c;通过代码动态设置&#xff0c;使用不同的NavGraph 注意 动态设置代码是在onCreate之后执行的 NavHost如果指定了Graph&#xff0c;在onCreate…

技术前沿:WebRTC与H.265编码的兼容性挑战与应对策略

WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种支持网页浏览器进行实时语音通话、视频聊天以及P2P文件共享的技术。然而&#xff0c;标准的WebRTC API在大多数浏览器中默认并不支持H.265&#xff08;也称为HEVC&#xff0c;高效视频编码&#xff09;编码。这…

kubernetest中wait.Until()方法的源码解读

概述 摘要&#xff1a;本文从源码层面解读了kubernetes源码中常用的wait.Until()方法的源码实现&#xff0c;并且本文也举例说明了wait.Until()方法的在kubernete源码中的典型使用场景。 wait.Until()源码解读 在Kubernetes源码中, 我们经常会读到wait.Until()函数&#xff…

视频达人的秘密武器:全能型剪辑软件深度剖析

剪辑视频&#xff0c;作为视频创作过程中的关键环节&#xff0c;其重要性不言而喻。无论是专业影视制作团队&#xff0c;还是热衷于Vlog创作的个人&#xff0c;都离不开一款强大且易用的视频剪辑工具。今天&#xff0c;就让我们一起踏上一场探索之旅&#xff0c;对市面上的视频…

鸿蒙OS promptAction的使用

效果如下&#xff1a; import { promptAction } from kit.ArkUIlet customDialogId: number 0Builder function customDialogBuilder() {Column() {Blank().height(30)Text(确定要删除吗&#xff1f;).fontSize(15)Blank().height(40)Row() {Button("取消").onClick…

MySQL集群+Keepalived实现高可用部署

Mysql高可用集群-双主双活-myqlkeeplived 一、特殊情况 常见案例&#xff1a;当生产环境中&#xff0c;当应用服务使用了mysql-1连接信息&#xff0c;在升级打包过程中或者有高频的数据持续写入【对数据一致性要求比较高的场景】&#xff0c;这种情况下&#xff0c;数据库连接…

单片机驱动彩屏最简方案:单片机_RA8889最小开发板驱动控制TFT彩屏介绍(二)硬件电路设计

本文介绍使用单片机RA8889来驱动和控制彩屏的最小方案。文章从RA8889的架构功能、硬件电路设计及软件设计三个方面来说明。 小编已发布多篇文章介绍了单片机RA8889来驱动控制彩屏&#xff0c;但是仍有不少单片机玩家可能对驱动彩屏还不算熟悉&#xff0c;在此加推一个短篇介绍…

C++设计模式1:单例模式(懒汉模式和饿汉模式,以及多线程问题处理)

饿汉单例模式 程序还没有主动获取实例对象&#xff0c;该对象就产生了&#xff0c;也就是程序刚开始运行&#xff0c;这个对象就已经初始化了。 class Singleton { public:~Singleton(){std::cout << "~Singleton()" << std::endl;}static Singleton* …