But if you were to run rdpscan against a lager network (like /16 or /8), it would take too long to finish.
Robert Graham also has created the immensely impresive tool called masscan, which is actually able to scan the entire internet in 6 minutes (!).
Combining masscan (for finding hosts with port 3389 open) with rdpscan (to find out if the hosts found with masscan are vulnerable) would make it possible to finish scanning your entire enterprise network in a relatively short time.
But… You have to compile masscan yourself. It can be compiled on Windows using MinGW or Visual Studio.
If you, like me, feels a bit less Dev than IT Pro and uneasy about compiling for yourself ;), then here’s another solution, albeit not one that will scan as fast as masscan.
Using nmap in conjunction with rdpscan
I have created a PowerShell script, that will run a fast nmap scan of your network to find hosts with port 3389 active and then have rdpscan to scan the hosts found by nmap to see, if they are vulnerable.
It is nowhere near as fast as with masscan, but it doesn’t require you to do compiling.
And the nmap scan is optimized for performance.
I scanned a 24 bit subnet in 5 seconds.
The following rdpscan based on the nmap scan then took 45 second.
A scan of a 16 bit subnet can be done in about 6 minutes, depending on how many RDP enabled hosts are in those 65.536 IP-adresses.
But first:
All credit goes to:
Robert Graham for creating rdpscan
Rob VandenBrink, who created a PowerShell script on which I based mine, that uses the XML ouput from nmap in PowerShell.
Download nmap
Download the latest stable Windows release from: https://nmap.org/download.html
Install using defaults and make sure, that the installation path is C:\Program Files (x86)\Nmap.
Download rdpscan
Go to https://github.com/robertdavidgraham/rdpscan
Below the readme.md headline, you will find download link to the Windows Binary.
Save to C:\Temp\rdpscan-windows
Extract to C:\Temp\rdpscan-windows
(if you choose to extract to another path, remember to change the path in the last line of the script below)
Create the PowerShell script
Here is the script:
(Updated 2019-06-12 with $ErrorActionPreference = "SilentlyContinue" to make sure it also works, if that variable has been changed from the default. It also now only displays nmap output of open RDP ports)
(Update 2019-07-02: See Brian Hampson’s comment below for an extension of the script to output both hostname and IP-address. Thanks Brian!)