Nmap Development mailing list archives
Re: Remote OS detection in IPv6
From: David Fifield <david () bamsoftware com>
Date: Thu, 7 Aug 2014 20:04:11 -0700
On Tue, Jul 08, 2014 at 09:59:00PM +0200, Mathias Morbitzer wrote:
In March, I gave a presentation at Troopers14 about new ideas for Remote OS detection / OS fingerprinting in IPv6. It can be found here: https://www.troopers.de/wp-content/uploads/2013/11/TROOPERS14-Remote_OS_Detection_with_IPv6-Mathias_Morbitzer.pdf Now I would like to see some of those methods in Nmap. But before getting on it, I would like to discuss with you which methods are the most interesting to be implemented. There are some things which shouldn't be much work to implement, since Nmap already has most of the code which would be necessary. An example for this is the analysis of the IPv6 fragmentation ID sequence. All the code to detect the type of sequence (incremental, random, ...) is already there, it just needs to be integrated into the OS detection. Then there are things which are in my opinion also a good idea to implement since they do not require any additional packets to be sent. An example for this is the analysis of the hop limit field, which is in any IPv6 packet received from the target, and can allow a basic distinction between different types of OSs (Windows, Unix, etc..)
Thanks for sharing your presentation. Adding features that don't require new probes to be sent is really easy. One of our IPv6 OS integration programs, vectorize.py, has a commented list of features that are not yet implemented: https://svn.nmap.org/nmap-exp/luis/ipv6tests/vectorize.py ("Features to do.") The reason it's easy to add new features is that our IPv6 database contains complete packets (except for fields like the source and destination). We dynamically recompute the training features from the training set every time. https://svn.nmap.org/nmap-exp/luis/ipv6tests/nmap.groups What you could try, is implementing your new features in vectorize.py (and add them to the list in nmap.set), and then test their effectiveness by running the integration programs. There's a brief howto here: https://secwiki.org/w/Nmap/IPv6_OS_Integration
And then finally, there is my favorite method of this presentation, which is the fingerprinting by using ICMPv6 time exceeded messages. The thing I really like about this is that if we have for example a Windows system with an active firewall, we would still be able to determine that it's a windows system (based on the hop limit which I mentioned earlier). Furthermore, it is possible to detect if the system is running a version of windows older or newer/equal to Windows 7 based on the assignment of the fragment ID (incremental for < Windows 7, incremental by 2 for >= Windows 7). But of course, there are also a lot of other ideas in the presentation which trigger different responses from different OSs, such as playing around with the IPv6 extension headers.
I'm not sure of the best way to handle new features that require sending new probes. We'd have to decide what to do with all the existing database entries that lack the probe. But in any case, I think adding new features is likely to be a win for classification. David Fifield _______________________________________________ Sent through the dev mailing list http://nmap.org/mailman/listinfo/dev Archived at http://seclists.org/nmap-dev/
Current thread:
- Remote OS detection in IPv6 Mathias Morbitzer (Jul 08)
- Re: Remote OS detection in IPv6 David Fifield (Aug 07)
