【AI渗透工具】——认知侦察,献给那些拒绝被自身假设束缚的人(Shannon-Uncontained)

🔮 香农-未受限制

认知侦察,献给那些拒绝被自身假设束缚的人

"凡是无需证据就能断言的,都可以无需证据就能驳斥。" ------克里斯托弗·希钦斯

"即使有证据支持,也必须考虑到其不确定性。" ------《EQBSL账簿》


这到底是什么?

Shannon-Uncontained 是一个渗透测试编排框架,它将安全侦察视为一种 认知系统设计实践,而非简单的工具清单。我们拒绝将观察结果局限于"发现"或"未发现"这种陈旧的分类。正如希钦斯可能指出的那样,现实并不遵循这种简单的二元对立。

与其他将输出打包到 Docker 容器中的渗透测试框架(啊,没错,这可是现代懒惰的万能工具)不同,我们采用非容器化运行。我们的世界模型完全开放------可检查、可证伪,对于那些喜欢把安全机制包装得井井有条的人来说,这无疑会让他们感到不适。

核心主张

大多数安全工具给人以绝对确定的感觉。但它们会说谎。

端口扫描结果显示"开放",但这并不能告诉你端口背后的真正含义。今天有效的凭据明天可能就失效了。测试环境中存在的漏洞可能在生产环境中已被修复。传统工具将这种复杂的认知环境简化为布尔值标志。

Shannon-Uncontained 采用了一种不同的方法:每个观测值都包含其置信度不置信度不确定性基准率 。我们称之为EQBSL 张量------证据量化贝叶斯主观逻辑------它是我们整个世界模型的基石。


理念(或者:我们为什么建造它)

确定性的问题

大多数渗透测试报告读起来就像宗教宣言:*"系统存在 SQL 注入漏洞。"*句号。没有不确定性。没有来源。完全没有提及测试人员是在周二下午针对一个与生产环境共享约 40% 代码库的测试环境运行了三次攻击载荷。

这不是科学,这是货物崇拜式的安全感

EQBSL替代方案

我们采用基于证据的主观逻辑的认知框架,并将其扩展到具有显式算子语义的张量空间。我们世界模型中的每个断言都包含:

成分 象征 意义
信仰 b 确信该说法属实
怀疑 d 确信该说法不实
不确定 u 双方都缺乏证据。
基准利率 a 类似情境下的先验概率

受限于以下条件:b + d + u = 1

期望值能提供一个概率估计,它真实地反映了我们未知的情况。不确定性只会随着证据的积累而降低。你不能用无关紧要的理由将其抹杀掉**。** E = b + a·u


核心架构

notranslate 复制代码
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>┌─────────────────────────────────────────────────────────────┐
│                    Shannon-Uncontained                       │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐   │
│  │   Recon      │───▶│   World      │───▶│   Epistemic  │   │
│  │   Agents     │    │   Model      │    │   Ledger     │   │
│  └──────────────┘    └──────────────┘    └──────────────┘   │
│         │                   │                   │            │
│         ▼                   ▼                   ▼            │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐   │
│  │   Evidence   │◀──▶│   Claims     │◀──▶│   EQBSL      │   │
│  │   Graph      │    │   & Proofs   │    │   Tensors    │   │
│  └──────────────┘    └──────────────┘    └──────────────┘   │
│                                                              │
└─────────────────────────────────────────────────────────────┘
</code></span></span></span></span>

关键组成部分

  • 侦察代理:协调各种工具(nmap、subfinder、whatweb 等)并发布结构化证据
  • 世界模型:实体、主张和关系的中心知识图谱
  • 认知账本:管理所有主体的 EQBSL 张量;如实记录不确定性
  • 证据图:仅追加存储,包含内容寻址事件和来源信息
  • 预算管理器:资源限制(时间、代币、网络)以防止代理失控

快速入门

复制代码
# Clone and install
git clone https://github.com/Steake/shannon-uncontained.git
cd shannon-uncontained
npm install

# Configure your LLM provider (see LLM Provider Setup below)
cp .env.example .env
# Edit .env with your API key or local provider settings

# Generate reconnaissance for a target
./shannon.mjs generate https://example.com

# View the world model
./shannon.mjs model show --workspace shannon-results/repos/example.com

# Export interactive knowledge graph
./shannon.mjs model export-html --workspace shannon-results/repos/example.com --view provenance

⚠️重要提示: Shannon 需要 LLM 提供商才能正常运行。请参阅下方的"LLM 提供商设置"部分,了解配置说明。

