> ## Documentation Index
> Fetch the complete documentation index at: https://docs.specterops.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Nemesis Usage Guide

This page covers usage of Nemesis after the system is properly [setup](quickstart).

## Data Ingestion

Once Nemesis is running, data first needs to be ingested into the platform. Ingestion into Nemesis can occur in muliple ways, including:

* [Auto-ingesting data from C2 platorms](#nemesis-c2-connector-setup), including Mythic and Outflank C2.
* [Manually uploading files on the "File Upload" page in the Nemesis's Dashboard UI.](#manual-file-upload)
* [Using the CLI tool](./cli) to:
  * [submit individual files or entire folders/subfolders](./cli#file-submission)
  * [monitor a folder for new files and auto-submit them](./cli#folder-monitoring).
* Writing custom tools to interact with [Nemesis's API](/api-reference/files/upload-file-with-metadata).

### Nemesis C2 Connector Setup

Nemesis includes connectors for [Mythic](/Mythic_docs/home) and Outflank C2 (formerly Stage1). The connectors hook into the C2 platforms and transfer data automatically into Nemesis. The connectors are located in the [CLI](https://github.com/SpecterOps/Nemesis/projects/cli/cli/) project.

See the [CLI](./cli) documentation for more details on configuration.

## Nemesis Dashboard

The main method for operators/analysts to interact with Nemesis data is through the Nemesis Dashboard. The dashboard can be accessed at `https://NEMESIS_IP/HOST:7443/`. The initial display shows details about the number of processed files and enrichment workflow information:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=bc0aee6a0b9fdd2f9afec7cce728fb7e" alt="Nemesis Dashboard" width="3024" height="1642" data-path="nemesis-docs/docs/images/nemesis-dashboard.png" />

### Files

One of the common tasks for the dashboard is file triage, accessible through the `Files` page on the left navigation bar:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-files.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=1c72a6942424a1948769a7050fd4d636" alt="Nemesis Dashboard Files View" width="3024" height="1713" data-path="nemesis-docs/docs/images/nemesis-dashboard-files.png" />

As files are processed by Nemesis, they will appear as lines on this page. By default the files will be sorted newest to oldest, but this can be modified by clicking the "Newest First" button at the top which will switch it to showing the oldest first.

Likewise, the "(Findings) All Files" is the default (showing all files), but clicking shows just files with findings. The "Filter by path" text entry can be used to filter by file path/name/extension, and entries can be filtered by agent ID.

When clicking on a file entry, you will be brought to the [File Details](#file-details) page. After viewing a file, the entry will be hidden by default on the "Files" page - click the "Files Unviewed by Me" entry on the top left to view select "Unviewed Files" to show files not viewed by anyone (including you), or "All Files" to view all files regardless of view state:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-files-view-state.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=d2095d5c90d94c4a9467b2441a26e034" alt="Nemesis Dashboard File View State" width="2266" height="876" data-path="nemesis-docs/docs/images/nemesis-dashboard-files-view-state.png" />

Also, clicking any column will sort by that column's values.

#### File Triage Mode

In the main files view, type `t` to enter file triage mode:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-files-triage-mode.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=0fcfd37d4a6b5a4023fb9b7113600830" alt="Nemesis Dashboard File Triage Mode" width="2251" height="665" data-path="nemesis-docs/docs/images/nemesis-dashboard-files-triage-mode.png" />

As the instructions specify, Use ↑↓ to navigate. Use Shift+↑↓ to select multiple rows. Ctrl/Cmd+A to select all. 'v' to mark as viewed, or ESC to exit. Only the files currently showed by the specified filters you've applied will be marked as viewed. These files will then be hidden from the main triage pane.

#### File Details

Clicking on a file entry in the "Files" view brings you to a file details view:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-details.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=9162d2bcb3378fccd484afdaee5467b3" alt="Nemesis File Details" width="3024" height="1706" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-details.png" />

On the top left of this view, you'll see basic metadata like the file name, magic/mime types, MD5/SHA1 hashes, etc.

Press **\[tab]** to autoscroll (or scroll manually) to get to the "File Content" view. Here, different tabs will display the summaries and transforms for a file. Pressing `p` will cycle between these views:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-details-content.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=c1ebc14158525eab14bd723400285675" alt="Nemesis File Details Content" width="3024" height="1714" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-details-content.png" />

Any plaintext file identified with a specific file type will be rendered with that using the [Monaco](https://github.com/microsoft/monaco-editor) code editorL

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-details-monaco.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=15c402b2e72a8e426ea40e20485137fd" alt="Nemesis File Details Monaco" width="3024" height="1711" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-details-monaco.png" />

If you scroll to the bottom of the page past "File Content" you cans see some basic details about the file enrichment workflow, including any successful and failed enrichments. Mousing over any failed enrichment module nodes will reveal a basic error message.

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-enrichment-status.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=31ef6857659ab4eb6b1de46efe6dad27" alt="Nemesis File Details Enrichments" width="3024" height="1697" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-enrichment-status.png" />

If an enrichment module is failing on your file, we recommend using [the Loki logs in Grafana](./troubleshooting#grafana) to help track down what's going on (tip: using the file's `object_id` UUID can help track down specific log lines).

#### File Tags

In the file details view, clicking the "+ Add Tag" button will allow you to create new tags, or add existing defined tags, to the file:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-details-tagging.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=066c5bbcfc2d8407f5d2acb1978fb557" alt="Nemesis File Details Tagging" width="3024" height="1051" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-details-tagging.png" />

These tags will persist in the display, and can be used to filter files in the main files view:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-files-tag-filtering.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=09d51ce37cf4ff1dba8a5ce45c45b8ff" alt="Nemesis Files Tag Filtering" width="2773" height="721" data-path="nemesis-docs/docs/images/nemesis-dashboard-files-tag-filtering.png" />

### Manual File Upload

Files can be manually uploaded through the Nemesis dashboard via the `File Upload` tab on the left navigation bar. The "Project Name" will be auto-completed, and the "Expiration Time" will be auto set for 100 days in the future (this can be changed in the "Settings" button on the bottom left). The "Originating File Path" is optional but recommended. Files can be dragged/dropped into the upload modal, and on successful submission Nemesis will display the following message:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-file-upload_success.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=d801140d0d85d663490ab39d5d57ac55" alt="Nemesis Dashboard File Upload" width="3024" height="1713" data-path="nemesis-docs/docs/images/nemesis-dashboard-file-upload_success.png" />

The file will then be displayed in the [Files](#files) page as soon as it's done processing.

### Document Search

Nemesis indexes the full text of any plaintext file, or the extracted plaintext of any plaintext that can have ASCII/Unicode text extracted. This is stored in the PostgreSQL backend and searchable through this interface. Partial document matches will be shown, while clicking on the file name will take you to the file details page:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-docsearch.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=fc4f27142975d2264d3309a3d9701e69" alt="Nemesis Document Search" width="3024" height="1726" data-path="nemesis-docs/docs/images/nemesis-dashboard-docsearch.png" />

Clicking the topright filter icon will bring down filters you can apply for searches:

<img src="https://mintcdn.com/specteropsdocs/p-HS7mR7kxSK3hXw/nemesis-docs/docs/images/nemesis-dashboard-docsearch-filter.png?fit=max&auto=format&n=p-HS7mR7kxSK3hXw&q=85&s=cad2126d12d5542b763ca15d0636e5af" alt="Nemesis Document Search Filter" width="3024" height="1709" data-path="nemesis-docs/docs/images/nemesis-dashboard-docsearch-filter.png" />

### Findings

One of the other common tasks for the dashboard is findings triage, accessible through the `Files` page on the left navigation bar:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-findings.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=b26bc1a26f0e7c350c4fc41f06e0ee2f" alt="Nemesis Findings" width="3024" height="1715" data-path="nemesis-docs/docs/images/nemesis-dashboard-findings.png" />

Clicking on a finding brings up details for the finding:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-finding-detail.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=427be2bedbd410112357b99be48621f7" alt="Nemesis Finding Details" width="3024" height="1710" data-path="nemesis-docs/docs/images/nemesis-dashboard-finding-detail.png" />

Clicking the hyperlinked file path will take you to the file details page for the file the finding originates from.

You can filter findings by triage state, category, severity, module origin, and triage source (human/automated) at the top of the table.

Like with the `Files` page, type `t` to enter triage mode. This will add a check box to the currently selected file along with displaying keyboard actions you can take:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-finding-triage.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=965c6d02ff8f8ca796959ff4848c4cdd" alt="Nemesis Finding Triage" width="3024" height="1709" data-path="nemesis-docs/docs/images/nemesis-dashboard-finding-triage.png" />

As the text details, use ↑↓ to navigate findings, → to view finding details details. You can select multiple with Shift + ↑↓, hitting space, or Ctrl+A. Clear selection with ESC. Typing 1, 2, or 3 will set the finding as true positive, false positive, or unknown:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-finding-triage2.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=3f86f69eccb80dfe7cc33333e69dfcc7" alt="Nemesis Finding Triage" width="3024" height="1711" data-path="nemesis-docs/docs/images/nemesis-dashboard-finding-triage2.png" />

When combined with the default "Untriaged Only" filter, this allows you to easily and collaboratively triage a large number of findings.

Also, clicking any column will sort by that column's values.

### Dashboard Settings

Navigating to the "Settings" menu reachable in the bottom left of the Nemesis interface will take you to the settings page:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-dashboard-settings.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=db27b9ba72e8d374b54e1ab818f0c479" alt="Nemesis Dashboard Settings" width="3024" height="1710" data-path="nemesis-docs/docs/images/nemesis-dashboard-settings.png" />

Here, you can change your username/project ID, as well as modify the data expiration (in absolute date or number of days), and can clear the Nemesis database and datalake.

Clicking the "Light Mode" or "Dark Mode" menu button in the bottom left will toggle display mods for the application

## Alerting

If Slack alerting is enabled (i.e., if the `APPRISE_URLS` ENV variable is set), alerts on "interesting" files (e.g., parsed credentials, Nosey Parker hits, DPAPI data discovery, etc.) will be pushed to the configuered Slack webhook/channel with **Nemesis** as the bot user. These messages will contain the alert name, alert category, any additional details, a sanitized file path and a link to the [file details](#file-details) and finding details in the dashboard:

<img src="https://mintcdn.com/specteropsdocs/OgofQVXE8JwYYgvt/nemesis-docs/docs/images/nemesis-finding-slack-alert.png?fit=max&auto=format&n=OgofQVXE8JwYYgvt&q=85&s=ab8beace7135ecfb9b8ebcb26e62cf2c" alt="Nemesis Slack Alerting" width="1230" height="350" data-path="nemesis-docs/docs/images/nemesis-finding-slack-alert.png" />

See the [Apprise Wiki](https://github.com/caronc/apprise/wiki) for the string format needed for each alerting service.

### User Feedback

If you want user feedback from the [File Details viewer](#file-details) to be routed for alerting, use an Apprise link like `slack://Nemesis@T...k/#nemesis-feedback?tag=feedback` - this will route user feedback actions to that specified channel, with regular alerts going to any configured channel without the feedback tag.

You can configure multiple Apprise URLs for alerting and user feedback (i.e., alerting to multiple services).

## Submitting Files via the API

You can submit files using Nemesis's `submit` CLI tool:

```bash theme={null}
./tools/submit.sh
```

Uploading a with curl:

```bash theme={null}
curl -k -u n:n -F "file=@example.txt" \
        -F 'metadata={"agent_id":"agent123","project":"assess-test","timestamp":"2025-01-29T12:00:00Z","expiration":"2026-02-29T12:00:00Z","path":"/data/files"}' \
        https://nemesis:7443/api/files
```

### API Documentation

Navigating to the "Help" menu reachable in the bottom left of the Nemesis interface will show you the clickable `/api/docs` and `/api/redoc` Swagger and ReDoc API documentation, respectively:

<img src="https://mintcdn.com/specteropsdocs/p-HS7mR7kxSK3hXw/nemesis-docs/docs/images/api-swagger.png?fit=max&auto=format&n=p-HS7mR7kxSK3hXw&q=85&s=85d2f4350d2231d807fe4b18c0232c35" alt="Swagger API Documentation" width="3024" height="1712" data-path="nemesis-docs/docs/images/api-swagger.png" />

<img src="https://mintcdn.com/specteropsdocs/p-HS7mR7kxSK3hXw/nemesis-docs/docs/images/api-redoc.png?fit=max&auto=format&n=p-HS7mR7kxSK3hXw&q=85&s=cc458afa9b95c92f6b7558537b10a7b9" alt="ReDoc API Documentation" width="3024" height="1715" data-path="nemesis-docs/docs/images/api-redoc.png" />
