Features · AXIS

The platform, feature by feature.

Arm your red team with a command-and-control platform that runs the whole engagement from a browser tab — a 225 KB modular agent, an honest console, boring traffic, and delivery that treats every build as a one-way artifact. Eight tours below; the full fifty-three-entry reference is on the capabilities page.

AGENT LINE C 1.12 · GO PROTOCOL axis-v1 PANEL v2.2 · EN/RU PLATFORMS 5 PROFILES
Feature 01

The agent — small core, nothing resident

The signature implant is a C agent of about 225 KB that carries almost no capability on disk. What it does carry is the protocol, the scheduler, and the loader — everything else arrives from the module depot when tasked and leaves when done.

One protocol, five platform profiles

axis-v1 · C 1.12

Windows 7 through 11 and Server on x86 and x64; current Linux servers; old-glibc NAS appliances; fully static embedded builds for QNAP, Synology and OpenWrt-class targets down to ARMv5; macOS on Apple silicon and Intel. One agent line, one protocol, one console — the build profile is a decision about the host, not about the tooling.

Every customer build is structurally unique. That is a property of the toolchain, not a setting you remember to enable.

The Go agent, when breadth wins

Windows · ≈ 8 MB

An alternate Windows implant with the full command set resident in the binary. Same server, same campaigns, same console. Choose it when footprint is cheap and you want everything local; choose the C agent when you want on-demand modules, or elevation, which the C agent alone offers. Both run in one fleet, side by side.

Approval before admission

Fleet hygiene

New check-ins land in a pending queue, not in your fleet. An operator with the right grant admits an agent to a campaign — or rejects it. Rejection is type-to-confirm and final: the agent is ordered to destroy itself, and the decision is logged like everything else. Stale and one-way hosts prune cleanly.

fetched on demandin memory onlywiped on unload
Feature 02

The console — the whole product, in a tab

The web panel is not a companion view. It is served by the teamserver itself and holds every operator feature: dashboard, agents, workspace, builder, stagers, BOF depot, campaigns, users, keys, audit, and server administration.

Any machine you trust

Zero install

Operators sign in with a password and a TOTP second factor — nothing to install, nothing to license per machine, nothing to carry. An operator's workstation stops being an installation and becomes a credential. Multi-operator is the default way the product exists: every operator sees the same fleet at the same time.

Localized, not translated later

EN · RU

The panel ships fully localized in English and Russian — every view, every dialog, every audit string. Language is a per-operator setting, not a per-server one.

A desktop client, optional on purpose

Electron · mirrors the panel

For teams that want native windows and tray alerts, the desktop client is a full native reimplementation of the panel — not a wrapper around a web view. It wins nothing for existing: if a capability cannot be reached from a browser tab, it does not ship. Research note N.01 is the doctrine; the console page is the proof.

dashboardagentsworkspacebuilderstagersBOF repocampaignstunnelsusersactivity logserver & keysdatabase
Feature 03

The module depot — capability on demand

Shells and the interactive PTY, the file manager, tunnels and peer routing, the SMB browser, the BOF runtime, the collection set, elevation — all of it lives server-side in per-OS module pools and crosses to the agent only when tasked.

Every fetch is deliberate

One-time tokens · per-module keys

A module fetch is a one-time download token, a per-module key derived from the session, results streamed back in chunks, and key material wiped on unload. The server gates what an agent may fetch by agent type and platform. And the fetch never names itself: capable agents pull each module under a random cover name with a matching content type, so the request reads as an ordinary asset — a font, a script, a map file — not as dpapi.dll. A quiet agent therefore carries almost nothing — the loud moment is the fetch, and it happens once, in memory, wearing a boring name.

Static builds invert the model

Embedded profile

Where there is no loader — the static embedded builds — the same module set is compiled in. One codebase, two linking decisions, no fork in capability. The budget table and the full fetch sequence are in research note N.04.

Feature 04

Traffic profiles — boring on the wire

Sessions are X25519 ECDH with AES-256-GCM, and the session's identity rotates on a fixed cadence, so correlation by identifier dies on schedule. What they look like is a separate decision: twenty-three traffic profiles dress the protocol as Microsoft Graph, the GitHub API, S3, DNS-over-HTTPS, a Kubernetes API, and more.

A profile per build, not per server

23 profiles

The builder takes a traffic profile per build, so one campaign can read like cloud telemetry and the next like developer tooling — from the same teamserver. Profiles are part of the licensed material and ship ready to use, not as templates you finish yourself.

Fronting, rotation, and a way home

Cloudflare Workers · Ghost Chain

An optional Cloudflare Worker fronts the teamserver so agents never see its address. Server keys rotate without a fleet rebuild. And when the path home dies entirely, Ghost Chain recovers tasking through a blockchain resolver — a fallback we would rather you never need, built for the day you do.

ms-graphgithub-apiaws-s3docker-registryk8s-apidoh-dnsprometheus-remotenpm-registry+15 more
Feature 05

Delivery & the builder — one-way artifacts

