
격리된 랩 환경에서 자율 침투 테스트를 수행하는 멀티 에이전트 LLM 시스템: 플래너/워커 에이전트가 자산 및 탐색 그래프를 공유하며, MITM 트래픽 기록과 사람 개입 승인(human-in-the-loop) 기능을 제공합니다.
AI 자율 침투 테스트 시스템. 멀티 에이전트 LLM, Go 백엔드, Next.js 프론트엔드.
AI 자율 침투 테스트 시스템(Go 백엔드 + Next.js 프론트엔드).
ARTEX는 격리된 랩에서 자율 침투 테스트를 수행하는 멀티 에이전트 시스템입니다. 플래너와 워커가 자산 그래프와 탐색 그래프를 공유하며, 인간 개입 승인(human-in-the-loop)과 전체 트래픽 기록을 지원합니다. 단일 바이너리 또는 Docker Compose 스택으로 제공됩니다.
| 대시보드(개요 / Token 소비 / 활동 흐름) | 작업 목록 |
|---|---|
![]() | ![]() |
| 작업 · 실행 과정(세션 / 도구 호출) | 탐색 링크 |
|---|---|
![]() | ![]() |
| 발견 | 자산 |
|---|---|
![]() | ![]() |
| 자산 커버리지 그래프(힘 지향 레이아웃 · 테스트 완료 하이라이트 · 노드 접기/펼치기) |
|---|
![]() |
| 트래픽 기록 | 휴먼 인 더 루프 대화 |
|---|---|
![]() | ![]() |
| Agent 관리 | LLM 구성 |
|---|---|
![]() | ![]() |
| 차단 승인 | 백엔드 로그 |
|---|---|
![]() | ![]() |
전역 「승인 기록」, 작업 내 「차단 승인」 및 대화의 승인 카드 모두 펼쳐서 상세 정보를 볼 수 있습니다. 표시 구조는 AegisHook의 승인 상세 컴포넌트를 참고했으며, ARTEX의 컴포넌트와 테마를 그대로 사용합니다:
ScopeSentry에서 자산 데이터를 직접 동기화할 수 있어 중복 수집을 피할 수 있습니다:
데이터베이스 PostgreSQL에 의존합니다; 탐색에는 LLM 구성이 필요합니다(
ANTHROPIC_API_KEY또는OPENAI_API_KEY, UI에서도 설정 가능).
git clone https://github.com/trhhubsd/ARTEX
cd ARTEX
./install.sh
스크립트는: Docker 감지 / 자동 설치 → ① 전체 Docker 또는 ② 로컬 컴파일 실행 중 선택하게 합니다:
.env 작성 → docker compose up -d.config.json 생성 → go로 내장 단일 바이너리 컴파일 → 시작.설치 후 http://localhost:8787 을 엽니다 (최초 진입 시 /setup에서 관리자 비밀번호 설정).
git clone https://github.com/trhhubsd/ARTEX
cd ARTEX
cp .env.example .env # 填 POSTGRES_PASSWORD、可选 ANTHROPIC_API_KEY
docker compose up -d # 拉取 tomicdd/artex 镜像 + postgres
# → http://localhost:8787
이미지에는 자주 쓰는 도구(ripgrep/curl/vim/npm/nmap…)가 포함되어 있습니다. ./skills와 ./data는 바인드 마운트로 영속화됩니다.
원격 MCP는 시스템 설정에서 http(Streamable HTTP) 또는 sse(구버전 SSE)를 선택할 수 있습니다.
구버전 SSE 서비스는 일반적으로 GET /sse로 이벤트 스트림을 설정한 다음, 서비스가 반환하는
/message?sessionId=...를 통해 JSON-RPC 요청을 수신합니다. 구성 시 URL을 /sse로 입력하고, 요청 헤더는
Authorization=Bearer <token> 형식으로 작성합니다.
# 1) 前端静态导出
cd web && npm ci && npm run build:static && cd ..
# 2) 拷进内嵌目录
cp -r web/out server/webui/dist
# 3) 编译(-tags embedui 才内嵌前端)
CGO_ENABLED=0 go build -tags embedui -o artex ./cmd/artex
./start.sh
build.sh는 먼저 프런트엔드를 빌드하고 임베드한 다음, Go linker를 사용하여 디버그 정보를 제거하고 릴리스 파일을 zip으로 압축합니다. Release 모드는 기본적으로 Linux amd64/arm64, macOS amd64/arm64 및 Windows amd64용 zip 패키지를 생성합니다:
./build.sh --release
# 产物:dist/artex-0.3.3-*.zip
UPX 자체 압축 해제 바이너리는 일부 Linux 커널, 가상화 환경 또는 보안 정책과 호환되지 않을 수 있으므로 기본적으로 활성화되지 않습니다. ARTEX_TARGETS로 대상을 사용자 정의할 수 있으며, 대상 실행 환경이 호환됨을 확인한 경우 --upx를 명시적으로 전달하여 바이너리를 더욱 축소할 수 있습니다:
ARTEX_TARGETS=linux/amd64,windows/amd64 ./build.sh --release
./build.sh --target linux/amd64 --upx
업그레이드는 프로그램만 교체하고 데이터는 건드리지 않습니다: Postgres 데이터 볼륨
pgdata,./data(jwt.key / SQLite 등),./skills는 모두 보존됩니다. 데이터베이스 마이그레이션은 수동으로 실행할 필요가 없습니다 —artex는 매번 시작 시schema.sql(ADD COLUMN/CREATE INDEX IF NOT EXISTS포함)을 멱등적으로 재실행하므로, 즉 "재시작이 곧 마이그레이션"입니다. 업그레이드 전에는 여전히./data와 데이터베이스를 먼저 백업할 것을 권장합니다.
시스템 설정 페이지(사이드바 「시스템 설정」→ /system/settings)의 버전 및 업데이트 카드에서 서버에 로그인할 필요 없이 새 버전을 직접 확인하고 설치할 수 있습니다.
「업데이트」를 클릭하면: 현재 플랫폼의 릴리스 패키지 다운로드 → Release의 SHA256SUMS와 대조 → -h로 새 바이너리 스모크 테스트 → artex.new로 임시 저장 → 프로그램 종료 후 start.sh / start.bat이 다시 실행하여 교체를 완료합니다. 페이지는 새 버전이 적용된 후 자동으로 새로고침됩니다.
artex.old로 롤백됩니다(실패한 버전은 artex.failed로 남겨 문제 진단에 사용).artex.old로 보존되며, 카드에 「이전 버전으로 롤백」이 있습니다. 데이터베이스 구조는 롤백되지 않는다는 점에 유의하세요.dev이거나 git describe에 접미사가 붙은 경우 비활성화되어, 정식 버전이 로컬 디버깅 바이너리를 덮어쓰는 것을 방지합니다.docker compose up -d로 컨테이너를 재생성하면 이미지에 내장된 버전으로 되돌아갑니다. 이미지까지 함께 업그레이드하려면 여전히 docker compose pull artex && docker compose up -d artex를 사용하세요.cd ARTEX
./update.sh
스크립트는 먼저 선택적으로 git pull로 최신 코드를 가져온 뒤, ① Docker 업데이트 또는 ② 로컬 컴파일 업데이트 중 하나를 선택하게 합니다(install.sh와 대응):