brimcap

package module
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2024 License: BSD-3-Clause Imports: 20 Imported by: 0

README

brimcap CI

Image of brimcap analyze

A command line utility for converting pcaps into the flexible, searchable Zed data formats as seen in the Zui desktop app and Zed commands.

Quickstart

  1. Install brimcap
  2. Have a pcap handy (or download a sample pcap)
  3. Run brimcap analyze
    brimcap analyze sample.pcap > sample.zng
    
  4. Explore with zq
    zq -z 'zeek:=count(has(_path)), alerts:=count(has(event_type=="alert"))' sample.zng
    

Usage with Zui desktop app

brimcap is bundled with the Zui desktop app. Whenever a pcap is imported into Zui, the app takes the following steps:

  1. brimcap analyze is invoked to generate logs from the pcap.

  2. The logs are imported into a newly-created pool in Zui's Zed lake.

  3. brimcap index is invoked to populate a local pcap index that allows for quick extraction of flows via Zui's Packets button, which the app performs by invoking brimcap search.

If Zui is running, you can perform these same operations from your shell, which may prove useful for automation or batch import of many pcaps to the same pool. The Custom Brimcap Config article shows example command lines along with other advanced configuration options. When used with Zui, you should typically use the brimcap binary found in Zui's zdeps directory (as described in the article), since this version should be API-compatible with that version of Zui and its Zed backend.

Brimcap Queries

Included in this repo is a queries.json file with some helpful queries for getting started and exploring Zeek and Suricata analyzed data within the Zui app.

To import these queries:

  1. Download the queries.json file to your local system
  2. In Zui, click the + menu in the upper-left corner of the app window and select Import Queries...
  3. Open the downloaded file in the file picker utility

The loaded queries will appear in the "QUERIES" tab of Zui's left sidebar as a new folder named Brimcap.

Standalone Install

If you're working with brimcap separate from the Zui app, prebuilt packages can be found in the releases section of the brimcap GitHub repo.

Unzip the artifact and add the brimcap directory to your $PATH environment variable.

export PATH="$PATH:/Path/To/brimcap"

Included Analyzers

brimcap includes special builds of Zeek and Suricata that were created by the core development team at Brim Data. These builds are preconfigured to provide a good experience out-of-the-box for generating logs from pcaps using brimcap. If you wish to use your own customized Zeek/Suricata or introduce other pcap analysis tools, this is described in the Custom Brimcap Config article.

Build From Source

To build from source, Go 1.21 or later is required.

To build the brimcap package, clone this repo and run make build:

git clone https://github.com/brimdata/brimcap
cd brimcap
make build

make build will download the prebuilt/preconfigured Zeek and Suricata artifacts, compile the brimcap binary and package them into build/dist.

The executables will be located here:

./build/dist/brimcap
./build/dist/zeek/zeekrunner
./build/dist/suricata/suricatarunner

Having a problem?

Please browse the wiki to review common problems and helpful tips before opening an issue.

Join the Community

Join our Public Slack workspace for announcements, Q&A, and to trade tips!

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = Config{
	Analyzers: []analyzer.Config{
		{
			Name:   "suricata",
			Cmd:    "suricatarunner",
			Globs:  []string{"*.json"},
			Shaper: suricatashaper,
		},
		{
			Name: "zeek",
			Cmd:  "zeekrunner",
		},
	},
}

Functions

This section is empty.

Types

type Config added in v1.0.4

type Config struct {
	RootPath  string            `yaml:"root,omitempty"`
	Analyzers []analyzer.Config `yaml:"analyzers,omitempty"`
}

func LoadConfigYAML added in v1.0.4

func LoadConfigYAML(path string) (Config, error)

func (Config) Root added in v1.0.4

func (c Config) Root() Root

func (Config) Validate added in v1.0.4

func (c Config) Validate() error

type File

type File struct {
	Index    pcap.Index `json:"index"`
	PcapPath string     `json:"pcap_path"`
	// contains filtered or unexported fields
}

func (File) PcapReader

func (f File) PcapReader(span nano.Span) (pcapio.Reader, io.Closer, error)

type Root

type Root string

func (Root) AddPcap

func (r Root) AddPcap(pcappath string, limit int, warner ztail.Warner) (nano.Span, error)

AddPcap adds the pcap path to the brimcap root.

func (Root) DeletePcap

func (r Root) DeletePcap(pcappath string) (err error)

DeletePcap removes all files associated with the pcap path (if they exist).

func (Root) Filepath added in v0.0.3

func (r Root) Filepath(hash hash.Hash) string

func (Root) Pcaps

func (r Root) Pcaps() ([]File, error)

func (Root) Search

func (r Root) Search(ctx context.Context, req Search, w io.Writer) error
type Search struct {
	Span    nano.Span
	Proto   string
	SrcIP   net.IP
	SrcPort uint16
	DstIP   net.IP
	DstPort uint16
}

Directories

Path Synopsis
cli
cmd
Package ranger provides a way to take a function expressed as cartesian points, downsample the points to a bounded number of bins by computing a range of the points that represent the downsampled bins (called the Envelope), then querying the Envelope with a range to find the smallest domain of X values that cover the range queried.
Package ranger provides a way to take a function expressed as cartesian points, downsample the points to a bounded number of bins by computing a range of the points that represent the downsampled bins (called the Envelope), then querying the Envelope with a range to find the smallest domain of X values that cover the range queried.
Package slicer provides an io.Reader that returns subsets of a file.
Package slicer provides an io.Reader that returns subsets of a file.
Package ztail provides facilities for watching a directory of logs, tailing all the files created within it and transforming the data into zng data.
Package ztail provides facilities for watching a directory of logs, tailing all the files created within it and transforming the data into zng data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL