[Carolyn Meinel wrote this "press release" and had it posted to www.infowar.com .. Below that is Fyodor's response showing she doesn't have the first clue. Below that is a bit more followup.] 8/16/98 Hackers are singing the praises of Fyodor's Nmap port scanner. Report on Nmap for Infowar.com Hackers are singing the praises of Fyodor's Nmap port scanner. In particular, many of them have been excited by its half-open (stealth) mode. Well, here's a dissenting consumer report. 1) Nmap is inaccurate in fin scan (stealth or half-open) mode. It sends to each port on the victim computer a single packet with the fin flag set. If it gets back a packet with the rst flag set, it reports the port as closed. If it doesn't get rst back, it reports it as open. Of course a dropped packet can also account for the missing rst. As a result, on a noisy connection it shows many ports as open that aren't. Try fin scanning a nonexistent host and you will see all ports reported open. On a theoretical basis, any scanner that sends only a single packet to probe each port is vulnerable to false results. However, it is a simple thought experiment to conceive of a half-open port scanner whose probability of accuracy approaches arbitrarily close to 1. 2) Half-open port scans are only stealthy against a naive sysadmin. We tried it out with EtherPeek 3.5 on a Mac G3 listening. EtherPeek not only detected the fin scan; it also displayed the originating IP address. On a theoretical basis, the half-open connection technique is impossible to make stealthy. The attacker must get back data from the victim computer. This means a valid IP address must be shown in the packets with which it probes, and that the attacker must at some point access the host computer belonging to that valid IP address to get Nmap's results. Thanks to BOFH, Wizard, Vasendek, Apple Computer and AG Group (http://www.aggroup.com, creator of EtherPeek) for working together in the experiments whose results are presented here. And, yes, we expect the Happy Hacker Web site (http://www.happyhacker.org) and Wargame (try out your wiles on koan.happyhacker.org and smurfett.happyhacker.org) will be back up shortly. For more Meinel computer security information, buy the Happy Hacker book at the Infowar Bookstore. Warning: the first edition is almost sold out, and the second edition won't get back from the printer until the end of Sept. Carolyn Meinel M/B Research -- The Technology Brokers http://techbroker.com =-=-=-= Fyodor's Response =-=-=-= From fyodor@dhp.com Thu Sep 10 03:05:40 1998 From: FyodorTo: cmeinal@techbroker.com Date: Thu, 10 Sep 1998 02:27:10 -0400 (EDT) Subject: NMAP -----BEGIN PGP SIGNED MESSAGE----- Carolyn, Someone recently sent me a copy of your "consumer report" on nmap posted to infowar.com. This is, without doubt, one your worst port-scanning articles since your claim last year that scanners can be used to locate serial, parallel, and monitor ports. And that is saying a lot! Lets take a look at what you wrote: >1) Nmap is inaccurate in fin scan (stealth or half-open) mode. ACK! You just proved that you haven't read the documentation. FIN scanning is VERY different from half-open scanning. In the latter you complete the SYN and SYN-ACK stages of the TCP connection establishment phase. At this "half-way" point, you terminate the session with a RST rather than going "all the way" to the established state by sending an ACK. The FIN scan is completely different. If you read the documentation (or just the help screen that pops up when you run w/o arguments), you will notice that nmap lets you pick between half-open (-S) and FIN (-U); you obviously wouldn't have a choice if they were the same. > It sends to each port on the victim computer a single packet with Now you have proved you have never even RUN the program (or at least you weren't paying attention). Your main critical point seems to be that nmap only sends one packet. This is not true! Read the code and notice (nmap.c line 1820): if (++trynum[i] >= retries) { if (o.verbose || o.debugging) printf("Good port %d detected by fin_scan!\n", portno[i]); addport(&target->ports, portno[i], IPPROTO_TCP, NULL); As you can see (or you could see if you were a C programmer), nmap only counts the port open after failing to get a response 'retries' times. The default is 2. > Try fin scanning a nonexistent host and you will see all ports > reported open. No. By default nmap will ping the host first and report NO PORTS open unless it recieves an echo reply from the target host. A down host will NOT send a ping packet back. Again, run the program before making assumptions. http://www.insecure.org/nmap . > On a theoretical basis, any scanner that sends only a single packet to > probe each port is vulnerable to false results. You are making this up. Where the hell did this come up with this "only a single packet" crap? Even if you don't know C, haven't you used tcpdump to watch what happens during a FIN scan? > However, it is a > simple thought experiment to conceive of a half-open port scanner > whose probability of accuracy approaches arbitrarily close to 1. First of all, stop saying half-open when you mean FIN scan. I suppose the answer to your "thought experiment" is to retry a large number of times before declaring the port open? This is why I added a retry variable rather than hard coding it! If your connection is this whacked, set retries to 10 and see how many misdiagnosed ports you get. >2) Half-open port scans are only stealthy against a naive sysadmin. You should talk considering you have proven that you don't even know what a half-open scan is! > On a theoretical basis, the half-open connection technique is > impossible to make stealthy. The attacker must get back data from the > victim computer. This means a valid IP address must be shown in the > packets with which it probes, and that the attacker must at some point > access the host computer belonging to that valid IP address to get > Nmap's results. Stop pretending you are an expert or that you even know what you are talking about. In fact, you are absolutely *wrong*. There are several obvious ways to get around this problem. No, I do not have time to educate you about them. One way has already been implemented in the current beta release of nmap. Carolyn, I used to wonder why the entire hacking community seems to hate your guts. Now it is clear. You spout off complete BS without any clue of what you are talking about and you also specifically target beginners on your mailing lists because they may not know enough yet to see through your mindless technoblather. By indoctrinating them with your incorrect guesses (portrayed as facts) about how the Internet works, you will undoutedly cause them enourmous grief when they actually try to apply some of your "techniques" in the REAL WORLD. Cheers, Fyodor - -- Fyodor 'finger fyodor@dhp.com | pgp -fka' Frustrated by firewalls? Try nmap: http://www.dhp.com/~fyodor/nmap In a free and open marketplace, it would be surprising to have such an obviously flawed standard generate much enthusiasm outside of the criminal community. --Mitch Stone on Microsoft ActiveX -----BEGIN PGP SIGNATURE----- Version: 2.6.3a Charset: noconv iQCVAwUBNfdxQc4dPqJTWH2VAQF7rgP/e3KOaAAVa7+QqZIdjU7J/4pDaDf2Vtxa YAfYjlCjmDWesgdFsCQSeIKZ8EcVsU44tvwg5UpbYIoKnLYn74gPkwndS/Lc2NGu VFuCJny6DAVi7fzTqjqfAYLnCVvHEzzAFtNV99ZmMvvTnKrbsvGPYxOC0UXNiQtq 0nMRunzJbaw= =9l+x -----END PGP SIGNATURE----- =-=-= From fyodor@dhp.com Sat Sep 12 01:18:50 1998 From: Fyodor To: cmeinel@techbroker.com Date: Sat, 12 Sep 1998 01:07:18 -0400 (EDT) Subject: Re: NMAP -----BEGIN PGP SIGNED MESSAGE----- On Fri, 11 Sep 1998, Carolyn Meinel wrote: > Sorry about the single packet stuff, I will have to correct > that. This doesn't explain where you came up with the single packet stuff. Do you admit to just making it up? > Many other people define half-open as meaning a connection in which the > three way handshake is not completed. So I go with that > definition. I have been distributing a popular port scanner for more than a year and I wrote a port scanning article in Phrack51. Yet I have never seen __anyone__ except you refer to the FIN scan as "half-open". Being "half-open" implies that you have at least __started__ the connection establishment (ie SYN scan). The FIN scan does not in any way perform any portion of TCP connection establishment, so calling it "half-open" is absurd. If "many other people" do call the FIN scan half-open, they "learned" it from your silly mailing list. I claimed earlier that your mailing list confuses people and points them in the wront direction -- you have just proven my case!!! > The important issue is that many people believe that nmap allows > stealth port scanning, when it does not. Why do you always assume that anything you cannot do is impossible? Even nmap 1.51 allows for extreme stealthiness, but you need to read the directions and think a little bit. - -- Fyodor 'finger fyodor@dhp.com | pgp -fka' Frustrated by firewalls? Try nmap: http://www.dhp.com/~fyodor/nmap In a free and open marketplace, it would be surprising to have such an obviously flawed standard generate much enthusiasm outside of the criminal community. --Mitch Stone on Microsoft ActiveX -----BEGIN PGP SIGNATURE----- Version: 2.6.3a Charset: noconv iQCVAwUBNfoBic4dPqJTWH2VAQHw9AP/bAXWXdm5xkewPgNj0paxMfgvtYwpGhPW PV+LPrRO49mFV92y2eeBi413IPtYAqBGF0jNXN0UTji3skgzMgKOLeXAHUEXwW6c xNSJTf+dwVC0wix7O5D/OxkcE/wzQ1dP9S4ZpnJFtRXfB/0hBcz/eekPdSg00aRP Dc1t99DIhSo= =6vxd -----END PGP SIGNATURE-----