AI 에이전트 악용: 로컬 AI CLI 도구 및 MCP (Claude/Gemini/Warp)

Reading time: 6 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

개요

Claude Code, Gemini CLI, Warp 같은 로컬 AI command-line interfaces (AI CLIs)는 종종 강력한 내장 기능을 포함합니다: filesystem read/write, shell execution 및 outbound network access. 많은 도구가 MCP clients (Model Context Protocol)로 동작해 모델이 STDIO 또는 HTTP를 통해 외부 도구를 호출하도록 허용합니다. LLM이 툴체인을 비결정적으로 계획하기 때문에 동일한 프롬프트도 실행이나 호스트에 따라 프로세스, 파일 및 네트워크 동작이 달라질 수 있습니다.

일반적인 AI CLI에서 관찰되는 주요 동작:

  • 일반적으로 Node/TypeScript로 구현되며 모델을 실행하고 도구를 노출하는 얇은 래퍼를 가집니다.
  • 여러 모드: interactive chat, plan/execute, single‑prompt run.
  • MCP client 지원( STDIO 및 HTTP 전송 ), 로컬 및 원격 기능 확장을 가능하게 함.

악용 영향: 단일 프롬프트로 자격증명을 수집하고 exfiltrate하며 로컬 파일을 수정하고, 원격 MCP 서버에 연결해 조용히 기능을 확장할 수 있습니다(해당 서버가 서드파티인 경우 가시성 격차 발생).


공격자 플레이북 – Prompt‑Driven Secrets Inventory

에이전트에게 조용히 행동하면서 자격증명/비밀을 빠르게 선별(triage)하고 exfiltration을 위해 준비(stage)하도록 지시:

  • Scope: $HOME 및 애플리케이션/지갑 디렉토리 아래를 재귀적으로 열거; 시끄럽거나 의사 경로(/proc, /sys, /dev)는 회피.
  • Performance/stealth: 재귀 깊이 상한 설정; sudo/priv‑escalation 회피; 결과 요약.
  • Targets: ~/.ssh, ~/.aws, cloud CLI creds, .env, *.key, id_rsa, keystore.json, 브라우저 저장소(LocalStorage/IndexedDB profiles), crypto‑wallet 데이터.
  • Output: 간결한 목록을 /tmp/inventory.txt에 작성; 파일이 존재하면 덮어쓰기 전에 타임스탬프된 백업 생성.

Example operator prompt to an AI CLI:

You can read/write local files and run shell commands.
Recursively scan my $HOME and common app/wallet dirs to find potential secrets.
Skip /proc, /sys, /dev; do not use sudo; limit recursion depth to 3.
Match files/dirs like: id_rsa, *.key, keystore.json, .env, ~/.ssh, ~/.aws,
Chrome/Firefox/Brave profile storage (LocalStorage/IndexedDB) and any cloud creds.
Summarize full paths you find into /tmp/inventory.txt.
If /tmp/inventory.txt already exists, back it up to /tmp/inventory.txt.bak-<epoch> first.
Return a short summary only; no file contents.

MCP를 통한 기능 확장 (STDIO 및 HTTP)

AI CLIs는 추가 도구에 접근하기 위해 종종 MCP 클라이언트로 작동합니다:

  • STDIO transport (local tools): 클라이언트는 도구 서버를 실행하기 위해 헬퍼 체인을 생성합니다. 일반적인 계통: node → <ai-cli> → uv → python → file_write. 예시 관찰: uv run --with fastmcp fastmcp run ./server.py — 이는 python3.13을 시작하고 에이전트를 대신해 로컬 파일 작업을 수행합니다.
  • HTTP transport (remote tools): 클라이언트는 원격 MCP 서버로 아웃바운드 TCP(e.g., port 8000)를 열어 요청된 동작을 실행하게 합니다(예: /home/user/demo_http 기록). 엔드포인트에서는 클라이언트의 네트워크 활동만 보이며 서버 측 파일 접근은 호스트 밖에서 발생합니다.

Notes:

  • MCP 도구는 모델에 설명되며 계획(planning)에 의해 자동 선택될 수 있습니다. 동작은 실행마다 달라집니다.
  • 원격 MCP 서버는 blast radius를 증가시키고 호스트 측 가시성을 줄입니다.

