Skip to content

平台内置了哪些攻击工具 #295

Closed

Description

@xiatao

平台内置了哪些攻击工具?比如namp fscan dirsearch等有内置吗?没有的话如何让平台调用本机或者虚拟机kali中的工具呢?内置了哪些POC库,如何添加呢?

Activity

  1. Sycun commented on Sep 13, 2026

    @Sycun
    Contributor
     ## 1. 内置了哪些工具?
    
    先澄清一个概念:平台内置的是 **90 个工具定义(`tools/*.yaml`)**,属于「适配层」,**不打包任何工具二进制**。执行时由 `internal/security/executor.go` 直接把 `command` 字段交给 
    `exec.CommandContext`,也就是从系统 **PATH 解析**(`tools/README.md` 对该字段的说明:*需位于系统 PATH 或写入绝对路径*)。工具本身需要你自行安装。
    
    你点名的三个:
    
    | 工具 | 定义是否存在 | 默认状态 |
    |------|------|------|
    | `nmap` | ✅ | `enabled: true` |
    | `dirsearch` | ✅ | `enabled: true` |
    | `fscan` | ✅ | ⚠️  **`enabled: false`,默认关闭** |
    
    `fscan` 需要在 `tools/fscan.yaml` 里把 `enabled` 改成 `true` 才会注册给模型。同样默认关闭的还有 `gobuster`、`feroxbuster`、`zap`、`clair`、`pacu`、`lightx`,以及 fofa / shodan / quake / zoomeye / virustotal 
    等空间测绘类,共 12 个;完整清单见 `tools/README.md`。
    
    按类别大致覆盖:
    
    - **信息收集 / 子域**:amass、subfinder、katana、gau、dnsenum、fierce、waybackurls、paramspider
    - **端口 / 主机扫描**:nmap、masscan、rustscan、arp-scan、nbtscan、fscan
    - **Web 扫描**:dirsearch、ffuf、nikto、dalfox、xsser、x8、arjun、dotdotpwn、wpscan、jaeles、graphql-scanner、wafw00f、http-framework-test
    - **漏洞利用 / 域渗透**:sqlmap、metasploit、msfvenom、impacket、netexec、smbmap、rpcclient、enum4linux-ng、responder、hydra、john、hashcat、hashpump、bloodhound
    - **二进制 / PWN**:gdb、ghidra、radare2、angr、pwntools、ropgadget、ropper、one-gadget、pwninit、checksec、objdump、libc-database
    - **云原生 / 容器**:trivy、falco、kube-bench、kube-hunter、prowler、scout-suite、cloudmapper、checkov、terrascan
    - **取证 / 隐写**:binwalk、foremost、volatility3、steghide、zsteg、exiftool
    - **提权**:linpeas
    - **通用**:`exec`、`execute-python-script`、`install-python-package`、`query-execution-result`
    
    安装方式在 `README_CN.md`「安装安全工具(可选)」一节,给了 apt / brew 命令。
    
    需要特别说明:**平台不会自动安装工具,也没有调用前的可用性预检**。未安装的工具仍会出现在工具列表里,真正调用时才返回 `executable file not found in $PATH`,并被归类为 soft error 交给模型自行决策(换工具 / 
    调整参数 / 告知用户)。所以「工具列表里有」不等于「本机装了」。
    
    ## 2. 怎么调用本机或 Kali 虚拟机里的工具?                                                                                                                                                     
    
    ### 本机
    
    装上、保证在 PATH 里即可。如果要调用 PATH 之外的二进制,有两种写法:
    
    - `command` 直接写**绝对路径**
    - `command` 写解释器(`python3`、`/bin/bash`),把逻辑放进 `args` —— 仓库里 `metasploit.yaml`、`install-python-package.yaml` 就是这种写法,可以参考
    
    ### 新增自定义工具
    
    往 `tools/` 丢一个 YAML,然后调 `POST /api/config/apply`(或在 Web UI 点「应用」)热加载,**无需重启**(见 `internal/handler/config.go` 中 `ReloadSecurityToolsFromDir` 的调用处)。
    
    两个注意点:
    
    1. 目前**没有文件监听器**,光把文件放进去、不点「应用」是不会生效的
    2. `enabled` 是 Go bool 且没有默认值处理,**YAML 里漏写 `enabled: true` 会静默不注册**,这是最常见的踩坑点
    
    另外 `tools/` 是受保护的用户扩展目录,`upgrade.sh` 升级时带 `--exclude=tools/`,你的自定义工具不会被覆盖。
    
    ### Kali 虚拟机
    
    平台**没有 Docker 沙箱执行,也没有内置 SSH 客户端**(`go.mod` 中无 Docker SDK、无 `golang.org/x/crypto/ssh`),因此没有「指定远端主机跑工具」这种一等公民设施。可行的两条路:
    
    - **External MCP(推荐)**:支持 `stdio`(`command` + `args` + `env`)和 `http` / `sse`(`url` + `headers`)三类传输。在 Kali 里跑一个 MCP server,平台侧用 `http`/`sse` 配 URL 
    和鉴权头接入,这是官方文档里针对「远端或长期运行服务」的定位(`docs/zh-CN/mcp-federation.md`);也可以把 stdio 的 `command` 设成 `ssh` 自行拼装。`mcp-servers/` 下有两个参考实现,配置入口在「设置 → External 
    MCP」,同时支持 `/api/external-mcp` 运行时增删启停。
    - **`exec` 工具**:本质是 `sh -c <任意命令>`,宿主机配好到 Kali 的免密后可以直接 `ssh kali@vm nmap -sV <target>`。能用,但属于通用逃逸口,不是设计好的远端执行特性,注意 `exec.yaml` 里的风险提示。
    
    顺带提醒:`WebShell` 和 `C2` 两个模块是在**已被攻陷的目标**上执行命令的后渗透通道,不是用来驱动你自己的工具机的,别混用。
    
    ## 3. 内置了哪些 POC 库?怎么加自己的?
    
    **仓库不内置任何 POC / exploit 语料。** 唯一相关的 `internal/c2/payload_templates/` 是生成 C2 implant 的 Go 模板,属于 payload 而非漏洞 POC。
    
    POC 能力完全委托给上游工具自身的语料库,平台只做参数透传:
    
    | 工具 | 参数 | 映射 |
    |------|------|------|
    | `nuclei` | `template` / `tags` / `severity` | `-t` / `-tags` / `-s` |
    | `jaeles` | `signatures` | `-s` |
    | `fscan` | `pocpath` / `pocname` | `-pocpath` / `-pocname` |
    | `metasploit` / `msfvenom` | `module`(自由文本) | 依赖本机 Metasploit 模块树 |
    
    `nuclei` 不传 `-t` 时会用它自己的默认模板目录(`~/nuclei-templates`,由 nuclei 首次运行时下载),平台不代管。
    
    所以加自己的 POC 有三种做法:
    
    1. **用上面的路径参数指向自己的模板目录** —— 无需改代码;也可以直接在 YAML 里用 `default:` 或固定 `args:` 把默认路径写死,这样模型不用每次传
    2. **扩充自己的 Metasploit 模块树**,通过 `metasploit.yaml` 的 `module` 参数调用
    3. **写一个解释器型 YAML,把 POC 脚本内嵌进 `python3` / `bash`** —— 仓库里 `http-framework-test.yaml` 是完整先例,最接近「把自己的 POC 作为平台一等对象」的做法
    
    ### 关于 `knowledge_base/`
    
    它**不是 POC 代码库**,而是 Markdown 格式的技术 / 手法资料(当前 11 个示例文件,覆盖 SQL Injection 各数据库方言与 Prompt Injection),经切块 + embedding 存入独立的 
    `data/knowledge.db`,检索后作为上下文注入模型。**默认关闭**(`config.example.yaml` 中 `enabled: false`)。
    
    添加流程(详见 `docs/zh-CN/knowledge-base.md`):把 md 放进 `knowledge_base/`(建议按风险域分一级目录)→ Web 知识库页面「扫描目录」→「重建索引」→ 用搜索接口验证召回。这一步是**手动的**,不会自动收录。
    
    如果你要放的是方法论 / 打法类内容而非可执行 exploit,更适合放 `skills/`(见 `docs/zh-CN/skills-guide.md`)。
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions