All Projects → kpcyrd → Sniffglue

kpcyrd / Sniffglue

Licence: gpl-3.0
Secure multithreaded packet sniffer

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Sniffglue

Pythem
pentest framework
Stars: ✭ 1,060 (+62.83%)
Mutual labels:  network, sniffer
Libtins
High-level, multiplatform C++ network packet sniffing and crafting library.
Stars: ✭ 1,609 (+147.16%)
Mutual labels:  network, pcap
Pcapxray
❄️ PcapXray - A Network Forensics Tool - To visualize a Packet Capture offline as a Network Diagram including device identification, highlight important communication and file extraction
Stars: ✭ 1,096 (+68.36%)
Mutual labels:  network, pcap
Passer
Passive service locator, a python sniffer that identifies servers, clients, names and much more
Stars: ✭ 144 (-77.88%)
Mutual labels:  pcap, sniffer
sniffer
🤒 A modern alternative network traffic sniffer.
Stars: ✭ 428 (-34.25%)
Mutual labels:  pcap, sniffer
Scapy
Scapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3.
Stars: ✭ 6,932 (+964.82%)
Mutual labels:  network, pcap
Justniffer
Justniffer Just A Network TCP Packet Sniffer .Justniffer is a network protocol analyzer that captures network traffic and produces logs in a customized way, can emulate Apache web server log files, track response times and extract all "intercepted" files from the HTTP traffic
Stars: ✭ 115 (-82.33%)
Mutual labels:  network, sniffer
Bruteshark
Network Analysis Tool
Stars: ✭ 1,335 (+105.07%)
Mutual labels:  pcap, sniffer
dns-collector
Aggregator, analyzer, transporter and logging for your DNS logs
Stars: ✭ 58 (-91.09%)
Mutual labels:  pcap, sniffer
Pypacker
📦 The fastest and simplest packet manipulation lib for Python
Stars: ✭ 216 (-66.82%)
Mutual labels:  network, pcap
Libpcap
the LIBpcap interface to various kernel packet capture mechanism
Stars: ✭ 1,785 (+174.19%)
Mutual labels:  pcap, sniffer
Driftnet
Driftnet watches network traffic, and picks out and displays JPEG and GIF images for display
Stars: ✭ 330 (-49.31%)
Mutual labels:  network, sniffer
Tcpdump
the TCPdump network dissector
Stars: ✭ 1,731 (+165.9%)
Mutual labels:  pcap, sniffer
Net2pcap
Net2PCAP is a simple network-to-pcap capture file for Linux. Its goal is to be as simple as possible to be used in hostile environments
Stars: ✭ 36 (-94.47%)
Mutual labels:  network, pcap
Captagent
100% Open-Source Packet Capture Agent for HEP
Stars: ✭ 116 (-82.18%)
Mutual labels:  pcap, sniffer
Daggy
Daggy - Data Aggregation Utility. Open source, free, cross-platform, server-less, useful utility for remote or local data aggregation and streaming
Stars: ✭ 91 (-86.02%)
Mutual labels:  network, pcap
Node pcap
libpcap bindings for node
Stars: ✭ 849 (+30.41%)
Mutual labels:  pcap, sniffer
Joincap
Merge multiple pcap files together, gracefully.
Stars: ✭ 159 (-75.58%)
Mutual labels:  network, pcap
SnifferUI
基于MFC和WinPcap库开发的网络抓包和协议分析软件
Stars: ✭ 86 (-86.79%)
Mutual labels:  pcap, sniffer
Packet Agent
A toolset for network packet capture in Cloud/Kubernetes and Virtualized environment.
Stars: ✭ 419 (-35.64%)
Mutual labels:  network, pcap

sniffglue Build Status Crates.io

sniffglue is a network sniffer written in rust. Network packets are parsed concurrently using a thread pool to utilize all cpu cores. Project goals are that you can run sniffglue securely on untrusted networks and that it must not crash when processing packets. The output should be as useful as possible by default.

screenshot

Usage

# sniff with default filters (dhcp, dns, tls, http)
sniffglue enp0s25
# increase the filter sensitivity (arp)
sniffglue -v enp0s25
# increase the filter sensitivity (cjdns, ssdp, dropbox, packets with valid utf8)
sniffglue -vv enp0s25
# almost everything
sniffglue -vvv enp0s25
# everything
sniffglue -vvvv enp0s25

Installation

Arch Linux

pacman -S sniffglue

Mac OSX

brew install sniffglue

Debian/Ubuntu/Kali

There are prebuilt packages signed by a debian maintainer. We can import the key for this repository out of the debian keyring.

apt install debian-keyring
gpg -a --export --keyring /usr/share/keyrings/debian-maintainers.gpg [email protected] | apt-key add -
apt-key adv --keyserver keyserver.ubuntu.com --refresh-keys [email protected]
echo deb http://apt.vulns.sexy stable main > /etc/apt/sources.list.d/apt-vulns-sexy.list
apt update
apt install sniffglue

Alpine

apk add sniffglue

Gentoo

layman -a pentoo
emerge --ask net-analyzer/sniffglue

NixOS

nix-env -i sniffglue

From source

To build from source make sure you have libpcap and libseccomp installed. On debian based systems:

# install the dependencies
sudo apt install libpcap-dev libseccomp-dev
# install rust with rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# install sniffglue and test it
cargo install sniffglue
sniffglue --help

Or you can build a Debian package via cargo-deb:

cargo deb

Protocols

  • [X] ethernet
  • [X] ipv4
  • [X] ipv6
  • [X] arp
  • [X] tcp
  • [X] udp
  • [ ] icmp
  • [X] http
  • [X] tls
  • [X] dns
  • [X] dhcp
  • [X] cjdns eth beacons
  • [X] ssdp
  • [X] dropbox beacons
  • [ ] 802.11

Docker

You can build sniffglue as a docker image to debug container setups. The image is currently about 11.1MB. It is recommended to push it to your own registry.

docker build -t sniffglue .
docker run -it --init --rm --net=host sniffglue eth0

Security

To report a security issue please contact kpcyrd on ircs://irc.hackint.org.

Seccomp

To ensure a compromised process doesn't compromise the system, sniffglue uses seccomp to restrict the syscalls that can be used after the process started. This is done in two stages, first at the very beginning (directly after env_logger initialized) and once after the sniffer has been setup, but before packets are read from the network.

Hardening

During the second stage, there's also some general hardening that is applied before all unneeded syscalls are finally disabled. Those are system specific, so a configuration file is read from /etc/sniffglue.conf. This config file specifies an empty directory for chroot and an unprivileged account in user that is used to drop root privileges.

boxxy-rs

This project includes a small boxxy-rs based shell that can be used to explore the sandbox at various stages during and after initialization. This is also used by travis to ensure the sandbox actually blocks syscalls.

cargo run --example boxxy

Reproducible builds

This project is tested using reprotest. Currently the following variations are excluded:

  • -time - needed because the crates.io cert expires in the future
  • -domain_host - requires root for unshare(2) and has been excluded

Don't forget to install the build dependencies.

ci/reprotest.sh

Fuzzing

The packet processing of sniffglue can be fuzzed using cargo-fuzz. Everything you should need is provided in the fuzz/ directory that is distributed along with its source code. Please note that this program links to libpcap which is not included in the current fuzzing configuration.

cargo fuzz run read_packet

License

GPLv3+

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].