Velociraptor - Endpoint visibility and collection tool.

Velociraptor - Endpoint visibility and collection tool.

Velociraptor is a tool for collecting host based state information using The Velociraptor Query Language (VQL) queries.

To learn more about Velociraptor, read the documentation on:

https://docs.velociraptor.app/

Quick start

If you want to see what Velociraptor is all about simply:

  1. Download the binary from the release page for your favorite platform (Windows/Linux/MacOS).

  2. Start the GUI

  $ velociraptor gui

This will bring up the GUI, Frontend and a local client. You can collect artifacts from the client (which is just running on your own machine) as normal.

Once you are ready for a full deployment, check out the various deployment options at https://docs.velociraptor.app/docs/deployment/

Training

We have our complete training course (7 sessions x 2 hours each) https://docs.velociraptor.app/training/

The course covers many aspects of Velociraptor in detail.

Running Velociraptor via Docker

To run a Velociraptor server via Docker, follow the instructions here: https://github.com/weslambert/velociraptor-docker

Running Velociraptor locally

Velociraptor is also useful as a local triage tool. You can create a self contained local collector using the GUI:

  1. Start the GUI as above (velociraptor gui).

  2. Select the Server Artifacts sidebar menu, then Build Collector.

  3. Select and configure the artifacts you want to collect, then select the Uploaded Files tab and download your customized collector.

Building from source

To build from source, make sure you have a recent Golang installed from https://golang.org/dl/ (Currently at least Go 1.14) and the go binary is on your path. In addition make sure the GOBIN directory is also on your path (Defaults are: on linux and mac ~/go/bin, on Windows c:\\Users\\ \\go\\bin ) :

    $ git clone https://github.com/Velocidex/velociraptor.git
    $ cd velociraptor

    # This will build the GUI elements. You will need to have node
    # installed first. For example get it from
    # https://nodejs.org/en/download/.
    $ cd gui/velociraptor/
    $ npm install

    # This will build the webpack bundle
    $ make build

    # To build a dev binary just run make.
    # NOTE: Make sure ~/go/bin is on your path -
    # this is required to find the Golang tools we need.
    $ cd ../..
    $ make

    # To build production binaries
    $ make linux
    $ make windows

Getting the latest version

We have a pretty frequent release schedule but if you see a new feature submitted that you are really interested in, we would love to have more testing prior to the official release.

We have a CI pipeline managed by GitHub actions. You can see the pipeline by clicking the actions tab on our GitHub project. There are two workflows:

  1. Windows Test: this workflow builds a minimal version of the Velociraptor binary (without the GUI) and runs all the tests on it. We also test various windows support functions in this pipeline. This pipeline builds on every push in each PR.

  2. Linux Build All Arches: This pipeline builds complete binaries for many supported architectures. It only runs when the PR is merged into the master branch. To download the latest binaries simply select the latest run of this pipeline, scroll down the page to the "Artifacts" section and download the Binaries.zip file (Note you need to be logged into GitHub to see this).

If you fork the project on GitHub, the pipelines will run on your own fork as well as long as you enable GitHub Actions on your fork. If you need to prepare a PR for a new feature or modify an existing feature you can use this to build your own binaries for testing on all architectures before send us the PR.

Supported platforms

Velociraptor is written in Golang and so is available for all the platforms supported by Go. This means that Windows XP and Windows server 2003 are not supported but anything after Windows 7/Vista is.

We build our releases on Centos 6 (x64) for Linux and Sierra for MacOS so earlier platforms may not be supported by our release pipeline. If you need 32 bit builds you will need to build from source. You can do this easily by forking the project on GitHub, enabling GitHub Actions in your fork and editing the Linux Build All Arches pipeline.

Artifact Exchange

Velociraptor's power comes from VQL Artifacts, that define many capabilities to collect many types of data from endpoints. Velociraptor comes with many built in Artifacts for the most common use cases. The community also maintains a large number of additional artifacts through the Artifact Exchange.

