At a basic level, tools like *-Exploit-Suggester are probably best seen as a bit of a Hail Mary, same with the enum scripts/binaries that are available.
If you are just running the scripts they return, you really will have to just try them all.
Often they generate a lot of noise you need to fine tune. Wherever possible it is better to do a more targeted, manual, assessment so you can get to the vulnerability you want to use, rather than have every possible suggestion.
As for specific questions (In a different order though)
And why did windows-exploit-suggester give so many false positives??
Because it is making suggestions. It is saying “this exploit might be possible” based on whatever the search string is using. It wont test them for you to see if they work.
Often it is as simple as saying “version X of software is running, here are the vulnerabilities for that version” - some will be patched, some will be down to configuration choices, some will be protected by compensating controls, etc.
And…can you ever be sure these are all false positives???
No.
So my question is, what is your methodology in this situation?
Look at the results and decide which one is most likely to work, then work through the list to the one which looks least likely. There isn’t a magic short cut.
Sometimes you can discount some suggestions because they clearly wont work - for example they have a dependency you cant meet.
Using @0xdf’s great walkthrough as an example. Early on, the Searchsploit returns:
Microsoft IIS 4.0/5.0/6.0 - Internal IP Address/Internal Network Name Disclosure | windows/remote/21057.txt
Microsoft IIS 5.0/6.0 FTP Server (Windows 2000) - Remote Stack Overflow | windows/remote/9541.pl
Microsoft IIS 5.0/6.0 FTP Server - Stack Exhaustion Denial of Service | windows/dos/9587.txt
Microsoft IIS 6.0 - '/AUX / '.aspx' Remote Denial of Service | windows/dos/3965.pl
Microsoft IIS 6.0 - ASP Stack Overflow Stack Exhaustion (Denial of Service) (MS10-065) | windows/dos/15167.txt
Microsoft IIS 6.0 - WebDAV 'ScStoragePathFromUrl' Remote Buffer Overflow | windows/remote/41738.py
Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (1) | windows/remote/8704.txt
Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (2) | windows/remote/8806.pl
Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (Patch) | windows/remote/8754.patch
Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (PHP) | windows/remote/8765.php
Microsoft IIS 6.0/7.5 (+ PHP) - Multiple Vulnerabilities | windows/remote/19033.txt
You can probably eliminate the three DOS attacks as out of scope, the internal address/name disclosure as not helpful, which leaves 7. You might decide the FTP one isn’t relevant because we only have port 80 open.
This leaves the WebDAV attacks. Next, you could have a quick read of the exploit to see which is likely to be useful.
Sometimes you will need to read them all, and the links, to have an idea of what will work - but in the long term this is better than just working through the list, trying the exploits and hoping something will work. Apart from anything else, you need to know if it doesn’t work, why it didn’t work.
What if you didn’t see the churrasco route, wouldn’t the only option be to try harder by climbing down that rabbit hole a second time looking for something other than rabbits??
Well, what you are really asking is if you don’t find the correct route what options do you have? And really the answer is to just keep trying or give up.
If it is a CTF and you know there is going to be a vulnerability, then it is probably best to keep trying because there is a way in. Going back to @0xdf, there is a fairly good explanation of how the massive list is whittled down.
This is why people get better with practice. When you’ve done a lot of windows boxes, you will be used to the Potato exploits, although admittedly you’d need to do really old ones for Churrasco to spring to mind early on. You can’t shortcut experience.
If it is a real-world pentest, then it is slightly different in that you eventually run out of time so you have to decide early on when you should decide “it cant be done” and move on.
tl;dr - practice really helps because there isn’t a way to automate the detection well enough that you wont have a lot of false positives.