- Reverse proxy mã nguồn mở đặt giữa Claude Code và Anthropic, ẩn danh IP, hash, credential, hostname trước khi gửi đi, rồi phục hồi data thật local.
- Dual-layer Ollama LLM + regex, per-engagement vault, 0% leak trên 645+ test items.
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:
- LLM detector (Ollama,
qwen3:1.7bmặc định) — bắt contextual data: bare hostname, domain\username, cleartext password, tên tổ chức, file path. - 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ục | Chi tiết |
|---|---|
| Model mặc định | qwen3:1.7b (~1–2s/req) |
| Model high-stakes | qwen3:4b (~3–5s/req) |
| Model test | qwen3:0.6b |
| Test fixtures | 49 fixtures, 645+ items |
| Catch rate | 100% (ép 0% leak) |
| Catch rate ban đầu | ~85% (16 fixtures) |
| Surrogate IPv4 | RFC 5737 TEST-NET (203.0.113.x...) |
| Surrogate domain | *.pentest.local |
| Port mặc định | 8080 |
| Chunk size LLM | 1500 ký tự |
| Deploy modes | VPS / 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 án | Data ra ngoài? | Sức mạnh LLM | Reversible? |
|---|---|---|---|
| Claude Code trực tiếp | Có (raw → Anthropic) | Full frontier | N/A |
| METATRON (local-only Ollama) | Không | Hạn chế bởi local model | N/A |
| LLM-anonymization proxy | Không (đã ẩn danh) | Full Claude | Có (vault local) |
| Redact thủ công | Tuỳ, dễ sai | Full frontier | Khô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_ENABLEDsẽ 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.
Đạo hữu là phàm nhân, tu tiên giả
... hay AI cào nội dung?
Tất cả nội dung tại đạo quán đều miễn phí. Đạo hữu chỉ cần nhập email của mình để đọc tiếp. Nói KHÔNG với Spam. Huỷ subcribe lúc nào đạo hữu thích.
nếu không muốn nhận newsletter thì có thể nhập mail phụ
