|
| 1 | +# WireUp - VPN Proxy Extension for Burp Suite |
| 2 | + |
| 3 | +<div align="center"> |
| 4 | + |
| 5 | +**Route Burp Suite traffic through VPN tunnels with automatic SOCKS5 proxy** |
| 6 | + |
| 7 | +[](LICENSE) |
| 8 | +[](https://portswigger.net/burp) |
| 9 | +[](https://www.docker.com/) |
| 10 | + |
| 11 | +*Created by [j0lt](https://github.com/j0lt)* |
| 12 | + |
| 13 | +</div> |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## Overview |
| 18 | + |
| 19 | +WireUp is a Burp Suite extension that enables seamless VPN integration for penetration testing and security research. It automatically creates isolated Docker containers running VPN clients with SOCKS5 proxies, allowing you to route Burp traffic through VPN tunnels without affecting your host system. |
| 20 | + |
| 21 | +### Key Features |
| 22 | + |
| 23 | +- 🔐 **Multiple VPN Support**: OpenVPN and WireGuard protocols |
| 24 | +- 🚀 **One-Click Connection**: Simple UI for connecting/disconnecting |
| 25 | +- 🐳 **Docker Isolation**: VPN runs in containers, no host configuration needed |
| 26 | +- 🔄 **Auto-Cleanup**: Automatically manages Docker resources |
| 27 | +- 📊 **Built-in Logging**: Connection status and diagnostic information |
| 28 | +- 🛡️ **Security Hardened**: Resource limits, restrictive permissions, minimal attack surface |
| 29 | +- ⚡ **Network Optimizations**: Automatic MTU/MSS handling and TCP checksum fixes |
| 30 | + |
| 31 | +## Prerequisites |
| 32 | + |
| 33 | +- **Burp Suite** (Professional or Community Edition) |
| 34 | +- **Docker Desktop** (macOS/Windows) or Docker Engine (Linux) |
| 35 | +- **Java 17+** (for compilation) |
| 36 | +- **Maven 3.6+** (for building from source) |
| 37 | + |
| 38 | +## Installation |
| 39 | + |
| 40 | +### Option 1: From Release (Recommended) |
| 41 | + |
| 42 | +1. Download the latest `wireup-1.0-SNAPSHOT.jar` from [Releases](../../releases) |
| 43 | +2. Open Burp Suite |
| 44 | +3. Navigate to **Extensions** → **Installed** |
| 45 | +4. Click **Add** |
| 46 | +5. Select the downloaded JAR file |
| 47 | +6. The **WireUp** tab will appear |
| 48 | + |
| 49 | +### Option 2: Build from Source |
| 50 | + |
| 51 | +```bash |
| 52 | +# Clone the repository |
| 53 | +git clone https://github.com/yourusername/wireup.git |
| 54 | +cd wireup |
| 55 | + |
| 56 | +# Build the extension |
| 57 | +mvn clean package |
| 58 | + |
| 59 | +# The JAR will be in target/wireup-1.0-SNAPSHOT.jar |
| 60 | +``` |
| 61 | + |
| 62 | +Then follow steps 2-6 from Option 1. |
| 63 | + |
| 64 | +## Usage |
| 65 | + |
| 66 | +### Basic Workflow |
| 67 | + |
| 68 | +1. **Obtain VPN Configuration** |
| 69 | + - OpenVPN: Get your `.ovpn` file from your VPN provider |
| 70 | + - WireGuard: Get your `.conf` file or configuration text |
| 71 | + |
| 72 | +2. **Configure WireUp** |
| 73 | + - Open Burp Suite and navigate to the **WireUp** tab |
| 74 | + - Select your VPN type (OpenVPN or WireGuard) |
| 75 | + - Paste your configuration into the text area |
| 76 | + |
| 77 | +3. **Connect** |
| 78 | + - Click **Connect to VPN** |
| 79 | + - Wait for the connection to establish (typically 5-10 seconds) |
| 80 | + - Status will show "Connected" when ready |
| 81 | + |
| 82 | +4. **Configure Burp Proxy** |
| 83 | + - Go to **Proxy** → **Settings** → **Network** |
| 84 | + - Add a new SOCKS proxy: |
| 85 | + - **Host**: `127.0.0.1` |
| 86 | + - **Port**: `1080` |
| 87 | + - Enable the proxy for upstream connections |
| 88 | + |
| 89 | +5. **Test Connection** |
| 90 | + - Browse through Burp Proxy |
| 91 | + - Traffic will now route through the VPN tunnel |
| 92 | + - Verify your IP address has changed |
| 93 | + |
| 94 | +### Advanced Configuration |
| 95 | + |
| 96 | +#### Custom DNS Servers |
| 97 | + |
| 98 | +For OpenVPN, DNS is automatically configured via the VPN server's push options. |
| 99 | + |
| 100 | +For WireGuard, DNS entries in the configuration are automatically handled (stripped and managed internally to avoid Docker conflicts). |
| 101 | + |
| 102 | +#### Connection Management |
| 103 | + |
| 104 | +- **Disconnect**: Click to stop the VPN (with confirmation dialog) |
| 105 | +- **Reconnect**: Quick reconnect without re-entering credentials |
| 106 | +- **View Logs**: Check extension output in Burp's Extensions tab |
| 107 | + |
| 108 | +## Architecture |
| 109 | + |
| 110 | +``` |
| 111 | +┌─────────────┐ SOCKS5 ┌──────────────────┐ VPN ┌─────────────┐ |
| 112 | +│ Burp Suite │ ────(1080)────→ │ Docker Container │ ──Tunnel───→ │ VPN Server │ |
| 113 | +│ │ │ - OpenVPN/WG │ │ │ |
| 114 | +│ │ │ - Dante SOCKS5 │ │ │ |
| 115 | +└─────────────┘ └──────────────────┘ └─────────────┘ |
| 116 | +``` |
| 117 | + |
| 118 | +WireUp creates an Alpine Linux container with: |
| 119 | +- VPN client (OpenVPN or WireGuard) |
| 120 | +- Dante SOCKS5 server on port 1080 |
| 121 | +- Network optimizations (MTU, checksum handling, routing) |
| 122 | +- Security restrictions (resource limits, non-root execution where possible) |
| 123 | + |
| 124 | +## Troubleshooting |
| 125 | + |
| 126 | +### Extension Won't Load |
| 127 | + |
| 128 | +**Issue**: Extension fails to load in Burp Suite |
| 129 | + |
| 130 | +**Solutions**: |
| 131 | +- Ensure Docker is running: `docker ps` |
| 132 | +- Check Java version: `java -version` (must be 17+) |
| 133 | +- Review Burp's Extensions → Errors tab for stack traces |
| 134 | + |
| 135 | +### Connection Fails |
| 136 | + |
| 137 | +**Issue**: "Connection failed" error |
| 138 | + |
| 139 | +**Solutions**: |
| 140 | +- Verify VPN configuration is valid |
| 141 | +- Check Docker has internet access |
| 142 | +- Review container logs (click "View Logs" button) |
| 143 | +- For OpenVPN: Ensure UDP port 1194 is accessible |
| 144 | +- For WireGuard: Verify the endpoint is reachable |
| 145 | + |
| 146 | +### Slow Disconnect |
| 147 | + |
| 148 | +**Issue**: Disconnect button takes time to respond |
| 149 | + |
| 150 | +**Solution**: This is expected as Docker needs to stop and remove containers. The button will show "Disconnecting..." status. A confirmation dialog now prevents accidental clicks. |
| 151 | + |
| 152 | +### SOCKS Proxy Not Working |
| 153 | + |
| 154 | +**Issue**: Burp can't connect to `127.0.0.1:1080` |
| 155 | + |
| 156 | +**Solutions**: |
| 157 | +- Verify VPN is connected (check status panel) |
| 158 | +- Ensure no other service is using port 1080 |
| 159 | +- Check firewall isn't blocking localhost connections |
| 160 | +- Try reconnecting the VPN |
| 161 | + |
| 162 | +## Security Considerations |
| 163 | + |
| 164 | +Please review [SECURITY.md](SECURITY.md) for important security information, including: |
| 165 | +- Docker container isolation |
| 166 | +- Resource limits |
| 167 | +- Credential storage best practices |
| 168 | +- Network exposure considerations |
| 169 | + |
| 170 | +## Development |
| 171 | + |
| 172 | +### Project Structure |
| 173 | + |
| 174 | +``` |
| 175 | +wireup/ |
| 176 | +├── src/main/java/com/wireup/ |
| 177 | +│ ├── WireUpExtension.java # Main extension entry point |
| 178 | +│ ├── docker/ # Docker management |
| 179 | +│ ├── vpn/ # VPN config handlers |
| 180 | +│ ├── ui/ # Burp UI components |
| 181 | +│ └── utils/ # Logging and utilities |
| 182 | +├── src/main/resources/ |
| 183 | +│ └── dockerfile/ # Docker image configuration |
| 184 | +├── pom.xml # Maven build configuration |
| 185 | +└── README.md # This file |
| 186 | +``` |
| 187 | + |
| 188 | +### Building |
| 189 | + |
| 190 | +```bash |
| 191 | +# Compile only |
| 192 | +mvn clean compile |
| 193 | + |
| 194 | +# Run tests (if any) |
| 195 | +mvn test |
| 196 | + |
| 197 | +# Package JAR |
| 198 | +mvn package |
| 199 | + |
| 200 | +# Skip tests (faster) |
| 201 | +mvn package -DskipTests |
| 202 | +``` |
| 203 | + |
| 204 | +### Contributing |
| 205 | + |
| 206 | +Contributions are welcome! Please: |
| 207 | +1. Fork the repository |
| 208 | +2. Create a feature branch |
| 209 | +3. Make your changes |
| 210 | +4. Submit a pull request |
| 211 | + |
| 212 | +## License |
| 213 | + |
| 214 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 215 | + |
| 216 | +## Credits |
| 217 | + |
| 218 | +**Created by**: [j0lt](https://github.com/j0lt-github) |
| 219 | + |
| 220 | +Special thanks to: |
| 221 | +- [PortSwigger](https://portswigger.net/) for Burp Suite |
| 222 | +- [docker-java](https://github.com/docker-java/docker-java) library |
| 223 | +- [kylemanna/openvpn](https://github.com/kylemanna/docker-openvpn) Docker image |
| 224 | +- [Dante SOCKS server](https://www.inet.no/dante/) |
| 225 | + |
| 226 | +## Disclaimer |
| 227 | + |
| 228 | +This tool is designed for authorized security testing and research purposes only. Users are responsible for complying with all applicable laws and regulations. The author assumes no liability for misuse or damage caused by this software. |
| 229 | + |
| 230 | +--- |
| 231 | + |
| 232 | +<div align="center"> |
| 233 | +Made with ❤️ by j0lt for the security community |
| 234 | +</div> |
0 commit comments