Getting help

Questions and feedback are welcome at [email protected] (or https://groups.google.com/g/velociraptor-discuss)

You can also chat with us directly on discord https://docs.velociraptor.app/discord

File issues on https://github.com/Velocidex/velociraptor

Read more about Velociraptor on our blog: https://docs.velociraptor.app/blog/

Hang out on Medium https://medium.com/velociraptor-ir

Follow us on Twitter @velocidex

Comments
  • Add Kafka-Humio Gateway [Depends on PR#10]

    Add Kafka-Humio Gateway [Depends on PR#10]

    This PR adds a Kafka plugin that can be used to export events to a Kafka instance. The instance is expected to be running in the same container ecosystem as the velociraptor server. We do this so that we can ensure that events are queued properly if the Humio server can't be reached. Once the events are queued, a consumer formats and forwards them to Humio.

  • [RFC/WIP] User authentication HTML templates

    [RFC/WIP] User authentication HTML templates

    This PR allows the builder to create their own template pages for unauthenticated users, unauthorized users, and logoff rather than relying on the default simple html messages. This works only for OAUTH2 for now.

  • Error: Unknown artifact reference Windows.Sys.Users

    Error: Unknown artifact reference Windows.Sys.Users

    I'm unable to run Generic.Client.Info.

    The reproducer is:

    • click Hunt Manager in the menu
    • click New Hunt
    • click Select Artifacts, select Generic.Client.Info
    • click Launch
    • -> error pops up: Error: Unknown artifact reference Windows.Sys.Users

    Maybe I was looking in a wrong place, but it seems that the following precondition is not evaluated correctly: velociraptor/artifacts/definitions/Generic/Client/Info.yaml

      - name: Users
        precondition: SELECT OS From info() where OS = 'windows'
        query: |
          SELECT Name, Description, Mtime AS LastLogin
          FROM Artifact.Windows.Sys.Users()
    

    It might be also caused by the following line in the spec file: rm -rf artifacts/definitions/Windows

  • Sensor 0.6.4/artifact picker gui

    Sensor 0.6.4/artifact picker gui

    This PR implements a new artifact picker interface for the configuration UI. The gist is that rather than having to hand-assemble a CSV that describes the artifacts to include as parameters, the user can use a set of switches to select the artifacts visually. The artifact itself doesn't need to be modified once enabled and reconfigured. I've converted the Kafka.Events.Client artifact to use it.

  • Add chattr plugin

    Add chattr plugin

    This prq adds the chattr plugin as per SENS-20. Example json output of an event:

     {
      "Timestamp": "2022-04-12 13:50:42",
      "Path": "/root/get-num-extwriters.py",
      "Dir": false,
      "Sha256sum": "f01b48d4763f5b122d218c1faff8419ca41b27b1f3161984790f82b90fa85675",
      "Action": "SET"
     }
    

    In case we have a directory the hash sum won't be calculated. THe bpf code is coded such that an event is triggered only when it will result in an actual change of immutable state i.e 2 or more consecutive set or clear operations would result in a single event being produced.

    Tested on both 5.3 kernel and upstream.

  • [RFC][DON'T MERGE] Add tcp snooping support

    [RFC][DON'T MERGE] Add tcp snooping support

    Here is the initial implementation of the tcp connection snooping. I'm sending now so that people can try running this on their machines and report any problems with the ebpf code loading. In order to build the ebpf code you'd need to run

    make linux CLANG=clang-13 LLVM_STRIP=llvm-strip-13 LIBBPF_SRC=/root/bcc/src/cc/libbpf

    CLANG/LLVM_STRIP should point to a recent enough (at least version 10) clang compiler and respective strip binary and LIBBPF_SRC should point to the root directory of a libbpf checkout. It's important to run the make linux target as it includes the extra command necessary to build libbpf as a static library and also build the ebpf object.

    If your kernel doesn't have CONFIG_DEBUG_INFO_BTF then the path to an external btf file can be provided via TCPSNOOP_BTF environmental variable.

    The vmlinux.h file is generated from kernel 5.5

  • Package client service file and config in velociraptor rpm

    Package client service file and config in velociraptor rpm

    While velociraptor-client package contains only client, velociraptor package contains both server and client functionality. Unfortunately, the following client files are not part of the velociraptor package:

    /etc/velociraptor/client.config
    /usr/lib/systemd/system/velociraptor-client.service
    
  • SENS-46: Implement support for systemd journal

    SENS-46: Implement support for systemd journal

    This PR resolves SENS-46 and provides iteration and tailing of the systemd journal. It depends on the installed journald shared library, but this should be expected on any system that provides the journal.

  • Build fixes for non-AMD64 architectures

    Build fixes for non-AMD64 architectures

    Velociraptor has been building fine on OBS but it's limited to x86_64 and i586 (and we don't care about i586). This PR includes fixes for building Velociraptor on non-x86_64 and syncs the libbpfgo submodule to include changes pushed upstream for building on non-x86_64.

    The only code change is the handling of the MAP_32BIT flag for mmap() in libbpfgo which nothing should be using anyway.

  • file_store: handle watching artifacts with named sources

    file_store: handle watching artifacts with named sources

    When watch_monitoring() is called to monitor an artifact with a named source, it returns immediately with zero results and nothing in the log.

    It turns out that file_store/directory/queue QueuePool.NewListener was failing silently due to the path containing a slash in it. This commit replaces the slash with three dots and reports an error when it happens in NewListener.

  • Linux client queries

    Linux client queries

    This PR allows display of MAC Addreses in the host info dashboard as well as allows interrogation to produce network configuration information on Linux.

  • cronsnoop uses log.Fatal

    cronsnoop uses log.Fatal

    If any of the cron files that cronsnoop is expected to monitor is missing, it calls log.Fatal which causes the client to exit. We should log an error and continue.

A collection of cool tools used by Mobile hackers. Happy hacking , Happy bug-hunting
A collection of cool tools used by Mobile hackers. Happy hacking , Happy bug-hunting

A collection of cool tools used by Mobile hackers. Happy hacking , Happy bug-hunting Family project Table of Contents Weapons Contribute Thanks to con

Jan 3, 2023
a collection of security projects

security projects A collection of security projects that I worked on from UC Berkeley's security course (cs 161) taught by Nick Weaver. Project 1 (Exp

Nov 8, 2021
A collection of offensive Go packages inspired by different Go repositories.
A collection of offensive Go packages inspired by different Go repositories.

OffensiveGolang OffensiveGolang is a collection of offensive Go packs inspired by different repositories. Ideas have been taken from OffensiveGoLang a

Dec 23, 2022
A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

age age is a simple, modern and secure file encryption tool, format, and library. It features small explicit keys, no config options, and UNIX-style c

Dec 28, 2022
Static binary analysis tool to compute shared strings references between binaries and output in JSON, YAML and YARA

StrTwins StrTwins is a binary analysis tool, powered by radare, that is capable to find shared code string references between executables and output i

May 3, 2022
DirDar is a tool that searches for (403-Forbidden) directories to break it and get dir listing on it
DirDar is a tool that searches for (403-Forbidden) directories to break it and get dir listing on it

DirDar v1.0 Description ??‍☠️ bypass forbidden directories - find and identify dir listing - you can use it as directory brute-forcer as well Compatab

Jan 1, 2023
A fast tool to mass scan for a vulnerability on Microsoft Exchange Server that allows an attacker bypassing the authentication and impersonating as the admin (CVE-2021-26855).
A fast tool to mass scan for a vulnerability on Microsoft Exchange Server that allows an attacker bypassing the authentication and impersonating as the admin (CVE-2021-26855).

proxylogscan This tool to mass scan for a vulnerability on Microsoft Exchange Server that allows an attacker bypassing the authentication and imperson

Dec 26, 2022
A scalable overlay networking tool with a focus on performance, simplicity and security

What is Nebula? Nebula is a scalable overlay networking tool with a focus on performance, simplicity and security. It lets you seamlessly connect comp

Dec 29, 2022
EarlyBird is a sensitive data detection tool capable of scanning source code repositories for clear text password violations, PII, outdated cryptography methods, key files and more.
EarlyBird is a sensitive data detection tool capable of scanning source code repositories for clear text password violations, PII, outdated cryptography methods, key files and more.

EarlyBird is a sensitive data detection tool capable of scanning source code repositories for clear text password violations, PII, outdated cryptograp

Dec 10, 2022
Nuclei is a fast tool for configurable targeted vulnerability scanning based on templates offering massive extensibility and ease of use.
Nuclei is a fast tool for configurable targeted vulnerability scanning based on templates offering massive extensibility and ease of use.

Fast and customisable vulnerability scanner based on simple YAML based DSL. How • Install • For Security Engineers • For Developers • Documentation •

Dec 30, 2022
A tool for secrets management, encryption as a service, and privileged access management
A tool for secrets management, encryption as a service, and privileged access management

Vault Please note: We take Vault's security and our users' trust very seriously. If you believe you have found a security issue in Vault, please respo

Jan 2, 2023
🌘🦊 DalFox(Finder Of XSS) / Parameter Analysis and XSS Scanning tool based on golang
🌘🦊 DalFox(Finder Of XSS) / Parameter Analysis and XSS Scanning tool based on golang

Finder Of XSS, and Dal(달) is the Korean pronunciation of moon. What is DalFox ?? ?? DalFox is a fast, powerful parameter analysis and XSS scanner, bas

Jan 5, 2023
A modern tool for the Windows kernel exploration and tracing
A modern tool for the Windows kernel exploration and tracing

Fibratus A modern tool for the Windows kernel exploration and observability Get Started » Docs • Filaments • Download • Discussions What is Fibratus?

Dec 30, 2022
kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA
kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA

Kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA Tests are configured with YAML files, making this tool easy to update as test specifications evolve.

Jan 8, 2023
🌀 Dismap - Asset discovery and identification tool
 🌀 Dismap - Asset discovery and identification tool

?? Dismap - Asset discovery and identification tool [English readme Click Me] Dismap 定位是一个资产发现和识别工具;其特色功能在于快速识别 Web 指纹信息,定位资产类型。辅助红队快速定位目标资产信息,辅助蓝队发现疑

Jan 3, 2023
A pledge(2) and unveil(2)'d tool for verifying GnuPG signatures.

ogvt A pledge(2) and unveil(2)'d tool for verifying GnuPG signatures. Success ./ogvt -file test/uptime.txt -sig test/uptime.txt.asc -pub test/adent.p

Nov 25, 2021
A GREAT GUI Offline Tool for manipulating/seeking resolver list of repique and dnscrypt proxy.
A GREAT GUI Offline Tool for manipulating/seeking resolver list of repique and dnscrypt proxy.

Intro A GUI Offline Tool for decrypting and manipulating *.md files used by repique and dnscrypt proxy It's targeted for creating your own DoT, DoH an

Nov 27, 2022
Naabu - a port scanning tool written in Go that allows you to enumerate valid ports for hosts in a fast and reliable manner
Naabu - a port scanning tool written in Go that allows you to enumerate valid ports for hosts in a fast and reliable manner

Naabu is a port scanning tool written in Go that allows you to enumerate valid ports for hosts in a fast and reliable manner. It is a really simple tool that does fast SYN/CONNECT scans on the host/list of hosts and lists all ports that return a reply.

Jan 2, 2022
A port scan and service weakpass brute tool build by golang.
A port scan and service weakpass brute tool build by golang.

A port scan and service weakpass brute tool build by golang.

Jan 5, 2023