LLM 멀티 에이전트 자율 침투 테스트 플랫폼으로, 플래너/워커 에이전트, 자산 및 탐색 그래프, MITM 트래픽 기록, 취약점 재테스트 기능을 제공합니다.
AI 자율 침투 테스트 시스템 (Go 백엔드 + Next.js 프론트엔드)
Autumn-27의 ARTEX 포크 · 중국어 원본의 영어 번역 · AGPL-3.0에 따라 공개 유지
| 대시보드 (개요 / 토큰 사용량 / 활동 스트림) | 작업 목록 |
|---|---|
![]() | ![]() |
| 작업 · 실행 (세션 / 도구 호출) | 탐색 그래프 |
|---|---|
![]() | ![]() |
| 발견 사항 | 자산 |
|---|---|
![]() | ![]() |
| 자산 커버리지 그래프 (힘 기반 레이아웃 · 테스트된 항목 강조 · 노드 접기/펼치기) |
|---|
![]() |
| 트래픽 기록 | 휴먼 인 더 루프 채팅 |
|---|---|
![]() | ![]() |
| 에이전트 관리 | LLM 구성 |
|---|---|
![]() | ![]() |
| 차단 승인 | 백엔드 로그 |
|---|---|
![]() | ![]() |
전역 "승인 기록", 작업 내 "차단 승인", 그리고 대화의 승인 카드 모두 세부 정보를 확장하여 볼 수 있습니다. 표시 구조는 AegisHook 승인 세부 정보 컴포넌트를 참조하며, ARTEX의 컴포넌트와 테마를 재사용합니다:
번들로 제공되는 브라우저 확장 프로그램(extension/)은 사용자의 브라우징을 에이전트가 볼 수 있는 증거로 전환합니다: 인증된 대상에 한 번 로그인하면(캡차, 이메일 OTP, 2FA 포함) 캡처된 요청/응답이 프록시로 기록된 트래픽처럼 ARTEX의 트래픽 저장소에 저장되어 검색하고 발견 사항에 바인딩할 수 있습니다:
extension/에서 압축 해제된 확장 프로그램을 로드합니다 (Chrome/Edge, 개발자 모드 → 압축 해제된 확장 프로그램 로드);POST /api/traffic/ingest(인증됨)로 일괄 전송됩니다. 바이너리 본문(이미지, 폰트)은 건너뛰고, 본문은 256 KiB에서 잘리며, 배치는 최대 50개 항목으로 제한됩니다;중복 수집을 피하기 위해 ScopeSentry에서 자산 데이터를 직접 동기화합니다:
PostgreSQL 데이터베이스가 필요합니다; 탐색에는 LLM이 필요합니다 (
ANTHROPIC_API_KEY또는OPENAI_API_KEY, UI에서도 구성 가능).
git clone https://github.com/BaaRai/ARTEX.git
cd ARTEX
./install.sh
스크립트는 다음을 수행합니다: Docker 감지 / 자동 설치 → 그런 다음 ① 올-Docker 또는 ② 로컬 빌드 및 실행 중에서 선택할 수 있습니다:
.env 자동 작성 → docker compose up -d.config.json 생성 → go가 임베디드 단일 바이너리를 빌드 → 시작.설치가 완료되면 **http://localhost:8787**을 엽니다(처음 접속할 때 /setup에서 관리자 비밀번호를 설정합니다).
git clone https://github.com/BaaRai/ARTEX.git
cd ARTEX
cp .env.example .env # set POSTGRES_PASSWORD, optionally ANTHROPIC_API_KEY
docker compose up -d # pulls the autumn27/artex image + 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>으로 설정하세요.
Releases에서 사용 중인 플랫폼용 zip을 다운로드하세요. 압축을 풀면 artex + start.sh(Windows에서는 start.bat) + skills/ + config.example.json이 생성됩니다:
cp config.example.json config.json # fill in the database connection
./start.sh # → http://localhost:8787
./artex를 직접 실행하지 말고start.sh/start.bat로 시작하세요. 이는 데몬 스크립트로, 프로세스가 충돌하면 백오프 후 재시작합니다. 백그라운드에서 계속 실행하려면:nohup ./start.sh >artex.log 2>&1 &.
# 1) frontend static export
cd web && npm ci && npm run build:static && cd ..
# 2) copy into the embed directory
cp -r web/out server/webui/dist
# 3) build (only -tags embedui embeds the frontend)
CGO_ENABLED=0 go build -tags embedui -o artex ./cmd/artex
./start.sh
build.sh는 먼저 프런트엔드를 빌드하고 임베드한 다음, Go 링커를 통해 디버그 정보를 제거하고, 릴리스 파일을 zip으로 압축합니다. 릴리스 모드는 기본적으로 Linux amd64/arm64, macOS amd64/arm64, Windows amd64용 zip을 생성합니다:
./build.sh --release
# output: 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
scripts/backup.sh는 타임스탬프가 포함된 출력과 로테이션을 사용하여 Postgres 데이터베이스(및 선택적으로 데이터 디렉터리)를 덤프합니다:
scripts/backup.sh --with-data # db dump + data/ archive, keep 14
scripts/backup.sh --keep 7 # db only, keep 7
실행 중인 스택에 덤프 복원:
gunzip -c backups/artex-db-<timestamp>.sql.gz | docker compose exec -T postgres \
psql -U "$POSTGRES_USER" -d "$POSTGRES_DB"
일일 cron 예시 (03:20, 운영자 crontab):
20 3 * * * cd /path/to/ARTEX && scripts/backup.sh --with-data >> backups/backup.log 2>&1
업그레이드는 프로그램만 교체할 뿐 데이터는 절대 건드리지 않습니다. Postgres 볼륨
pgdata,./data(jwt.key / SQLite 등), 그리고./skills는 모두 보존됩니다. 수동 데이터베이스 마이그레이션은 필요하지 않습니다:artex는 시작할 때마다schema.sql을 멱등적으로 다시 실행하며(ADD COLUMN/CREATE INDEX IF NOT EXISTS사용), 즉 "재시작이 곧 마이그레이션"입니다. 그래도 업그레이드 전에./data와 데이터베이스를 백업하는 것을 권장합니다.
cd ARTEX
./update.sh