图形视图模式

模式 描述
topology 基础设施网络:子域 → 路径类别 → 端口
evidence 代理人来源:哪个代理人发现了哪些证据
provenance EBSL-native:源 → 事件类型 → 目标(带张量边)

LLM提供商设置

Shannon 需要一家 LLM 服务提供商进行分析并生成代码。我们支持多家服务提供商,以满足不同的需求和预算。

快速设置

  1. 复制示例环境文件:

    复制代码
    cp .env.example .env
  2. 请选择并配置以下服务提供商之一。

云服务提供商(需要 API 密钥)

GitHub 模型(免费套餐推荐)

通过 GitHub 的基础架构免费访问 GPT-4 和其他模型:

复制代码
# .env
GITHUB_TOKEN=ghp_your_token_here

获取您的令牌:github.com/settings/tokens

**费用:**免费(有流量限制)

OpenAI

访问 GPT-4、GPT-4o 和其他 OpenAI 模型:

复制代码
# .env
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your_key_here

获取密钥:platform.openai.com/api-keys

**费用:**每次请求约 0.01-0.10 美元

Claude

获取 Claude 3.5 Sonnet、Opus 和其他 Claude 型号的使用权限:

复制代码
# .env
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-your_key_here

获取密钥:console.anthropic.com

**费用:**每次请求约 0.01-0.10 美元

本地提供商(无需 API 密钥)

模型完全在您的机器上运行,无需任何 API 费用:

奥拉玛
复制代码
# Install Ollama from ollama.com
ollama pull llama3.2

# .env
LLM_PROVIDER=ollama
LLM_MODEL=llama3.2

默认端点:http://localhost:11434/v1

llama.cpp
复制代码
# Run llama.cpp server
python -m llama_cpp.server --model your_model.gguf

# .env
LLM_PROVIDER=llamacpp
LLM_MODEL=local-model

默认端点:http://localhost:8080/v1

LM工作室
复制代码
# Download and start LM Studio from lmstudio.ai
# Start local server from the UI

# .env
LLM_PROVIDER=lmstudio
LLM_MODEL=local-model

默认端点:http://localhost:1234/v1

自定义端点

使用任何与 OpenAI 兼容的 API 端点:

复制代码
# .env
LLM_PROVIDER=custom
LLM_BASE_URL=https://your-endpoint.com/v1
LLM_MODEL=your-model-name
# Optional: Include an API key if needed
OPENAI_API_KEY=your-key-here

这适用于:

  • Azure OpenAI 终结点
  • 自托管推理服务器(vLLM、TGI)
  • 公司代理人
  • 任何与 OpenAI 兼容的 API

高级配置

针对不同任务覆盖特定模型:

复制代码
# .env
LLM_FAST_MODEL=gpt-3.5-turbo      # For quick classification
LLM_SMART_MODEL=gpt-4o            # For architecture inference
LLM_CODE_MODEL=claude-sonnet-3.5  # For code generation

为任何提供商设置自定义端点:

复制代码
# Override base URL (useful for proxies)
LLM_BASE_URL=https://your-proxy.com/v1

有关完整的配置选项,请参阅.env.example


证据优先工作流程

1. 侦察阶段

代理将证据事件发送到图中:

复制代码
{
  source: 'NetRecon',
  event_type: 'PORT_SCAN',
  target: 'example.com',
  payload: { port: 443, state: 'open', service: 'https' },
  timestamp: '2024-01-15T10:30:00Z'
}

2. 权利要求推导

证据以明确的置信度支持论点:

复制代码
{
  subject: 'example.com:443',
  predicate: 'runs_service',
  object: 'nginx',
  confidence: 0.85,
  evidenceIds: ['ev_a1b2c3', 'ev_d4e5f6']
}

3. EQBSL 张量分配

每个声明都包含一个张量:(b, d, u, a)

复制代码
// High-confidence claim from strong evidence
{ b: 0.82, d: 0.03, u: 0.15, a: 0.5 }
// Expectation: 0.82 + 0.5 × 0.15 = 0.895

// Low-confidence claim from weak evidence  
{ b: 0.20, d: 0.10, u: 0.70, a: 0.5 }
// Expectation: 0.20 + 0.5 × 0.70 = 0.55

4. 可视化

知识图谱根据边的认知状态来渲染边的样式:

  • 颜色:青色(高度确信)→ 黄色(不确定)→ 红色(低度确信)
  • 宽度:边缘越厚 = 期望值越高
  • 不透明度:不透明度越高,不确定性越低。

