mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 12:41:29 +00:00
updates from chat w/David. FC tasks, some NSE tasks, and note some tasks which we actually finished a while ago
This commit is contained in:
216
todo/nmap.txt
216
todo/nmap.txt
@@ -26,6 +26,74 @@ o Add CPE entries to OS fingerpting DB entries which still lack them
|
|||||||
- As of 3/21/12, it seems that we have entries for 2,601 of the 3,572
|
- As of 3/21/12, it seems that we have entries for 2,601 of the 3,572
|
||||||
fingerprints.
|
fingerprints.
|
||||||
|
|
||||||
|
o FEATURE CREEPERS! We have two talented GSoC students for summer
|
||||||
|
2012. Here are some ideas that they could do, though anyone else is
|
||||||
|
welcome to take a stab at them too:
|
||||||
|
o Solve "spurious closed port detection" issue discovered by David:
|
||||||
|
http://seclists.org/nmap-dev/2012/q1/62 . So we need to figure
|
||||||
|
out what is going on here and then how to fix it. Note that this
|
||||||
|
doesn't seem to happen when you do ICMP host discovery first (-PE),
|
||||||
|
so it probably relates to the ACK packet that Nmap sends to port 80
|
||||||
|
on the target by default. [James and Fyodor?]
|
||||||
|
o We should probably remove the intl.dll mv command from
|
||||||
|
zenmap/install_scripts/windows/copy_and_compile.bat for the reasons
|
||||||
|
described at http://seclists.org/nmap-dev/2012/q1/430. [Sean and David?]
|
||||||
|
o We should document Ron's sample script
|
||||||
|
(http://nmap.org/svn/docs/sample-script.nse) in docs/scripting.xml
|
||||||
|
so that new script writers know about it. [James and Fyodor?]
|
||||||
|
o Finish sv-tidy - a program to canonicalize and tidy nmap-service-probes.
|
||||||
|
o Check for the same reference (like $1) being used in unrelated fields
|
||||||
|
(where related fields are the pairs (p, cpe:), (v, cpe:), (i, cpe:),
|
||||||
|
(o, cpe:)).
|
||||||
|
For example if we have v/$1/ h/$1/ it is a bug.
|
||||||
|
o Check for e.g. i/French/ without :fr in cpe:/a, and vice versa.
|
||||||
|
o Check a list of common product names that should only appear in p//,
|
||||||
|
not in i//. We still have entries that are like this:
|
||||||
|
p/Foobar 2000 ADSL router/ i/micro_httpd web server/
|
||||||
|
that should rather be written this way:
|
||||||
|
p/micro_httpd/ i/Foobar 2000 ADSL router/
|
||||||
|
[Sean and David?]
|
||||||
|
o Investigate increasing FD_SETSIZE on Windows to allow us to
|
||||||
|
multiplex more sockets. See Henri's email:
|
||||||
|
http://seclists.org/nmap-dev/2012/q1/267 [James and Fyodor?]
|
||||||
|
o Add IPv6 subnet/pattern support like we offer for IPv4.
|
||||||
|
o Obviously we can't go scanning a /48 in IPv6, but small subnets
|
||||||
|
do make sense in some cases. For example, the VPS hosting
|
||||||
|
company Linode assigns only one IPv6 address per user (unless
|
||||||
|
they pay) and you can find many Linode machines by scanning
|
||||||
|
certain /112's. And patterns might be useful because people
|
||||||
|
assigned /64's might still put their machines at ::1, ::2, etc.
|
||||||
|
o David says: "We need to design a new way to iterate over host
|
||||||
|
specifications (i.e., different than nexthost). Because the new
|
||||||
|
host discovery code is sometimes going to want whole netblocks
|
||||||
|
and sometimes individual hosts. So I'm thinking of a two-stage
|
||||||
|
model, where the iterator will received (parsed) specifications
|
||||||
|
like AAAA::1/48, and then it can decide whether to further
|
||||||
|
iterate that into individual addresses, or pass the block off
|
||||||
|
to some specialized discovery routine."
|
||||||
|
[Sean and David?]
|
||||||
|
o Investigate ways to limit Winpcap privileges so that only
|
||||||
|
administrative users or a certain accounts can sniff. Maybe there
|
||||||
|
is a solution people use for Wireshark or does it always cause
|
||||||
|
this issue (allowing any user to sniff the network) when it is
|
||||||
|
installed? - CACE says they will add a feature to do this. See
|
||||||
|
this thread: http://seclists.org/nmap-dev/2010/q3/826
|
||||||
|
[ This might be a good one for Sean or James if they feel that
|
||||||
|
they have the low-level Windows driver programming experience.
|
||||||
|
The idea is to produce a patch that we can then try to convince
|
||||||
|
the WinPcap folks to apply ]
|
||||||
|
|
||||||
|
o NSE WORK (potential work for the NSE GSoC folks -- note that this is
|
||||||
|
mostly infrastructure because script ideas are generally put on the
|
||||||
|
script ideas page instead: https://secwiki.org/w/Nmap_Script_Ideas)
|
||||||
|
o Change the interface of nmap.send_ip to take an explicit
|
||||||
|
destination address. It currently extracts the destination from
|
||||||
|
the packet buffer, which does not have enough information to
|
||||||
|
reconstruct link-local addresses. See r26621 for a similar change
|
||||||
|
that was made to Nmap internals.
|
||||||
|
o Review NSE-based port scanning and RST idle scan.
|
||||||
|
http://seclists.org/nmap-dev/2011/q2/307. [Henri and Hani?]
|
||||||
|
|
||||||
o Revive the Nmap Public Source License project (need to find an open
|
o Revive the Nmap Public Source License project (need to find an open
|
||||||
source attorney to review it). http://nmap.org/npsl/
|
source attorney to review it). http://nmap.org/npsl/
|
||||||
o Also take close look at Mozilla's license modernization project:
|
o Also take close look at Mozilla's license modernization project:
|
||||||
@@ -42,23 +110,6 @@ o Update more web content in real time (or near real-time, or at least
|
|||||||
o Maybe Nmap book building
|
o Maybe Nmap book building
|
||||||
o Maybe the generated files in nmap.org/data/
|
o Maybe the generated files in nmap.org/data/
|
||||||
|
|
||||||
o We should probably remove the intl.dll mv command from
|
|
||||||
zenmap/install_scripts/windows/copy_and_compile.bat for the reasons
|
|
||||||
described at http://seclists.org/nmap-dev/2012/q1/430.
|
|
||||||
|
|
||||||
o [NSE] host.os should not just be a list of strings which can contain
|
|
||||||
human-readible strings and/or CPE info. It should probably be list
|
|
||||||
of host.os tables which can contain:
|
|
||||||
host.os[].name <-- human readible name
|
|
||||||
host.os[].class[].vendor
|
|
||||||
host.os[].class[].osfamily
|
|
||||||
host.os[].class[].osgen
|
|
||||||
host.os[].class[].devicetype
|
|
||||||
host.os[].class[].cpe[] <-- array of cpe:/ strings
|
|
||||||
So host.os[1].class[1].cpe[1] is the first CPE entry for the first
|
|
||||||
classification of the first OS match for the target system.
|
|
||||||
The host.os entry docs/scripting.xml would have to be updated too.
|
|
||||||
|
|
||||||
o Implement some improvements to dns-ip6-arpa.nse, as describe at
|
o Implement some improvements to dns-ip6-arpa.nse, as describe at
|
||||||
http://seclists.org/nmap-dev/2012/q2/45.
|
http://seclists.org/nmap-dev/2012/q2/45.
|
||||||
- Also consider a move to "fire and forget" logic. Just blast out
|
- Also consider a move to "fire and forget" logic. Just blast out
|
||||||
@@ -92,20 +143,6 @@ o Consider making a version of Nmap for Apple's official Mac App
|
|||||||
able to request all the permissions it needs? Ignoring the
|
able to request all the permissions it needs? Ignoring the
|
||||||
technical challenges for the moment, what will users prefer?
|
technical challenges for the moment, what will users prefer?
|
||||||
|
|
||||||
o Solve "spurious closed port detection" issue discovered by David:
|
|
||||||
http://seclists.org/nmap-dev/2012/q1/62
|
|
||||||
|
|
||||||
o Investigate increasing FD_SETSIZE on Windows to allow us to
|
|
||||||
multiplex more sockets. See Henri's email:
|
|
||||||
http://seclists.org/nmap-dev/2012/q1/267
|
|
||||||
|
|
||||||
o Investigate ways to limit Winpcap privileges so that only
|
|
||||||
administrative users or a certain accounts can sniff. Maybe there
|
|
||||||
is a solution people use for Wireshark or does it always cause this
|
|
||||||
issue (allowing any user to sniff the network) when it is installed?
|
|
||||||
- CACE says they will add a feature to do this. See this thread:
|
|
||||||
http://seclists.org/nmap-dev/2010/q3/826
|
|
||||||
|
|
||||||
o Clean up the Nmap repo to remove some bloat we've allowed to creep
|
o Clean up the Nmap repo to remove some bloat we've allowed to creep
|
||||||
in. Should do a more thorough search, but for now here are two
|
in. Should do a more thorough search, but for now here are two
|
||||||
obvious candidates:
|
obvious candidates:
|
||||||
@@ -126,9 +163,6 @@ o We should add fields to the service submitter
|
|||||||
(http://insecure.org/cgi-bin/submit.cgi?new-service) for the
|
(http://insecure.org/cgi-bin/submit.cgi?new-service) for the
|
||||||
application name and version.
|
application name and version.
|
||||||
|
|
||||||
o Use BPF libpcap logic on Solaris 11, otherwise packet capture doesn't
|
|
||||||
work at all. http://seclists.org/nmap-dev/2012/q1/613
|
|
||||||
|
|
||||||
o Make sure we update everywhere relevant (e.g. refguide, etc.) to
|
o Make sure we update everywhere relevant (e.g. refguide, etc.) to
|
||||||
note the addition in Nmap of the Liblinear library for large linear
|
note the addition in Nmap of the Liblinear library for large linear
|
||||||
classification (http://www.csie.ntu.edu.tw/~cjlin/liblinear/). It
|
classification (http://www.csie.ntu.edu.tw/~cjlin/liblinear/). It
|
||||||
@@ -136,12 +170,6 @@ o Make sure we update everywhere relevant (e.g. refguide, etc.) to
|
|||||||
http://www.csie.ntu.edu.tw/~cjlin/liblinear/COPYRIGHT
|
http://www.csie.ntu.edu.tw/~cjlin/liblinear/COPYRIGHT
|
||||||
- David has added it to 3rd-party-licenses.txt
|
- David has added it to 3rd-party-licenses.txt
|
||||||
|
|
||||||
o Change the interface of nmap.send_ip to take an explicit destination
|
|
||||||
address. It currently extracts the destination from the packet buffer,
|
|
||||||
which does not have enough information to reconstruct link-local
|
|
||||||
addresses. See r26621 for a similar change that was made to Nmap
|
|
||||||
internals.
|
|
||||||
|
|
||||||
o Install some sort of svnview webapp for svn.nmap.org which is
|
o Install some sort of svnview webapp for svn.nmap.org which is
|
||||||
wrapped in Insecure chrome, allows people to click link for direct
|
wrapped in Insecure chrome, allows people to click link for direct
|
||||||
file download, probably shows revision history and allows users to
|
file download, probably shows revision history and allows users to
|
||||||
@@ -160,13 +188,6 @@ o Move advanced IPv6 host discovery features from NSE into core Nmap.
|
|||||||
target specification and sees that it is local so can be multicast
|
target specification and sees that it is local so can be multicast
|
||||||
pinged.
|
pinged.
|
||||||
|
|
||||||
o We should document Ron's sample script
|
|
||||||
(http://nmap.org/svn/docs/sample-script.nse) in docs/scripting.xml so
|
|
||||||
that new script writers know about it.
|
|
||||||
|
|
||||||
o Review NSE-based port scanning and RST idle scan.
|
|
||||||
http://seclists.org/nmap-dev/2011/q2/307.
|
|
||||||
|
|
||||||
o [UPDATER] Create a way to send an error message to the user
|
o [UPDATER] Create a way to send an error message to the user
|
||||||
(e.g. "your account has expired" or "updates denied due to
|
(e.g. "your account has expired" or "updates denied due to
|
||||||
overuse--please wait 24 hours before trying again", or "account
|
overuse--please wait 24 hours before trying again", or "account
|
||||||
@@ -186,45 +207,6 @@ o [UPDATER] When it runs, it should give user more status about what
|
|||||||
(e.g. /home/fyodor/.nmap/updates/5.61TEST4). And if there are no
|
(e.g. /home/fyodor/.nmap/updates/5.61TEST4). And if there are no
|
||||||
updates available, it should say so.
|
updates available, it should say so.
|
||||||
|
|
||||||
o Raw scans from Mac OS X seems not to retrieve the MAC address or do
|
|
||||||
ARP ping, except when scanning the router on an interface. For
|
|
||||||
example, scanning 192.168.0.1-5 sends ARP pings to 192.168.0.1, but
|
|
||||||
the normal four-probe combination to the other addresses. The "MAC
|
|
||||||
address:" line appears in the output for .1 but not for the others.
|
|
||||||
|
|
||||||
o To avoid Nmap memory usage bloat, find a way for NSE scripts to
|
|
||||||
store information about a host which expires after Nmap is done
|
|
||||||
scanning that host (e.g. when the hostgroup containing that host is
|
|
||||||
finished). Right now scripts store such information in the registry
|
|
||||||
and it persists forever. For example, a web spidering
|
|
||||||
script/library could store information about the web structure and
|
|
||||||
even page contents so that other scripts can use that information
|
|
||||||
without spidering the target again, but ensuring that the memory
|
|
||||||
will be freed after the hostgroup finishes so there is room to store
|
|
||||||
the web information for the next group of systems. One idea would
|
|
||||||
be to make a host.registry member which contains a registry specific
|
|
||||||
to a specific target. Scripts could store temporary information
|
|
||||||
there, but still use the global registry for information which must
|
|
||||||
persist (e.g. to be used by postrules, etc.)
|
|
||||||
|
|
||||||
o Add CPE support to IPv6 OS detection
|
|
||||||
|
|
||||||
o Add IPv6 subnet/pattern support like we offer for IPv4.
|
|
||||||
o Obviously we can't go scanning a /48 in IPv6, but small subnets do
|
|
||||||
make sense in some cases. For example, the VPS hosting company
|
|
||||||
Linode assigns only one IPv6 address per user (unless they pay) and
|
|
||||||
you can find many Linode machines by scanning certain /112's. And
|
|
||||||
patterns might be useful because people assigned /64's might still
|
|
||||||
put their machines at ::1, ::2, etc.
|
|
||||||
o David says: "We need to design a new way to iterate over host
|
|
||||||
specifications (i.e., different than nexthost). Because the new
|
|
||||||
host discovery code is sometimes going to want whole netblocks and
|
|
||||||
sometimes individual hosts. So I'm thinking of a two-stage model,
|
|
||||||
where the iterator will received (parsed) specifications like
|
|
||||||
AAAA::1/48, and then it can decide whether to further iterate that
|
|
||||||
into individual addresses, or pass the block off to some
|
|
||||||
specialized discovery routine."
|
|
||||||
|
|
||||||
o Investigate report of Nmap ARP discovery using the wrong target MAC
|
o Investigate report of Nmap ARP discovery using the wrong target MAC
|
||||||
address field in ARP requests (it is correct in the ethernet frame
|
address field in ARP requests (it is correct in the ethernet frame
|
||||||
itself). See this thread: http://seclists.org/nmap-dev/2011/q3/547
|
itself). See this thread: http://seclists.org/nmap-dev/2011/q3/547
|
||||||
@@ -237,24 +219,6 @@ o Nmap should have a better way to handle XML script output.
|
|||||||
o Daniel Miller is working on an implementation:
|
o Daniel Miller is working on an implementation:
|
||||||
http://seclists.org/nmap-dev/2011/q2/263.
|
http://seclists.org/nmap-dev/2011/q2/263.
|
||||||
|
|
||||||
o Finish sv-tidy - a program to canonicalize and tidy nmap-service-probes.
|
|
||||||
o Check for the same reference (like $1) being used in unrelated fields
|
|
||||||
(where related fields are the pairs (p, cpe:), (v, cpe:), (i, cpe:),
|
|
||||||
(o, cpe:)).
|
|
||||||
For example if we have v/$1/ h/$1/ it is a bug.
|
|
||||||
o Check for e.g. i/French/ without :fr in cpe:/a, and vice versa.
|
|
||||||
o Check a list of common product names that should only appear in p//,
|
|
||||||
not in i//. We still have entries that are like this:
|
|
||||||
p/Foobar 2000 ADSL router/ i/micro_httpd web server/
|
|
||||||
that should rather be written this way:
|
|
||||||
p/micro_httpd/ i/Foobar 2000 ADSL router/
|
|
||||||
o Warn when a match template contains '.' but not the 's' flag.
|
|
||||||
(Maybe only when there are non-ASCII literal characters in the
|
|
||||||
template.)
|
|
||||||
o [DONE] Check that used references start at 1 and are
|
|
||||||
contiguous. If $1 and $3 are used but not $2, it's probably a bug.
|
|
||||||
Maybe you can even find out how many there should be by inspecting
|
|
||||||
the regular expression.
|
|
||||||
|
|
||||||
o [Zenmap] should actually parse and use script results. See
|
o [Zenmap] should actually parse and use script results. See
|
||||||
http://seclists.org/nmap-dev/2010/q1/1108
|
http://seclists.org/nmap-dev/2010/q1/1108
|
||||||
@@ -744,6 +708,50 @@ o random tip database
|
|||||||
|
|
||||||
DONE:
|
DONE:
|
||||||
|
|
||||||
|
o In sv-tidy, check that used references start at 1 and are
|
||||||
|
contiguous. If $1 and $3 are used but not $2, it's probably a bug.
|
||||||
|
Maybe you can even find out how many there should be by inspecting
|
||||||
|
the regular expression.
|
||||||
|
|
||||||
|
o Raw scans from Mac OS X seems not to retrieve the MAC address or do
|
||||||
|
ARP ping, except when scanning the router on an interface. For
|
||||||
|
example, scanning 192.168.0.1-5 sends ARP pings to 192.168.0.1, but
|
||||||
|
the normal four-probe combination to the other addresses. The "MAC
|
||||||
|
address:" line appears in the output for .1 but not for the others.
|
||||||
|
|
||||||
|
o To avoid Nmap memory usage bloat, find a way for NSE scripts to
|
||||||
|
store information about a host which expires after Nmap is done
|
||||||
|
scanning that host (e.g. when the hostgroup containing that host is
|
||||||
|
finished). Right now scripts store such information in the registry
|
||||||
|
and it persists forever. For example, a web spidering
|
||||||
|
script/library could store information about the web structure and
|
||||||
|
even page contents so that other scripts can use that information
|
||||||
|
without spidering the target again, but ensuring that the memory
|
||||||
|
will be freed after the hostgroup finishes so there is room to store
|
||||||
|
the web information for the next group of systems. One idea would
|
||||||
|
be to make a host.registry member which contains a registry specific
|
||||||
|
to a specific target. Scripts could store temporary information
|
||||||
|
there, but still use the global registry for information which must
|
||||||
|
persist (e.g. to be used by postrules, etc.)
|
||||||
|
|
||||||
|
o Add CPE support to IPv6 OS detection
|
||||||
|
|
||||||
|
o Use BPF libpcap logic on Solaris 11, otherwise packet capture doesn't
|
||||||
|
work at all. http://seclists.org/nmap-dev/2012/q1/613
|
||||||
|
|
||||||
|
o [NSE] host.os should not just be a list of strings which can contain
|
||||||
|
human-readible strings and/or CPE info. It should probably be list
|
||||||
|
of host.os tables which can contain:
|
||||||
|
host.os[].name <-- human readible name
|
||||||
|
host.os[].class[].vendor
|
||||||
|
host.os[].class[].osfamily
|
||||||
|
host.os[].class[].osgen
|
||||||
|
host.os[].class[].devicetype
|
||||||
|
host.os[].class[].cpe[] <-- array of cpe:/ strings
|
||||||
|
So host.os[1].class[1].cpe[1] is the first CPE entry for the first
|
||||||
|
classification of the first OS match for the target system.
|
||||||
|
The host.os entry docs/scripting.xml would have to be updated too.
|
||||||
|
|
||||||
o We should probably go through the nmap-os-db (and IPv6 version)
|
o We should probably go through the nmap-os-db (and IPv6 version)
|
||||||
entries and, where the fingerprint line specifies a service pack
|
entries and, where the fingerprint line specifies a service pack
|
||||||
number (or even two of them), ensure that we have sp-qualified CPE
|
number (or even two of them), ensure that we have sp-qualified CPE
|
||||||
|
|||||||
Reference in New Issue
Block a user