Centos下搭建~DHCP攻击环境

本文转载自【https://www.lzfkj.vip/post/24】

Centos下搭建 DHCP 攻击环境

DHCP 简介

DHCP(动态主机配置协议)是一个局域网的网络协议,指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

DHCP 通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机能够动态的获得IP地址、网关地址、DNS服务器地址等信息。此外,还能够提升IP地址的使用率。

DHCP有三种机制分配IP地址:

  • 自动分配方式,DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  • 动态分配方式,DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  • 手工分配方式,客户端的IP地址是由管理员指定,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

DHCP工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。

1、DHCP Client以广播的方式发出DHCP Discover报文。

2、所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。

DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。

3、DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。

DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。

4、DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

5、DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。

6、DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。

Centos 环境下 dhcpd安装

可以使用yum安装方式,如下命令即可安装:

yum -y install dhcp

出现以下类似字眼,标识安装成功:

Installed:
  dhcp.x86_64 12:4.2.5-82.el7.centos                                                               

Dependency Installed:
  bind-export-libs.x86_64 32:9.11.4-26.P2.el7_9.4                                                  

Dependency Updated:
  dhclient.x86_64 12:4.2.5-82.el7.centos          dhcp-common.x86_64 12:4.2.5-82.el7.centos        
  dhcp-libs.x86_64 12:4.2.5-82.el7.centos        

Complete!

修改配置

打开 /etc/dhcp/dhcpd.conf
有以下提示内容:

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

那我们可以进入对应目录:

cd /usr/share/doc/dhcp-4.2.5

目录中包含以下内容:

dhcpd6.conf.example  dhcpd.conf.example  ldap

我们直接拷贝dhcpd.conf.example 到/etc/dhcp/dhcpd.conf


[root@php dhcp-4.2.5]# mv dhcpd.conf.example  /etc/dhcp/dhcpd.conf 
mv: overwrite ‘/etc/dhcp/dhcpd.conf’? y

出现的y,意思就是覆盖原来的文件,现在我们打开文件看下:

# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;


...

已经有对应的内容。

在原来基础上,修改如下内容,除了下面的内容,其他相关的都注释:

subnet 192.168.5.0 netmask 255.255.255.0 {
  range 192.168.5.180 192.168.5.220;
  option domain-name-servers 192.168.0.254;
  option broadcast-address 192.168.5.255;
  option routers 192.168.5.254;
  #default-lease-time 600;
  #max-lease-time 7200;
}

启动

systemctl start dhcpd

查看启动状态:

systemctl status dhcpd

● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-03-23 13:55:54 CST; 1s ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 3442 (dhcpd)
   Status: "Dispatching packets..."
   CGroup: /system.slice/dhcpd.service
           └─3442 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Mar 23 13:55:54 php dhcpd[3442]: For info, please visit https://www.isc.org/software/dhcp/
Mar 23 13:55:54 php dhcpd[3442]: Wrote 0 class decls to leases file.
Mar 23 13:55:54 php dhcpd[3442]: Wrote 0 deleted host decls to leases file.
Mar 23 13:55:54 php dhcpd[3442]: Wrote 0 new dynamic host decls to leases file.
Mar 23 13:55:54 php dhcpd[3442]: Wrote 41 leases to leases file.
Mar 23 13:55:54 php dhcpd[3442]: Listening on LPF/ens32/00:0c:29:77:a5:06/192.168.5.0/24
Mar 23 13:55:54 php dhcpd[3442]: Sending on   LPF/ens32/00:0c:29:77:a5:06/192.168.5.0/24
Mar 23 13:55:54 php dhcpd[3442]: Sending on   Socket/fallback/fallback-net
Mar 23 13:55:54 php systemd[1]: Started DHCPv4 Server Daemon.
Mar 23 13:55:55 php dhcpd[3442]: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32

查看已使用IP

在/var/lib/dhcpd目录下,可以查看dhcpd.leases文件,文件中有已分配完的IP,摘取如下:

# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

lease 192.168.5.197 {
  starts 2 2021/03/23 02:07:35;
  ends 2 2021/03/23 02:17:35;
  tstp 2 2021/03/23 02:17:35;
  cltt 2 2021/03/23 02:07:35;
  binding state free;
  hardware ethernet 36:33:3a:33:32:3a;
}

...

可使用如下命令统计IP的分配数:

[root@php dhcpd]# cat dhcpd.leases|grep "lease 192.168.5.*"|wc -l
63

查看日志

dhcp的日志默认输出在/var/log/message中,摘取部分显示如下:

Mar 23 14:01:32 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:01:33 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:01:33 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:01:35 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:01:35 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:02:16 php dhcpd: DHCPINFORM from 192.168.5.13 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:02:19 php dhcpd: DHCPINFORM from 192.168.5.65 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:02:39 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:02:40 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:02:41 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:02:41 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:02:43 php dhcpd: DHCPINFORM from 192.168.5.48 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:02:43 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:02:43 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:03:45 php dhcpd: DHCPINFORM from 192.168.5.13 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:03:47 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:03:48 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:03:49 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:03:49 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:03:51 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:03:51 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:04:43 php dhcpd: DHCPINFORM from 192.168.5.48 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:04:55 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:04:56 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:04:57 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:04:57 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:04:59 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:04:59 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:05:43 php dhcpd: DHCPINFORM from 192.168.5.48 via ens32: not authoritative for subnet 192.168.5.0
Mar 23 14:05:45 php dhcpd: DHCPDISCOVER from a4:50:46:dd:2f:6f via ens32
Mar 23 14:05:45 php dhcpd: DHCPREQUEST for 192.168.5.62 (192.168.5.254) from a4:50:46:dd:2f:6f via ens32: unknown lease 192.168.5.62.
Mar 23 14:05:46 php dhcpd: DHCPOFFER on 192.168.5.199 to a4:50:46:dd:2f:6f (MI8UD-xiaosan) via ens32
Mar 23 14:06:03 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:06:04 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:06:05 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:06:05 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32
Mar 23 14:06:07 php dhcpd: DHCPDISCOVER from 00:17:61:10:1e:92 via ens32
Mar 23 14:06:07 php dhcpd: DHCPOFFER on 192.168.5.192 to 00:17:61:10:1e:92 via ens32


后续请查看下篇【DHCP攻击】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值