Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AgentGuard — 제로트러스트 샌드박스로, AI 에이전트를 위해 커널 수준 파일시스템 감옥, 투명 네트워크 프록시, YAML 기반 정책 엔진을 통해 쉘 명령어, 파일 작업, 네트워크 요청을 차단 및 제어합니다. | Kitploit
도구/GitHubGitHub/thodoristsampouris/agentguard
Defensive ToolsContainer SecuritySecurity VirtualizationNetwork SecurityAI Security
GitHubthodoristsampouris/agentguard

AgentGuard

제로트러스트 샌드박스로, AI 에이전트를 위해 커널 수준 파일시스템 감옥, 투명 네트워크 프록시, YAML 기반 정책 엔진을 통해 쉘 명령어, 파일 작업, 네트워크 요청을 차단 및 제어합니다.

저장소 보기
85개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AgentGuard

자율 AI 에이전트를 위한 제로 트러스트 샌드박스.

AgentGuard는 모든 AI 에이전트(LangChain, CrewAI, AutoGen, 사용자 정의 스크립트)에 안전 레일을 씌웁니다. 명령어 한 줄만 바꾸면 됩니다:

root@kitploit:~
# 이전 (위험 — 에이전트가 전체 시스템에 접근 가능)
python my_agent.py

# 이후 (샌드박스 내)
agentguard run -- python my_agent.py

AgentGuard는 에이전트가 실행하는 모든 셸 명령, 파일 수정, 네트워크 요청을 가로챕니다. 안전한 동작은 자동 허용, 위험한 동작은 자동 차단, 그 외에는 사람의 승인을 요청합니다.

작동 방식

AgentGuard는 함께 작동하는 네 가지 방어 계층을 갖추고 있습니다:

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│ Layer 0: 파일시스템 감옥 (macOS sandbox-exec)                │
│   커널 수준 강제. 시스템 콜 수준에서 파일 쓰기와 네트워크를    │
│   제한합니다. 에이전트가 사용자 공간에서 우회 불가.            │
│   Python의 open(), requests.post() 등을 차단합니다.          │
├─────────────────────────────────────────────────────────────┤
│ Layer 1: 네트워크 프록시                                    │
│   투명 HTTP/HTTPS 프록시. 에이전트가 만드는 모든 네트워크 호출  │
│   을 정책에 따라 검사합니다. 대상별 허용/거부를 TUI에서         │
│   완전히 확인 가능.                                          │
├─────────────────────────────────────────────────────────────┤
│ Layer 2: PATH 대체 명령                                      │
│   git, pip, curl, rm 등의 명령을 가로채는 셸 스크립트 대체물.  │
│   각 대체 명령은 실제 바이너리를 실행하기 전에 데몬에 허가를   │
│   요청합니다.                                                │
├─────────────────────────────────────────────────────────────┤
│ Layer 3: 정책 엔진 + 승인 데몬                               │
│   YAML 기반 규칙이 가로챈 모든 동작을 평가합니다.             │
│   안전한 명령은 자동 허용, 위험한 명령은 자동 차단,           │
│   나머지는 사람에게 묻습니다.                                │
└─────────────────────────────────────────────────────────────┘

단일 계층이 보안 경계는 아닙니다. 함께 작동합니다 — 심층 방어.

빠른 시작

빌드

root@kitploit:~
go build -o agentguard ./cmd/agentguard/
go build -o agentguard-check ./cmd/agentguard-check/

두 바이너리는 같은 디렉터리에 있어야 합니다.

정책 생성

root@kitploit:~
agentguard init

이 명령은 현재 디렉터리에 .agentguard/policy.yaml을 생성합니다. 필요에 맞게 편집하세요.

에이전트 실행 (대화형 TUI)

root@kitploit:~
agentguard run -- python my_agent.py

