| Method | Windows | Linux | Download | Upload | Network Needed? | Notes |
|---|---|---|---|---|---|---|
| Base64 + certutil | ✔ | — | ✔ | ✔* | No | Clipboard-only; encode/decode |
| Base64 (Linux) | — | ✔ | ✔ | ✔ | No | Offline text transfer |
| certutil -verifyctl | ✔ | — | ✔ | ❌ | Yes | Modern + reliable download |
| certutil -urlcache | ✔ | — | ✔ | ❌ | Yes | Legacy; sometimes blocked |
| bitsadmin | ✔ | — | ✔ | ❌ | Yes | Download only |
| Invoke-WebRequest | ✔ | — | ✔ | ✔ | Yes | Full HTTP client |
| IEX DownloadString | ✔ | — | In-Mem | ❌ | Yes | In-memory execution |
| wget | ✔* | ✔ | ✔ | ✔ | Yes | Default on Linux |
| curl | ✔ | ✔ | ✔ | ✔ | Yes | Universal HTTP |
| python urllib | ✔ | ✔ | ✔ | ❌ | Yes | Requires Python |
| PHP download | ✔ | ✔ | ✔ | ❌ | Yes | Requires PHP |
| Ruby Net::HTTP | ✔ | ✔ | ✔ | ❌ | Yes | Requires Ruby |
| /dev/tcp | — | ✔ | ✔ | ❌ | Yes | Raw TCP |
| python http.server | ✔ | ✔ | Server | ✔ | Yes | Simple download server |
| php -S | ✔ | ✔ | Server | ✔ | Yes | PHP HTTP server |
| ruby httpd | ✔ | ✔ | Server | ✔ | Yes | Ruby server |
| uploadserver (HTTPS) | ✔ | ✔ | ❌ | ✔ | Yes | Easiest upload path |
| curl -X POST upload | ✔ | ✔ | ❌ | ✔ | Yes | Works with uploadserver |
| SMB (impacket) | ✔ | ✔ | ✔ | ✔ | Yes | Fast file moves |
| net use \\share | ✔ | — | ✔ | ✔ | Yes | Windows SMB |
| nc / ncat | ✔ | ✔ | ✔ | ✔ | Yes | Raw TCP |
| FTP server | ✔ | ✔ | ✔ | ✔ | Yes | Simple; built-in Windows FTP client |
| RDP Clipboard | ✔ | — | ✔ | ✔ | Optional | Clipboard channel |
| RDP Drive Share | ✔ | — | ✔ | ✔ | Optional | \\tsclient\share |
Best for high-restriction environments (no network):
- Base64 + certutil
- Base64 (Linux)
Best for pure Windows workflow:
- Invoke-WebRequest (download + upload)
- IEX DownloadString (in-memory)
- Certutil -verifyctl (download)
- SMB (fast & simple)
- Bitsadmin (download-only)
Best universal cross-platform downloaders:
- curl
- wget
- python urllib
Best direct peer-to-peer transfer:
- Netcat / Ncat
- SMB copy
- FTP (put/get)
Best for uploading FROM target → attacker:
- curl -X POST + uploadserver
- FTP put
- SMB writable share
- RDP share
- Netcat
Best when everything is locked down but clipboard works:
- certutil Base64
- Linux base64