DHCP安全评估--dhcpig

0x00前言

    DHCPig可以进行一个高级的DHCP安全评估。它将消耗局域网内的所有IP地址以及阻止新客户端获取IP,同时它也防止旧客户端释放IP地址。另外,它会发送无效的ARP去把所有的windows主机震下线。
    它需要python库scapy2.1或以上的库,并且需要管理员/root权限去执行。它无需额外的配置,仅仅通过接口提供参数即可。该程序已在多个linux发行版本和DHCP服务器ISC,Windows 2k3/2k8,..).上进行测试。
     当该脚本被执行的时候,也会执行以下操作:
在局域网其他电脑自动获取IP之前,将这些IP截获---如果检查到DHCP请求应答,则监听其他DHCP请求并且回应该请求。
请求区域内所有的IP地址---循环发送DHCP所有的主机和MAC地址请求。
查找你电脑的邻居的MAC和IP地址,并且从DHCP服务器中释放这些地址。
最终,该脚本将等待DHCP耗尽(将会在10秒内没有DHCP提供并且询问所有离线的Windows主机,同时在局域网产生无效的ARP回应。
并且因为没有其他可用的DHCP地址,这些windows系统将保持脱机状态。即使检测到局域网的另外一个系统使用同一个IP,该Linux系统也不会释放该IP。
    该工具支持IPv4、IPv6协议。

0x01 下载安装

#加强DHCP安全评估
github地址:https://github.com/kamorin/DHCPig
Usage:
    pig.py [-h -v -6 -1 -s -f -t -a -i -o -l -x -y -z -g -r -n -c ] <interface>
Options:
    -h, --help                     #显示帮助信息
    -v, --verbosity                #显示详细输出信息。(默认是10,范围是1-99
    -6, --ipv6                     #DHCPv6 (默认是关, 默认是开启DHCPv4)
    -1, --v6-rapid-commit          #开启RapidCommit (双向是被指定的,而不是4向。) (未开启)
    -s, --client-src               #客户端MAC地址列表。如00:11:22:33:44:55,00:11:22:33:44:56 (默认: 任意地址)
    -O, --request-options          #可选的请求编码,如 21,22,23 or 12,14-19,23 (默认: 0-80)
    -f, --fuzz                     #任意模糊包。 (未开启)
    -t, --threads                  #发送线程的数目。 (1)
    -a, --show-arp                 #检测/打印哪个主机有ARP请求 (未开启)
    -i, --show-icmp                #检测/打印ICMP请求 (未开启)
    -o, --show-options             #打印IP地址租赁信息。(未开启)
    -l, --show-lease-confirm       #检测/打印DHCP回复。 (未开启)
    -g, --neighbors-attack-garp    #使用无故的ARP去碰撞网络分段。 (未开启)
    -r, --neighbors-attack-release #释放所有的邻居IP (未开启)
    -n, --neighbors-scan-arp       #ARP邻居扫描 (未开启)
    -x, --timeout-threads          #线程生成计时器。 (0.4)
    -y, --timeout-dos              #DOS超时(8) (聚集grat.arp的等待时间)
    -z, --timeout-dhcprequest      #DHCP请求超时 (2)
    -c, --color                    #开启彩色输出(未开启)
-v, --verbosity                #显示详细输出信息
输出信息中的符号的代表意义如下所示:
. = DHCP_Discovery
! = DHCP_Offer
; = ICMP/ARP/DHCP_ACKs
D = DEBUG output (show options, etc.)
E = ERROR
N = NOTICE / INFO

0x02 使用示例

root@kali:~# pig.py eth0
root@kali:~# pig.py --show-options eth0
root@kali:~# pig.py -x1 --show-options eth0
root@kali:~# pig.py -6 --fuzz eth0
root@kali:~# pig.py -6 -c -verbosity=100 eth0
root@kali:~# pig.py --neighbors-scan-arp -r -g --show-options eth0

0x03 实践应用

#在本例中,因为是虚拟机的原因,所以在网络选择的时候要选择“桥接模式-复制物理网络连接状态”
root@kali:~# pig.py -g -t 10 eth0   #电脑或者手机因无法获取IP而连接不上网络

root@kali:~# pig.py -c -v3  -l -a -i -o eth2
root@kali:~# pig.py -6 -c -v3  -l eth3


 

0x04 防御策略

     大多数通用的方法是通过接入层交换机或者无限控制器来防止DHCP耗尽。   
在思科交换机中,最简单的选择是开启DHCP snooping 功能,snooping 将会防止资源池耗尽、IP劫持和使用DHCPig进行 DHCP服务器欺骗。基于检测流量,DHCP snooping 将会在每个端口上生成从IP到MAC的映射表。这将严格控制用户通过给定IP访问端口。任何从不信任端口发出的DHCP服务器消息将会被过滤。
开启下列的功能去防止资源池耗尽、IP劫持和DHCP服务器欺骗。

开启 snooping
ip dhcp snooping

指定你的DHCP所绑定的端口。这个最有可能是你的快速链接。执行下列的操作将会限制DHCP服务器响应特定的端口,所以应该在试验环境下测试后再使用该功能。
int fa0/1 (or correct interface)
ip dhcp snooping trust
显示状态
show ip dhcp snopping
show ip dhcp snopping binding
更多信息: http://www.cisco.com/en/US/docs/switches/lan/catalyst4500/12.1/12ew/configuration/guide/dhcp.pdf

欢迎大家分享更好的思路,热切期待^^_^^ !!!

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
dhcp4java-1.00.jar是一个Java库,用于实现动态主机配置协议(DHCP)的客户端与服务器功能。DHCP是一种网络协议,用于自动分配IP地址、网关、子网掩码和其他网络配置信息给计算机。这个库提供了一系列的类和方法,使得在Java应用程序中实现DHCP功能变得简单且易于管理。 使用dhcp4java-1.00.jar,可以轻松地创建一个DHCP客户端或服务器,从而实现自动IP地址分配和网络配置。客户端可以向DHCP服务器发出请求,以获取可用的IP地址和其他配置信息,并将其应用于本地计算机,从而实现自动配置的网络连接。而服务器则负责接收和处理客户端的请求,并根据需要进行地址分配和配置信息的分发。 通过使用dhcp4java-1.00.jar,开发人员可以在Java应用程序中轻松实现DHCP功能,而不需要自己编写复杂的DHCP协议代码。该库提供了许多实用的类和方法,如DHCPClient、DHCPServer、DHCPMessage等,使得DHCP功能的实现变得简单且易于维护。开发者只需要了解DHCP协议的基本原理和使用方法,就可以利用这个库快速地构建功能完善的DHCP客户端或服务器。 总之,dhcp4java-1.00.jar是一个强大而灵活的Java库,可用于实现DHCP功能,实现自动IP地址分配和网络配置。它简化了DHCP协议的实现和管理,使得开发人员能够更专注于应用程序的逻辑,而不必关注底层的网络细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值