Dự án này cung cấp một Docker container chạy OpenVPN server. Nó tự động cấu hình iptables để chuyển tiếp toàn bộ luồng traffic web (cổng 80 và 443) từ VPN client sang máy chủ đang chạy Burp Suite thông qua cơ chế Transparent Proxy (DNAT).
Rất hữu ích khi bạn cần bắt request từ điện thoại (iOS/Android) hoặc máy ảo mà không thể cấu hình HTTP Proxy thủ công trên thiết bị, hoặc ứng dụng có cơ chế chặn proxy thông thường.
- Tự động tạo và quản lý chứng chỉ (PKI/Certificates) bằng Easy-RSA.
- Tự động sinh file cấu hình
client.ovpnvà xuất ra máy Host. - Tự động áp dụng rule
iptablesđể forward traffic TCP 80/443 sang Burp Suite. - Giữ lại cấu hình an toàn (Persistent Data): Không mất chứng chỉ và key khi xóa/tạo lại container.
- Máy tính đã cài đặt Docker (Docker Desktop trên Windows/Mac hoặc Docker Engine trên Linux).
- Burp Suite đang chạy trên máy Host.
Bạn cần cập nhật biến PROXY_IP thành IP mạng LAN thực tế của máy bạn (máy đang chạy Burp Suite, ví dụ: 192.168.100.1).
Sử dụng docker-compose giúp bạn không cần gõ lệnh dài dòng và tự động xử lý vấn đề tương thích đường dẫn giữa các hệ điều hành.
- Mở file
docker-compose.ymlbằng trình soạn thảo văn bản. - Sửa giá trị
PROXY_IP=192.168.100.1thành IP máy bạn. - Mở Terminal / Command Prompt / PowerShell tại thư mục này và chạy lệnh:
docker compose up -d(Lệnh này sẽ tự động build image và chạy container. Để dừng và xóa container, dùng lệnh docker compose down)
Nếu bạn không muốn dùng Docker Compose, bạn có thể tự build và chạy bằng các lệnh sau:
1. Build Docker Image:
docker build -t openvpn-burp .2. Chạy Container (chọn lệnh đúng với Shell của bạn):
Lưu ý quan trọng trước khi chạy:
- Cập nhật
PROXY_IP: Thay192.168.100.1bằng IP mạng LAN thực tế của máy bạn (máy đang chạy Burp Suite). - Đường dẫn thư mục (Volumes): Bạn có thể dùng biến thư mục hiện tại (PWD) để khỏi hardcode đường dẫn tuyệt đối.
PowerShell (Windows):
docker run -d --name vpn-burp --cap-add=NET_ADMIN --sysctl net.ipv4.ip_forward=1 --device=/dev/net/tun -p 1194:1194/udp -e PROXY_IP="192.168.100.1" -v "${PWD}\openvpn_data:/etc/openvpn" -v "${PWD}\output_config:/client_config" openvpn-burpGit Bash / WSL / Linux shell:
docker run -d --name vpn-burp --cap-add=NET_ADMIN --sysctl net.ipv4.ip_forward=1 --device=/dev/net/tun -p 1194:1194/udp -e PROXY_IP="192.168.100.1" -v "$(pwd)/openvpn_data:/etc/openvpn" -v "$(pwd)/output_config:/client_config" openvpn-burpNếu dùng CMD thuần (không phải PowerShell):
docker run -d --name vpn-burp --cap-add=NET_ADMIN --sysctl net.ipv4.ip_forward=1 --device=/dev/net/tun -p 1194:1194/udp -e PROXY_IP="192.168.100.1" -v "%cd%\openvpn_data:/etc/openvpn" -v "%cd%\output_config:/client_config" openvpn-burpGiải thích các cờ:
--cap-add=NET_ADMIN: Cấp quyền để cấu hình iptables.--sysctl net.ipv4.ip_forward=1: Bật tính năng định tuyến (routing) bên trong container.--device=/dev/net/tun: Map card mạng ảo TUN từ host vào container (bắt buộc để OpenVPN hoạt động).-v .../openvpn_data:/etc/openvpn: Lưu trữ dữ liệu chứng chỉ/server để không bị mất khi xóa container.-v .../output_config:/client_config: Thư mục để container xuất fileclient.ovpnra ngoài cho bạn sử dụng.
Vì chúng ta đang dùng iptables để ép luồng traffic ở tầng mạng (DNAT), Burp Suite cần được bật tính năng Invisible Proxy để biết cách xử lý các request này.
- Mở Burp Suite > Bấm vào biểu tượng bánh răng Settings ở góc phải (hoặc nhấn
Ctrl + Shift + S). - Điều hướng đến Tools > Proxy.
- Trong mục Proxy listeners, đảm bảo bạn có một listener đang chạy ở cổng
8080và IP được bind là IP mạng LAN (ví dụ192.168.100.1) hoặcAll interfaces. Chọn listener đó và bấm Edit. - Chuyển sang tab Request handling.
- Tick vào ô Support invisible proxying (enable only if needed).
- Bấm OK để lưu cấu hình. Cột Invisible của listener lúc này sẽ hiện dấu tick xanh.
- Mở thư mục
output_configtrên máy tính của bạn. - Lấy file
client.ovpnbên trong. - Chuyển file này sang thiết bị Client (Điện thoại thật, máy ảo Android, v.v.) và import vào app OpenVPN Connect.
- Bấm kết nối. Toàn bộ traffic web của thiết bị sẽ bay thẳng vào Burp Suite của bạn! (Lưu ý: Để bắt được traffic HTTPS, thiết bị client phải được cài đặt chứng chỉ PortSwigger CA từ Burp Suite vào mục Trusted Credentials)
- Lỗi
Cannot open TUN/TAP dev /dev/net/tunkhi xem log: Đảm bảo bạn đã thêm cờ--device=/dev/net/tunkhi chạy lệnhdocker run. - Lỗi
includes invalid characters for a local volume nametrên Windows: Thường do dùng sai biến theo shell.$(pwd)dùng cho Bash/WSL,${PWD}dùng cho PowerShell, còn CMD thì dùng đường dẫn tuyệt đốiC:\.... - Client đã báo connected nhưng không có mạng / Burp không bắt được request:
Kiểm tra lại xem IP điền trong
PROXY_IPcó đúng là IP mạng LAN hiện tại của máy host hay không. Nếu IP bị sai, bạn cần xóa container (docker rm -f vpn-burp), xóa fileclient.ovpncũ, sửa lại IP trong lệnhdocker runvà chạy lại.