Omnibus – Open Source Information Gathering Tool For Intelligence Collection, Research And Artifact Management
An Omnibus is defined as a volume containing several novels or other items previously published separately and that is exactly what the InQuest Omnibus project intends to be for Open Source Intelligence collection, research, and artifact management.
By providing an easy to use interactive command line application, users are able to create sessions to investigate various artifacts such as IP addresses, domain names, email addresses, usernames, file hashes, Bitcoin addresses, and more as we continue to expand.
This project has taken motivation from the greats that came before it such as SpiderFoot, Harpoon, and DataSploit. Much thanks to those great authors for contributing to the world of open source.
The application is written with Python 2.7 in mind and has been successfully tested on OSX and Ubuntu 16.04 environments.
As this is a pre-release of the final application, there will very likely be some bugs and uncaught exceptions or other weirdness during usage. Though for the most part, it is fully functional and can be used to begin OSINT investigations right away.
Contribution
Omnibus is built in a modular manner that allows the easy addition, or removal, of OSINT plugins. Each module is included in a single directory, and by adding a few lines of code, your module could be the next one!
As this README and the Wiki continues to grow, we will have full-fledged examples of how to write custom plugins and get them in as Pull Requests!
Vocabulary
Before we begin we’ll need to cover some terminology used by Omnibus.
- An item to investigate
- Artificats can be created in two ways:
Using the new command or by being discoverd through module execution
- Cache of artifacts created after starting the Omnibus CLI
- Each artifact in a session is given an ID to quickly identify and retrieve the artifact from the cache
- Commands can be executed against an artifact either by providing it’s name or it’s corresponding session ID
- Python script that performs some arbitirary OSINT task against an artifact
Running Omnibus
Starting up Omnibus for investigation is a simple as cloning this GitHub repository, installing the Python requirements using pip install -r requirements.txt and running python2.7 omnibus-cli.py.
API Keys
You must set any API keys you’d like to use within modules inside the omnibus/etc/apikeys.json file. This file is a JSON ocument with placeholders for all the services which require API keys, and is only accessed by Omnibus on a per module basis to retrieve the exact API key a module needs to execute.
It should be noted that most of the services requiring API keys have free accounts and API keys. Some free accounts may have lower resource limits, but that hasn’t been a problem during smaller daily investigations or testing the application.
A handy tip: Use the cat apikeys command to view which keys you do in fact have stored. If modules are failing, check here first to ensure your API key is properly saved.
Interactive Console
When you first run the CLI, you’ll be greeted by a help menu with some basic information. We tried to build the command line script to mimic some common Linux console commands for ease of use. Omnibus provides commands such as cat to show information about an artifact, rm to remove an artifact from the database, lsto view currently session artifacts, and so on.
One additional feature of note is the use of the > character for output redirection. For example, if you wish to retrieve the details of an artifact named “inquest.net” saved to a JSON file on your local disk you’d simply run the command: cat inquest.net > inquest-report.json and there it would be! This feature also works with full file paths instead of relative paths.
The high level commands you really need to know to use Omnibus are:
start a new session
create a new artifact for investigation
display list of available modules
load a text file list of artifacts into Omnibus as artifacts
- cat <artifact name | session id>
view beautified JSON database records
show all active artifacts
remove an artifact from the database
clear the current artifact session
Also, if you ever need a quick reference on the different commands available for different areas of the application there are sub-help menus for this exact purpose. Using these commands will show you only those commands available relevant to a specific area:
overall commands such as help, history, quit, set, clear, banner, etc.
display commands specific to artifacts and their management
display helpful commands around managing sessions
show a list of all available modules
Artifacts
Most cyber investigations begin with one or more technical indicators, such as an IP address, file hash or email address. After searching and analyzing, relationships begin to form and you can pivot through connected data points. These data points are called Artifacts within Omnibus and represent any item you wish to investigate.
Artifacts can be one of the following types:
- IPv4 address
- FQDN
- Email Address
- Bitcoin Address
- File Hash (MD5, SHA1, SHA256, SHA512)
- User Name
Creating & Managing Artifacts
The command “new” followed by an artifact will create that artifact within your Omnibus session and store a record of the artifact within MongoDB. This record holds the artifact name, type, subtype, module results, source, notes, tags, children information (as needed) and time of creation. Every time you run a module against a created or stored artifact, the database document will be updated to reflect the newly discovered information.
Comentários
Postar um comentário