TUI가 터미널을 차지하며 다음을 표시합니다:

  • 실시간 활동 스트림 (가로챈 모든 동작)
  • 모호한 명령에 대한 승인 프롬프트 (Y/N/A/B 누르기)
  • 프록시의 네트워크 허용/거부 이벤트
  • 샌드박스 위반 이벤트
  • 에이전트 stdout/stderr (Tab 키로 전환)

에이전트 실행 (Headless)

Claude Code 같이 터미널이 필요한 대화형 도구의 경우:

root@kitploit:~
agentguard run --headless -- claude

에이전트가 직접 터미널을 사용합니다. AgentGuard는 백그라운드에서 조용히 실행됩니다. 모든 이벤트는 ~/.agentguard/logs/headless.log에 기록됩니다. 다른 터미널에서 모니터링:

root@kitploit:~
tail -f ~/.agentguard/logs/headless.log

CLI 참조

root@kitploit:~
agentguard run [flags] -- <command> [args...]
    --policy <path>     특정 정책 파일 사용
    --headless          TUI 없음 — 에이전트가 터미널 사용
    --default-allow     Headless 모드에서 PROMPT 결정 자동 허용 (기본값: 자동 거부)
    --no-sandbox        sandbox-exec 비활성화 (대체 명령과 프록시는 여전히 활성)

agentguard init         기본 정책 파일 생성
agentguard version      버전 출력

정책 파일

정책은 에이전트가 할 수 있는 일과 없는 일을 정의하는 YAML 파일입니다. AgentGuard는 다음 세 위치를 순서대로 확인합니다:

  1. ./.agentguard/policy.yaml (프로젝트 로컬)
  2. ~/.agentguard/policy.yaml (사용자 전역)
  3. 내장 기본값

예제 정책

root@kitploit:~
version: 1

deny:
  # 위험한 명령 차단
  - command: "rm"
    args: "-rf *"
    reason: "재귀적 강제 삭제는 너무 위험합니다"
  - command: "sudo"
    args: "*"
    reason: "권한 상승은 허용되지 않습니다"
  - command: "chmod"
    args: "777 *"
    reason: "모든 사용자 쓰기 권한은 위험합니다"

  # 민감한 파일 읽기 차단 (sandbox-exec로 적용)
  - file:
      path: "*.env"
      action: "read"
      reason: "에이전트가 .env 파일을 읽지 못하게 합니다"
  - file:
      path: "*.pem"
      action: "read"
      reason: "에이전트가 개인 키를 읽지 못하게 합니다"

allow:
  # 안전한 읽기 전용 명령
  - command: "ls"
  - command: "cat"
  - command: "pwd"
  - command: "echo"
  - command: "grep"
  - command: "head"
  - command: "tail"
  - command: "wc"

  # 읽기 전용 git
  - command: "git"
    args: "status"
  - command: "git"
    args: "log *"
  - command: "git"
    args: "diff *"

  # 작업 공간에 쓰기 허용
  - file:
      path: "/tmp/workspace/**"
      action: "write"

  # 특정 API 엔드포인트 허용
  - network:
      destination: "api.anthropic.com:443"
  - network:
      destination: "api.github.com:443"

규칙 평가 순서

  1. 특정 거부 규칙 — 먼저 확인. 일치하면 동작이 즉시 차단됩니다.
  2. 허용 규칙 — 두 번째 확인. 일치하면 동작이 허용됩니다.
  3. 포괄 거부 규칙 (예: deny network *) — 세 번째 확인. 기본 거부 역할을 합니다.
  4. 일치 없음 — 사람에게 프롬프트(TUI) 또는 자동 거부(headless).

규칙 유형

명령 규칙 — 이름과 인자 패턴으로 셸 명령과 대조:

root@kitploit:~
- command: "git"
  args: "push *"
  reason: "푸시는 승인이 필요합니다"

파일 규칙 — 파일 작업 대조 (sandbox-exec로 적용):

root@kitploit:~
- file:
    path: "*.env"
    action: "read"     # "read" 또는 "write"
    reason: "비밀 보호"

