DNS-Shell is an interactive Shell over DNS channel
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore Initial commit Oct 5, 2016
DNS-shell.py Initial video Oct 5, 2016
README.md Update README.md Oct 5, 2016



DNS-Shell is an interactive Shell over DNS channel. The server is Python based and can run on any operating system that has python installed, the payload is an encoded PowerShell command.

Understanding DNS-Shell

The Payload is generated when the sever script is invoked and it simply utilizes nslookup to perform the queries and query the server for new commands the server then listens on port 53 for incoming communications, once payload is executed on the target machine the server will spawn an interactive shell.

Once the channel is established the payload will continously query the server for commands if a new command is entered, it will execute it and return the result back to the server.

Using DNS-Shell

Running DNS-Shell is relatively simple

DNS-Shell supports two mode of operations direct and recursive modes:

  • Perform a git clone from our DNS-shell Github page
  • DNS-Shell direct mode: sudo python DNS-Shell.py -l -d [Server IP]
  • DNS-Shell recursive mode: sudo python DNS-Shell.py -l -r [Domain]