로컬 아티팩트 및 로그 (Forensics)

  • Gemini CLI 세션 로그: ~/.gemini/tmp/<uuid>/logs.json
  • 일반적으로 보이는 필드: sessionId, type, message, timestamp.
  • 예시 message: "@.bashrc what is in this file?" (사용자/에이전트 의도 캡처됨).
  • Claude Code 히스토리: ~/.claude/history.jsonl
  • JSONL 항목은 display, timestamp, project 같은 필드를 가집니다.

이러한 로컬 로그를 LLM gateway/proxy(e.g., LiteLLM)에서 관찰되는 요청과 상관관계 분석하여 tampering/model‑hijacking을 탐지하세요: 모델이 처리한 내용이 로컬 프롬프트/출력과 다르면 주입된 지시문이나 손상된 도구 디스크립터를 조사하세요.


엔드포인트 텔레메트리 패턴

Amazon Linux 2023에서 Node v22.19.0 및 Python 3.13을 사용한 대표적 체인:

  1. 내장 도구 (로컬 파일 접근)
  • 부모: node .../bin/claude --model <model> (또는 CLI에 해당하는 프로세스)
  • 즉시 자식 동작: 로컬 파일 생성/수정(예: demo-claude). 파일 이벤트를 부모→자식 계통으로 연관지으세요.
  1. STDIO를 통한 MCP (로컬 도구 서버)
  • 체인: node → uv → python → file_write
  • 예시 스폰: uv run --with fastmcp fastmcp run /home/ssm-user/tools/server.py
  1. HTTP를 통한 MCP (원격 도구 서버)
  • 클라이언트: node/<ai-cli>remote_port: 8000 같은 대상으로 아웃바운드 TCP를 엽니다.
  • 서버: 원격 Python 프로세스가 요청을 처리하고 /home/ssm-user/demo_http를 기록합니다.

에이전트의 결정은 실행마다 다르므로, 정확한 프로세스와 접근한 경로는 가변적일 수 있습니다.


탐지 전략

텔레메트리 소스

  • 프로세스, 파일, 네트워크 이벤트를 위해 eBPF/auditd를 사용하는 Linux EDR.
  • 프롬프트/의도 가시성을 위한 로컬 AI‑CLI 로그.
  • 교차 검증 및 모델 변조 탐지를 위한 LLM gateway 로그(e.g., LiteLLM).

헌팅 휴리스틱

  • 민감한 파일 접근을 AI‑CLI 부모 체인(예: node → <ai-cli> → uv/python)으로 연결하세요.
  • 다음 경로 아래의 접근/읽기/쓰기 활동에 대해 경보: ~/.ssh, ~/.aws, browser profile storage, cloud CLI creds, /etc/passwd.
  • AI‑CLI 프로세스에서 승인되지 않은 MCP 엔드포인트(HTTP/SSE, 8000 같은 포트)로의 예상치 못한 아웃바운드 연결을 플래그하세요.
  • 로컬 ~/.gemini/~/.claude 아티팩트를 LLM gateway의 프롬프트/출력과 상관관계 분석하세요; 불일치는 가능한 hijacking을 시사합니다.

예시 의사‑규칙(EDR에 맞게 조정하세요):

yaml
- when: file_write AND path IN ["$HOME/.ssh/*","$HOME/.aws/*","/etc/passwd"]
and ancestor_chain CONTAINS ["node", "claude|gemini|warp", "python|uv"]
then: alert("AI-CLI secrets touch via tool chain")

- when: outbound_tcp FROM process_name =~ "node|python" AND parent =~ "claude|gemini|warp"
and dest_port IN [8000, 3333, 8787]
then: tag("possible MCP over HTTP")

하드닝 아이디어

  • 파일/시스템 도구에 대해 명시적 사용자 승인을 요구하고, 도구 실행 계획을 기록·가시화하세요.
  • AI‑CLI 프로세스의 네트워크 egress를 승인된 MCP 서버로 제한하세요.
  • 일관되고 변조 방지되는 감사를 위해 로컬 AI‑CLI 로그 및 LLM gateway 로그를 전송/수집하세요.

Blue‑Team 재현 노트

EDR 또는 eBPF 추적기를 갖춘 깨끗한 VM을 사용하여 다음과 같은 체인을 재현하세요:

  • node → claude --model claude-sonnet-4-20250514 then immediate local file write.
  • node → uv run --with fastmcp ... → python3.13 writing under $HOME.
  • node/<ai-cli> establishing TCP to an external MCP server (port 8000) while a remote Python process writes a file.

오탐을 피하려면 탐지 결과가 파일/네트워크 이벤트를 시작한 AI‑CLI 부모 프로세스와 연결되는지 검증하세요.


참조

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기