• 【内网攻击】DHCP协议概念——地址池耗尽攻击


    目录

    前言

    DHCP 服务概念

    1)客户端发送DHCP Discovery广播包

    2)服务器响应DHCP Offer广播包

    3)客户机发送DHCP Request广播包

    4)服务器发送DHCP ACK广播包

    部署DHCP服务器

    dhcp地址池消耗攻击

    攻击防御


    前言

    现在思考我们的主机IP是如何得到的?[新手向]

    如下图 不使用静态配置的方式,改成自动获的IP地址的方式。我们会获取一个动态的临时IP地址!

    这期间发生了什么?

    本次我会介绍dhcp的基本概念,且从抓包的形式上从流量上来理解dhcp服务端和客户端的通信细节。为了显示dhcp服务攻击,我将采用win2008来部署dhcp服务器,最后用通信流量分析攻击的细节。

    DHCP 服务概念

    dhcp即可以说是一个协议也可以说是一个服务,他的主要目的就是帮助主机获取一个IP。我们可以自己抓一下包看一看dhcp做了做了那些事情,下图就是DHCP的工作流程。

     

    DHCP原理

    也是DHCP租约过程,分为4个步骤:

    1)客户端发送DHCP Discovery广播包

    可以看到此刻的客户端(没有ip故)用0.0.0.0作为源地址,由于也不知道dhcp服务的地址及mac地址,故发送广播报文,目的ip为255.255.255.255目的mac地址为ff:ff:ff..。发送“discover”试图寻找dhcp找可用IP。

    2)服务器响应DHCP Offer广播包

    服务器收到dhcp discovery 包后响应Offer包。此包的源mac为自己,目的mac为客户端主机(之前发送discovery 服务器记录了mac)。根据ip地址此刻服务器已经当主机为分配的ip地址218.133了,当客户端收到这个包后正常来说会检查目的mac,目的ip是否为自己,如果不是自己则会丢弃。但此刻情况不同!自己还没有ip加之这是一个dhcp的offer包,因此处理逻辑自然也不会相同。这也是一个单播地址。

    看看offer包的数据

    根据上图服务端向客户端提供了一个IP地址,还有这个ip的使用期限(30)分钟。子网掩码也有。

    当时间50%过后,会牵扯到续约的问题。如果客户端不续约服务端会回收这个ip地址。

    这个时候,客户端已经知道了服务端的mac和IP地址,因此在接下来的通信中客户端即可以向服务端发单播也可以发广播。但考虑到有多个dhcp的offer情况下,发广播的方式是合理的,并且大部分的主流设备也是这样的做的。

    3)客户机发送DHCP Request广播包

    这个Request为一个广播包,向服务端218.254 请求IP 218.133这个地址。

    4)服务器发送DHCP ACK广播包

    再次确定了租期时间和子网掩码。此刻dhcp的工作流程全部完成,客户端获取218.133地址,服务端地址池的ip会减一。

    从流程上,用不常规思想想一想,如果我们改变自己mac地址,短时间内反复向服务器租借地址,直到服务器可提供的ip耗尽,至此正常的用户还能获得ip地址吗!

    部署DHCP服务器

    为了复现本次dhcp地址池消耗的攻击,本次我采windows2008r2服务器搭建dhcp服务,用kali进行攻击。

    注意:添加之前请确保自己的windows服务器有一个静态ip,并且之后分配的ip处于这个网段。

    本次计划:内网网段为192.168.100.1/24 DHCP服务器ip为192.168.100.253 。欲192.168.100.254 为网关地址

    1.服务器添加新角色

    2.选择DHCP 服务器一直点下一步

    3.新建作用域;本次我在地址池设置了100个ip地址用来测试。

    4.本次测试不涉及dhcpv6 ,选禁用,下一步。

    5.安装完成

    6.服务测试

    在打开新的虚拟机置为同一个网络下,测试dhcp自动获取是否能够成功。(可以打开抓包软件,在学习下dhcp协议的流程)

    win7已经过了ip,查看服务器地址池。

    服务器这边地址租用果然也有了记录。

    dhcp地址池消耗攻击

    本次我们用kali 提供一款用具dhcpig

    如果你的kali没有,那就安装一下

    ┌──(kali㉿kali)-[~] └─$ sudo dhcpig -h option -? not recognized

    enhanced DHCP exhaustion attack.

    Doc: GitHub - kamorin/DHCPig: DHCP exhaustion script written in python using scapy network library

    Usage: pig.py [-h -v -6 -1 -s -f -t -a -i -o -l -x -y -z -g -r -n -c ]

    Options: -h, --help <-- you are here :) -v, --verbosity ... 0 ... no (3) 1 ... minimal 10 ... default 99 ... debug

    -6, --ipv6                     ... DHCPv6 (off, DHCPv4 by default)
    -1, --v6-rapid-commit          ... enable RapidCommit (2way ip assignment instead of 4way) (off)
    ​
    -s, --client-src               ... a list of client macs 00:11:22:33:44:55,00:11:22:33:44:56 (Default: )
    -O, --request-options          ... option-codes to request e.g. 21,22,23 or 12,14-19,23 (Default: 0-80)
    ​
    -f, --fuzz                     ... randomly fuzz packets (off)
    ​
    -t, --threads                  ... number of sending threads (1)
    ​
    -a, --show-arp                 ... detect/print arp who_has (off)
    -i, --show-icmp                ... detect/print icmps requests (off)
    -o, --show-options             ... print lease infos (off)
    -l, --show-lease-confirm       ... detect/print dhcp replies (off)
    ​
    -g, --neighbors-attack-garp    ... knock off network segment using gratious arps (off)
    -r, --neighbors-attack-release ... release all neighbor ips (off)
    -n, --neighbors-scan-arp       ... arp neighbor scan (off)
    ​
    -x, --timeout-threads          ... thread spawn timer (0.4)
    -y, --timeout-dos              ... DOS timeout (8) (wait time to mass grat.arp)
    -z, --timeout-dhcprequest      ... dhcp request timeout (2)
    ​
    -c, --color                    ... enable color output (off)

    sudo dhcpig eth1 -r -c

    • -c 彩色输出信息。

    • -r 释放全部已经分配的IP地址。

    此刻kali会不断向dhcp服务端请求ip地址

    此时的流量情况,(和此前分析的略有不同,服务端回的offer包是一个广播 不是单播,这也可见不同厂商有着不同的见解,不过这不影响dhcp的工作通信),有不断的dhcp请求。

    也可以看出这款工具的默认设置的源Mac地址是以dead开头的

    在回头看看windows服务器这边的情况

    地址租用已经是满了。

    此后再开网卡,试试能不能获取ip

    可以看到我新开的主机一直请求dhcp discover,但是一直没有响应

    攻击防御

    1)攻击DHCP服务器:频繁的发送伪装DHCP请求,直到将DHCP地址池资源耗尽

    防御:在交换机(管理型)的端口上做动态MAC地址绑定

    2)伪装DHCP服务器攻击:hack通过将自己部署为DHCP服务器,为客户机提供非法ip地址

    防御:在交换机上(管理型),除合法的DHCP服务器所在接口外,全部设置为禁止发送dhcp offer包

  • 相关阅读:
    springboot2整合nacos云服务,配置基本类型和json类型
    原来掌握这些就已经是高级测试工程师!后悔没早点发现!
    Base64编码知识记录
    《Kafka 源码实战》看完面试不慌!
    【深度学习】 图像识别实战 102鲜花分类(flower 102)实战案例
    错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。
    必备基础算法
    关于Copy On Write Array List,你会安全使用么
    3、Nginx 常用的命令和配置文件
    聊聊支付流程的设计与实现逻辑
  • 原文地址:https://blog.csdn.net/shelter1234567/article/details/133834073