Atlas / MCP servers / blacksnufkin / LitterBox

LitterBoxBLOCK

mcp/blacksnufkin/litterbox

A self-hosted sandbox for red teams to test payloads against modern detection before deployment. MCP integration lets an LLM agent drive analysis end to end.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
20 15r · 3w · 2d
Transport
stdio · streamable-http
License
GPL-3.0
Stars
1,541
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[]() []() []() []() []() [](https://deepwiki.com/BlackSnufkin/LitterBox) [](https://github.com/BlackSnufkin/LitterBox/stargazers)

A self-hosted payload-analysis sandbox for red teams. Upload a sample, run static / dynamic / EDR analysis against it, get a Detection Score and a triggering-indicators breakdown — decide whether the payload is field-ready before it leaves the lab.

LitterBox can also dispatch payloads to a separate EDR-instrumented Windows VM (Elastic Defend or Fibratus) and pull the correlated detection alerts back into the results page.

While designed primarily for red teams, LitterBox is equally useful for blue teams running the same tools in their malware-analysis workflows.

Documentation

Operator and developer documentation lives in the LitterBox Wiki.

Read from source at commit cd0acb3a1830OBSERVED · 2026-09-24
02

Exposed tools (20)

15 read · 3 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
analyze_fuzzy_similarityreadScore a payload
cleanup_sandboxdestructiveWipe analysis artifacts. DESTRUCTIVE — confirm with the user before calling.
compare_with_blenderreadCompare a payload
delete_payloaddestructiveDelete one payload and its results. DESTRUCTIVE — confirm with the user before calling.
download_reportreadDownload the HTML report to disk and return the saved path.
get_comprehensive_resultsreadAll available results in one parallel call (file_info + static + dynamic + holygrail).
get_dynamic_resultsreadDynamic analysis output (memory scanners, behavioral telemetry, process output).
get_edr_agents_statusreadLive probe of every EDR profile (Whiskers agent + Elastic stack reachability,
get_edr_indexwriteIndex of every saved EDR run for a target (one entry per profile that has data).
get_file_inforeadFile metadata: type, size, hashes, entropy, PE structure, sensitive imports.
get_holygrail_resultswriteHolyGrail BYOVD output for a driver (LOLDrivers / block status / critical imports).
get_reportreadRender the full HTML analysis report and return it inline as a string.
get_risk_assessmentreadComputed detection assessment: numerical score, level (Low / Medium / High / Critical), triggering indicators.
get_scanners_statusreadInventory of configured local analyzers (static + dynamic + holygrail) and
get_static_resultsreadStatic analysis output (YARA matches, CheckPlz findings, Stringnalyzer indicators).
list_edr_profilesreadList EDR profiles registered under Config/edr_profiles/.
list_payloadsreadList every analyzed payload, driver, and process in the sandbox with detection summary.
run_blender_scanwriteSnapshot the live host so Blender can compare payload runtime indicators against it.
sandbox_statusreadHealth, tool readiness, and fleet summary for the LitterBox server.
validate_pidreadConfirm a PID exists and is accessible before targeting it for dynamic analysis.
03

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (7 observation(s))
Network
declared (11 observation(s))
Shell
declared (2 observation(s))
Dependencies
pinned
Secrets in source
none-found

Findings (25)

HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
GrumpyCats/litterbox_client/base.py:62
session.verify = False
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMInventory / provenance · inv.binary · CWE-1104
Scanners/CheckPlz/CheckPlz.exe
CheckPlz.exe
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
Scanners/HolyGrail/HolyGrail.exe
HolyGrail.exe
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
Scanners/HuntSleepingBeacons/Hunt-Sleeping-Beacons.exe
Hunt-Sleeping-Beacons.exe
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
Scanners/Moneta/Moneta64.exe
Moneta64.exe
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
Scanners/Patriot/Patriot.exe
Patriot.exe
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
app/static/js/results/tools/hsb.js:38
ctx.element.innerHTML = cleanState('No sleep-pattern indicators', `Process ${processName} (PID ${processPid}) shows no beacon-like sleep behaviour.`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Config/edr_profiles/elastic.yml.example:26
agent_url: "http://192.168.1.100:8080"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Config/edr_profiles/elastic.yml.example:30
elastic_url: "https://192.168.1.50:9200"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Config/edr_profiles/fibratus.yml.example:69
agent_url: "http://192.168.1.100:8080"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
GrumpyCats/LitterBoxMCP.py:48
client = LitterBoxClient(base_url="http://127.0.0.1:1337", logger=logger)
MEDIUMObfuscation / stealth · obf.anti_debug · CWE-506, CWE-94
app/utils/forensics.py:43
'isdebuggerpresent', 'isprocessorfeaturepresent', 'loadlibrarya',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
cleanup_sandbox, delete_payload
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
app/analyzers/fuzzy.py:260
md5_hash = hashlib.md5()
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
app/analyzers/static/lnk_parser.py:505
'md5': hashlib.md5(self.indata).hexdigest(),
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
app/analyzers/static/lnk_parser.py:506
'sha1': hashlib.sha1(self.indata).hexdigest(),
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
app/utils/file_io.py:395
md5_hash = hashlib.md5(file_content).hexdigest()
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
app/static/js/results/tools/_shared.js:8
import { escapeHtml } from '../../utils/escape.js';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
CONTRIBUTING.md:29
python litterbox.py --debug                # http://127.0.0.1:1337
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
app/templates/report.html:541
<img class="brand-logo" src="data:image/png;base64,AAABAAYAEBAAAAAAIACiAgAAZgAAACAgAAAAACAA4AYAAAgDAAAwMAAAAAAgACMMAADoCQAAQEAAAAAAIAA1EgAACxYAAICAAAAAACAAbC0AAEAoAAAAAAAAAAAgAFxuAACsVQAAiVBORw0KGgoAA
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
app/static/js/upload/core.js:634
['Has atob()', f.has_atob],
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
app/utils/htmlsmuggle.py:270
notes.append("atob() + Uint8Array decode chain present")
INFOInventory / provenance · inv.oversize · CWE-1104
Scanners/HollowsHunter/hollows_hunter.exe
Scanners/HollowsHunter/hollows_hunter.exe
Why it matters. 1266176 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
Scanners/HolyGrail/Policies/lol_drivers.json
Scanners/HolyGrail/Policies/lol_drivers.json
Why it matters. 27478063 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
Scanners/PE-Sieve/pe-sieve.exe
Scanners/PE-Sieve/pe-sieve.exe
Why it matters. 1113088 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-09-24 · audit v0.4.1 · source sha cd0acb3a1830full audit observations/trust-audit/mcp-server/blacksnufkin__litterbox.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-09-24cd0acb3a1830BLOCKD69first audit
05

Questions

What is the LitterBox MCP server?

A self-hosted sandbox for red teams to test payloads against modern detection before deployment. MCP integration lets an LLM agent drive analysis end to end.

What tools does LitterBox expose?

20 in total: 15 read-only, 3 that write, and 2 that can delete or overwrite (cleanup_sandbox, delete_payload). Every one is listed on this page with its risk.

Is LitterBox safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does LitterBox need?

No credential environment variables were found in its source, so it appears to need none.

How does LitterBox run?

It speaks stdio and streamable-http, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (cd0acb3a1830), read on 2026-09-24. The repository is watched and re-audited when it changes.

Advertisement