summaryrefslogtreecommitdiffstats
path: root/todo/nmap.txt
diff options
context:
space:
mode:
Diffstat (limited to 'todo/nmap.txt')
-rw-r--r--todo/nmap.txt638
1 files changed, 638 insertions, 0 deletions
diff --git a/todo/nmap.txt b/todo/nmap.txt
new file mode 100644
index 0000000..76fe1ff
--- /dev/null
+++ b/todo/nmap.txt
@@ -0,0 +1,638 @@
+TODO $Id: TODO 11866 2009-01-24 23:10:05Z fyodor $ -*-text-*-
+
+o Work on Nmap on Mobile devices, particularly Android. Would be
+ great to get it in Google Play store, for example. An official
+ version with a workable GUI. For now, people have to do manual work
+ and it isn't as well tested either:
+ https://secwiki.org/w/Nmap/Android . If this is successful, we could
+ consider iOS.
+
+o Nmap performance work. Particularly with --min-rate.
+
+o Consider re-architecting Nmap to have more of a scanning pipeline
+approach rather than fixed sets of hosts which start and finish one
+phase and then move into the next in parallel. This could potentially
+allow us to add hosts one by one to a phase as other hosts finish that
+phase and, ideally, the phases could run in parallel too.
+
+o Nmap Network Scanning, 2nd Edition work [placeholder]
+
+o Organize nselib into a hierarchy. A library "dirname/filename.lua" can be
+ required as "dirname.filename". We would need to ensure the installers
+ (Makefile, OS X, Windows, RPM) can handle this. See
+ http://seclists.org/nmap-dev/2014/q3/364
+
+o We should work to reduce Zenmap's memory consumption. We used to
+ commonly get error reports from people who load so many systems that
+ Zenmap gives an out of memory error and crashes. For example, see
+ this thread: http://seclists.org/nmap-dev/2014/q2/46
+ After committing patch at http://seclists.org/nmap-dev/2014/q2/429,
+ we no longer get the error report but the problem still exists.
+ The problem seems to lie in a very large Nmap Output being stored
+ in memory and a possible fix seems to be to use a file based paging
+ system.
+
+o Consider making a version of Nmap for Apple's official Mac App
+ Store. A particular concern with the downloadable Mac version of
+ Nmap is that Apple's new "Mountain Lion" release may require users
+ to jump through hoops to install unsigned non-app-store content per
+ their "Gatekeeper" "feature". Though maybe signing the app will be
+ enough. There may also be an issue with the "Sandboxing"
+ requirement for App Store apps starting June 2012. Will Nmap be
+ able to request all the permissions it needs? Ignoring the
+ technical challenges for the moment, what will users prefer?
+
+o Do a roll up on (state, TTL) pair instead of just state so that TTL
+ info is not lost when doing roll up on port states.
+ See thread at http://seclists.org/nmap-dev/2014/q3/93
+
+o Consider looking into differring TTL values during OS detection
+ phase and choose a port that is (hopefully) not firewalled to get
+ a better chance at correct result. See thread at
+ http://seclists.org/nmap-dev/2014/q3/33
+
+o [Zenmap] Look into and refactor code which uses the (very slow) += operation
+ on strings. http://seclists.org/nmap-dev/2014/q2/432 helped improve speeds
+ for opening files (from hours to seconds) and it seems like more speedups
+ can be done in other places.
+
+o Look into moving our Mac building/testing system into a virtual
+ machine or leased server sort of environment so that multiple Nmap
+ developers can access it and nobody has to keep a stack of Mac Minis
+ in their closet.
+
+o INFRASTRUCTURE: Upgrade seclists to use Mailman 3, which apparently
+ has many improvements.
+
+o We should fix nsedoc generation so it doesn't fail when blocks like
+ @usage, @output, etc. are followed by a local declaration. See
+ http://seclists.org/nmap-dev/2014/q2/331. If for some reason this
+ just can't be fixed, we will have to document the heck out of it, I
+ suppose.
+
+o When scanning your own IP from Windows, Nmap currently recognizes
+ the problem (can't do a raw scan like that on Windows) and skips the
+ SYN scan, leading to Nmap printing a bunch of ports in "unknown"
+ state at the end. Nmap should probably act like unprivileged mode
+ in this case (e.g. do a connect scan, etc.). See
+ http://seclists.org/nmap-dev/2013/q3/519
+
+o Investigate Checkmarx static analysis report of Nmap source tree
+ that someone sent us on Feb 12. It looks like mostly false positives,
+ but we should go through to check for any real bugs or even possible
+ security issues. Fyodor has the report.
+
+o INFRASTRUCTURE: Consider updating our svn-mailer.py (and conf file)
+ to the latest official version. First check whether there is a
+ later official version and whether it has material changes. We're
+ currently using one from
+ subversion-1.4.2/tools/hook-scripts/mailer/mailer.py.
+
+o Consider a two-stage model for IPv6 subnet/pattern support
+ o Right now you can try to scan a /64, for example, and Nmap will try
+ to iterate through them all (and of course never complete). So
+ perhaps Nmap should first look at a specification and decide if it
+ should use other techniques like multicast discovery instead.
+
+o Move advanced IPv6 host discovery features from NSE into core Nmap.
+ We'll probably add the functionality of
+ targets-ipv6-multicast-invalid-dst, targets-ipv6-multicast-echo, and
+ maybe targets-ipv6-multicast-slaac.
+ - The idea is that Nmap does them automatically if it gets a large
+ target specification and sees that it is local so can be multicast
+ pinged.
+
+o We should figure out why (at least with Nping) raw ethernet frame
+ sends seem to be taking significantly longer than raw socket sends
+ (e.g. using --send-ip or the OS-provided ping utility). This has
+ been reproduced on Linux and Windows. Here's a thread:
+ http://seclists.org/nmap-dev/2012/q4/424
+ o Note that David and I tried to reproduce this on his machine and
+ on 'web' and 'research' machines and could not reproduce. Still
+ happens with Fyodor's machine connected with WiFi. Fyodor should
+ test on the same machine using wired and see if that changes anything.
+
+o Implement some improvements to dns-ip6-arpa.nse, as describe at
+ http://seclists.org/nmap-dev/2012/q2/45.
+ - Also consider a move to "fire and forget" logic. Just blast out
+ the queries that we know we have to make, and then read any replies
+ that may happen to come back. (but still try not to introduce
+ inaccuracy (missed hosts) by flooding the network.
+
+o Treat the input to the escape function in xml.cc as UTF-8, not just
+ ASCII. Good UTF-8 should survive into the output; i.e., "\xe2\x98\xbb"
+ should become "\xe2\x98\xbb" in the output, not "☻".
+ If the input happens not to be UTF-8, (like the file name in
+ http://seclists.org/nmap-dev/2013/q1/180), I suppose we can
+ individually encode each byte of each invalid sequence: "\xba\xda\xbf"
+ becomes "ºÚ¿". Can probably do this with simple
+ byte->rune and rune->byte functions as in
+ http://plan9.bell-labs.com/sys/doc/utf.html.
+
+o We should probably redo the Nmap header (e.g. on https://nmap.org) to
+ make it more attractive. Or, at a minimum we should update the
+ screenshots and think about which links we really need (some of those
+ pages aren't really updated any more).
+
+o Test a hierarchical classifier for IPv6 OS detection. Our classifier
+ currently treats, for example, some localhost Linux fingerprints as
+ separate classes from remote Linux fingerprints, simply because we
+ lose precision if we lump them together (for example TCP window size
+ differs across certain Linux versions when measured remotely, but
+ not on localhost). This leads to the linear classifier having to use
+ narrow margins between fingerprints that are really very similar. I
+ want to try a tree of classification where each non-leaf node is a
+ separately trained classifier and each leaf node is a final
+ classification. The first layer of the hierarchy would be something
+ like
+ (linux windows solaris aix ... other)
+ where "linux" would contain *all* the Linux fingerprints in a single
+ class. Lower levels would be like
+ (linux-2.4 linux-2.6)
+ (windows-xp windows-vista windows-7)
+ Lower levels will include only those fingerprints in their parent
+ class, so we don't even think about Windows when classifying
+ Linux. Probably three or four levels will be sufficient. There may
+ be a principled or automatic way to build this hierarchy, but I
+ suspect playing it by ear will be sufficient. Talk to David for more
+ of his thinking on this topic.
+
+o Maybe we should rename dns-brute to dns-brute-enum since it is so different
+ from our traditional brute force authentication cracking -brute scripts?
+
+o NSE WORK (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 Review NSE-based port scanning and RST idle scan.
+ http://seclists.org/nmap-dev/2011/q2/307. [Henri and Hani?]
+
+o Maybe we should add an analysis or reporting or intelligence (or
+ different name) for our NSE scripts which don't send any packets, but
+ simply analyze Nmap's existing data and report when useful.
+
+o Install some sort of svnview webapp for svn.nmap.org which is
+ wrapped in Insecure chrome, allows people to click link for direct
+ file download, probably shows revision history and allows users to
+ see older versions, etc.
+
+o Process Nmap survey and send out results [Fyodor]
+
+o Nping (we think) will stop after 2^32 rounds even when "-c 0" is
+ given. We should probably make this a 64-bit integrer so that "-c
+ 0" will go essentially forever and so that users can give values
+ higher than 4 billion.
+
+o Nscan work [placeholder]
+ - Hosted Nmap system
+
+o Add CPE entries to OS fingerpting DB entries which still lack them.
+ This is a gradual process since almost all of the missing ones
+ aren't in the official CPE dictionary either and it can take a lot
+ of research to decide on an appropriate entry. Milestones so far:
+ - 3/21/12: We have entries for 2,601 of 3,572 fingerprints (971
+ missing; 73% coverage)
+ - 11/5/12: We have entries for 3,285 of 3,907 fingerpritns (622
+ missing; 84% coverage)
+ - 11/12/12: We have entries for 3,558 of 3,946 fingerprints (388
+ missing; 90% coverage).
+
+o [Zenmap] should actually parse and use script results. See
+ http://seclists.org/nmap-dev/2010/q1/1108
+ - We have an initial prototype, but probably need to redo because it
+ doesn't present the results in the way we'd like yet due to
+ problems implementing such a presentation with GTK, etc.
+
+o Make Zenmap settings get upgraded when the Zenmap executable is
+ upgraded. The per-user configuration files such as scan_profile.usp
+ and zenmap.conf are never overwritten once installed by Zenmap, so
+ changes and fixes to those files don't reach anyone who has
+ installed Zenmap already. This is most noticeable with changes to
+ profiles and highlight definitions are notably affected. This fix
+ may involve hard-coding settings that are not normally configured by
+ users (like highlighting) or updating the per-user files at startup
+ (only those parts that haven't been changed by the user).
+
+o We should offer partial results when a host timeouts. I (Fyodor)
+ have been against this in the past, but maybe the value is
+ sufficient to be worth the maintenance headaches. Many users have
+ asked for this. If we do implement this, we may want to only print
+ results for the COMPLETED phases (e.g. host discovery, port
+ scanning, version detection, traceroute, NSE, etc.) Trying to print
+ partial results of a port scan or NSE or the like might be a pain.
+ And if we print some results for a host which timeouts, we should
+ give a very clear warning that the results for that host are
+ incomplete. As an example, here is someone who hacked Nmap source
+ code to achieve this: http://seclists.org/pen-test/2010/Mar/108.
+ o Another benefit would be that it would allow us to clean
+ up/regularize the host output code. Right now there are I think
+ three places where a host's final output can be printed. If,
+ instead, that code just looked at what information was available and
+ printed that out only, we could potentially isolate it in just one
+ place.
+ o This also might let us provide a feature for skipping the rest of
+ an Nmap phase which is going too slowly (I think that has its own
+ Nmap TODO item).
+
+o [Nsock] Some SSL connections that used to work now fail; find out
+ why. http://seclists.org/nmap-dev/2010/q4/788. Narrowed down to
+ r19801 in http://seclists.org/nmap-dev/2011/q1/12.
+
+o [NSE] Consider a system where scripts can tell if any other scripts
+ depend on them. They could then use that to determine whether they
+ should bother storing information in the registry. For example,
+ snmp-interfaces could store the discovered table if another script
+ (such as a mac address geolocator script) depends on it.
+
+o [NSE] Consider whether we need script.db for performance reasons at
+ all or should just read through all the scripts and parse on the fly.
+ See: [http://seclists.org/nmap-dev/2009/q2/0221.html]
+
+o A couple minor nsedoc issues (see
+ http://seclists.org/nmap-dev/2011/q1/1095):
+ o After the ssh-hostkey portrule was added, nsedoc seems to be
+ generating a blank "Script types" filed for the script:
+ http://localhost:8082/nsedoc/scripts/ssh-hostkey.html
+ o This is happening because "portrule" and "hostrule" appear later in
+ the script, and NSEDoc thinks it is their definition, and there is
+ no NSEDoc there.
+ local ActionsTable = {
+ -- portrule: retrieve ssh hostkey
+ portrule = portaction,
+ -- postrule: look for duplicate hosts (same hostkey)
+ postrule = postaction
+ }
+ o ssh-hostkey and rmi-dumpregistry each have two @output sections,
+ and NSEDoc is only showing the second one. We should probably just
+ combine them into one @output section, and maybe make nsedoc give a
+ warning in this case. Or we could make nsedoc handle multiple
+ @outputs.
+
+o Add general regression unit testing system to Nmap
+ o David has created a system for Ncat which could serve as a
+ model.
+
+o Make version detection and NSE timing system more dynamic so that
+ the concurrency can change based on network conditions/ability.
+ After all, beefy systems on fast connections should be able to handle
+ far more parallel connections than slower systems.
+ o At a minimum, this at least warrants more benchmark testing.
+
+o We should run at least one SCTP service on scanme. Daniel
+ Roethlisberger has made available dummy services which support IPv4
+ and IPv6 (see http://seclists.org/nmap-dev/2011/q2/450).
+ Alternatively, we could run some sort of "real" SCTP application(s)
+ (preferably one which is relatively simple, easy to install, secure,
+ and supports IPv6).
+
+o Create new default username list:
+ http://seclists.org/nmap-dev/2010/q1/798
+ o Could be a SoC Ncrack task, though should prove useful for Nmap
+ too
+ o We probably want to support several lists. Like an admin/default
+ list like "root", "admin", "administrator", "web", "user", "test",
+ and also a general list which we obtain from spidering from
+ emails, etc.
+
+o Improve Nsock proxies system
+ - Add SSL support
+ - Add proxy authentication
+ - Switch Ncat to using Nsock proxy system rather than it's own
+ built-in support.
+ - Move the code which is shared with ncat to nbase (URL parsing code,
+ for instance).
+ - Add socks4a/socks5 support. This requires to figure out how to
+ enter the nsock proxy code w/o having the target IP address. No huge
+ technical blocker there though, only design choices to make.
+ - Nping could potentially use it as well (could be useful for
+ measuring latency and reliability of a given proxy chain, for
+ example).
+ - Add proxy support to connect() scan. This would mean moving
+ connect scan to nsock.
+
+o [NCAT] Send one line at a time when --delay is in effect. This is
+ cumbersome to do until Nsock supports buffered reading.
+
+o [NCAT] Make the HTTP proxy support the chunked transfer encoding,
+ then change it to be HTTP/1.1 and support pipelining.
+
+o [NCAT] Drop privileges once it has started up, bound the ports it
+ needs to, etc.
+
+o [NCAT] Work as a SOCKS4a/SOCKSv5 proxy.
+
+o [NCAT] Resolve names through the proxy when possible.
+ http://seclists.org/nmap-dev/2012/q2/768
+
+o [NSE] Script writing contest (something to think about)
+
+o We should document an official way to compile/test refguide.xml so
+ people can more easily test their changes to it. This will probably
+ involve moving legal-notices.xml into /nmap/docs, among other
+ things.
+ o Note that nping has its own /nmap/nping/docs/genmanpage.sh - we
+ could look at how that could apply to Nmap.
+
+o Move Zenmap man page from nmap/docs/ to nmap/zenmap/docs to match
+ the man page location for ncat and ndiff.
+ o Don't break packaging/build system
+ o Don't break the system for posting html to web site.
+ o Consider standardizing names for nping and ncrack man pages as well.
+ [Fyodor]
+
+o [NSE] MSRPC - Improve domain support all around -- in particular,
+ let the user give the domain in the format DOMAIN\username or
+ username@DOMAIN anywhere that usernames are accepted. Suggested
+ at http://seclists.org/nmap-dev/2010/q2/389
+
+o [NSE] Combine similar MSRPC scripts, especially the "get info"
+ stuff. See this thread on combining
+ (http://seclists.org/nmap-dev/2010/q1/1023). This was suggested by
+ Ron at http://seclists.org/nmap-dev/2010/q2/389.
+
+o [Zenmap] Investigate getting new OS icon art. See
+ http://seclists.org/nmap-dev/2010/q1/1090
+
+o We should probably enhance scan stats--maybe we can add a full-scan
+ completion time estimate? Some ideas here:
+ http://seclists.org/nmap-dev/2010/q1/1007
+
+o [NSE] Do some benchmarking of our brute.nse. We should check the
+ performance with different levels of thread parallelism. Our
+ initial results show that it isn't helping much for vnc-brute or for
+ drda-brute (which is currently using the multi-thread feature
+ directly rather than through brute.nse library). We should figure
+ out why the threads aren't helping more, and whether there is
+ something we can do to fix it. It would also be interesting to
+ compare speed with Ncrack for services we have in common.
+
+o Start project to make Nmap a Featured Article on Wikipedia.
+ - See http://seclists.org/nmap-dev/2010/q1/614
+
+o Add Nmap web board/forum
+ - First step is looking at the available software for this.
+ - Nmap subreddit exists: https://www.reddit.com/r/nmap
+
+o [Zenmap] Consider a couple ideas from Norris Carden
+ (http://seclists.org/nmap-dev/2010/q2/228):
+ - remember last save and/or open location for new saves and/or opens
+ - default save location option
+
+o [Nsock] Consider adding server support to Nsock so it can accept
+ multiple connections and multiplex the SD's, like it does for
+ clients. This could potentially be used by Ncat and Nping echo
+ mode. Currently Ncat server doesn't use Nsock at all, while Nping
+ echo mode basically polls, repeating a loop of 1s in nsock_loop
+ followed by a nonblocking accept(). Then Nping gives the SD's to
+ Nsock to manage.
+
+o Consider implementing both global and per-host congestion control in
+ the IPv6 OS detection engine. Currently it handles congestion globally
+ (one CWND and SSTHRESH shared by all hosts). This works fine but it
+ may not be the most efficient approach: if the congestion is not
+ in our network segment but in a target's and we are os-scanning
+ hosts in different networks, then all hosts get "penalized" because
+ there is congestion in another network, not in theirs.
+
+o [Nsock] Consider implementing a nsock_pcap_close() function or making
+ nsp_delete() call pcap_close() when pcap IODs are used. Currently valgrind
+ warns about a socket descriptor left opened (at least in Nping).
+ ==10526== at 0x62F77A7: socket (syscall-template.S:82)
+ ==10526== by 0x4E348A5: ??? (in /usr/lib/libpcap.so.1.0.0)
+ ==10526== by 0x4E36819: pcap_activate (in /usr/lib/libpcap.so.1.0.0)
+ ==10526== by 0x4E375FC: pcap_open_live (in /usr/lib/libpcap.so.1.0.0)
+ ==10526== by 0x4311A9: nsock_pcap_open (nsock_pcap.c:64)
+ ==10526== by 0x428078: ProbeMode::start() (ProbeMode.cc:329)
+
+o Consider rethinking Nmap's -s* syntax for specifing scan types
+ o Current problems with this -s syntax:
+ o We already use like 20 of the 26 letters, so we end up with
+ things like SCTP scan using -sY
+ o Can make Nmap command lines hard to read, particularly given
+ that we often need to improvise to find a letter which isn't
+ taken.
+ o Problematic for scan types -sI and -b which require arguments
+ o Inconsistencies. For example, -sC and -sV do script scan and
+ version detection, respectively, and yet for OS detection we use
+ -O. Also, control flow (-sP, -sL) is used with -s, which further
+ overloads the options.
+ o Possible solution:
+ o We are enabling -Pn and -sn as preferred notations for -PN and
+ -sP which mean "no ping" and "no port scan". Those match the
+ already existing -n for "no DNS". The problem with -sP is that it
+ implies "ping only", when what it really should mean is "disable
+ port scan" because you may want to do NSE, OS detection,
+ traceroute, etc. still.
+ o We might want to just give them normal option strings, so you
+ could do --maimon instead of -sM, for example. For extremely
+ common options such as SYN scan, UDP scan, version detection, we
+ could perhaps find good single letter options as an alias to the
+ longer one.
+ o Another idea is to use something like --scantype syn,udp,sctp,
+ which is a lot longer for single-type scans, but shorter when
+ you're combining mulitiple ones. Doesn't allow for individual
+ scan arguments easily. I (Fyodor) think I prefer the idea above
+ of just givem them top level arguments.
+ o If we keep -s*, we could just give it one defined function, such
+ as selecting port scan type, or control flow.
+ o Obviously this will take some discussion/brainstorming on nmap-dev.
+
+o Do -p- Internet UDP scans.
+
+o Scanning through proxies
+ o Nmap should be able to scan through proxy servers, particularly now
+ that we have an NSE script for detectiong open proxies and now that
+ Ncat can act as proxy client or server.
+ o Requirements:
+ o Would be nice to be able to chain through multiple proxy servers of
+ different types.
+ o Would be nice to be able to spread the load amongst multiple
+ proxies.
+ o Should support port scanning, version detection, and NSE. In
+ other words, nsock should support proxies.
+ o Support IPv4 and v6
+ o Need to figure out how to get good performance. Pool of
+ connections to proxy or proxies for concurrency? HTTP pipelining?
+ o Support the different varieties of proxies: socks4, socks4a,
+ socks5, HTTP GET (if possible), HTTP CONNECT. Note that GET
+ proxies present some challenges since the error messages may not
+ be standard, etc.
+ o Maybe auto-detect the proxy type so that Nmap can try the most
+ efficient scanning method first?
+ o I've been asked to support basic, ntlm, and digest authentication
+ if possible.
+ o Implementation ideas:
+ o There is a patch by Zoltan Panczel (http://nmap-dev.fw.hu) and it
+ has been improved by Jacob Appelbaum in nmap-exp/ioerror/ . This
+ patch doesn't handle things like parallelization, but it may be a
+ good proof of concept.
+ o This might not be appropriate for ultra_scan ... perhaps would be
+ better to write a general scanning engine for abusing
+ applications for port scanning purposes. This could handle
+ scanning through proxies and the existing FTP bounce scan would
+ also be ported to this engine (or, frankly, we could probably get
+ away with removing FTP bounce). rembrandt at jpberlin.de tells me
+ that you can also do this with the "forwarding" commands on IMAP
+ servers. Whoever does this should probably start by reading the
+ code for the main port scanning engine (ultra_scan()) and also
+ the version detection code (service_scan()). And the version
+ detection paper at https://nmap.org/book/vscan.html. If you
+ understand all that, you may be ready for this project :). This
+ is important, because it is easy to do poorly. The tough part is
+ high performance and clean code which is general enough that all
+ these different applications can be scanned through using the
+ same basic engine. You should run your ideas by nmap-dev in as
+ much detail as possible before starting.
+ o David: I'm starting to think about building proxy support into
+ Nsock and then implementing -sT with Nsock instead of ultra_scan.
+
+o [Web] Consider adding training/introduction videos to the Nmap site
+ o Would be great to have a (5 minute or less) promotional video
+ introduction to each tool (Nmap, Zenmap, Ncat, Ndiff) on its web
+ page.
+ o They need to be good to be useful--the sort of the quality you see
+ in Laura Chappell's Wireshark videos or James Messer's Nmap videos
+ or Irongeek's videos (http://www.irongeek.com).
+ o Besides the promotional videos, users would probably enjoy more
+ in-depth video instructions (e.g. covering the Nmap Network
+ Scanning topics).
+ o Here's an example product page with lots of videos (we may not go
+ that far): http://www.splunk.com/product
+
+o The Zenmap translation system
+ (https://nmap.org/book/zenmap-lang.html) has been pretty successful
+ so far. We should consider doing the same for Nmap. After all, we
+ already have the reference guide in 16 languages at
+ https://nmap.org/docs.html. We should definitely try to use the same
+ translation methods for Zenmap as we do for Nmap. In fact, maybe we
+ can create a combined PO file Nmap, Zenmap, Ncat, and Ndiff so that
+ they can all be translated and maintained together. Something to
+ consider: calling setlocale can change the behavior of functions like
+ isalpha. Locale-dependent functions need to be checked for security
+ risks.
+
+o [NSE] Consider whether we should include some sort of NSE debugger. Or we
+ could include something simpler. For example, Nmap now provides a
+ traceback (with sufficient debugging/verbosity) when a script ends
+ in error. For some inspiration/ideas, look at Diman's NSE
+ debugger (http://seclists.org/nmap-dev/2008/q1/0228.html).
+
+o [NSE] Support routing http requests through proxies.
+
+o [NSE] Would be great if NSE scripts could be made to NOT
+ run as root if they don't have to.
+
+o [NSE] Security Review
+ o Consider what, if any, vulnerabilities or security risks NSE has
+ with respect to buffer overflows, format string bugs, any other
+ maliciously formatted responses from target systems, etc. Maybe
+ address the known risk of malicious scripts too.
+ o Consider that NSE runs scripts as root
+
+o More security auditing of Nmap code (it never hurts to do more proactive
+ security auditing).
+
+o Figure out and document (in at least the Ncat user's guide) the best
+ way to use Ncat for chaining through proxies. One option is this
+ sort of thing:
+ ncat -l localhost 1234 --sh-exec "ncat --proxy A.A.A.A B.B.B.B"
+ ncat --proxy localhost:1234 C.C.C.C
+ If you had two proxies A.A.A.A and B.B.B.B, connecting to C.C.C.C.
+ With another listener/--sh-exec pair for each additional proxy.
+ But perhaps we can make it easier by adding it to the syntax.
+
+o Look into whether we should loosen/change the global congestion
+ control system to address possible cases of one target host with many
+ dropped packets slowing down the whole group. See
+ http://seclists.org/nmap-dev/2008/q1/0096.html .
+ * Related possibility: Fix --nogcc to gracefully handle ping scans.
+ Right now it seems to go WAY TOO FAST (e.g. several thousand
+ packets per second on my DSL line).
+ * [12/22/09] David says: It still is in one case that I've
+ documented on my wiki. I had an idea to fix it, but on testing it
+ it didn't work. The idea was to treat the global congestion limit
+ differently. Instead of dropping it down to the minimum level on a
+ drop as is done currently, I thought about only dropping it by the
+ amount that the individual host limit drops. For example, if a
+ host had a drop and its limit fell from 25 to 1, then the global
+ limit would change (if it was at 100 to begin with) to 76, not all
+ the way down to 2 or whatever it is. The idea being that the
+ global limit is most important at the beginning of a scan, when
+ there's no information to set host limits, and every host wants to
+ send all its first probes at once. See
+ http://www.bamsoftware.com/wiki/Nmap/PerformanceNotesArchive2#global-cc. I
+ am convinced, though, that some sort of global control is
+ necessary. There's a reason that a web browser limits the number
+ of connections it will make, and doesn't try to download every
+ image file at once and count on the fairness of TCP to sort it
+ out.
+
+o libnmap organization for UNIX and Windows
+ o Then change Nmap and Zenmap to simply call this library
+ o It is interesting to look at: http://www.gnupg.org/gpgme.html
+
+o Deal with UDP retransmission for version detection (I think I
+ should just do a second run of all probes for UDP if it fails to
+ match anything). The advantage there is that no retransmissions are
+ neccessary if the service is found. Then again, per-probe
+ retransmission would let us redo the most likely probes (the one(s)
+ that match the port number) quickly. Lost packets should probably
+ affect ideal_parallelism.
+
+o Make RPM relocatable (requires somehow avoiding storing paths in the
+ binary)
+ - That may be easier now that David has made some big improvements
+ in detecting where the binary is cross-platform and then looking for
+ data files based on that location.
+
+o Nmaprc-related - Create a system to store Nmap defaults/preferences
+ in an nmaprc file.
+ o nmaprc should be in ~/.nmap on UNIX
+ o On Windows, we may need a registry key to find the .nmaprc
+ o Perhaps Lua could be used as the format?
+ o .nmaprc for keeping defaults, etc.
+ o Nmaprc infrastructure, hook to new timing variables
+ o Nmaprc man page
+ o Default timing mode
+ o Default NSE arguments, such as user agent
+ o Maybe Default source IP (-S) argument
+ o should be a way to specify your own .nmaprc
+ o Maybe lets you add a directory and template for saving all
+ scans.
+ o Maybe let you define "scan profiles" like is done with Zenmap.
+ There would then be a command-line option to select the profile used.
+
+o Get new Zenmap logo
+ o consider putting back on top-right of command constructor wizard
+ (there used to be umit logo there).
+ o Maybe that can be done after the release by soliciting ideas.
+
+o Create or collect some great ./configure ascii art.
+
+o Look at all the pcap functions, there are some like
+ pcap_findalldevs() which could be quite useful. There are mails to
+ the Nmap list relating to suggested improvements --
+ http://seclists.org/lists/nmap-dev/2004/Apr-Jun/0024.html .
+ Actually I do indirectly use that for Windows. I wonder if they work
+ for UNIX?
+
+o perhaps each 'match' line in nmap-service-probes should have a
+ maximum lines, bytes, and/or time by which a response should be
+ available. Once that much time (or many bytes or lines) have passed,
+ that match can be considered 'failed' and ignored in subsequent runs.
+ Once all matches are considered failed, that probe is done. This
+ could be a useful optimization and is arguably better than the less
+ granular 'totalwaitms'. Or I could just have a simple function that
+ looks at whether a given regex could possibly match something
+ starting with the received data (not too hard since almost all of
+ the current regexes are anchored). But before doing this, I should
+ look long and hard at how many of the probes have every match
+ capable of doing this. In particular, many of the softmatch lines
+ don't offer many chars anchored at the front.
+
+o Separate nbase into its own Windows library in the same way as Andy did
+ with iphlpapi .
+
+o Nmap / Nmap-hackers FAQ
+
+o random tip database
+