네트워크 규칙 — 네트워크 대상 대조 (프록시 + sandbox-exec로 적용):

root@kitploit:~
- network:
    destination: "api.anthropic.com:443"

명령 인자, 파일 경로, 네트워크 대상에 *를 와일드카드로 사용할 수 있습니다.

TUI 컨트롤

각 계층이 잡아내는 것

아키텍처

root@kitploit:~
agentguard/
├── cmd/
│   ├── agentguard/              # 메인 CLI 바이너리
│   └── agentguard-check/        # 대체 명령 헬퍼 바이너리
├── internal/
│   ├── policy/                  # 정책 엔진 (YAML 파싱, 규칙 평가)
│   ├── events/                  # 이벤트 시스템 (JSONL 감사 로그, pub/sub)
│   ├── daemon/                  # 중앙 데몬 (Unix 소켓, 승인 큐)
│   │   └── client/              # 대체 명령용 클라이언트 라이브러리
│   ├── shim/                    # 대체 명령 생성기 (PATH 기반 가로채기)
│   ├── proxy/                   # 투명 네트워크 프록시
│   ├── spawner/                 # 오케스트레이션 + macOS 샌드박스 통합
│   └── ui/tui/                  # 터미널 UI (Bubble Tea)
├── configs/
│   └── default_policy.yaml      # 참조 정책 파일
├── .gitignore
├── go.mod
├── LICENSE
└── README.md

구성 요소 개요

감사 로그

가로챈 모든 동작은 ~/.agentguard/logs/YYYY-MM-DD.jsonl에 기록됩니다:

root@kitploit:~
{"id":"a1b2c3","timestamp":"2026-03-22T14:30:00Z","session_id":"abc123","source":"shim","command":"git","args":["push","origin","main"],"decision":"deny","decided_by":"human","response_time_ms":3200}
{"id":"d4e5f6","timestamp":"2026-03-22T14:30:01Z","session_id":"abc123","source":"proxy","network_dst":"api.anthropic.com:443","decision":"allow","decided_by":"policy"}

표준 도구로 질의:

root@kitploit:~
# 오늘 거부된 모든 동작
cat ~/.agentguard/logs/2026-03-22.jsonl | jq 'select(.decision == "deny")'

# 모든 네트워크 요청
cat ~/.agentguard/logs/2026-03-22.jsonl | jq 'select(.source == "proxy")'

# 사람 승인이 필요했던 명령
cat ~/.agentguard/logs/2026-03-22.jsonl | jq 'select(.decided_by == "human")'

플랫폼 지원

보안 모델

위협 모델: 에이전트는 신뢰할 수 없습니다. 다음과 같은 시도를 할 수 있습니다:

  • 위험한 명령 실행 (rm -rf /, sudo)
  • 네트워크 호출을 통한 데이터 유출
  • 민감한 파일 읽기 (.env, 개인 키)
  • 절대 경로, 언어 네이티브 API, 환경 변수 조작으로 샌드박스 우회

AgentGuard가 방지하는 것:

  • 셸 명령은 대체 명령으로 가로채고 정책으로 평가
  • 네트워크 호출은 프록시를 통해 라우팅되고 대상별로 필터링
  • 파일 쓰기는 허용된 디렉터리로 sandbox-exec로 제한
  • 특정 패턴 (.env, .pem 등)의 파일 읽기는 거부 가능
  • 데몬 소켓을 통한 세션 조작은 차단
  • 대체 명령 스크립트의 셸 인젝션은 입력 검증으로 방지
  • TUI 표시의 ANSI 인젝션은 제거
  • 파일 규칙의 경로 탐색은 filepath.Clean으로 방지

