{"id":13539502,"url":"https://github.com/audibleblink/doxycannon","last_synced_at":"2025-08-21T07:33:09.799Z","repository":{"id":47513564,"uuid":"127354827","full_name":"audibleblink/doxycannon","owner":"audibleblink","description":"A poorman's proxycannon and botnet, using docker, ovpn files, tor nodes, and dante socks5 proxies","archived":false,"fork":false,"pushed_at":"2023-03-03T19:41:39.000Z","size":57,"stargazers_count":131,"open_issues_count":2,"forks_count":62,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-12-10T03:25:20.233Z","etag":null,"topics":["botnet","docker","openvpn","pentest","proxy","proxychains","redteam","tor"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/audibleblink.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"audibleblink"}},"created_at":"2018-03-29T22:43:22.000Z","updated_at":"2024-10-04T15:26:02.000Z","dependencies_parsed_at":"2024-01-07T22:49:42.151Z","dependency_job_id":"ac10ce98-aabc-44d7-9684-cc795c4bcc8b","html_url":"https://github.com/audibleblink/doxycannon","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fdoxycannon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fdoxycannon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fdoxycannon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fdoxycannon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/audibleblink","download_url":"https://codeload.github.com/audibleblink/doxycannon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230501172,"owners_count":18236061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["botnet","docker","openvpn","pentest","proxy","proxychains","redteam","tor"],"created_at":"2024-08-01T09:01:26.802Z","updated_at":"2024-12-19T21:09:28.566Z","avatar_url":"https://github.com/audibleblink.png","language":"Python","funding_links":["https://github.com/sponsors/audibleblink"],"categories":["\u003ca id=\"1233584261c0cd5224b6e90a98cc9a94\"\u003e\u003c/a\u003e渗透\u0026\u0026offensive\u0026\u0026渗透框架\u0026\u0026后渗透框架","\u003ca id=\"7cf7e8a30b73997985f20698eaf6b0c9\"\u003e\u003c/a\u003eOpenVPN","\u003ca id=\"5dd93fbc2f2ebc8d98672b2d95782af3\"\u003e\u003c/a\u003e工具","\u003ca id=\"0f1ed20665c333e6230506e95b893575\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"39e9a0fe929fffe5721f7d7bb2dae547\"\u003e\u003c/a\u003eBurp","\u003ca id=\"8ea8f890cf767c3801b5e7951fca3570\"\u003e\u003c/a\u003e公网访问局域网","\u003ca id=\"285c52a4e04dd2f86646c8e1235c9332\"\u003e\u003c/a\u003e工具"],"readme":"# doxycannon\n\n[![CodeFactor](https://www.codefactor.io/repository/github/audibleblink/doxycannon/badge)](https://www.codefactor.io/repository/github/audibleblink/doxycannon)\n\nDoxycannon uses docker to create multiple socks proxies where the upstream\ninternet connections are either VPN connections or Tor nodes\n\nIn VPN mode, it takes a pool of OpenVPN files and creates a Docker container for\neach one. After a successful VPN connection, each container spawns a SOCKS5\nproxy server and binds it to a port on the Docker host. \n\nIn Tor mode, containers initiate a connection to the Tor network. \n\nBoth VPN and Tor nodes can be rotated through, giving you a new egress IP with each request.\n\nCombined with tools like Burp suite or proxychains, this creates your very own (small) private \nbotnet on the cheap.\n\n[Password Spraying Blog Post Using DoxyCannon](https://sec.alexflor.es/post/password_spraying_with_doxycannon/)\n\n## Prerequisites\n\nIf using VPN mode, you'll need a VPN subscription to a provider that distributes `*.ovpn` files\n\n- Install the required pip modules:\n  ```sh\n  pip install -r requirements.txt\n  ```\n\n- Ensure docker is installed and enabled. Refer to the\n  [Wiki](../../wiki/installing-docker) for installation instructions on\n  Kali/Debian\n\n- `proxychains4` is required for interactive mode\n\n## Setup\n- Create a `NAME.txt` file with your ovpn credentials in `VPN`. The format is:\n  ```txt\n  username\n  password\n  ```\n- Fill the VPN folder with `*.ovpn` files and ensure that the `auth-user-pass`\n  directive in your `./VPN/*.ovpn` files says `auth-user-pass NAME.txt`\n   - Check out [this wiki section](../../wiki#getting-started-with-vpn-providers)\n     for installation instructions for individual VPN providers\n- Within the VPN folder, you may divide/organize your VPN file into subdirectories\n     and use the `--dir` flag with the `--up` or `--single` commands to only use \n     those configs\n\n     ```sh\n     mkdir -p VPN/US\n     mv US.opvn auth-us.txt VPN/US\n     doxycannon vpn --dir VPN/US --up\n\n     mkdir -p VPN/FR\n     mv FR.opvn auth-fr.txt VPN/FR\n     doxycannon vpn --dir VPN/FR --up\n     ```\n\n- If `--dir` is equal to `VPN`, a container will be launched for each `ovpn` file inside the folder. Use `--single` to have HAproxy load-balance between all VPNs.\n    ```sh\n     doxycannon vpn --dir VPN --up\n     doxycannon vpn --dir VPN --single # Launch HAproxy to load balance\n     ```\n\n- `--single` does not stop proxy containers when it quits, it only stops HAproxy. Use `--down` to bring them down.\n\n- Alternatively, use the `tor` subcommand to just spin up tor nodes\n\n    ```sh\n    doxycannon tor --nodes 7 --single\n    ```\n\n## Usage\n_note_: Before 14 May 21, versions of [rofl0r/proxychains-ng](https://github.com/rofl0r/proxychains-ng) use a \nsecond-based seed for the PRNG that determines random proxy selection. Be sure to use a version based on or \nafter this [commit](https://github.com/rofl0r/proxychains-ng/commit/092d7042e092a033ac0c33a238927050c2cc7de0)\n\n\n### One-off, random commands\nWhile your containers are up, you can use proxychains-ng to issue commands through\nrandom proxies\n\n```sh\nproxychains4 -q curl -s ipconfig.io/json\nproxychains4 -q hydra -L users.txt -p Winter2020 manager.example.com -t 8 ssh\n```\n\n### GUI Tools\n\nUse the `--single` flag to create a proxy rotator.\n\n```sh\n❯❯ ./doxycannon.py [vpn|tor] --single\n[+] Writing HAProxy configuration\n[*] Image doxyproxy built.\n[*] Staring single-port mode...\n[*] Proxy rotator listening on port 1337. Ctrl-c to quit\n^C\n[*] doxyproxy was issued a stop command\n[*] Your proxies are still running.\n```\n\nTo see what's happening, checkout out the [haproxy](haproxy) folder.  Essentially, the tool builds\na layer 4 load-balancer between all the VPNs. This allows rotatation of proxies through a single\nport. One can then point browsers or BURPSuite at it and have every request use a\ndifferent VPN.\n\n### Specific SOCKS proxies\n\nExample: To make a request through Japan, use `docker ps` and find the local\nport to which the Japanese VPN is bound.\n\nConfigure your tool to use that port:\n\n```sh\ncurl --socks5 localhost:50xx ipconfig.io/json\n```\n\n### Interactive\nOnce you've started your containers, run the utility with\nthe `--interactive` flag to get a bash session where all network traffic is\nredirected through proxychains4\n\n```sh\n./doxycannon.py --interactive\n```\n\n\n### Credit\n[pry0cc](https://github.com/pry0cc/ProxyDock) for the idea\n\nThis was originally a fork of pry0cc's ProxyDock. It's been modified to an\nextent where less than 1% of the original code remains.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudibleblink%2Fdoxycannon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faudibleblink%2Fdoxycannon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudibleblink%2Fdoxycannon/lists"}