mailing list archives
Re: HBGary planned to BLOW THE BALLS OFF OF NMAP!
From: Brandon Enright <bmenrigh () ucsd edu>
Date: Fri, 11 Mar 2011 21:59:38 +0000
-----BEGIN PGP SIGNED MESSAGE-----
On Fri, 11 Mar 2011 13:45:31 -0800
Fyodor <fyodor () insecure org> wrote:
Fellow Nmap Developers:
A serious competitive threat to Nmap's has emerged :).
From: Greg Hoglund <greg () hbgary com>
We use something called a Linear Feedback Shift Register (LFSR). This
is a mathy thing, but it's very cool. We can find source code for such
things on the net to help us write it. It's just a few lines of
code. What it does is generate a psuedo-random number sequence, but it
never repeats the same number twice. For example, we could use it to
choose the IP address or Port for a SYN packet, and it would walk the
entire range we are scanning, but it would randomize the IP/Port
combinations so we don't overload a single IP at once. It would NOT
REPEAT any IP/Port combination as it scanned. It's perfect for LOAD
BALANCING the scan over a large IP range.
The device driver uses a LFSR to scatter / load balance the scan over
an entire class B and we collect the responses as they come back. It
should be FAST AS SHIT.
This is somewhat entertaining. My modification to -iR to produce no
duplicates is the same thing but instead of using a LFSR I use a LCG +
2-round block-cipher. Somebody forgot to tell Greg that in software a
LCG is way faster than an LFSR ;-)
While I was implementing the non-repeating -iR I thought of a way to do
it for any arbitrary range of IPs efficiently, not just power-of-two
ranges like a /16.
Of course, Nmap uses a congestion-control inspired algorithm to measure
the maximum rate a host can be scanned at which should work better (in
theory) rather than just relying on statistical multiplexing.
Anyways, it's always good to get ideas from others and it might be
worthwhile to revisit the --randomize-hosts and the random port
ordering a bit to exploit PRNG tricks to get no duplicates to help
balance across hosts.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)
-----END PGP SIGNATURE-----
Sent through the nmap-dev mailing list
Archived at http://seclists.org/nmap-dev/