Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9d261b4
Revise DNS reconnaissance methodology details.
leebaird Jun 26, 2026
489b3ab
Merge pull request #31 from leebaird/main
JoasASantos Jun 26, 2026
761d3df
feat: whitebox/greybox/repl accept a GitHub URL (auto-clone)
JoasASantos Jun 26, 2026
d957429
feat(models): add Azure OpenAI provider + GOOGLE_API_KEY alias for Ge…
JoasASantos Jun 26, 2026
ae5bb24
ci: cross-platform release builds (linux x64/arm64, macos x64/arm64, …
JoasASantos Jun 26, 2026
64decad
v3.5.3 — Integrations (GitHub · GitLab · Jira)
JoasASantos Jun 27, 2026
669ab44
ci: cross-build macOS x64 on Apple-Silicon runner (avoid scarce macos…
JoasASantos Jun 27, 2026
0a18178
Add MIT LICENSE
JoasASantos Jul 1, 2026
e9f81c1
harness: reduce false positives (robust verdicts, severity quorum, re…
JoasASantos Jul 1, 2026
ea61ab1
harness: robust multi-round attack chaining (decision-driven post-exp…
JoasASantos Jul 1, 2026
e5c607f
v3.5.4 — Robust attack chaining & false-positive reduction
JoasASantos Jul 1, 2026
2e25809
v3.5.5 — cloud infrastructure testing + REPL polish
JoasASantos Jul 2, 2026
78b638a
fix(repl): plain readline prompt (fix garbled interactive line editing)
JoasASantos Jul 2, 2026
c7e756f
repl: idle guardrail, multi-target, results navigation; deeper recon …
JoasASantos Jul 2, 2026
58aa869
docs: RELEASE.md + README updated with v3.5.5 additions (cloud, REPL …
JoasASantos Jul 2, 2026
5f1573a
misconfig/CVE/PoC/rate-limit agents, data-safety guardrail, Burp prox…
JoasASantos Jul 2, 2026
f303d10
fix(repl): /help lists one command per line (no more smushed columns)
JoasASantos Jul 2, 2026
0b616b4
identification/attribution + multi-role access-control auth (v3.5.5)
JoasASantos Jul 2, 2026
2edd350
docs: full creds.yaml reference (web/multi-role/ssh/windows/cloud) in…
JoasASantos Jul 2, 2026
3ca0449
harness: deterministic HTTP probe grounds recon & decisions (more rob…
JoasASantos Jul 2, 2026
4ac4fae
subscription login preflight + Playwright MCP fixes (browser install,…
JoasASantos Jul 5, 2026
d931ce0
browser-driven testing doctrine + 8 SPA/API agents (Juice Shop-ready)
JoasASantos Jul 5, 2026
e1c1f50
repl: /results always shows the test picker; /validate recovered runs…
JoasASantos Jul 5, 2026
a064b4e
setup: global install (download prebuilt + PATH + NEUROSPLOIT_BASE), …
JoasASantos Jul 5, 2026
39c28b5
decision-driven deep exploitation: DECISION doctrine, multi-role /aut…
JoasASantos Jul 6, 2026
a50178a
agents: +8 EOL / end-of-support exploitation agents (library 397)
JoasASantos Jul 9, 2026
f2971b6
train agent with bug-bounty techniques: methodology meta-agent + reco…
JoasASantos Jul 9, 2026
26a8c84
v3.5.6 — bug-bounty corpus grounding + 2FA bypass agent; Trendshift b…
JoasASantos Jul 10, 2026
b093674
v3.6.0 — AI/LLM/Agent/MCP/Skills security, n8n audit, onboarding wizard
JoasASantos Jul 10, 2026
d414dcb
recon: intense multi-round active recon (deep_recon) with tool auto-i…
JoasASantos Jul 10, 2026
54bf424
v3.6.1 — add GPT-5.6 models (sol / terra / luna)
JoasASantos Jul 10, 2026
d9c191e
fix(cli): codex exec exit-1 no longer discards a valid recon/agent re…
JoasASantos Jul 10, 2026
5b9d485
fix(repl): show recon/probe activity + don't let the idle guardrail k…
JoasASantos Jul 10, 2026
98616bc
repl: richer /status (works during recon) + new /logs activity feed
JoasASantos Jul 10, 2026
ce31478
v3.6.2: stream Codex tool-by-tool + capture agent commands in /logs &…
JoasASantos Jul 10, 2026
865611d
recon: time-box tool installs and skip on failure — never stall on a …
JoasASantos Jul 10, 2026
53c07b9
v3.6.3: resumable interrupted runs + crash-proof mid-run browsing
JoasASantos Jul 11, 2026
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
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,15 @@ ANTHROPIC_API_KEY=
OPENAI_API_KEY=

# gemini: https://aistudio.google.com/app/apikey
# (GOOGLE_API_KEY is also accepted as an alias if GEMINI_API_KEY is unset)
GEMINI_API_KEY=
#GOOGLE_API_KEY=

# azure: Azure OpenAI (OpenAI-compatible). Use `--model azure:<deployment>`
# (the model name is your Azure *deployment* name).
#AZURE_OPENAI_API_KEY=
#AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
#AZURE_OPENAI_API_VERSION=2024-10-21

# xai: https://console.x.ai/
XAI_API_KEY=
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Release builds

# Builds self-contained NeuroSploit binaries for every OS/arch and uploads them
# to the matching GitHub Release. Fires automatically on a pushed `v*` tag, or
# manually via "Run workflow" (provide the tag).

on:
push:
tags: ["v*"]
workflow_dispatch:
inputs:
tag:
description: "Release tag to build & attach (e.g. v3.5.2)"
required: true

permissions:
contents: write

jobs:
build:
name: ${{ matrix.label }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-22.04, label: linux-x64, ext: tar.gz, target: "" }
- { os: ubuntu-24.04-arm, label: linux-arm64, ext: tar.gz, target: "" }
# macOS x64 is cross-built on an Apple-Silicon runner (no scarce Intel runner).
- { os: macos-14, label: macos-x64, ext: tar.gz, target: x86_64-apple-darwin }
- { os: macos-14, label: macos-arm64, ext: tar.gz, target: "" }
- { os: windows-latest, label: windows-x64, ext: zip, target: "" }
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
neurosploit-rs/target
key: ${{ matrix.label }}-cargo-${{ hashFiles('neurosploit-rs/Cargo.lock') }}

- name: Build (release)
working-directory: neurosploit-rs
shell: bash
run: |
if [ -n "${{ matrix.target }}" ]; then
cargo build --release --target "${{ matrix.target }}"
else
cargo build --release
fi

- name: Resolve tag
id: tag
shell: bash
run: echo "tag=${{ github.event.inputs.tag || github.ref_name }}" >> "$GITHUB_OUTPUT"

- name: Package
shell: bash
run: |
set -e
TAG="${{ steps.tag.outputs.tag }}"
NAME="neurosploit-${TAG}-${{ matrix.label }}"
mkdir -p "dist/$NAME"
cp -R agents_md "dist/$NAME/"
cat > "dist/$NAME/README.txt" <<EOF
NeuroSploit ${TAG} — ${{ matrix.label }}
Run from inside this folder so it finds agents_md/, e.g.:
./neurosploit --version
./neurosploit run http://testphp.vulnweb.com/ --model anthropic:claude-opus-4-8 -v
Or set NEUROSPLOIT_BASE to this folder and run neurosploit from anywhere.
EOF
BINDIR="neurosploit-rs/target/release"
if [ -n "${{ matrix.target }}" ]; then BINDIR="neurosploit-rs/target/${{ matrix.target }}/release"; fi
if [ "${{ runner.os }}" = "Windows" ]; then
cp "$BINDIR/neurosploit.exe" "dist/$NAME/"
(cd dist && 7z a "${NAME}.zip" "$NAME" >/dev/null)
else
cp "$BINDIR/neurosploit" "dist/$NAME/"
(cd dist && tar -czf "${NAME}.tar.gz" "$NAME")
fi

- name: Upload to release
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
TAG="${{ steps.tag.outputs.tag }}"
gh release upload "$TAG" dist/neurosploit-*.${{ matrix.ext }} --clobber
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,7 @@ data/repl_runs.json
data/repl_history.txt
.neurosploit/
/tmp/*

# Cloned source repos (whitebox/greybox from a git URL)
repos/
neurosploit-rs/repos/
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Joas A Santos & Red Team Leaders

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
162 changes: 150 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<h1 align="center">🧠 NeuroSploit v3.5.2</h1>
<h1 align="center">🧠 NeuroSploit v3.6.3</h1>

<p align="center">
<a href="https://trendshift.io/repositories/22624?utm_source=trendshift-badge&amp;utm_medium=badge&amp;utm_campaign=badge-trendshift-22624" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/22624/daily?language=Python" alt="JoasASantos%2FNeuroSploit | Trendshift" width="250" height="55"/></a>
</p>

<p align="center">
<a href="https://github.com/JoasASantos/NeuroSploit/stargazers"><img src="https://img.shields.io/github/stars/JoasASantos/NeuroSploit?style=for-the-badge&logo=github&color=8b5cf6" alt="Stars"></a>
Expand All @@ -8,11 +12,11 @@
</p>

<p align="center">
<img src="https://img.shields.io/badge/Version-3.5.2-blue?style=flat-square">
<img src="https://img.shields.io/badge/Version-3.6.3-blue?style=flat-square">
<img src="https://img.shields.io/badge/Harness-Rust%20%7C%20tokio-e6b673?style=flat-square">
<img src="https://img.shields.io/badge/License-MIT-green?style=flat-square">
<img src="https://img.shields.io/badge/MD%20Agents-329-red?style=flat-square">
<img src="https://img.shields.io/badge/Models-12%20providers-success?style=flat-square">
<img src="https://img.shields.io/badge/MD%20Agents-417-red?style=flat-square">
<img src="https://img.shields.io/badge/Models-14%20providers-success?style=flat-square">
<img src="https://img.shields.io/badge/Modes-Black%20%7C%20White%20%7C%20Grey%20%7C%20Host-9cf?style=flat-square">
<img src="https://img.shields.io/badge/Auth-API%20key%20%7C%20Subscription-orange?style=flat-square">
</p>
Expand All @@ -24,12 +28,19 @@
>
> 📖 **New here? Read the [full Tutorial & User Guide →](TUTORIAL.md)** — every mode, flag, config and example explained.

> 🆕 **New in v3.5.2 — Exploitation Depth & Report Hygiene:** a **DEPTH doctrine**
> makes the engine *use* what it finds (exposed → exploited), **chain** findings
> across modules, decode/fingerprint artifacts → CVEs, and **audit tokens** (JWT
> alg-confusion / weak HS256 secrets). A deterministic post-pass **calibrates
> severity to proven impact** and **consolidates duplicated hygiene** findings.
> See [RELEASE.md](RELEASE.md).
> 🆕 **New in v3.6.3 — resumable interrupted runs + crash-proof browsing:**
> If a run is interrupted (terminal closed, Ctrl-C, crash), **`/continue` now
> relaunches it** on the same target and **carries the recovered findings
> forward** — the offer appears right at launch. And opening **`/results`**,
> **`/finding`** or **`/report`** while a run streams no longer corrupts the
> terminal: live output is paused for the picker (still captured in `/logs`) and
> restored on exit. *(v3.6.2 added live Codex tool-by-tool streaming + the full
> activity feed in `/logs`/`/status`; v3.6.1 added GPT-5.6 sol/terra/luna and
> the Codex exit-1 fix; v3.6.0 added AI-agent/LLM/MCP/Skills/n8n testing +
> onboarding wizard + Cloud scope.)*
> *(v3.5.4 added robust attack chaining + false-positive reduction; v3.5.3
> GitHub/GitLab/Jira **[integrations](TUTORIAL-INTEGRATION.md)**; v3.5.2 the DEPTH
> doctrine + report-hygiene — see [RELEASE.md](RELEASE.md).)*

---

Expand All @@ -39,7 +50,7 @@ LLMs** — via **API key** or local **subscription** (Claude Code / Codex / Gemi
Grok) — recons the target, **intelligently selects only the agents that match the
discovered surface**, runs them in parallel, **chains** findings into deeper
impact, and **validates every claim by cross-model voting + tool-receipt
grounding** before reporting. It ships **329 markdown agents** and a **Mission
grounding** before reporting. It ships **417 markdown agents** and a **Mission
Control TUI**.

### Engagement modes
Expand All @@ -49,7 +60,7 @@ Control TUI**.
| **Black-box** | `neurosploit run <url>` | recon → select → exploit → vote → report |
| **White-box** | `neurosploit whitebox <repo>` | source/SAST review (file:line evidence) |
| **Grey-box** | `neurosploit greybox <repo> --url <app>` | code review **+** live exploitation together |
| **Host/Infra** | `neurosploit host <ip> --creds creds.yaml` | Linux / Windows / Active Directory testing |
| **Host/Infra** | `neurosploit host <ip> --creds creds.yaml` | Linux / Windows / AD **and cloud** (AWS/GCP/Azure) testing |
| **Mission Control** | `neurosploit tui <url>` | live TUI panels + composer during the run |
| **Interactive** | `neurosploit` | persistent REPL session (resumes per project) |

Expand All @@ -63,9 +74,26 @@ Control TUI**.
- 🧾 **Grounding** — hard rule: **no claim without a tool receipt** (raw tool
output, not paraphrase). Empirical for black-box, symbolic (`file:line`) for
white-box; ungrounded claims are demoted.
- 🔬 **Deterministic HTTP probe** — before the model recon, the harness runs a
**real** request/response analysis (status/redirects, security headers, cookie
flags, CORS reflection, tech fingerprint, linked JS, 404 baseline, high-signal
paths) and feeds those observed facts into recon, so agent selection and
exploitation decisions are grounded in evidence — not the model's guess.
- 🔗 **Attack chaining** — 12 multi-stage chain agents (SQLi→RCE→LPE, SSRF→AWS
creds, upload→LFI→RCE→LPE, default-creds→domain, …); each stage proven before
advancing.
- ☁️ **Cloud testing** — AWS / GCP / Azure agents that drive the provider CLIs
(`aws`/`gcloud`/`az`). Connect via `creds.yaml`: AWS keys, a Google
service-account JSON, or an Azure service principal — see
[Cloud credentials](#cloud-credentials-awsgcpazure).
- 🧰 **Misconfig & CVE hunting, safely** — dedicated agents for absurd
misconfigs (exposed `.git`/`.env`, debug/actuator, default creds, dashboards,
CORS), a **CVE Hunter** (smart, targeted `nuclei`), a **PoC Developer** (writes
reproducible scripts to the run's `pocs/`), and **rate-limit** testing — all
under a strict **data-safety/PII guardrail** (no destructive or state-changing
actions; PII proven with a masked sample, never dumped).
- 🕵️ **Burp/ZAP proxy** — `/proxy <url>` (or `/burp`) routes agent traffic
through your local intercepting proxy so you can inspect & replay in Burp.
- 🗺️ **Attack graph & kill chain** — findings mapped to OWASP / CWE / MITRE
ATT&CK / stage; rendered as a Mermaid graph in the report.
- ✅ **Cross-model validation** — a different model adjudicates each finding;
Expand Down Expand Up @@ -149,6 +177,116 @@ No login? Use an **API key** instead — see [Authentication](#authentication--r

---

## 🔌 Integrations (GitHub · GitLab · Jira)

Wire NeuroSploit into your SDLC. Toggle from the REPL (`/integrations`) or the CLI
(`neurosploit integrations enable github|gitlab|jira`). **Tokens are never stored**
— only the *name* of the env var is saved; the value is read from your environment.

```bash
export GITHUB_TOKEN=ghp_... # PAT with `repo` scope (private repos)
neurosploit integrations enable github

# Review a Pull Request's code (clones the PR head, white-box) and comment back:
neurosploit pr digininja/DVWA 42 --subscription --model anthropic:claude-opus-4-8 --comment

# Watch a branch and re-review on every new commit:
neurosploit watch myorg/private-app --branch main --subscription --model anthropic:claude-opus-4-8

# Private GitLab repo (token-injected clone) — works in whitebox/greybox:
export GITLAB_TOKEN=glpat-... ; neurosploit integrations enable gitlab
neurosploit whitebox https://gitlab.com/myorg/private-svc --subscription --model anthropic:claude-opus-4-8

# Open a Jira card per finding (any engagement):
export JIRA_EMAIL=you@org.com JIRA_API_TOKEN=... # set base/project once: /integrations setup jira
neurosploit whitebox https://github.com/myorg/app --jira --subscription --model anthropic:claude-opus-4-8
```

| Integration | What you get | Env vars |
|-------------|--------------|----------|
| **GitHub** | private clone · `pr` review + comment · `watch` branch | `GITHUB_TOKEN` |
| **GitLab** | private clone for whitebox/greybox | `GITLAB_TOKEN` |
| **Jira** | one card per finding (`--jira`) | `JIRA_EMAIL`, `JIRA_API_TOKEN` |

📖 Step-by-step setup for each tool: **[TUTORIAL-INTEGRATION.md](TUTORIAL-INTEGRATION.md)**.

---

## ☁️ Cloud credentials (AWS/GCP/Azure)

Add a cloud block to `creds.yaml` and the harness exports the right env vars so
the AWS/GCP/Azure agents can drive `aws` / `gcloud` / `az`. Secrets stay in your
file/secret-manager; agents do **read-only enumeration first, never destructive**.

```yaml
# --- AWS: static keys (or a named profile) ---
aws:
access_key_id: AKIA...
secret_access_key: ...
# session_token: ... # if using temporary creds
region: us-east-1
# profile: my-sso-profile # alternative to keys

# --- GCP: service-account JSON (path recommended; inline single-line also works) ---
gcp:
service_account_json: /path/to/sa.json
project: my-project-id

# --- Azure: service principal (recommended for automation) ---
azure:
tenant_id: ...
client_id: ...
client_secret: ...
subscription_id: ...
```

```bash
neurosploit host my-cloud-account --creds creds.yaml \
--subscription --model anthropic:claude-opus-4-8 -v
```

Agents cover IAM privilege-escalation, storage exposure (S3/GCS/Blob), compute &
network exposure, secrets (Secrets Manager / Secret Manager / Key Vault),
service-account/SP abuse, and identity enumeration (Entra ID). Best-practice
auth: **AWS** access keys or profile; **GCP** a service-account JSON
(`GOOGLE_APPLICATION_CREDENTIALS`); **Azure** a service principal
(`az login --service-principal`).

---

## 👥 Multiple identities — access-control testing (IDOR / BOLA / BFLA)

Give NeuroSploit two or more **named roles** in `creds.yaml` and it authenticates
as each and tests **cross-role** access (a low-priv role reaching another user's
object or an admin function is a finding):

```yaml
admin:
jwt: eyJ... # per role: jwt | header (raw) | cookie | apikey | login+username+password
user:
apikey: abc123 # → X-Api-Key: abc123
victim:
cookie: "session=deadbeef"
```

```bash
neurosploit run https://app.example --creds creds.yaml \
--subscription --model anthropic:claude-opus-4-8 -v
```

Each finding is proven with the **authorized vs unauthorized** request pair, under
the data-safety guardrail (read-only, PII masked).

## 🏷️ Identification & attribution (anti-plagiarism)

Every request is tagged with an identifying **User-Agent** (default
`NeuroSploit/<ver> …`, change with **`/ua`** or `NEUROSPLOIT_UA`) plus an
`X-NeuroSploit-Scan` header, and every finding is **stamped** "Identified and
validated by NeuroSploit" — so provenance travels in the traffic, the finding
text, `findings.json` and the report footer.

---

## Build

```bash
Expand Down
Loading