Velociraptor is an open source community driven project, and as such we accept contributions from the community. Velociraptor’s VQL language is designed to lower the bar for contributions and make it easier for non-developers to contribute meaningful improvements in the form of new Artifacts.
Over time the number of contribution has exploded and so we have developed some guidelines on which artifacts should be accepted into the project and where/how they should be included.
Velociraptor’s philosophy is to be as flexible as possible and be useful in many different use cases. This means that users usually maintain a set of custom artifacts that suite their own particular workflows specific to their requirements.
This is fine! You are welcome to maintain your own set of artifacts. However, to contribute back into the project we require the artifacts to be useful to a wider community. Artifacts that handle a very specific and unique task are probably not that useful broadly and won’t be accepted for contribution.
Over time we found some general patterns for many artifacts and so we have created a set of high level artifacts to handle the common cases.
Triage artifacts typically consist of:
glob()upload() and possibly hash the with hash()authenticode()This pattern is so common that we built the The Velociraptor Triage Artifact project to automatically produce a set of such triage artifacts based on rules
The advantages of centralizing these triage artifacts include:
_Live to collect all
live system artifacts)Usually if your artifact falls into the above pattern, we will direct you to add a rule to the triage artifacts.
Parsing data in the registry is a very common goal which typically consists of:
parse_binary() or simply displaying
them.This pattern is so common that we built the The Registry Hunter project to automatically produce a set of such triage artifacts based on rules
The advantages of centralizing registry analysis include:
HKEY_USERS hive,
only currently logged in users will have their hive mounted
there. The Registry Hunter automatically handles these cases by
mounting the raw hives into the a remapping configuration.Usually if your artifact falls into the above pattern, we will direct you to add a rule to the registry hunter.
This is a common use case, which originally focused on SQLite files, but can now handle many more file formats:
glob()The advantages of centralizing SQLite analysis:
The user simply collects one artifact on the endpoint, specifying some broad constraints (like categories of the rule). Velociraptor will then automatically find and parse all the SQLite files it finds.
Handle hundreds of files from different applications. For example, many browsers are related to Chromium but have chosen a different location for their files. The SQLite hunter will automatically search for such Chromium derived browsers in multiple locations.
Usually if your artifact falls into the above pattern, we will direct you to add a rule to the SQLite Hunter.
Velociraptor comes with a large number of built in artifacts ready to use when installed. This makes it convenient because they are already built in. However, there are hundreds of artifacts available on the Artifact Exchange.
The main distinction between the two sources is around quality and maintainability:
Artifacts which are built into Velociraptor are useful to most people and are extensively tested using automated tests. If you wish to contribute into the built in set you should also include tests. These tests ensure that the artifacts are less likely to fail in future and help maintain them in future releases.
The Artifact Exchange contains many artifacts that were useful at one time but may have not been updated in a while. This may generally be of lower quality and may even break (and since they do not contain tests, we may not know they are broken).
For example, good candidates for the Exchange are artifacts that hunt
for specific topical threats which may not be more widely useful in
general (for example Log4J)
We plan on reviewing the artifacts in the Exchange periodically and removing outdated artifacts.