Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(terms): Add description on pages, update links #672

Merged
merged 3 commits into from
Feb 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions docs/_docs/user-guide/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ permalink: user-guide/terminology

## Terminology

Throughout the documentation terms like "agent" or "implant" are used to reference various components of Realm. Below we attempt to define some of those terms, to add some clarity to that other documentation.

### Host

A Host is a system that is in-scope for the current engagement. It is used to establish a logical boundary between different systems in an engagement (e.g. between a webserver and a database). This enables operations to target a particular system, for example you may want to list files on a web server in your engagement scope.
Throughout the documentation terms that are used to reference various components of Realm. Below we attempt to define some of those terms, to add some clarity to that other documentation.

### Implant

Expand All @@ -24,20 +20,24 @@ An Agent is a type of implant which retrieves execution instructions by connecti

### Beacon

A Beacon is a running instance of an Agent. A Host may have multiple active Beacons that use the same underlying Agent.
A Beacon is an instance of an Agent running as a process. Beacons are the underlying unit that can be tasked with instructions to execute.

### Task
### Host

A Task represents a set of instructions for an Agent to perform. For example, listing files could be a Task. When listing files across various Beacons, one Task per Beacon will be created for tracking the individual execution output.
Hosts are in-scope systems for the current engagement. A host can have multiple beacons which can execute instructions provided by tomes.

### Quest

A Quest represents a collection of tasks, each with a unique host. This is how Realm enables multi-host management.
Quests enable multi-beacon managment by taking a list of beacons and executing a tome with customized parameters against them. A quest is made up of tasks assocaited with a single beacon.

### Task

A task is a single instance of a tome plus its parameters executed against a single beacon. For example, listing files could be a Task. When listing files across various Beacons, one Task per Beacon will be created for tracking the individual execution output.

### Eldritch

Eldritch is our Pythonic Domain Specific Language (DSL), which can be used to progammatically define red team operations. Many of the language's built-in features do not rely on system binaries. For more information, please see the [Eldritch section](/user-guide/eldritch) of the documentation.

### Tome

A Tome is a prebuilt Eldritch bundle, which provides execution instructions to a Beacon. Tomes can embed files and accept parameters to change their behavior at runtime. Tavern's built-in Tomes are defined [here](https://github.com/spellshift/realm/tree/main/tavern/tomes).
A Tome is a prebuilt Eldritch bundle, which includes execution instructions and embed files. Tomes are how beacon actions are defined and change their behavior at runtime. Tavern's built-in Tomes are defined [here](https://github.com/spellshift/realm/tree/main/tavern/tomes).
6 changes: 3 additions & 3 deletions tavern/internal/www/build/asset-manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"files": {
"main.css": "/static/css/main.6e32d9b6.css",
"main.js": "/static/js/main.23751e9e.js",
"main.js": "/static/js/main.e4d206df.js",
"react-syntax-highlighter/refractor-core-import.js": "/static/js/react-syntax-highlighter/refractor-core-import.d0cd1e85.chunk.js",
"react-syntax-highlighter_languages_refractor_abap.js": "/static/js/react-syntax-highlighter_languages_refractor_abap.a2bf84e3.chunk.js",
"react-syntax-highlighter_languages_refractor_actionscript.js": "/static/js/react-syntax-highlighter_languages_refractor_actionscript.fff5a604.chunk.js",
Expand Down Expand Up @@ -158,7 +158,7 @@
"static/media/eldrich.png": "/static/media/eldrich.a80c74e8249d2461e174.png",
"index.html": "/index.html",
"main.6e32d9b6.css.map": "/static/css/main.6e32d9b6.css.map",
"main.23751e9e.js.map": "/static/js/main.23751e9e.js.map",
"main.e4d206df.js.map": "/static/js/main.e4d206df.js.map",
"refractor-core-import.d0cd1e85.chunk.js.map": "/static/js/react-syntax-highlighter/refractor-core-import.d0cd1e85.chunk.js.map",
"react-syntax-highlighter_languages_refractor_abap.a2bf84e3.chunk.js.map": "/static/js/react-syntax-highlighter_languages_refractor_abap.a2bf84e3.chunk.js.map",
"react-syntax-highlighter_languages_refractor_actionscript.fff5a604.chunk.js.map": "/static/js/react-syntax-highlighter_languages_refractor_actionscript.fff5a604.chunk.js.map",
Expand Down Expand Up @@ -315,6 +315,6 @@
},
"entrypoints": [
"static/css/main.6e32d9b6.css",
"static/js/main.23751e9e.js"
"static/js/main.e4d206df.js"
]
}
2 changes: 1 addition & 1 deletion tavern/internal/www/build/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/site.webmanifest"><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Realm - Red Team Engagement Platform</title><script defer="defer" src="/static/js/main.23751e9e.js"></script><link href="/static/css/main.6e32d9b6.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/site.webmanifest"><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Realm - Red Team Engagement Platform</title><script defer="defer" src="/static/js/main.e4d206df.js"></script><link href="/static/css/main.6e32d9b6.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
3 changes: 0 additions & 3 deletions tavern/internal/www/build/static/js/main.23751e9e.js

