TL;DR

zeroc00I/LLM-anonymization là reverse proxy cho Claude Code: trước khi prompt đi tới Anthropic, proxy thay mọi IP, hash, credential, hostname bằng surrogate; khi response trả về, proxy khôi phục lại data thật ở local. Kết quả: operator thấy nguyên bản, Claude chỉ thấy data ẩn danh. Dual-layer detection (Ollama LLM + regex), vault SQLite riêng cho từng engagement, test suite ép 0% leak trên 645+ item.

What's new

Repo mới nổi trên X qua tweet của VivekIntel, hiện 166 stars / 20 forks, 4 commits — giai đoạn sớm nhưng đã chạy được end-to-end. Điểm khác biệt so với các công cụ PII redaction generic (Presidio, gateway của Radicalbit): fixture và regex được viết riêng cho ngữ cảnh pentest — nmap, mimikatz, CrackMapExec, Responder, NTDS dump, Burp HTTP history, Zeek conn.log, CloudTrail, AWS Pacu, Volatility, GoPhish, Kerberos/NTLM, AD CS.

Why it matters

Pentester dùng Claude Code rất nhanh, nhưng hầu hết NDA cấm gửi IP nội bộ, credential, hostname ra third-party API. Hai lựa chọn cũ đều đau:

  • Bỏ Claude, dùng model local nhỏ hơn → giảm chất lượng phân tích rõ rệt.
  • Redact bằng tay → dễ lọt, không reversible, mệt.

Proxy này giữ full power của Claude nhưng nội dung đi ra đã được thay bằng surrogate, và deanonymize khi data quay về — pentester vẫn nhìn thấy 10.20.0.10 = dc01.acmecorp.local, Claude chỉ thấy 203.0.113.47 = dc-0042.pentest.local.

How it works

Dòng chảy một request:

User nhập:    nmap 10.20.0.10
  ↓ proxy ẩn danh
Claude nhận:  nmap 203.0.113.47
  ↓ Claude trả lời
Response:     "203.0.113.47 is DC01"
  ↓ proxy deanonymize bằng vault
User thấy:    "10.20.0.10 is dc01.acmecorp.local"

Hai lớp phát hiện chạy song song:

  1. LLM detector (Ollama, qwen3:1.7b mặc định) — bắt contextual data: bare hostname, domain\username, cleartext password, tên tổ chức, file path.
  2. Regex safety net — IPv4/IPv6, CIDR, MD5/SHA1/SHA256/NTLM, MAC, email, domain, URL, AWS token, JWT.

Tầng dưới là PII Vault dạng SQLite: surrogate mapping bền giữa các session, cô lập theo ENGAGEMENT_ID. Cùng một IP trong engagement A và B sẽ map sang hai surrogate khác nhau — không có cross-client correlation nếu vault lỡ rò rỉ.

Technical facts

Hạng mụcChi tiết
Model mặc địnhqwen3:1.7b (~1–2s/req)
Model high-stakesqwen3:4b (~3–5s/req)
Model testqwen3:0.6b
Test fixtures49 fixtures, 645+ items
Catch rate100% (ép 0% leak)
Catch rate ban đầu~85% (16 fixtures)
Surrogate IPv4RFC 5737 TEST-NET (203.0.113.x...)
Surrogate domain*.pentest.local
Port mặc định8080
Chunk size LLM1500 ký tự
Deploy modesVPS / Python+Ollama / Docker

Biến môi trường chính: ENGAGEMENT_ID, OLLAMA_HOST, OLLAMA_MODEL, LLM_ENABLED, OLLAMA_TIMEOUT, LLM_CHUNK_SIZE, PORT.

Comparison

Phương ánData ra ngoài?Sức mạnh LLMReversible?
Claude Code trực tiếpCó (raw → Anthropic)Full frontierN/A
METATRON (local-only Ollama)KhôngHạn chế bởi local modelN/A
LLM-anonymization proxyKhông (đã ẩn danh)Full ClaudeCó (vault local)
Redact thủ côngTuỳ, dễ saiFull frontierKhông

Use cases

  • Red team engagement mà NDA cấm gửi IP/credential nội bộ ra third-party API.
  • Phân tích nmap, CrackMapExec, mimikatz, Responder, NTDS dump bằng Claude mà không lộ AD domain thật.
  • Triage Burp HTTP history, Zeek conn.log, CloudTrail event, output AWS Pacu.
  • Công ty pentest multi-client: mỗi engagement một vault riêng, tránh cross-client correlation.
  • Blue/purple team dùng Claude để tóm tắt alert mà không leak hostname nội bộ.

Limitations & pricing

  • Miễn phí, open source trên GitHub; README chưa gắn license file rõ ràng — nên fork/pin commit SHA nếu dùng cho engagement thật.
  • Tắt LLM_ENABLED sẽ mất khả năng bắt contextual data (bare hostname, domain\username lạ).
  • Output dày hơn 1500 ký tự có thể bị chia chunk, rủi ro miss ở biên.
  • Không bảo vệ screenshot, file paste ngoài Claude Code, hoặc tool bên ngoài.
  • Tấn công tương quan dựa trên writing style/metadata nằm ngoài phạm vi — proxy không ẩn được giọng văn đặc trưng của org.
  • Surrogate có thể đụng nhau (xác suất thấp, không phải zero) trong cùng engagement.
  • Không thay thế NDA, contract, DLP — chỉ là một lớp defense-in-depth.
  • Cần Ollama chạy local + 1.7B–4B model (~vài GB RAM/VRAM).

What's next

Dấu hiệu từ README: tiếp tục mở rộng fixture suite (đã đi từ 16 lên 49), tinh chỉnh prompt LLM cho edge-case contextual, và polish VPS deployment. Project có script auto_improve.py: chạy regex-only trên toàn bộ fixture → báo leak → auto-patch regex mới → refine system prompt cho phần còn lại. Cycle <5 giây ở giai đoạn regex, ~1–2 phút cho full pipeline.

Nếu bạn đang dùng Claude Code trong engagement và đang redact tay — đây là tool đáng thử nghiệm trong lab trước khi đưa vào production. Pin commit SHA, test trên fixture riêng của bạn, và đừng quên: tool này là defense-in-depth, không thay thế NDA.

Nguồn: github.com/zeroc00I/LLM-anonymization, tweet gốc, METATRON (so sánh), Radicalbit — LLM data privacy.