Files
artex/README.zh-translation.md
T
dela 0335d572de
ci / go (push) Waiting to run
ci / go-db (agent) (push) Waiting to run
ci / go-db (config) (push) Waiting to run
ci / go-db (db) (push) Waiting to run
ci / go-db (evidence) (push) Waiting to run
ci / go-db (llmrec) (push) Waiting to run
ci / go-db (server) (push) Waiting to run
detections / detections (push) Waiting to run
web / web (push) Waiting to run
docs / links (push) Canceled after 0s
First Commit
2026-10-09 08:38:16 +08:00

407 lines
28 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div align="center">
# ARTEX 韩语版
**由 LLM 多智能体自主执行渗透测试的系统**(Go 后端 + Next.js 前端)
韩语 · [中文](README.zh.md) · [English](README.en.md)
[![ci](https://github.com/jiwoochris/artex-ko/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/jiwoochris/artex-ko/actions/workflows/ci.yml) [![detections](https://github.com/jiwoochris/artex-ko/actions/workflows/detections.yml/badge.svg?branch=main)](https://github.com/jiwoochris/artex-ko/actions/workflows/detections.yml) [![web](https://github.com/jiwoochris/artex-ko/actions/workflows/web.yml/badge.svg?branch=main)](https://github.com/jiwoochris/artex-ko/actions/workflows/web.yml) [![license: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
</div>
---
> ## 🚨 安全与滥用警告:请务必先阅读
>
> **本仓库仅面向获得授权的环境公开,用于培养防御与检测能力。**
>
> ARTEX 是一把极其强大的自主攻击工具,它几乎无需人工介入,就能自行完成从侦察到入侵、再到数据外带的整个攻击过程。相应地,滥用所造成的危害也极大。2026 年 10 月,韩国多家媒体报道称,调查当局发现原始 ARTEX 被用于针对韩国金融机构的个人信息泄露攻击的迹象,相关调查正在进行中。公开这个韩语版本的目的并非协助攻击,而是帮助防御方理解这类自主 AI 攻击的运作原理,并具备检测与阻断的能力。
>
> - **未经授权的使用本身就构成犯罪。** 除非目标是你自己所有、或已获得书面明确授权的对象,否则不要对任何系统执行扫描、探测或漏洞利用。在韩国,未经授权侵入信息通信网的行为违反《信息通信网法》,若涉及个人信息还会同时适用《个人信息保护法》。
> - **不要以真实服务或他人资产为目标。** 只在学习、研究以及你自己所有的本地隔离环境(如 OWASP Juice Shop、DVWA 这类故意做成存在漏洞的环境)中验证。
> - **请从防御的视角来阅读。** 本仓库同时整理自主 AI 攻击的检测特征与加固清单等防御/检测资料。→ **[自主 AI 攻击防御与检测指南](docs/defense-ko.md)**
>
> 如果你不同意本警告以及下面的 [使用限制与免责](#许可证与免责),请不要下载或使用本仓库。
---
> **本仓库是将中国开源项目 [Autumn-27/ARTEX](https://github.com/Autumn-27/ARTEX)(AGPL-3.0)本地化、以便韩国用户与团队直接使用的版本。** 为保留智能体的判断性能,内部推理提示词保持原文不翻译,只强制将面向用户的产出(检测结果、摘要、报告、对话回复)输出为韩语。下方"为什么做韩语版"一节说明了这一方针。
ARTEX 是一个由 LLM 操控的多个智能体**自行拆解目标、执行真实工具、并将发现的资产与漏洞不断累积到图中**,从而自主推进渗透测试过程的系统。它将 Next.js 前端内嵌到单个 Go 二进制中,数据存储于 PostgreSQL。
---
<!--
本标题中的破折号(—)为有意保留。仓库风格会在韩语行文中把破折号改为冒号,
但唯独这个标题例外。因为 GitHub 锚点 slug
(#️-먼저-읽어-주세요--사용-범위와-국내법-고지,破折号两侧的空格会变成双连字符 "--")
被以下五个地方引用:CODE_OF_CONDUCT.md · CONTRIBUTING.md · SECURITY.md ·
.github/PULL_REQUEST_TEMPLATE.md · .github/ISSUE_TEMPLATE/config.yml。
若把破折号改为冒号,锚点中的双连字符会变成单连字符,导致这五个链接全部失效。
若要修改标题,请同步修改这五处引用的锚点,并确认 `python3 -I scripts/check-doc-links.py` 保持 EXIT 0。
-->
## ⚠️ 请先阅读 — 使用范围与韩国法律告知
ARTEX **只能用于你自己所有、或已获得书面明确授权的对象**。超出授权范围的扫描、探测、漏洞利用本身就可能违法。
- 在韩国,未经授权侵入他人信息通信网或造成故障的行为,违反**《信息通信网利用促进及信息保护等相关法律》**。
- 渗透测试过程中收集、暴露的个人信息受**《个人信息保护法》**约束。即便有授权,也必须谨慎处理个人信息的查阅、保管与销毁。
- 请用于**学习、研究、本地隔离环境验证**的目的。在针对线上外部系统之前,必须取得书面授权并就范围与时间窗口达成一致。
详细的许可证、使用限制与免责条款见下方 [许可证与免责](#许可证与免责) 一节。仅使用本工具即视为用户已同意其条件。
---
## 为什么做韩语版
原始 ARTEX 的提示词、UI、文档全部为中文,韩国用户阅读结果并与团队分享颇为麻烦。本韩语版的目标如下。
- **产出韩语化**:强制智能体向人输出的检测结果、事实摘要、最终报告、对话回复使用韩语输出。命令、载荷、代码、URL、日志原文因为分析需要,保持原样。
- **性能保留**:决定智能体判断的内部推理提示词(行为指令正文)不翻译。保持以原文基准测试过的行为,仅更改输出语言,避免翻译带来的质量下降。
- **韩国法律告知**:以韩语明确提供《信息通信网法》《个人信息保护法》告知以及"仅在授权范围内使用"的警告。
- **韩国技术栈适配**:LLM 提供方不仅可换用前沿模型,还可换成 OpenAI 兼容端点(国产/开源模型)。参见下方 [配置](#配置)。
> 本地化的边界与设计方针在本仓库的工作文档中有更详细的说明。为便于对照上游仓库的变更,原始中文文档以 `README.zh.md` 保留。
---
## 界面预览
以下三个界面是已完成韩语化的实际 UI。均为从本地隔离沙箱导出的演示数据,目标全部是虚构的 `acme.com` 与私有网段。
<p align="center">
<img src="screenshots/ko/dashboard.png" width="900" alt="仪表盘:整体概览界面"><br>
<sub><b>仪表盘</b>:在一屏中查看活动任务、已确认漏洞、资产节点、LLM token 消耗与活动流。</sub><br>
<sub>此仪表盘截图是在本地化标签之前导出的演示画面,因此"LLM Token 消耗"卡片的数据源名称仍显示为代码标识符 <code>llm_usage</code>。当前构建在此处显示新版本「计量账本」/旧版本「活动统计」。</sub>
</p>
<p align="center">
<img src="screenshots/ko/findings.png" width="900" alt="漏洞列表界面"><br>
<sub><b>漏洞</b>:按严重程度、状态、资产、所属任务汇总检测结果,并可导出 CSV。</sub><br>
<sub>漏洞<b>标题</b>由模型生成,可能随目标应用与技术术语夹杂英文(参见[模型选择与输出语言](#模型选择与输出语言))。标题下方的描述以及整个界面均为韩语。</sub>
</p>
<p align="center">
<img src="screenshots/ko/chat.png" width="900" alt="人工介入对话界面"><br>
<sub><b>对话</b>:在自主执行过程中人工介入给予提示,智能体以韩语总结攻击链。</sub>
</p>
原始(中文 UI)的完整界面可在 [`README.zh.md`](README.zh.md#截图预览) 查看。
---
## 快速开始(Docker Compose)
> **前置条件:** Docker 与 Docker Compose。数据库为 **PostgreSQL**,由 compose 一并启动。探测需要 **LLM**(`ANTHROPIC_API_KEY` 或 `OPENAI_API_KEY`,也可在 UI 中设置)。
> **⚠️ 目前此 compose 拉取的镜像是上游(原始)中文构建。** `docker-compose.yml` 中的 `artex` 服务拉取的是原作者上传到 Docker Hub 的 `autumn27/artex` 镜像。该镜像为**中文 UI 与中文输出**,**尚不包含**本仓库新增的韩语化(韩语 UI、韩语报告、`langDirective`)。要查看韩语版界面与输出,目前请使用下方[「其他安装方式」](#其他安装方式)中的**从源码编译单二进制**路径自行构建。韩语版 Docker 镜像的发布正在筹备中。
```bash
git clone https://github.com/jiwoochris/artex-ko.git
cd artex-ko
cp .env.example .env # 设置 POSTGRES_PASSWORD,ANTHROPIC_API_KEY 可选
docker compose up -d # 一并启动 artex 镜像 + postgres
# → 访问 http://localhost:8787(首次进入时在 /setup 设置管理员密码)
```
上述上游镜像内置了常用工具(ripgrep、curl、vim、npm、nmap 等)。`./skills` 与 `./data` 以 bind mount 方式保留在宿主机上,即使重建容器也会保留。
### 其他安装方式
原始仓库提供安装脚本(`./install.sh`)、预编译二进制(Releases)、源码单二进制编译等多种方式。命令与步骤整理在 [`README.zh.md`](README.zh.md#安装) 的"安装"一节,下面仅摘录要点。
- **安装脚本:** 运行 `./install.sh` 会检测并安装 Docker,然后让你选择"① 全部 Docker"或"② 本地编译运行"。但默认的"① 全部 Docker"与上述快速开始一样,会拉取**上游中文镜像**(`autumn27/artex`),因此要查看韩语版界面与输出,请选择"② 本地编译运行",或按下述**从源码编译单二进制**路径构建。脚本在完成"① 全部 Docker"启动后也会输出同样的提示。
- **从源码编译单二进制:**
```bash
cd web && npm ci && npm run build:static && cd .. # 1) 前端静态构建
rm -rf server/webui/dist && mkdir -p server/webui/dist && cp -a web/out/. server/webui/dist/ # 2) 同步到内嵌目录(防止重建时嵌套)
CGO_ENABLED=0 go build -tags embedui -o artex ./cmd/artex # 3) 编译并内嵌前端
./start.sh # → http://localhost:8787
```
> 第 1) 步的 `npm ci` 会一并安装构建所需的 devDependencies(如 `@tailwindcss/postcss`)。若 shell 中设置了 `NODE_ENV=production`,`npm ci` 会跳过 devDependencies,导致构建以 `Error: Cannot find module '@tailwindcss/postcss'` 失败,此时请用 `npm ci --include=dev` 下载。
> 运行时请不要直接执行 `./artex`,而要用 `start.sh`(Windows 为 `start.bat`)。该脚本是一个根据退出码重新拉起程序的守护进程,UI 的"一键更新"也由该脚本处理。
---
## 配置
**数据库**(`config.json`,或通过环境变量 `ARTEX_PG_DSN` 覆盖):
```json
{
"database": {
"host": "127.0.0.1", "port": 5432,
"user": "artex", "password": "yourpass",
"dbname": "artex", "sslmode": "disable"
}
}
```
**LLM:** `export ANTHROPIC_API_KEY=sk-...`(或 `OPENAI_API_KEY`),或在 UI 的"LLM 设置"页面输入。可选环境变量还有 `ARTEX_LLM_PROVIDER` / `ARTEX_LLM_MODEL` / `ARTEX_LLM_BASE_URL` / `ARTEX_LLM_PROXY`。若要使用国产/开源模型,请指定 OpenAI 兼容的 `ARTEX_LLM_BASE_URL`。
**并发度:** 每个任务运行的 worker 智能体数量在"系统设置"中调整(默认值 3)。
**常用参数:** `./start.sh -addr :8787 -proxy :8788` 中,`-addr` 开放前端与 API,`-proxy` 为流量记录代理端口。
### 模型选择与输出语言
产出的韩语化并非硬编码上限,而是**通过提示词指令(`agent/prompt.go` 中的 `langDirective()`)诱导**。因此输出保持韩语的程度取决于模型的能力、角色与上下文。
- **建议使用能力较强的前沿模型。** 在本地隔离沙箱中仅应用生产指令的简短验证运行结果显示,默认模型 `claude-opus-4-8` 在 planner、worker、reporter 产出以及持有权限的沙箱计划请求这全部四个角色中,都让面向用户的输出保持韩语,且没有被拒绝。`gpt-4o` 在同一场景下也保持了韩语。相反,廉价/小型模型(如 `gpt-4o-mini`)的报告回退成了原文(中文)。输出语言质量直接取决于模型能力,因此若环境需要人工阅读报告,请使用能力较强的模型。
- **角色/上下文仍可能导致漂移。** 相比语言本身,偏差更常出现在角色与输出格式上。尤其是在 worker 的最终一句话总结这类简短产出中,模型可能直接暴露英文思考过程,或 `report_finding` 的结构化字段随目标应用与技术术语偏向英文。在过往运行中,`gpt-4o` 的 planner 情境摘要在部分轮次也曾回退为中文。在任务指令中明确写"用韩语撰写"可提高忠实度。
- **对推理型(reasoning)模型请给足 `max_tokens`。** 单独使用思考通道的推理型模型,若响应 token 上限过小,会把预算耗尽在内部推理上,导致面向用户的最终回答为空。此时丢失的不是语言而是回答本身,因此请把该 LLM profile 的 `max_tokens` 设置得足够大。
> **OpenAI 兼容路径的 token 上限陷阱。** 像 `gpt-4o` 这类 OpenAI 系列模型的响应 token 上限为 16,384。但 OpenAI 兼容请求默认会携带更大的输出上限(32,768),若原样保留,所有调用都会以 `400 (max_tokens is too large)` 失败。此时请**在 LLM 设置中把该 profile 的 `max_tokens` 指定为 16,384 或更小**。Anthropic 系列(默认模型 `claude-opus-4-8` 等)允许 32,768,不会踩到这个陷阱。
### 反向代理部署(仅开放 HTTPS / 443)
前端与 API/SSE 都由同一后端端口(默认 `:8787`)提供,实时活动流默认以**同源(same-origin)**方式连接。因此无需单独设置 `NEXT_PUBLIC_SSE_BASE`,只需对公网仅开放 443、把 8787 留在内网即可。
SSE 作为长连接持续推送事件,因此反向代理中**必须关闭缓冲**。若不关闭,浏览器虽然能连上,但收不到事件(活动流会一直显示加载中)。Nginx 配置示例见 [`README.zh.md`](README.zh.md#反向代理部署https--只开放-443)。
---
## 系统架构
ARTEX 是一个**由 LLM 多智能体驱动的自主渗透系统**。使用单个 Go 后端(内嵌 Next.js 前端)加 PostgreSQL,智能体功能由 [`norma`](https://github.com/Autumn-27/norma) SDK 提供。核心是**双图结构**,以及围绕它的两种自主性装置(worker 之间的过程级信息交换、planner 的多轮共享 todolist)。
### 整体分层
```mermaid
flowchart TB
subgraph FE["前端 Next.js (go:embed 单二进制内嵌)"]
UI["仪表盘 · 任务 · 资产 · 覆盖图 · 流量 · 工作区 · 系统设置"]
end
subgraph SRV["server (Go net/http)"]
API["REST /api/* JWT 认证 SSE"]
ENG["engine 调度循环"]
MGR["Manager 任务/引擎/store 生命周期"]
end
subgraph AG["agent (norma SDK)"]
GO["goals 目标分解 + 范围提取"]
PL["planner 规划者(唯一的意图生成者)"]
WK["worker 执行者 ×N"]
MA["mainagent 人工介入"]
end
subgraph DB["PostgreSQL"]
AGRAPH["资产图 assets / companies / task_scope"]
EGRAPH["探索图 exploration_nodes / anchors / activity"]
end
subgraph SUB["支持子系统"]
PROXY["流量记录代理 MITM + CA 记录"]
GUARD["guard / intercept 工具审批门"]
ENR["enrich DNS / HTTP 异步增强"]
EXT["MCP · skills · memory · report"]
end
UI -->|HTTP| API
API --> MGR --> ENG
ENG --> PL
ENG --> WK
API --> MA
API --> GO
PL --> DB
WK --> DB
MA --> DB
GO --> DB
WK -->|"Bash / HTTP 全过程记录"| PROXY
WK --> GUARD
WK --> ENR
PL -.-> EXT
WK -.-> EXT
MA -.-> EXT
```
- **前端**:把 Next.js 静态构建通过 `go:embed` 内嵌到单二进制中。可视化任务、资产、探索链、覆盖图,并提供人工介入的对话。
- **server**:负责 `net/http` 路由、JWT 认证与 SSE,`Manager` 管理任务、引擎、DB store 的生命周期。
- **engine**:每个任务运行一个 `plannerLoop` 与 N 个 worker goroutine,处理意图分配与超时、暂停、排空。
- **agent**:分为 goals / planner / worker / mainagent,`ToolSet` 把双图暴露为 LLM 工具。
- **db**:把双图存储到 PostgreSQL(pgx),通过 `go:embed` 引入的 schema 在每次启动时幂等地建表。
- **支持**:记录型 MITM 代理、审批门、异步增强、MCP·技能·内存·报告。
### 双图结构:探索图 + 资产图
系统把"目标是什么"与"测试到哪一步"拆分为两个相互独立、又通过锚点(anchor)相连的图。
- **资产图(Asset Graph,全局共享)**:跨任务共享的资产真相存储。节点为 `root_domain / subdomain / ip / service / app / endpoint`,归属于公司。域名→子域名→服务→端点的父子关系与去重键全部由程序计算,智能体只提交原始信息。
- **探索图(Exploration Graph,每个任务独立)**:一个任务的"思考与进展"过程。节点为 `goal(目标) / intent(意图) / fact(事实) / finding(漏洞) / hint(提示)`,通过 `spawns / derived_from / yields / proves` 等边构成血缘链。
- **两个图通过锚点相连。** `exploration_anchors(node_id, asset_id)` 把意图、事实、漏洞固定到具体资产上。由此可以从探索方向双向查询:它攻击了哪个资产;反过来,某个资产在本任务中以何种意图被测试、产出了什么事实。
```mermaid
flowchart LR
subgraph EG["探索图 (每任务独立 · 进展链)"]
direction TB
G["goal 目标"]
I1["intent 意图 A"]
F1["fact 事实"]
I2["intent 意图 B"]
FD["finding 漏洞"]
G -->|spawns| I1
I1 -->|yields| F1
F1 -->|derived_from| I2
I2 -->|proves| FD
end
subgraph AG["资产图 (全局共享 · 真相存储)"]
direction TB
RD["root_domain"]
SD["subdomain"]
SV["service"]
EP["endpoint"]
RD --> SD --> SV --> EP
end
I1 -. anchor .-> SD
F1 -. anchor .-> SV
I2 -. anchor .-> EP
FD -. anchor .-> EP
```
> 分工:**planner** 读取探索图的状况判定目标,仅在存在尚未覆盖的新方向时把**意图**送入 frontier。**worker** 领取**一个意图**,用真实工具执行,把新资产、事实、漏洞写入两个图后停止。资产图是共享事实,探索图是每个任务的进展链。
### 引擎与意图生命周期(一次探索的闭环)
引擎是一个**事件驱动**的闭环。图发生变化就唤醒 planner,planner 发出意图后 worker 领取该意图执行并写入结果,该写入又触发下一轮。这个循环一直持续到目标被证明(`prove_goal`)为止。
```mermaid
sequenceDiagram
autonumber
participant EV as 图变更 debounce
participant P as planner
participant FR as frontier 意图队列
participant W as worker
participant PX as 记录代理
participant DB as 双图 + activity
EV-->>P: 唤醒
P->>DB: 读取状况(graph_overview 预取 + coverage/scope)
P->>FR: 分配意图 0..N 个(含 asset_ids)
Note over P,FR: 大多数唤醒分配 0 个 — 没有新方向则结束
W->>FR: 用 claimNext 领取一个意图
W->>DB: 取意图的 asset_ids 原始资产作为初始信息
W->>PX: 执行真实工具(Kali / Bash / HTTP)
PX-->>W: 响应(全过程记录 + CA 验证)
W->>DB: fact / asset / finding + 各步骤 activity 记录
DB-->>EV: 图变更
EV-->>P: 再次唤醒(闭环)
```
### worker 之间的过程级信息交换
在深度探索中,有价值的观察(某个错误、某段响应片段、隐藏参数)往往产生于某个 worker 的**执行过程**,却未被记录为正式 fact。为避免重复劳动、让后续 worker 能站在先前观察之上,worker 具备**检索其他 work 过程**的能力。
- `search_all_worker_traces(q)`:以关键词检索同一任务下其他 work 的执行过程(自动排除自身意图的步骤)。命中项会附带 `intent_id`。
- `list_worker_traces` / `get_worker_trace(intent_id, step_ids=[…])`:先查看有哪些 work 运行过,再拉取某个 work 的特定几步完整内容以交换细节。
这样,即便探索图中尚无对应的 fact,后续 worker 也能复用他人过程中的观察。信息在 worker 之间以"执行过程"为单位流动,但边界保持不变(每个 worker 仍然只执行自己领取的那一个意图)。
```mermaid
flowchart LR
WA["worker A (意图 #12)"] -->|"逐步 activity"| ACT[("探索图 · activity 过程库")]
WB["worker B (意图 #34)"] -->|"逐步 activity"| ACT
WC["worker C (意图 #56)"] ==>|"① search_all_worker_traces(q)"| ACT
ACT ==>|"② 命中 A/B 的步骤 (排除自身)"| WC
WC ==>|"③ get_worker_trace(intent_id, step_ids)"| ACT
ACT ==>|"④ 返回完整过程内容"| WC
```
### planner 的多轮共享 todolist → 稳定的攻击链
真实的攻击链往往是前后依赖的多步骤序列(例如:发现注入点 → 获取凭证 → 横向移动 → 权限提升),若一次性并行下发就会纠缠不清。因此 planner 拥有一个**按任务保留、跨唤醒共享的计划待办列表(todolist)**。
- planner 是事件驱动的,图每次变化都会唤醒,但**每次唤醒都是一个新的会话**。共享 todolist 把串行攻击链**只记录一次**,之后跨多轮**按依赖关系一步步**分配意图(不会在单轮里把整条链一次性铺开)。
- 每轮只给"前驱步骤已完成、且该步骤所依赖的 fact 已存在"的下一步分配意图,并根据进展更新列表(把已由 fact 满足的步骤标记为完成)。
```mermaid
flowchart TB
subgraph TODO["共享 todolist (按任务保留 · 跨唤醒常驻)"]
direction LR
T1["1 发现注入点 [完成]"]
T2["2 获取凭证 [进行中]"]
T3["3 横向移动 [等待前驱]"]
T4["4 权限提升 [等待前驱]"]
T1 -. 前驱满足 .-> T2 -.-> T3 -.-> T4
end
R1["第 1 轮唤醒 分配意图①"] --> T1
R2["第 2 轮 (①产出 fact) 分配意图②"] --> T2
R3["第 3 轮 (②产出 fact) 分配意图③"] --> T3
```
由此,攻击链在"事件驱动 + 无状态会话"的环境中也能稳定推进,不重复、不乱序。这正是 ARTEX 能自主完整走完多步骤攻击链的关键。
---
## 防御与检测资料
本仓库的目标是帮助**防御方**理解自主 AI 攻击的运作原理,培养检测与阻断能力。我们把上文中 ARTEX 的行为从**防御者视角**反转过来,用韩语整理出应观测什么、应在哪里收紧的指南。
- **[自主 AI 攻击防御与检测指南 (docs/defense-ko.md)](docs/defense-ko.md)**
- 自主 AI 攻击与传统扫描器的差异、为何难以检测、以及尽管如此又该如何检测
- 防御者可观测的指纹(IoC·行为特征):分为目标视角与取证视角
- 攻击者瞄准的入口点与加固(辅助认证·本人确认、API 授权、凭证填充、会话·密钥管理)
- WAF·SIEM·认证日志检测规则(伪规则)、加固清单、事件响应摘要
- 韩国官方侵害指标·安全建议渠道(KISA·金融安全院·个人信息保护委员会)与韩国法律下的报告义务
- **[Defense & Detection Guide(英文版 · docs/defense-en.md)](docs/defense-en.md)**:可与海外团队及协作者共享的英文同内容版本。
- **[可直接部署的检测规则 (detections/README.ko.md)](detections/README.ko.md)**:把上述指南中的指纹检测转化为可直接使用的规则。主机·日志·SIEM 层使用 [Sigma](https://sigmahq.io) 规则(原子·关联,可用 `sigma convert` 转换为 Splunk·Elasticsearch 等),网络层使用 [Suricata](https://suricata.io) 规则,针对 enrich 探针与 norma SDK WebFetch 的 User-Agent。
- **[ATT&CK 覆盖层 (detections/attack/README.ko.md)](detections/attack/README.ko.md)**:把上述规则针对的 MITRE ATT&CK 技术整理为 [Navigator](https://mitre-attack.github.io/attack-navigator/) 层(JSON),一眼看清哪些攻击行为会被哪些规则命中。技术仅取自规则的 `attack.*` 标签,没有凭推测加入的条目。
- **[机器可读的侵害指标清单 (detections/indicators/README.ko.md)](detections/indicators/README.ko.md)**:把 ARTEX 实际导出的独有指纹汇集成一个 CSV 文件(`artex_indicators.csv`),并以 MISP 事件(`artex_indicators.misp.json`)形式提供相同指标。可直接导入 SIEM 查询表或威胁情报平台(接收 MISP 格式的 MISP·C-TAS·FSI 等)的侵害指标(IoC)。所有值都是在本仓库源码中确认过的字符串,每一行都标注了来源文件与检测规则。
- **[主机分类(triage)脚本 (detections/triage/README.ko.md)](detections/triage/README.ko.md)**:面向没有 SIEM 或网络传感器、站在一台可疑主机 shell 前的响应人员的只读脚本 [`artex_host_triage.py`](detections/triage/artex_host_triage.py)。它检查与上述规则相同的指纹,并额外直接在主机上确认三个无法从日志或网络观测到、故侵害指标 CSV 有意未配 Sigma 规则的主机·DB 指标(服务器监听端口、记录代理端点、PostgreSQL 探索 schema)。无需额外安装,仅用标准库即可运行;每项发现都只是与对应侵害指标行具有相同局限的分类线索,本身不构成定性依据。
- 上述规则、层、指标以及主机分类脚本的自测,全部通过仓库测试([detections/tests/README.ko.md](detections/tests/README.ko.md))重跑验证。遵循"无法运行的检测规则只是主张"的原则。
> 这些资料会持续补充。要补充的检测规则·加固条目请以 issue 提出;直接提交规则时,请遵循[贡献指南的「检测规则·检测测试贡献」一节](CONTRIBUTING.md#탐지-규칙탐지-테스트-기여)所整理的契约(贴合可观测事实、说明局限、通过静态校验、附带可复现测试)。
---
## 开发
本地开发与测试:
```bash
./dev.sh # 后端(:8787) + 流量代理(:8788) + 前端 next dev(:5173) → http://localhost:5173
```
- 后端:`go run ./cmd/artex`(不带 `-tags embedui` 则不内嵌前端)
- 前端:`cd web && npm run dev`(将 `/api` 代理到后端,热重载)
- 测试:`go test ./...`
- Mock 预览(无需后端):`cd web && NEXT_PUBLIC_MOCK=1 npm run dev`
其他开发项(手动漏洞复验等)请参考 [`README.zh.md`](README.zh.md#开发) 的"开发"一节。
本韩语版对上游 ARTEX 所加的变更整理在 [变更历史(CHANGELOG.md)](CHANGELOG.md)。
---
## 许可证与免责
### 开源许可证
本项目以 **GNU Affero General Public License v3.0(AGPL-3.0)** 发布。完整条款见仓库根目录的 [LICENSE](LICENSE) 文件。
任何人都可自由使用、修改、分发,但**衍生作品也必须同样以 AGPL-3.0 公开。** 特别是,若你修改本项目并**通过网络(例如作为在线服务)提供给用户,则必须向这些用户公开对应的完整源代码。** 本韩语版同样保留 AGPL-3.0。
> ⚠️ **重要:** 开源许可证本身并不限制软件的用途。下方的"使用限制"与"免责"是原作者对用户额外要求的约定与严厉告知,请务必遵守。
### 使用限制
- 本工具请用于**阅读源代码、学习与研究**的目的,以及在**本地隔离环境中验证技术原理**的目的。
- 除非目标是你自己所有、或**已获得书面明确授权**的对象,否则不要对任何网站、在线服务、相连系统执行扫描、探测、漏洞利用、攻击。
- 严禁用于非法入侵、数据窃取、拒绝服务(DoS)以及其他破坏性、犯罪性活动。
- 必须遵守用户所在国家/地区的网络安全、数据保护、计算机犯罪相关法规(韩国如《信息通信网法》《个人信息保护法》等)。
### 免责
本项目按"原样(AS IS)"提供,不作任何明示或默示的担保。原作者与贡献者对因使用本工具(无论使用方式是否恰当)而产生的任何直接、间接损害、数据丢失、系统损坏、法律纠纷概不负责。**下载、安装或使用本项目即视为已阅读、理解并同意上述全部条件。**
**一切法律责任与后果由用户本人承担。**
---
## 原始项目
- 原始仓库:[Autumn-27/ARTEX](https://github.com/Autumn-27/ARTEX)
- 原始 README(中文):[README.zh.md](README.zh.md)
- 原始在线演示(中文 UI):[https://artex-demo.vercel.app/](https://artex-demo.vercel.app/)
- 智能体 SDK:[Autumn-27/norma](https://github.com/Autumn-27/norma)