Thirteen delivery formats for Windows, Linux, and macOS, from full-featured stagers to a 21 KB minimal. Every artifact is treated as disposable: minted for a purpose, burned on use.

One-time stager tokens

Minted · counted · burned

A stager URL is a token with a use count. Served once, it burns; burned, it answers like nothing was ever there. Payload pools go further — one URL serves a different build per delivery, so a recovered sample describes one artifact, never your fleet.

Match the stager to the watch

EDR-aware delivery

Different guards call for different doors. The full stager family is the choice for hosts watched by CrowdStrike, SentinelOne, or Kaspersky; the minimal family — smaller, metamorphic, with a fully in-memory variant — is built for Symantec, Defender, and static-ML environments. The matrix of which family covers which product ships in the licensee manual, and it is honest about the cells marked verify first.

Routing is only half of the discipline; the other half is measurement. Every build is exercised in the evaluation lab — static, on-execute, and behavioral lanes across the tracked engine families — and rev 0328 completed the matrix with no blocking verdict. The method is on the home page.

Every install is a new specimen

Per-build · per-install polymorphism

A signature written against one AXIS artifact describes exactly one artifact. The pipeline mutates every binary it emits — polymorphic API hashing, junk and section variation, padding — and the server re-mutates every Windows artifact it serves — timestamp, provenance header, checksum, overlay — so no two downloads share a hash, even of the same payload. The persistence installer goes further: its stub is compiled per install, on the server, with randomized optimization, names, and a 192-combination identity pool for the provider names it registers. Investigators hold samples; they never hold the sample.

Ghost Stream MSI, signed in the pipeline

Authenticode in-band

The MSI pipeline packages a Ghost Stream install and signs it in the same pass. The builder streams a live log as it works — profile, size, mutations — and keeps an artifact history your whole team can see, not just the operator who pressed build.

Feature 06

Execution — shells, terminals, BOFs, contained

A queued command shell for patient work and a real interactive PTY when you need a terminal. Managed code executes in process. And a Beacon-compatible BOF runtime runs a 67-object library under a crash guard.

A fault returns an error, never the session

Crash-guarded runtime

BOFs are contained by design: a fault in a tasked tool comes back as an error line in the workspace, and the agent keeps its session. The guard is the feature — the library being large is just nice.

Phantom — a shell that starts nothing

In-process · lazy CLR

On a host where spawning cmd.exe or powershell.exe is the loudest move you can make, Phantom answers commands without creating a process at all. A 116-command built-in set covers the everyday work in-process; the managed runtime loads lazily, only when a command genuinely needs it — so a session that never leaves the built-ins produces no module-load telemetry at all. Color-coded in the console so you always know which shell you're in.

Shared token context

One identity per task

Execution inherits the token context you task it with, so shells, BOFs, and modules act as the identity you chose — not as whatever the process happened to be.

whoaminetstattasklistdirenvarpipconfig+109 more
crash-guarded runtimebeacon-compatible objects
Feature 07

Automation — the API is the panel's API

Everything the panel does is a REST call with the same token. Automate builds, tasking, and reporting from your own tooling; the API is not a reduced second interface, it is the interface the product is built on.

Script the boring parts

REST · token auth

Mint stagers from CI, sweep results into your own evidence store, export audit on a schedule, wire build completion to whatever chat your team actually reads. If you can reach the panel, you can reach the API — same origin, same credential.

illustrative · operator tokenbash
# tonight's build, from cron
curl -sS -X POST "$TS/api/builds" \
  -H "Authorization: Bearer $TOK" \
  -d '{"profile":"windows-x64","traffic":"ms-graph","campaign":"NORTH"}'

# audit trail, to the evidence store
curl -sS "$TS/api/audit?campaign=NORTH&format=csv" \
  -H "Authorization: Bearer $TOK" -o north-audit.csv
Feature 08

Interoperability — plays well with the rest of the kit

Out to your analysis tools

BloodHound · CSV

Directory discovery exports straight to BloodHound, so collection becomes a graph your team already knows how to read. The audit log exports to CSV for evidence stores and after-action reports.

In from the ecosystem

BOF-compatible

The object runtime is Beacon-compatible, so the community's tooling — and your own — runs without a port. Peer chaining routes over SMB named pipes for segmented networks; SOCKS5 and reverse tunnels carry the rest of your kit through the agent that is already there.

bloodhoundcsvbeacon-compatible BOFssmb named pipessocks5reverse tunnels
Feature 09

More in the edition

Six more things teams ask about, each linked to its place in the capability reference — every one of the fifty-three entries there is deep-linkable.

Reference

The full index — fifty-three entries

Everything on this page, itemized. Each title opens its entry in the capability reference with scope, limits, and platform notes.

From a licensed team

“It replaced a workstation, a VM, and the spreadsheet of who had which session.”

Red team lead, European consultancy — licensed since 2025. Shared with permission; the industry being what it is, names stay off the page.

Keep reading

The reference, the console, or the license.

The capability reference itemizes everything above — fifty-three entries with scope and limits. The console page shows the product working. Licensing tells you how acquisition works and what it includes.