Responder is an awesome tool that was created by Laurent Gaffie and can be extremely effective to use on pen tests. I recently had the opportunity to use Responder, and it returned valid domain credentials within about 10 minutes. I wanted to write this post as an opportunity to document what worked for myself. With that said, Larry Spohn also wrote an excellent blog post on essentially the same attack which can be viewed here, so be sure to go and check that post out as well!
Responder can return results two different ways. We can try to receive the NTLM Challenge hash(es) from workstations, or Responder can return credentials via basic authentication. Ideally, the easiest for an attacker to work with will be basic auth based authentication due to the data being easily reversible since it is base64 encoded.
The specific vulnerability that is being attacked in this situation is that workstations will be configured to automatically detect proxy settings for the network they are operating on by default. When a workstation attempts to find the proxy settings needed, it does so by requesting for “WPAD” initially over DHCP. If the workstation doesn’t receive a response, it will then make multiple DNS requests. If DNS also doesn’t return any results, the workstation will finally fall back to requesting over NetBIOS (source). If configured to do so, Responder will can act as a rogue wpad proxy. Responder can then serve a PAC file (configured as you see fit) and attempt to proxy all connections through itself.
One trick Responder can do (if configured to do so) is to respond to http requests from workstations that are attempting to access local resources (such as http://intranetsite). The nifty aspect to this trick is to the user, the pop-up will appear as a normal looking authentication box that is prompting the user to enter their credentials. Once entered, the credentials are transferred to the attacker, base64 decoded, and displayed to the attacker. So, that’s the background to this attack, how about lets check it out?
First, we’re going to need to configure how Responder is going to operate on the network. We’re going to need to pass it a couple command line options:
- -i <IP Address or network interface> – The IP address to listen on
- –wpad – Tells Responder to start a “rogue” wpad proxy server
- -b – Tells Responder to return Basic Authentication information vs. NTLM
- -F – Tells Responder to force NTLM or Basic authentication from any machine attempting to access the wpad file
- -f – Tells Responder to fingerprint the host
As you can see, Responder is pretty simple to setup and get up and running. Once the previous command has been run, you should see something similar to the following:
This is roughly what Responder is going to look like once it is up and running. For now, you can sit and wait for information to start coming in. A good time to utilize Responder is when you’re first getting started on an assessment. Responder can be one of the first tools you get running, and you can just leave it be and check back in on the results later.
Once Responder has been running for a while, check out if there’s been any juicy information returned to us! Below is a what your output will likely look similar to:
What’s awesome to see here, is the “HTTP-User & Password:” line! We can see the username “testuser” and password “badpassword” were returned to us, so now we have the first set of user credentials! From a user’s perspective, this is what the popup looked like on a Win 8.1 desktop:
This is a fairly typical screen and users are *LIKELY* going to enter their account information without a second thought.
At any point, you can stop running Responder, and it will have logged all credential information into a file for viewing. In my case, this is what I have on my attacker platform:
If the same user were to keep entering their username and password, there would be duplicate (or more) entries of the credentials within the loot file.
Responder is an extremely powerful tool that can be used to quickly grab credentials when plugged into a network segment that users are also operating on. I highly recommend using it as it can be a great way to get an initial foothold into your target network.