Bạn đã bao giờ ước mình có thể gõ “quét port cho trang web này giúp tôi” và hệ thống tự chạy nmap, phân tích kết quả, rồi gợi ý bước tiếp theo chưa? Với sự kết hợp giữa Claude Desktop, Kali Linux và Model Context Protocol (MCP), điều đó hoàn toàn khả thi — và miễn phí.
Bài viết này dựa trên hướng dẫn chính thức của Kali Linux Blog, được mình tổng hợp lại kèm phân tích và bổ sung thêm cho phù hợp với workflow pentest thực tế.
Tổng quan kiến trúc
Hệ thống gồm 3 thành phần chính:
┌──────────────────┐ SSH Tunnel ┌──────────────────┐ Cloud API ┌──────────────────┐
│ Claude Desktop │ ◄════════════════► │ Kali Linux │ │ Anthropic LLM │
│ (macOS/Win) │ │ MCP Server │ │ (Sonnet) │
│ MCP Client │ │ Pentest Tools │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
Luồng hoạt động:
- Bạn nhập prompt bằng ngôn ngữ tự nhiên vào Claude Desktop
- LLM (Anthropic Sonnet) phân tích yêu cầu, xác định tool cần dùng
- Claude gọi MCP Server trên Kali qua SSH
- MCP Server thực thi lệnh (nmap, sqlmap, nikto…) và trả kết quả
- LLM phân tích output, trình bày kết quả có cấu trúc
- Nếu cần, LLM tự động chạy thêm lệnh tiếp theo (ví dụ: scan port → phát hiện web server → kiểm tra
security.txt)
Điểm hay là toàn bộ giao tiếp giữa macOS và Kali đi qua SSH tunnel — bảo mật và không cần expose port nào ra ngoài.
Tại sao nên dùng setup này?
Ưu điểm:
- Tốc độ workflow: Thay vì nhớ cú pháp từng tool, bạn mô tả mục tiêu bằng ngôn ngữ tự nhiên. Claude tự chọn tool phù hợp, tự điều chỉnh flags, và giải thích kết quả.
- Chuỗi hành động tự động: Một prompt có thể trigger nhiều bước liên tiếp — recon → scan → phân tích — mà không cần can thiệp thủ công giữa chừng.
- Học và làm song song: Mỗi lần Claude chạy lệnh, bạn thấy chính xác lệnh gì được thực thi và tại sao. Đây là cách học pentest tools cực kỳ hiệu quả.
- Miễn phí: Claude Desktop free tier hoạt động được với setup này.
Hạn chế cần lưu ý:
- Privacy: Prompt và output đều đi qua Anthropic cloud. Không dùng cho pentest thực tế có dữ liệu nhạy cảm của khách hàng.
- Không thay thế kỹ năng: AI hỗ trợ, không thay thế. Bạn vẫn cần hiểu output để đánh giá đúng.
- Rate limits: Free tier có giới hạn số lượng message. Với lab practice thì đủ, engagement thực tế nên cân nhắc.
Hướng dẫn cài đặt từng bước
Bước 1 — Chuẩn bị Kali Linux
Nếu bạn đã có Kali (VM, cloud, hoặc bare metal), bật SSH:
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
Nếu chạy Kali qua Docker (phù hợp cho macOS với OrbStack/Docker Desktop):
docker run -d --name kali-mcp \
-p 2222:22 \
--cap-add=NET_RAW \
kalilinux/kali-rolling \
tail -f /dev/null
docker exec -it kali-mcp bash
Flag --cap-add=NET_RAW quan trọng vì nmap SYN scan (-sS) cần raw socket. Không có flag này, bạn chỉ chạy được connect scan (-sT) — chậm hơn và dễ bị detect hơn.
Bước 2 — Cài MCP Server và pentest tools trên Kali
apt update
apt install -y mcp-kali-server \
nmap nikto gobuster dirb sqlmap \
hydra john enum4linux-ng \
metasploit-framework wpscan wordlists
# Giải nén wordlist phổ biến nhất
gunzip -v /usr/share/wordlists/rockyou.txt.gz
Package mcp-kali-server là package chính thức từ Kali repo, gồm 2 thành phần:
kali-server-mcp: Flask API server, expose các pentest tools qua HTTP endpoint tại127.0.0.1:5000mcp-server: MCP bridge, nhận lệnh từ MCP client (Claude Desktop) qua stdio và forward tới API server
Bước 3 — Thiết lập SSH key authentication
Trên macOS:
# Tạo SSH key (bỏ qua nếu đã có)
ssh-keygen -t ed25519
# Copy public key sang Kali
# VM/Cloud:
ssh-copy-id kali@<KALI_IP>
# Docker:
ssh-copy-id -p 2222 root@localhost
Test: ssh kali@<KALI_IP> (hoặc ssh -p 2222 root@localhost cho Docker). Nếu vào được mà không hỏi password → thành công.
Bước 4 — Khởi động MCP Server
SSH vào Kali, chạy API server trong tmux session (để giữ process chạy nền):
tmux new -s mcp-server
kali-server-mcp
Output kỳ vọng:
Starting Kali Linux Tools API Server on 127.0.0.1:5000
* Serving Flask app 'kali_server'
* Running on http://127.0.0.1:5000
Detach tmux bằng Ctrl+B rồi D.
Verify bằng cách chạy mcp-server trong terminal khác — nếu thấy Server health status: healthy và không có “Missing tools” warning thì OK.
Bước 5 — Cài và cấu hình Claude Desktop
Tải Claude Desktop từ claude.com/download, cài đặt bình thường trên macOS.
Sau khi đăng nhập, vào Settings → Developer → Edit Config để mở file claude_desktop_config.json.
Cấu hình cho VM/Cloud Kali:
{
"mcpServers": {
"mcp-kali-server": {
"command": "ssh",
"args": [
"-i", "/Users/<YOUR_USERNAME>/.ssh/id_ed25519",
"kali@<KALI_IP>",
"mcp-server"
],
"transport": "stdio"
}
}
}
Cấu hình cho Docker Kali (port 2222):
{
"mcpServers": {
"mcp-kali-server": {
"command": "ssh",
"args": [
"-i", "/Users/<YOUR_USERNAME>/.ssh/id_ed25519",
"-p", "2222",
"root@localhost",
"mcp-server"
],
"transport": "stdio"
}
}
}
Lưu file, Cmd+Q Claude Desktop rồi mở lại.
Kiểm tra: trong cửa sổ chat mới, nếu thấy icon MCP tools (hình búa) → kết nối thành công.
Bước 6 — Chạy thử
Nhập prompt đầu tiên:
Port scan scanme.nmap.org và cho tôi biết những service nào đang chạy
Claude sẽ hỏi permission → Allow → chờ vài giây → nhận kết quả phân tích hoàn chỉnh.
Ví dụ prompt thực tế cho pentest workflow
Sức mạnh thật sự của setup này nằm ở khả năng chain nhiều bước bằng một prompt duy nhất.
Reconnaissance
Quét scanme.nmap.org với nmap, tìm tất cả open ports và xác định
service version. Nếu có web server, dùng nikto kiểm tra
vulnerability cơ bản.
Web Directory Enumeration
Dùng gobuster brute-force thư mục trên http://target.local
với wordlist common.txt. Liệt kê các path trả về status 200 và 301.
SQL Injection Testing (trên lab environment)
Test SQL injection trên URL http://lab.local/page?id=1
bằng sqlmap. Xác định database type và liệt kê databases nếu
vulnerable.
Kết hợp nhiều bước
Thực hiện full recon trên testsite.local:
1. Port scan với service detection
2. Nếu có web server, chạy nikto scan
3. Enumerate directories với gobuster
4. Tổng hợp kết quả và đề xuất attack vectors tiềm năng
Kết hợp với PortSwigger Labs
Setup này cực kỳ hữu ích khi luyện PortSwigger Web Security Academy:
- Mở lab trên PortSwigger
- Dùng Claude Desktop để chạy recon nhanh trên lab URL
- Tập trung vào khai thác — phần nhàm chán (nhớ cú pháp tool) đã có AI hỗ trợ
- Viết write-up ngay sau khi hoàn thành, dùng output từ Claude làm reference
Lưu ý: PortSwigger labs chạy trên domain riêng và mỗi lab có URL unique — đây là target hợp pháp 100%.
Lưu ý bảo mật quan trọng
Chỉ scan hệ thống bạn có quyền. Đây không phải disclaimer cho vui — quét port hoặc test vulnerability trên hệ thống không được phép là vi phạm pháp luật ở hầu hết quốc gia, kể cả Việt Nam.
Các target hợp pháp bạn có thể dùng:
scanme.nmap.org— target chính thức từ Nmap Project- PortSwigger Web Security Academy labs
- HackTheBox, TryHackMe machines
- DVWA, WebGoat, Juice Shop trên local
- Hệ thống của bạn hoặc có written authorization
Về privacy khi dùng cloud LLM:
- Prompt và output được gửi tới Anthropic servers
- Không dùng cho pentest engagement thực tế có NDA
- Không paste credentials, API keys, hoặc sensitive data vào prompt
- Cân nhắc self-hosted LLM (Ollama + open source model) nếu privacy là ưu tiên
Tổng kết
Setup Claude Desktop + Kali Linux qua MCP tạo ra một workflow pentest khá thú vị: bạn tập trung vào tư duy và phân tích, để AI xử lý phần thực thi kỹ thuật. Đặc biệt phù hợp cho giai đoạn học — khi bạn cần hiểu tại sao chạy lệnh này chứ không chỉ cách chạy.
Tuy nhiên, đừng để sự tiện lợi của AI thay thế việc hiểu sâu từng tool. Dùng setup này như bước đệm: quan sát Claude chạy lệnh gì, với flags nào, rồi tự tay lặp lại cho đến khi thành thạo.
Tài nguyên tham khảo: