Deploy and configure Velociraptor for scalable endpoint forensic artifact collection during incident response using VQL queries, hunts, and pre-built artifact packs across Windows, Linux, and macOS environments.
Deploy and configure Velociraptor for scalable endpoint forensic artifact collection during incident response using VQL queries, hunts, and pre-built artifact packs across Windows, Linux, and macOS environments.
["Executable Denylisting","Execution Isolation","File Metadata Consistency Validation","Content Format Conversion","File Content Analysis"]
nist_csf
["RS.MA-01","RS.MA-02","RS.AN-03","RC.RP-01"]
Implementing Velociraptor for IR Collection
Overview
Velociraptor is an advanced open-source endpoint monitoring, digital forensics, and incident response platform developed by Rapid7. It uses the Velociraptor Query Language (VQL) to create custom artifacts that collect, query, and monitor almost any aspect of an endpoint. Velociraptor enables incident response teams to rapidly collect and examine forensic artifacts from across a network, supporting large-scale deployments with minimal performance impact. The client-server architecture with Fleetspeak communication enables real-time data collection from thousands of endpoints simultaneously, with offline endpoints picking up hunts when they reconnect.
When to Use
When deploying or configuring implementing velociraptor for ir collection capabilities in your environment
When establishing security controls aligned to compliance requirements
When building or improving security architecture for this domain
When conducting security assessments that require this implementation
Common Misconfigurations & Verification
Artifact scoping silently drops evidence: running Windows.KapeFiles.Targets without the right target groups (_EventLogs, _Prefetch, _RegistryHives, _WebBrowsers) collects an incomplete triage and you won't know until analysis. Confirm the collection's row count and file manifest per host instead of assuming success.
Hunt resource limits truncate results: the default per-client CPU/IOPS/timeout and max_rows/max_upload_bytes caps cause VQL to return partial data on busy or large-disk hosts. Verify hunts completed with flow_state = "FINISHED" (not errored/timed-out) and re-scope or raise limits for endpoints that hit the cap.
Offline endpoints aren't "clean", just absent: a hunt only covers clients that checked in. Reconcile hunt participation against your asset inventory and confirm laggards collect on reconnect — a 60% participation rate is a coverage gap, not a negative result.
Over-broad VQL/glob regex misses or floods: an MFT FileRegex or EvtxHunter IDRegex that's too narrow skips the IDs you need (4624/4648/4672/4688/4698/4769/5145); too broad and the upload buries the signal. Validate the regex against a known-positive host first.
Concrete verification the deployment worked: confirm clients show Online/last-seen current in the GUI, test an end-to-end collection on a canary host and check the artifact lands in the filestore with a non-zero hash, validate client config enrollment (correct server URL/CA), and confirm SIEM/Elastic output is actually indexing rows before relying on monitoring artifacts.
Prerequisites
Familiarity with incident response concepts and tools
Access to a test or lab environment for safe execution
Python 3.8+ with required dependencies installed
Appropriate authorization for any testing activities
Architecture
Components
Velociraptor Server: Central management console with web UI and API
Velociraptor Client (Agent): Lightweight agent deployed to endpoints
Fleetspeak: Communication framework between client and server
VQL Engine: Query language engine for artifact collection
Filestore: Server-side storage for collected artifacts
Datastore: Metadata storage for hunts, flows, and client information
Supported Platforms
Windows (7+, Server 2008R2+)
Linux (Debian, Ubuntu, CentOS, RHEL)
macOS (10.13+)
Deployment
Server Installation
# Download latest release
wget https://github.com/Velocidex/velociraptor/releases/latest/download/velociraptor-linux-amd64
# Generate server configuration
./velociraptor-linux-amd64 config generate -i
# Start the server
./velociraptor-linux-amd64 --config server.config.yaml frontend
# Or run as systemd servicesudocp velociraptor-linux-amd64 /usr/local/bin/velociraptor
sudo velociraptor --config /etc/velociraptor/server.config.yaml service install
Client Deployment
# Repack client MSI for Windows deployment
velociraptor --config server.config.yaml config client > client.config.yaml
velociraptor config repack --msi velociraptor-windows-amd64.msi client.config.yaml output.msi
# Deploy via Group Policy, SCCM, or Intune# Client runs as a Windows service: "Velociraptor"# Linux client deployment
velociraptor --config client.config.yaml client -v
# macOS client deployment
velociraptor --config client.config.yaml client -v
1. Navigate to Hunt Manager in Velociraptor Web UI
2. Click "New Hunt"
3. Configure:
- Description: "IR Triage - Case 2025-001"
- Include/Exclude labels for targeting
- Artifact selection (e.g., Windows.Forensics.Prefetch)
- Resource limits (CPU, IOPS, timeout)
4. Launch hunt
5. Monitor progress in real-time
VQL Hunt Examples
-- Hunt for specific file hash across all endpointsSELECT*FROM Artifact.Generic.Detection.HashHunter(
Hashes="e99a18c428cb38d5f260853678922e03"
)
-- Hunt for YARA signatures in memorySELECT*FROM Artifact.Windows.Detection.Yara.Process(
YaraRule='rule malware { strings: $s1 = "malicious_string" condition: $s1 }'
)
-- Hunt for Sigma rule matches in event logsSELECT*FROM Artifact.Server.Import.SigmaRules()
-- Hunt for suspicious scheduled tasksSELECT*FROM Artifact.Windows.System.TaskScheduler()
WHERE Command =~ "powershell|cmd|wscript|mshta|rundll32"
-- Hunt for processes with network connections to suspicious IPsSELECT*FROM Artifact.Windows.Network.Netstat()
WHERE RemoteAddr =~ "10\\.13\\.37\\."
Real-Time Monitoring
-- Monitor for new process creationSELECT*FROM watch_etw(guid="{22fb2cd6-0e7b-422b-a0c7-2fad1fd0e716}")
WHERE EventData.ImageName =~ "powershell|cmd|wscript"
-- Monitor file system changesSELECT*FROM watch_directory(path="C:/Windows/Temp/")
-- Monitor registry changesSELECT*FROM watch_registry(key="HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/**")
Integration with SIEM/SOAR
Splunk Integration
Velociraptor Server --> Elastic/OpenSearch --> Splunk HEC
--> Direct syslog forwarding
--> Velociraptor API --> Custom scripts --> Splunk
Elastic Stack Integration
# Velociraptor server config for Elastic outputMonitoring:elastic:addresses:-https://elastic.local:9200username:velociraptorpassword:secure_passwordindex:velociraptor