为什么叫"不受控制"?

因为 Docker 容器是架构失败的体现。

更严重的是:传统的渗透测试工具往往各自独立运行。Nmap 对 Burp 的发现一无所知。Nuclei 也不会关心你的手动测试结果。每个工具都会生成自己的测试结果,而可怜的分析师必须费力地将它们拼凑成一个连贯的叙述。

香农-Uncontained模型反对这种碎片化。所有证据都汇入一个统一的世界模型。所有论断都依据其证据基础。所有不确定性都被追踪记录,而非隐藏。

我们不受束缚,因为我们的知识拒绝被框定,我们的不确定性拒绝被否认,我们的架构拒绝假装安全只是运行正确脚本的简单问题。


项目结构

notranslate 复制代码
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>shannon-uncontained/
├── shannon.mjs                 # CLI entry point
├── local-source-generator.mjs  # Black-box recon orchestration
├── src/
│   ├── core/
│   │   ├── WorldModel.js       # Central knowledge graph
│   │   ├── BudgetManager.js    # Resource constraints
│   │   └── EpistemicLedger.js  # EQBSL tensor management
│   ├── cli/
│   │   └── commands/           # CLI command handlers
│   └── local-source-generator/
│       └── v2/
│           └── worldmodel/
│               └── evidence-graph.js  # Append-only event store
├── EQBSL-Primer.md             # Full EQBSL specification
└── workspaces/                 # Generated reconnaissance outputs
</code></span></span></span></span>

CLI 参考

复制代码
# Core commands
shannon run <target> [options]        # Full pentest pipeline
shannon generate <target> [options]   # Recon-only, builds world model

# Model introspection
shannon model show --workspace <dir>           # ASCII visualization
shannon model graph --workspace <dir>          # ASCII knowledge graph
shannon model export-html --workspace <dir>    # Interactive D3.js graph
shannon model why <claim_id> --workspace <dir> # Explain a claim's evidence

# Evidence commands
shannon evidence stats --workspace <dir>  # Evidence statistics

EQBSL实践

对于数学爱好者,请参阅EQBSL-Primer.md获取完整规范。

简而言之:

  1. 证据是向量值:每次观测有多个通道(正/负)。
  2. 观点来源于证据b = r/(r+s+K),,d = s/(r+s+K)``u = K/(r+s+K)
  3. 衰减是必然的:证据会随着时间推移而失去效力(可按通道配置)
  4. 传播是明确的:传递信任使用阻尼见证折扣
  5. 嵌入是确定性的:可从状态中可复现地导出的、可用于机器学习的特征

贡献

我们欢迎投稿,尤其欢迎以下人士投稿:

  • 发现确定性可疑
  • 贝叶斯先验是一个好的开始,但还不够。
  • 我认为安全工具应该解释其运行原因。
  • 在对抗性情境下,对认知谦逊有自己的看法

请参阅CONTRIBUTING.md获取相关指南。


路线图

v0.1 ✅(基础版)

  • 具有 EQBSL 张量的世界模型
  • 证据图(仅追加)
  • CLI 与generatemodel show/graph/export-html
  • 三种图表视图模式(拓扑、证据、来源)

v0.2 ✅(当前版本)

  • 包含代理编排的完整渗透测试流程
  • LLM 集成分析代理
  • 具有传递折扣的索赔传播
  • 端点验证的真实性验证
  • 新增 12 个 LSGv2 代理(漏洞利用、侦察、蓝队)
  • OWASP ASVS 合规性映射(14 章)
  • 增强型报告,包含 EBSL 置信度评分

v1.0(未来版本)

  • ZK 证据来源证明
  • 对抗性模拟模式
  • 与外部漏洞数据库集成
  • 基于浏览器的交互式报表仪表板

常问问题

问:这只是对现有工具的另一种封装吗?

答:不。它是一个认知框架,恰好用来协调各种工具。工具产生观察结果;我们创造知识------其中明确包含不确定性。

问:为什么使用 EQBSL 而不是简单的置信度评分?

答:因为"80% 的把握"混淆了两种截然不同的状态:"我有强有力的证据支持肯定观点"和"我有支持和反对观点的微弱证据"。EQBSL 将信念、怀疑和不确定性区分开来。这在做决策时至关重要。

问:为什么引用希钦斯的话?

答:因为渗透测试的核心在于质疑。我们会质疑系统管理员、开发人员和安全厂商的说法。我们的证据必须足够确凿,经得起交叉质询。