← retour aux outils back to tools

# darkstat

Démon de statistiques de trafic réseau. Capture les paquets et génère des statistiques web : hôtes, ports, protocoles et utilisation de bande passante visualisés dans une interface navigateur. Network traffic statistics daemon. Captures packets and generates web-based traffic statistics — hosts, ports, protocols, and bandwidth usage visualized in a browser interface.

↗ https://unix4lyfe.org/darkstat/

## Overview

darkstat is a lightweight network traffic statistics collector. It runs as a daemon, captures traffic on an interface, and serves traffic statistics through a built-in web interface — showing per-host traffic, protocol breakdown, and bandwidth usage over time.

## Basic Usage

Start darkstat on an interface

    sudo darkstat -i eth0

Start on specific port (default: 667)

    sudo darkstat -i eth0 -p 8080

Bind to specific address

    sudo darkstat -i eth0 -b 127.0.0.1

Capture in promiscuous mode

    sudo darkstat -i eth0 --promisc

    # Access web interface:
    # http://localhost:667/

## Configuration Options

Specify network device

    sudo darkstat -i wlan0

Custom port and address

    sudo darkstat -i eth0 -b 0.0.0.0 -p 8888

Disable promiscuous mode

    sudo darkstat -i eth0 --no-promisc

Capture filter (BPF)

    sudo darkstat -i eth0 -f "not port 22"

Specify base URL

    sudo darkstat -i eth0 -r /darkstat/

## Web Interface Features

    # Hosts view
    # → List of all hosts with traffic stats
    # → Click a host for per-port breakdown

    # Graphs view
    # → Bandwidth usage over time (1m, 5m, 1h, 1d)
    # → Protocol distribution

    # Statistics
    # → Packet counts by protocol
    # → Total bandwidth in/out

## Running as a Service

    # Create systemd service
    cat > /etc/systemd/system/darkstat.service << EOF
    [Unit]
    Description=Darkstat Network Monitor
    After=network.target

    [Service]
    ExecStart=/usr/sbin/darkstat -i eth0 -b 127.0.0.1 -p 667
    Restart=always

    [Install]
    WantedBy=multi-user.target
    EOF

    systemctl enable darkstat
    systemctl start darkstat

## Forensic Use

Start before a pentest to capture all traffic

    sudo darkstat -i eth0

    # After pentest: review what hosts communicated
    # http://localhost:667/#hosts

    # Look for:
    # - Unexpected external connections
    # - High bandwidth transfers
    # - Connections to uncommon ports

## Tips

- Very lightweight — minimal performance impact on the monitored host
- The web interface is unauthenticated by default — bind to 127.0.0.1 in production
- Good for long-term monitoring on jump boxes or network taps
- Not suitable for full packet capture — use tcpdump/wireshark for that
- Complements full-featured tools like ntopng for network visibility

Help / Man page

    darkstat [options]

    -i IFACE    Network interface to monitor
    -b ADDR     Bind web server to address (default: 0.0.0.0)
    -p PORT     Web server port (default: 667)
    -f FILTER   BPF capture filter
    --promisc   Enable promiscuous mode
    --no-promisc Disable promiscuous mode
    -r PATH     Base URL path
    --chroot DIR Chroot directory
    --pidfile F  PID file

## Vue d’ensemble

darkstat est un collecteur léger de statistiques de trafic réseau. Il tourne comme un démon, capture le trafic d’une interface, et sert des statistiques via une interface web intégrée : trafic par hôte, répartition par protocole, et utilisation de bande passante dans le temps.

## Utilisation de base

    # Démarrer darkstat sur une interface
    sudo darkstat -i eth0

    # Démarrer sur un port précis (défaut : 667)
    sudo darkstat -i eth0 -p 8080

    # Se lier à une adresse précise
    sudo darkstat -i eth0 -b 127.0.0.1

    # Capturer en mode promiscuous
    sudo darkstat -i eth0 --promisc

    # Accéder à l'interface web :
    # http://localhost:667/

## Options de configuration

    # Spécifier le périphérique réseau
    sudo darkstat -i wlan0

    # Port et adresse personnalisés
    sudo darkstat -i eth0 -b 0.0.0.0 -p 8888

    # Désactiver le mode promiscuous
    sudo darkstat -i eth0 --no-promisc

    # Filtre de capture (BPF)
    sudo darkstat -i eth0 -f "not port 22"

    # Spécifier l'URL de base
    sudo darkstat -i eth0 -r /darkstat/

## Fonctionnalités de l’interface web

    # Vue Hosts
    # → Liste de tous les hôtes avec leurs stats de trafic
    # → Cliquer sur un hôte pour la répartition par port

    # Vue Graphs
    # → Utilisation de bande passante dans le temps (1m, 5m, 1h, 1d)
    # → Distribution des protocoles

    # Statistics
    # → Compteurs de paquets par protocole
    # → Bande passante totale entrante/sortante

## Lancer comme service

    # Créer un service systemd
    cat > /etc/systemd/system/darkstat.service << EOF
    [Unit]
    Description=Darkstat Network Monitor
    After=network.target

    [Service]
    ExecStart=/usr/sbin/darkstat -i eth0 -b 127.0.0.1 -p 667
    Restart=always

    [Install]
    WantedBy=multi-user.target
    EOF

    systemctl enable darkstat
    systemctl start darkstat

## Usage forensique

    # Démarrer avant un pentest pour capturer tout le trafic
    sudo darkstat -i eth0

    # Après le pentest : examiner quels hôtes ont communiqué
    # http://localhost:667/#hosts

    # Chercher :
    # - Des connexions externes inattendues
    # - Des transferts à haute bande passante
    # - Des connexions vers des ports inhabituels

## Conseils

- Très léger : impact minimal sur les performances de l’hôte surveillé
- L’interface web n’est pas authentifiée par défaut : liez-la à 127.0.0.1 en production
- Bon pour de la surveillance longue durée sur des jump boxes ou des taps réseau
- Pas adapté à la capture complète de paquets : utilisez tcpdump/wireshark pour ça
- Complète des outils plus complets comme ntopng pour la visibilité réseau

Aide / Page de manuel

    darkstat [options]

    -i IFACE    Network interface to monitor
    -b ADDR     Bind web server to address (default: 0.0.0.0)
    -p PORT     Web server port (default: 667)
    -f FILTER   BPF capture filter
    --promisc   Enable promiscuous mode
    --no-promisc Disable promiscuous mode
    -r PATH     Base URL path
    --chroot DIR Chroot directory
    --pidfile F  PID file