bed

Bruteforce Exploit Detector, un fuzzer de services réseau. Envoie des entrées malformées à des services réseau via divers protocoles pour détecter des crashs et de potentielles vulnérabilités de buffer overflow. Bruteforce Exploit Detector — network service fuzzer. Sends malformed inputs to network services over various protocols to detect crashes and potential buffer overflow vulnerabilities.

↗ https://github.com/trailofbits/bed

Overview

BED (Bruteforce Exploit Detector) is a network protocol fuzzer that sends various types of malformed data to network services to detect crashes, hangs, and potential buffer overflows. It has built-in plugins for common protocols including FTP, HTTP, SMTP, POP3, IRC, and more.

Basic Usage

Fuzz an FTP server

bed -s FTP -t 10.10.10.1 -p 21

Fuzz an HTTP server

bed -s HTTP -t 10.10.10.1 -p 80

Fuzz SMTP

bed -s SMTP -t 10.10.10.1 -p 25

Fuzz POP3

bed -s POP3 -t 10.10.10.1 -p 110

Fuzz with timeout

bed -s FTP -t 10.10.10.1 -p 21 -o 3

Supported Plugins

List available plugins

bed -s list
# Common protocol plugins:
# FTP   — file transfer protocol
# SMTP  — mail sending
# POP3  — mail retrieval
# HTTP  — web server
# IRC   — internet relay chat
# IMAP  — mail access
# LPD   — line printer daemon
# FINGER — finger protocol
# TFTP  — trivial file transfer
# DICT  — dictionary service

Options

-s PLUGIN   Protocol plugin
-t HOST     Target host
-p PORT     Target port
-o N        Timeout in seconds (default: 3)
-v          Verbose output
-d          Debug mode

What BED Sends

# For each protocol, BED sends:
# Very long strings (buffer overflow attempts)
# Format string sequences (%x%x%x%x...)
# Binary sequences (\x00, \xff, etc.)
# SQL injection patterns
# Shell metacharacters
# Various encodings

# Example for HTTP:
# GET /[AAAA...2000 bytes] HTTP/1.0
# Host: [AAAA...2000 bytes]
# User-Agent: [%x%x%x%x...]

Post-Fuzz Analysis

# If the service crashes during fuzzing:
# 1. Note which test case caused the crash
# 2. Replicate the crash manually
# 3. Develop a PoC exploit

# Use Wireshark alongside to capture what caused the crash
# Then analyze the crashed process with a debugger

Tips

  • BED is simple but useful for quick protocol fuzzing on legacy services
  • Monitor the target service during fuzzing for crashes/hangs
  • If a service goes silent mid-test, check if it crashed
  • Use with gdb attached to the target process to catch crashes automatically
  • For deeper fuzzing, consider boofuzz or American Fuzzy Lop (AFL++)
Help / Man page
bed [options]

-s PLUGIN   Plugin/protocol (FTP, HTTP, SMTP, etc.)
-t HOST     Target hostname or IP
-p PORT     Target port
-o N        Timeout in seconds
-v          Verbose
-d          Debug

Vue d’ensemble

BED (Bruteforce Exploit Detector) est un fuzzer de protocoles réseau qui envoie divers types de données malformées à des services réseau pour détecter des crashs, des blocages et de potentiels buffer overflows. Il embarque des plugins pour les protocoles courants dont FTP, HTTP, SMTP, POP3, IRC, et plus.

Utilisation de base

# Fuzzer un serveur FTP
bed -s FTP -t 10.10.10.1 -p 21

# Fuzzer un serveur HTTP
bed -s HTTP -t 10.10.10.1 -p 80

# Fuzzer du SMTP
bed -s SMTP -t 10.10.10.1 -p 25

# Fuzzer du POP3
bed -s POP3 -t 10.10.10.1 -p 110

# Fuzzer avec un timeout
bed -s FTP -t 10.10.10.1 -p 21 -o 3

Plugins supportés

# Lister les plugins disponibles
bed -s list
# Plugins de protocoles courants :
# FTP   : file transfer protocol
# SMTP  : mail sending
# POP3  : mail retrieval
# HTTP  : web server
# IRC   : internet relay chat
# IMAP  : mail access
# LPD   : line printer daemon
# FINGER : finger protocol
# TFTP  : trivial file transfer
# DICT  : dictionary service

Options

-s PLUGIN   Protocol plugin
-t HOST     Target host
-p PORT     Target port
-o N        Timeout in seconds (default: 3)
-v          Verbose output
-d          Debug mode

Ce que BED envoie

# Pour chaque protocole, BED envoie :
# Des chaînes très longues (tentatives de buffer overflow)
# Des séquences de format string (%x%x%x%x...)
# Des séquences binaires (\x00, \xff, etc.)
# Des motifs d'injection SQL
# Des métacaractères shell
# Divers encodages

# Exemple pour HTTP :
# GET /[AAAA...2000 bytes] HTTP/1.0
# Host: [AAAA...2000 bytes]
# User-Agent: [%x%x%x%x...]

Analyse post-fuzz

# Si le service crashe pendant le fuzzing :
# 1. Noter quel cas de test a provoqué le crash
# 2. Reproduire le crash manuellement
# 3. Développer un PoC d'exploit

# Utilisez Wireshark en parallèle pour capturer ce qui a provoqué le crash
# Puis analysez le processus crashé avec un débogueur

Conseils

  • BED est simple mais utile pour un fuzzing rapide de protocoles sur des services legacy
  • Surveillez le service cible pendant le fuzzing pour repérer crashs et blocages
  • Si un service devient silencieux en cours de test, vérifiez s’il a crashé
  • Utilisez-le avec gdb attaché au processus cible pour attraper les crashs automatiquement
  • Pour un fuzzing plus poussé, envisagez boofuzz ou American Fuzzy Lop (AFL++)
Aide / Page de manuel
bed [options]

-s PLUGIN   Plugin/protocol (FTP, HTTP, SMTP, etc.)
-t HOST     Target hostname or IP
-p PORT     Target port
-o N        Timeout in seconds
-v          Verbose
-d          Debug