AgentGuard가 방지하지 않는 것 (알려진 한계):

  • ctypes/cffi를 통한 원시 시스템 콜 (macOS에서는 sandbox-exec도 차단)
  • 커널 익스플로잇 (루트 필요, 모든 앱과 동일한 신뢰 경계)
  • 허용된 네트워크 대상을 통한 데이터 유출 (api.anthropic.com을 허용하면 에이전트가 그곳으로 데이터를 보낼 수 있음)
  • 거부 목록에 없는 파일 읽기 (명시적으로 거부된 패턴을 제외한 모든 읽기는 허용)

개발

테스트 실행

root@kitploit:~
go test ./... -race

테스트 커버리지

이 프로젝트에는 140개 이상의 테스트가 있으며 다음을 다룹니다:

  • 정책 평가 (글로브 매칭, 규칙 병합, 경로 탐색 방지)
  • 이벤트 로깅 (JSONL 형식, 일일 로테이션, 동시 쓰기, pub/sub)
  • 데몬 (소켓 통신, 승인 큐, 세션 관리, 타임아웃)
  • TUI (키보드 처리, 이벤트 표시, ANSI 살균)
  • 대체 명령 생성 (셸 인젝션 방지, 경로 검증)
  • 네트워크 프록시 (허용/거부, 이벤트 로깅)
  • 통합 테스트 (전체 종단 간 흐름)
  • macOS 샌드박스 (프로파일 생성, 실제 sandbox-exec 실행)

빌드 태그

  • jail_darwin.go — macOS sandbox-exec (macOS에서만 컴파일)
  • jail_noop.go — 대체 명령 전용 모드 대체 (Linux/Windows에서 컴파일)
  • sandbox_monitor_darwin.go — 샌드박스 위반을 위한 macOS 시스템 로그 추적
  • sandbox_monitor_noop.go — macOS가 아닌 플랫폼에서는 아무것도 하지 않음

라이선스

LICENSE 참조.

도구 다운로드
키동작시점
Y보류 중인 요청 허용승인 프롬프트 표시 중
N보류 중인 요청 거부승인 프롬프트 표시 중
A허용 + 이 세션 동안 기억 ("항상 허용")승인 프롬프트 표시 중
B거부 + 이 세션 동안 기억 ("영구 차단")승인 프롬프트 표시 중
Tab에이전트 stdout/stderr 패널 전환항상
위/아래활동 스트림 스크롤항상
Q종료 (에이전트 종료)항상
에이전트 동작대체 명령프록시sandbox-exec
subprocess.run(["rm", "-rf", "/"])예--
subprocess.run(["git", "push"])예--
requests.post("https://evil.com")-예예
urllib.request.urlopen("https://api.com")-예예
open(".env", "r")--예
open("/etc/shadow", "w")--예
/usr/bin/curl https://evil.com (절대 경로)-예예
구성 요소패키지목적
정책 엔진internal/policyYAML 규칙 파싱, 요청 평가 → ALLOW / DENY / PROMPT
이벤트 시스템internal/events추가 전용 JSONL 감사 로그 + TUI용 실시간 pub/sub
데몬internal/daemonUnix 소켓 서버, 타임아웃 있는 승인 큐, 세션 관리
TUIinternal/ui/tuiBubble Tea 터미널 UI: 활동 스트림 및 승인 모달
대체 명령 생성기internal/shim셸 스크립트 대체 명령 생성, 실제 바이너리 경로 확인
네트워크 프록시internal/proxy대상별 정책을 적용하는 투명 HTTP/HTTPS 프록시
스포너internal/spawner모든 것을 오케스트레이션: 정책 → 데몬 → 대체 명령 → 프록시 → 샌드박스 → 에이전트 → TUI
macOS 샌드박스internal/spawner/jail_darwin.goSeatbelt 프로파일로 커널 수준 강제를 위한 sandbox-exec
플랫폼대체 명령프록시sandbox-exec파일 읽기 거부
macOS (Apple Silicon)예예예예
macOS (Intel)예예예예
Linux예예아니요 (향후: 네임스페이스 + seccomp)아니요
Windows예예아니요 (향후: Job Objects)아니요