This file was deleted.

3 changes: 3 additions & 0 deletions tavern/internal/www/build/static/js/main.e4d206df.js

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import {
Bars3Icon,
DocumentDuplicateIcon,
XMarkIcon,
ClipboardDocumentCheckIcon,
CommandLineIcon,
ClockIcon,
WrenchScrewdriverIcon,
BugAntIcon,
PresentationChartBarIcon,
BookOpenIcon,
DocumentTextIcon,
ClipboardDocumentListIcon,
} from '@heroicons/react/24/outline'

import logo from '../../assets/eldrich.png';
Expand All @@ -22,8 +22,8 @@ const navigation = [
{ name: PageNavItem.createQuest, href: '/createQuest', icon: CommandLineIcon, internal: true },
{ name: PageNavItem.dashboard, href: '/dashboard', icon: PresentationChartBarIcon, internal: true },
{ name: PageNavItem.hosts, href: '/hosts', icon: BugAntIcon, internal: true },
{ name: PageNavItem.quests, href: '/quests', icon: ClockIcon, internal: true },
{ name: PageNavItem.tasks, href: '/tasks', icon: ClipboardDocumentCheckIcon, internal: true },
{ name: PageNavItem.quests, href: '/quests', icon: ClipboardDocumentListIcon, internal: true },
{ name: PageNavItem.tasks, href: '/tasks', icon: DocumentTextIcon, internal: true },
{ name: PageNavItem.tomes, href: '/tomes', icon: BookOpenIcon, internal: true },
{ name: PageNavItem.documentation, href: 'https://docs.realm.pub/', icon: DocumentDuplicateIcon, target: "__blank", internal: false },
{ name: PageNavItem.playground, href: '/playground', icon: WrenchScrewdriverIcon, target: "__blank", internal: false },
Expand Down
7 changes: 6 additions & 1 deletion tavern/internal/www/src/pages/host-list/HostList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ const HostList = () => {
return (
<PageWrapper currNavItem={PageNavItem.hosts}>
<div className="border-b border-gray-200 pb-5 sm:flex sm:items-center sm:justify-between">
<h3 className="text-xl font-semibold leading-6 text-gray-900">Hosts</h3>
<div className="flex-1 flex flex-col gap-2">
<h3 className="text-xl font-semibold leading-6 text-gray-900">Hosts</h3>
<div className="max-w-2xl text-sm">
Hosts are in-scope systems for the current engagement. A host can have multiple beacons which can execute instructions provided by tomes.
</div>
</div>
</div>
<HostFilter setFiltersSelected={setTypeFilters} typeFilters={typeFilters} />
<div className="flex flex-col justify-center items-center gap-6">
Expand Down
17 changes: 16 additions & 1 deletion tavern/internal/www/src/pages/quest-list/QuestList.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { Button } from "@chakra-ui/react";
import { useNavigate } from "react-router-dom";
import EmptyStateNoQuests from "../../components/empty-states/EmptyStateNoQuests";
import { PageWrapper } from "../../components/page-wrapper";
import { EmptyState, EmptyStateType } from "../../components/tavern-base-ui/EmptyState";
Expand All @@ -7,6 +9,7 @@ import { QuestTable } from "./components/QuestTable";
import { useQuests } from "./hooks/useQuest";

export const QuestList = () => {
const navigate = useNavigate();
const {
hasData,
data,
Expand All @@ -18,7 +21,19 @@ export const QuestList = () => {
return (
<PageWrapper currNavItem={PageNavItem.quests}>
<div className="border-b border-gray-200 pb-5 sm:flex sm:items-center sm:justify-between">
<h3 className="text-xl font-semibold leading-6 text-gray-900">Quest history</h3>
<div className="flex-1 flex flex-col gap-2">
<h3 className="text-xl font-semibold leading-6 text-gray-900">Quests</h3>
<div className="max-w-2xl text-sm">
Quests enable multi-beacon managment by taking a list of beacons and executing a tome with customized parameters against them. A quest is made up of tasks assocaited with a single beacon.
</div>
</div>
<div>
<Button size={"sm"}
onClick={() => navigate("/createQuest")}
>
Create new quest
</Button>
</div>
</div>
<div className="flex flex-col justify-center items-center">
{loading ?
Expand Down
2 changes: 1 addition & 1 deletion tavern/internal/www/src/pages/tasks/EditablePageHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const EditablePageHeader = () => {
<div className="flex flex-row justify-between w-full">
<div className="flex flex-row gap-2 items-center">
<h3 className="text-xl font-semibold leading-6 text-gray-900">
Quest outputs for
Task outputs for
</h3>
{data?.quests[0]?.name &&
<Link to="/tasks">
Expand Down
15 changes: 9 additions & 6 deletions tavern/internal/www/src/pages/tasks/TaskPageHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@ import { EditablePageHeader } from "./EditablePageHeader";
export const TaskPageHeader = () => {
const { questId } = useParams();

if(questId){
if (questId) {
return <EditablePageHeader />;
}

return (
<h3 className="text-xl font-semibold leading-6 text-gray-900">
Quest outputs
</h3>
return (
<div className="flex-1 flex flex-col gap-2">
<h3 className="text-xl font-semibold leading-6 text-gray-900">Tasks</h3>
<div className="max-w-2xl text-sm">
A task is a single instance of a tome plus its parameters executed against a single beacon.
</div>
</div>
)
}
}
3 changes: 1 addition & 2 deletions tavern/internal/www/src/pages/tomes/Tomes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ export const Tomes = () => {
<h3 className="text-xl font-semibold leading-6 text-gray-900">Tomes</h3>
<div className="max-w-2xl text-sm">
<span>A tome is a prebuilt bundle, which includes execution instructions and files. Tomes are how beacon actions are defined. </span>
<a className="external-link" target="_blank" rel="noreferrer" href="https://docs.realm.pub/user-guide/golem#creating-and-testing-tomes">Learn more</a>
<a className="external-link" target="_blank" rel="noreferrer" href="https://docs.realm.pub/user-guide/tomes">Learn more</a>
<span> about how to write, test, and import tome repositories.</span>
</div>

</div>
<div>
<Button size="sm" leftIcon={<ArrowUpTrayIcon className="h-4 w-4" />} onClick={() => setOpen(true)}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const StepCreateRepository: FC<StepCreateRepositoryProps> = ({ setCurrStep, setN
<div>
<h3 className="font-bold text-lg">Link repository</h3>
<p className="text-sm">
Provide a valid ssh path to a remote repository that contains tomes. <a className="external-link" rel="noreferrer" target="_blank" href="https://docs.realm.pub/user-guide/golem#creating-and-testing-tomes">Learn more</a> about how to structure a tome repository.
Provide a valid ssh path to a remote repository that contains tomes. <a className="external-link" rel="noreferrer" target="_blank" href="https://docs.realm.pub/user-guide/tomes">Learn more</a> about how to structure a tome repository.
</p>
</div>
{error !== "" && (
Expand Down
4 changes: 2 additions & 2 deletions tavern/internal/www/src/utils/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ export enum TaskStatus {
}
export enum PageNavItem {
dashboard="Dashboard",
quests='Quest history',
quests='Quests',
documentation='Documentation',
playground='API Playground',
tasks='Quest tasks',
tasks='Tasks',
createQuest= 'Create new quest',
hosts="Hosts",
tomes="Tomes"
Expand Down
Loading