Nmap Changelog

What's new in Nmap 7.94

May 21, 2023
  • Zenmap and Ndiff now use Python 3! Thanks to the many contributors who made this effort possible.
  • [GH#2088][GH#1176][Zenmap]Updated Zenmap to Python 3 and PyGObject. [Jakub Kulík]
  • [GH#1807][GH#1176][Ndiff]Updated Ndiff to Python 3. [Brian Quigley]
  • Additional Python 3 update fixes by Sam James, Daniel Miller. Special thanks to those who opened Python 3-related issues and pull requests: Eli Schwartz, Romain Leonard, Varunram Ganesh, Pavel Zhukov, Carey Balboa, Hasan Aliyev, and others.
  • [Windows]Upgraded Npcap (our Windows raw packet capturing and transmission driver) from version 1.71 to the latest version 1.75. It includes dozens of performance improvements, bug fixes and feature enhancements described at https://npcap.com/changelog.
  • Nmap now prints vendor names based on MAC address for MA-S (24-bit), MA-M (28-bit), and MA-L (36-bit) registrations instead of the fixed 3-byte MAC prefix used previously for lookups.
  • Added partial silent-install support to the Nmap Windows installer. It previously didn't offer silent mode (/S) because the free/demo version of Npcap Windoes packet capturing driver that it needs and ships with doesn't include a silent installer. Now with the /S option, Nmap checks whether Npcap is already installed (either the free version or OEM) and will silently install itself if so. This is similar to how the Wireshark installer works and is particularly helpful for organizations that want to fully automate their Nmap (and Npcap) deployments. See https://nmap.org/nmap-silent-install for more details.
  • Lots of profile-guided memory and processing improvements for Nmap, including OS fingerprint matching, probe matching and retransmission lookups for large hostgroups, and service name lookups. Overhauled Nmap's string interning and several other startup-related procedures to speed up start times, especially for scans using OS detection. [Daniel Miller]
  • Integrated many of the most-submitted IPv4 OS fingerprints for recent versions of Windows, iOS, macOS, Linux, and BSD. Added 22 fingerprints, bringing the new total to 5700!
  • [NSE][GH#548]Added the tftp-version script which requests a nonexistent file from a TFTP server and matches the error message to a database of known software. [Mak Kolybabi]
  • [Ncat][GH#1223]Ncat can now accept "connections" from multiple UDP hosts in listen mode with the --keep-open option. This also enables --broker and --chat via UDP. [Daniel Miller]
  • [GH#2575]Upgraded OpenSSL binaries (for the Windows builds and for RPM's) to version 3.0.8. This resolves some CVE's (CVE-2022-3602; CVE-2022-3786) which don't impact Nmap proper since it doesn't do certificate validation, but could possibly impact Ncat when the --ssl-verify option is used.
  • Upgrade included libraries: zlib 1.2.13, Lua 5.4.4, libpcap 1.10.4
  • [GH#2532]Removed the bogus OpenSSL message from the Windows Nmap executable which looked like "NSOCK ERROR ssl_init_helper(): OpenSSL legacy provider failed to load." We actually already have the legacy provider built-in to our OpenSSL builds, and that's why loading the external one fails.
  • [GH#2541]UDP port scan (-sU) and version scan (-sV) now both use the same data source, nmap-service-probes, for data payloads. Previously, the nmap-payloads file was used for port scan. Port scan responses will be used to kick-start the version matching process. [Daniel Miller]
  • Nmap's service scan (-sV) can now probe the UDP service behind a DTLS tunnel, the same as it already does for TCP services with SSL/TLS encryption. The DTLSSessionReq probe has had its rarity lowered to 2 to allow it to be sent sooner in the scan. [Daniel Miller]
  • [Ncat]Ncat in listen mode with --udp --ssl will use DTLS to secure incoming connections. [Daniel Miller]
  • [GH#1023]Handle Internationalized Domain Names (IDN) like Яндекс.рф on platforms where getaddrinfo supports the AI_IDN flag. [Daniel Miller]
  • [Ncat]Addressed an issue from the Debian bug tracker (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969314) regarding data received immediately after a SOCKS CONNECT response. Ncat can now be correctly used in the ProxyCommand option of OpenSSH.
  • Improved DNS domain name parsing to avoid recursion and enforce name length limits, avoiding a theoretical stack overflow issue with certain crafted DNS server responses, reported by Philippe Antoine.
  • [GH#2338][NSE]Fix mpint packing in ssh2 library, which was causing OpenSSH errors like "ssh_dispatch_run_fatal: bignum is negative" [Sami Loone]
  • [GH#2507]Updates to the Japanese manpage translation by Taichi Kotake.
  • [Ncat][GH#1026][GH#2426]Dramatically speed up Ncat transfers on Windows by avoiding a 125ms wait for every read from STDIN. [scriptjunkie]
  • [GH#1192][Windows]Periodically reset the system idle timer to keep the system from going to sleep while scans are in process. This only affects port scans and OS detection scans, since NSE and version scan do not rely on timing data to adjust speed.
  • Updated the Nmap Public Source License (NPSL) to Version 0.95. This just clarifies that the derivative works definition and all other license clauses only apply to parties who choose to accept the license in return for the special rights granted (such as Nmap redistribution rights). If a party can do everything they need to using copyright provisions outside of this license such as fair use, we support that and aren't trying to claim any control over their work. Versions of Nmap released under previous versions of the NPSL may also be used under the NPSL 0.95 terms.
  • Avoid storing many small strings from IPv4 OS detection results in the global string_pool. These were effectively leaked after a host is done being scanned, since string_pool allocations are not freed until Nmap quits.

New in Nmap 7.93 (Sep 4, 2022)

  • This release commemorates Nmap's 25th anniversary! It all started with this September 1, 1997 Phrack article by Fyodor: https://nmap.org/p51-11.html.
  • [Windows]Upgraded Npcap (our Windows raw packet capturing and transmission driver) from version 1.50 to the latest version 1.71. It includes dozens of performance improvements, bug fixes and feature enhancements described at https://npcap.com/changelog.
  • Ensure Nmap builds with OpenSSL 3.0 using no deprecated API functions. Binaries for this release include OpenSSL 3.0.5.
  • Upgrade included libraries: libssh2 1.10.0, zlib 1.2.12, Lua 5.3.6, libpcap 1.10.1
  • [GH#2416]Fix a bug that prevented Nmap from discovering interfaces on Linux when no IPv4 addresses were configured. [Daniel Miller, nnposter]
  • [NSE][GH#2463]NSE "exception handling" with nmap.new_try() will no longer result in a stack traceback in debug output nor a "ERROR: script execution failed" message in script output, since the intended behavior has always been to end the script immediately without output. [Daniel Miller]
  • [GH#2494]Update the Nmap output DTD to match actual output since the `` element was added in Nmap 7.90.
  • [NSE][GH#2496]Fix newtargets support: since Nmap 7.92, scripts could not add targets in script pre-scanning phase. [Daniel Miller]
  • [GH#2468]Scripts dhcp-discover and broadcast-dhcp-discover now support setting a client identifier. [nnposter]
  • [GH#2331][GH#2471]Script oracle-tns-version was not reporting the version correctly for Oracle 19c or newer [linholmes]
  • [GH#2296][GH#2342]Script redis-info was crashing or producing inaccurate information about client connections and/or cluster nodes. [nnposter]
  • [GH#2379]Nmap and Nping were unable to obtain system routes on FreeBSD [benpratt, nnposter]
  • [GH#2464]Script ipidseq was broken due to calling an unreachable library function. [nnposter]
  • [GH#2420][GH#2436]Support for EC crypto was not properly enabled if Nmap was compiled with OpenSSL in a custom location. [nnposter]
  • [NSE]Improvements to event handling and pcap socket garbage collection, fixing potential hangs and crashes. [Daniel Miller]
  • We ceased creating the Nmap win32 binary zipfile. It was useful back when you could just unzip it and run Nmap from there, but that hasn't worked well for many years. The win32 self-installer handles Npcap installation and many other dependencies and complexities. Anyone who needs the binaries for some reason can still install Nmap on any system and retrieve them from there. For now we're keeping the Win32 zipfile in the Nmap OEM Edition (https://nmap.org/oem) for companies building Nmap into their own products. But even in that case we believe that running the Nmap OEM self-installer in silent mode is a better approach.
  • [GH#2388]Fix TDS7 password encoding for mssql.lua, which had been assuming ASCII input even though other parts of the library had been passing it Unicode.
  • [GH#2402]Replace deprecated CPEs for IIS with their updated identifier, cpe:/a:microsoft:internet_information_services [Esa Jokinen]
  • [NSE][GH#2393]Fix script-terminating error when unknown BSON data types are encountered. Added parsers for most standard data types. [Daniel Miller]
  • [Ncat]Fix hostname/certificate comparison and matching to handle ASN.1 strings without null terminators, a similar bug to OpenSSL's CVE-2021-3712.
  • [Ncat][GH#2365]Added support for SOCKS5 proxies that return bind addresses as hostnames, instead of IPv4/IPv6 addresses. [pomu0325]

New in Nmap 7.92 (Aug 8, 2021)

  • [Windows] Upgraded Npcap (our Windows raw packet capturing and transmission driver) from version 1.00 to the latest version 1.50. You can read about the dozens of performance improvements, bug fixes and feature enhancements at https://npcap.org/changelog.
  • [Windows] Thanks to the Npcap 1.50 upgrade, Nmap now works on the Windows ARM architecture so you can run it on lightweight and power-efficient tablets like the Microsoft Surface Pro X and Samsung Galaxy Book Go. More ARM devices are on the way along with the upcoming Windows 11 release. See the Npcap on ARM announcement at https://seclists.org/nmap-announce/2021/2.
  • [Windows] Updated our Windows builds to Visual Studio 2019, Windows 10 SDK, and the UCRT. This prevents Nmap from working on Windows Vista and earlier, but they can still use older versions of Nmap on their ancient operating system.
  • New Nmap option --unique will prevent Nmap from scanning the same IP address twice, which can happen when different names resolve to the same address. [Daniel Miller]
  • [NSE][GH#1691] TLS 1.3 now supported by most scripts for which it is relevant, such as ssl-enum-ciphers. Some functions like ssl tunnel connections and certificate parsing will require OpenSSL 1.1.1 or later to fully support TLS 1.3. [Daniel Miller]
  • [NSE] Added 3 NSE scripts, from 4 authors, bringing the total up to 604! They are all listed at https://nmap.org/nsedoc/, and the summaries are below:
  • [GH#2201] nbns-interfaces queries NetBIOS name service (NBNS) to gather IP addresses of the target's network interfaces [Andrey Zhukov]
  • [GH#711] openflow-info gathers preferred and supported protocol versions from OpenFlow devices [Jay Smith, Mak Kolybabi]
  • port-states prints a list of ports that were found in each state, including states that were summarized as "Not shown: X closed ports" [Daniel Miller]
  • Several changes to UDP payloads to improve accuracy:
  • [GH#2269] Fix an issue with -sU where payload data went out-of-scope before it was used, causing corrupted payloads to be sent. [Mariusz Ziulek]
  • Nmap's retransmission limits were preventing some UDP payloads from being tried with -sU and -PU. Now, Nmap sends each payload for a particular port at the same time without delay. [Daniel Miller]
  • New UDP payloads:
  • [GH#1279] TS3INIT1 for UDP 3389 [colcrunch]
  • [GH#1895] DTLS for UDP 3391 (RD Gateway) [Arnim Rupp]
  • [NSE][GH#2208][GH#2203] SMB2 dialect handling has been redesigned. Visible changes include:
  • Notable improvement in speed of script smb-protocols and others
  • Some SMB scripts are no longer using a hardcoded dialect, improving target interoperability
  • Dialect names are aligned with Microsoft, such as 3.0.2, instead of 3.02 [nnposter]
  • [GH#2350] Upgraded OpenSSL to version 1.1.1k. This addresses some CVE's which don't affect Nmap in a material way. Details: https://github.com/nmap/nmap/issues/2350
  • Removed support for the ancient WinPcap library since we already include our own Npcap library (https://npcap.org) supporting the same API. WinPcap was abandoned years ago and it's official download page says that "WE RECOMMEND USING Npcap INSTEAD" for security, stability, compatibility, and support reasons.
  • [GH#2257] Fix an issue in addrset matching that was causing all targets to be excluded if the --excludefile listed a CIDR range that contains an earlier, smaller CIDR range. [Daniel Miller]
  • Upgrade the Windows NSIS installer to use the latest NSIS 3 (version 3.07) instead of the previous NSIS 2 generation.
  • Setting --host-timeout=0 will disable the host timeout, which is set by -T5 to 15 minutes. Earlier versions of Nmap require the user to specify a very long timeout instead.
  • Improvements to Nmap's XML output:
  • If a host times out, the XML element will have the attribute timedout="true" and the host's timing info (srtt etc.) will still be printed.
  • The "extrareasons" element now includes a list of port numbers for each "ignored" state. The "All X ports" and "Not shown:" lines in normal output have been changed slightly to provide more detail. [Daniel Miller]
  • [NSE][GH#2237] Prevent the ssl-* NSE scripts from probing ports that were excluded from version scan, usually 9100-9107, since JetDirect will print anything sent to these ports. [Daniel Miller]
  • [GH#2206] Nmap no longer produces cryptic message "Failed to convert source address to presentation format" when unable to find useable route to the target. [nnposter]
  • [Ncat][GH#2202] Use safety-checked versions of FD_* macros to abort early if number of connections exceeds FD_SETSIZE. [Pavel Zhukov]
  • [Ncat] Connections proxied via SOCKS4/SOCKS5 were intermittently dropping server data sent right after the connection got established, such as port banners. [Sami Pönkänen]
  • [Ncat][GH#2149] Fixed a bug in proxy connect mode which would close the connection as soon as it was opened in Nmap 7.90 and 7.91.
  • [NSE][GH#2175] Fixed NSE so it will not consolidate all port script output for targets which share an IP (e.g. HTTP vhosts) under one target. [Daniel Miller]
  • [Zenmap][GH#2157] Fixed an issue where a failure to execute Nmap would result in a Zenmap crash with "TypeError: coercing to Unicode" exception.
  • Nmap no longer considers an ICMP Host Unreachable as confirmation that a target is down, in accordance with RFC 1122 which says these errors may be transient. Instead, the probe will be destroyed and other probes used to determine aliveness. [Daniel Miller]
  • [Ncat][GH#2154] Ncat no longer crashes when used with Unix domain sockets.
  • [Ncat][GH#2167][GH#2168] Ncat is now again generating certificates with the duration of one year. Due to a bug, recent versions of Ncat were using only one minute. [Tobias Girstmair]
  • [NSE][GH#2281] URL/percent-encoding is now using uppercase hex digits to align with RFC 3986, section 2.1, and to improve compatibility with some real-world web servers. [nnposter]
  • [NSE][GH#2174] Script hostmap-crtsh got improved in several ways. The most visible are that certificate SANs are properly split apart and that identities that are syntactically incorrect to be hostnames are now ignored. [Michel Le Bihan, nnposter]
  • [NSE] Loading of a Nikto database failed if the file was referenced relative to the Nmap directory [nnposter]
  • [GH#2199] Updated Nmap's NPSL license to rewrite a poorly-worded clause abiyt "proprietary software companies". The new license version 0.93 is still available from https://nmap.org/npsl/. As described on that page, we are also still offering Nmap 7.90, 7.91, and 7.92 under the previous Nmap 7.80 license. Finally, we still offer the Nmap OEM program for companies who want a non-copyleft license allowing them to redistribute Nmap with their products at https://nmap.org/oem/.
  • [NSE] Script smb2-vuln-uptime no longer reports false positives when the target does not provide its boot time. [nnposter]
  • [NSE][GH#2197] Client packets composed by the DHCP library will now contain option 51 (IP address lease time) only when requested. [nnposter]
  • [NSE][GH#2192] XML decoding in library citrixxml no longer crashes when encountering a character reference with codepoint greater than 255. (These references are now left unmodified.) [nnposter]
  • [NSE] Script mysql-audit now defaults to the bundled mysql-cis.audit for the audit rule base. [nnposter]
  • [NSE][GH#1473] It is now possible to control whether the SNMP library uses v1 (default) or v2c by setting script argument snmp.version. [nnposter]

New in Nmap 7.91 (Oct 11, 2020)

  • [NSE][GH#2136][GH#2137] Rectify error "time result cannot be represented..." in the AFP library. [Clément Notin]
  • [NSE][GH#1473] It is now possible to control whether the SNMP library uses v1 (default) or v2c by setting script argument snmp.version. [nnposter] o [NSE][GH#2128] MySQL library was not properly parsing server responses, resulting in script crashes. [nnposter]
  • [NSE] Script mysql-audit now defaults to the bundled mysql-cis.audit for the audit rule base. [nnposter]

New in Nmap 7.90 (Oct 5, 2020)

  • [GH#2126] Fix the "iocp" Nsock engine for Windows to be able to correctly handle PCAP read events. This engine is now the default for Windows, which should greatly improve performance over the previous default, the "poll" engine. [Daniel Miller]
  • [GH#2051] Restrict Nmap's search path for scripts and data files. NMAPDATADIR, defined on Unix and Linux as ${prefix}/share/nmap, will not be searched on Windows, where it was previously defined as C:Nmap . Additionally, the --script option will not interpret names as directory names unless they are followed by a '/'. [Daniel Miller]
  • Removed nmap-update. This program was intended to provide a way to update data files and NSE scripts, but the infrastructure was never fielded. It depended on Subversion version control and would have required maintaining separate versions of NSE scripts for compatibility.
  • [GH#2050] Reduced CPU usage of OS scan by 50% by avoiding string copy operations and removing undocumented fingerprint syntax unused in nmap-os-db ('&' and '+' in expressions). [Daniel Miller]
  • [GH#92] Fix a regression in ARP host discovery left over from the move from massping to ultra_scan in Nmap 4.22SOC8 (2007) that sometimes resulted in missing ARP responses from targets near the end of a scan. Accuracy and speed are both improved. [Daniel Miller]
  • [GH#1834] Addressed over 250 code quality issues identified by LGTM.com, improving our code quality score from "C" to "A+"
  • [GH#1764] Fix an assertion failure when unsolicited ARP response is received: nmap: Target.cc:503: void Target::stopTimeOutClock(const timeval*): Assertion `htn.toclock_running == true' failed.
  • [GH#1859] Allow multiple UDP payloads to be specified for a port in nmap-payloads. If the first payload does not get a response, the remaining payloads are tried round-robin. [Paul Miseiko, Rapid7]
  • [GH#1860] 23 new UDP payloads and dozens more default ports for existing payloads developed for Rapid7's InsightVM scan engine. These speed up and ensure detection of open UDP services. [Paul Miseiko, Rapid7]
  • [GH#1616] New option --discovery-ignore-rst tells Nmap to ignore TCP RST responses when determining if a target is up. Useful when firewalls are spoofing RST packets. [Tom Sellers, Rapid7]
  • [Ncat][GH#2087][GH#1927][GH#1928][GH#1974] It is now possible to override the value of TLS SNI via --ssl-servername [Hank Leininger, nnposter]
  • [GH#2104] Fixed parsing of TCP options which would hang (infinite loop) if an option had an explicit length of 0. Affects Nmap 7.80 only. [Daniel Miller, Imed Mnif]
  • [NSE][GH#1460] Script ssh2-enum-algos would fail if the server initiated the key exchange before completing the protocol version exchange [Scott Ellis, nnposter]
  • [NSE][GH#2105] Fetching of SSH2 keys might fail because of key exchange confusion [nnposter]
  • [NSE][GH#2098] Performance of script afp-ls has been dramatically improved [nnposter]
  • [NSE][GH#2091] Parsing of AFP FPGetFileDirParms and FPEnumerateExt2FPEnumerateExt2 responses was not working correctly [nnposter]
  • [NSE][GH#2089] Eliminated false positives in script http-shellshock caused by simple reflection of HTTP request data [Anders Kaseorg]
  • [NSE][GH#1473] SNMP scripts are now enabled on non-standard ports where SNMP has been detected [usd-markus, nnposter]
  • [NSE][GH#2084] MQTT library was using incorrect position when parsing received responses [tatulea]
  • [NSE][GH#2086] IPMI library was using incorrect position when parsing received responses [Star Salzman]
  • [NSE][GH#2086] Scripts ipmi-brute and deluge-rpc-brute were not capturing successfully brute-forced credentials [Star Salzman]
  • Allow resuming IPv6 scans with --resume. The address parsing was assuming IPv4 addresses, leading to "Unable to parse ip" error. In a related fix, MAC addresses will not be parsed as IP addresses when resuming from XML. [Daniel Miller]
  • [GH#1622][GH#2068] Fix reverse-DNS handling of PTR records that are not lowercase. Nmap was failing to identify reverse-DNS names when the DNS server delivered them like ".IN-ADDR.ARPA". [Lucas Nussbaum, Richard Schütz, Daniel Miller]
  • [NSE][GH#1999][GH#2005] IKE library was not properly populating the protocol number in aggressive mode requests. [luc-x41]
  • [GH#1963] Added service fingerprinting for MySQL 8.x, Microsoft SQL Server 2019, MariaDB, and Crate.io CrateDB. Updated PostreSQL coverage and added specific detection of recent versions running in Docker. [Tom Sellers]
  • [NSE] New script uptime-agent-info collects system information from an Idera Uptime Infrastructure Monitor agent. [Daniel Miller]
  • [NSE] New outlib library will consolidate functions related to NSE output, both string formatting conventions and structured output. [Daniel Miller]
  • New XML output "hosthint" tag emitted during host discovery when a target is found to be up. This gives earlier notification than waiting for the hostgroup to finish all scan phases. [Paul Miseiko]
  • [GH#917] New UDP payloads for GPRS Tunneling Protocol (GTP) on ports 2123, 2152, and 3386. [Guillaume Teissier]
  • [NSE][GH#1825] SSH scripts now run on several ports likely to be SSH based on empirical data from Shodan.io, as well as the netconf-ssh service. [Lim Shi Min Jonathan, Daniel Miller]
  • [Zenmap][GH#1777] Stop creating a debugging output file 'tmp.txt' on the desktop in macOS. [Roland Linder]
  • [Nping] Address build failure under libc++ due to "using namespace std;" in several headers, resulting in conflicting definitions of bind(). Reported by StormBytePP and Rosen Penev. [Daniel Miller]
  • [Ncat][GH#1868] Fix a fatal error when connecting to a Linux VM socket with verbose output enabled. [Stefano Garzarella]
  • [Ncat][GH#2060] Proxy credentials can be alternatively passed onto Ncat by setting environment variable NCAT_PROXY_AUTH, which reduces the risk of the credentials getting captured in process logs. [nnposter]
  • [NSE][GH#1723] Fixed a crash on Windows when processing a GZIP-encoded HTTP body. [Daniel Miller]
  • Upgrade libpcap to 1.9.1, which addresses several CVE vulnerabilities.
  • Upgrade libssh2 to 1.9.0, fixing compilation with OpenSSL 1.1.0 API.
  • [GH#1717][GH#1718] Processing of IP address CIDR blocks was not working correctly on ppc64, ppc64le, and s390x architectures. [rfrohl, nnposter]
  • [Windows] Add support for the new loopback behavior in Npcap 0.9983. This enables Nmap to scan localhost on Windows without needing the Npcap Loopback Adapter to be installed, which was a source of problems for some users. [Daniel Miller]
  • [NSE] MS SQL library has improved version resolution, from service pack level to individual cumulative updates [nnposter]
  • [NSE][GH#2077] With increased verbosity, script http-default-accounts now reports matched target fingerprints even if no default credentials were found [nnposter]
  • [NSE][GH#2063] IPP request object conversion to string was not working correctly [nnposter]
  • [NSE][GH#2063] IPP response parser was not correctly processing end-of-attributes-tag [nnposter]
  • [NSE] Script cups-info was failing due to erroneous double-decoding of the IPP printer status [nnposter]
  • [NSE][GH#2010] Oracle TNS parser was incorrectly unmarshalling DALC byte arrays [nnposter]
  • [NSE] The password hashing function for Oracle 10g was not working correctly for non-alphanumeric characters [nnposter]
  • [NSE] Virtual host probing list, vhosts-full.lst, was missing numerous entries present in vhosts-default.lst [nnposter]
  • [NSE][GH#1931][GH#1932] Script http-grep was not correctly calculating Luhn checksum [Colleen Li, nnposter]
  • [NSE][GH#1838] Scripts dhcp-discover and broadcast-dhcp-discover now support new argument "mac" to force a specific client MAC address [nnposter]
  • [NSE] Code improvements in RPC Dump, benefitting NFS-related scripts [nnposter]
  • [NSE] RPC code was using incorrect port range, which was causing some calls, such as NFS mountd, to fail intermittently [nnposter]
  • [NSE][GH#1876] XML output from script ssl-cert now includes RSA key modulus and exponent [nnposter]
  • [NSE][GH#1837] Nmap no longer crashes when SMB scripts, such as smb-ls, call smb.find_files [nnposter]
  • [NSE][GH#1802] The MongoDB library was causing errors when assembling protocol payloads. [nnposter]
  • [NSE][GH#1781][GH#1796] The RTSP library was not correctly generating request strings. [nnposter]
  • [NSE][GH#1706] VNC handshakes were failing with insert position out of bounds error. [nnposter]
  • [NSE][GH#1720] Function marshall_dom_sid2 in library msrpctypes was not correctly populating ID Authority. [nnposter]
  • [NSE][GH#1720] Unmarshalling functions in library msrpctypes were attempting arithmetic on a nil argument. [Ivan Ivanov, nnposter]
  • [NSE][GH#1720] Functions lsa_lookupnames2 and lsa_lookupsids2 in library msrpc were incorrectly referencing function strjoin when called with debug level 2 or higher. [Ivan Ivanov]
  • [NSE][GH#1755][GH#2096] Added HTTP default account fingerprints for Tomcat Host Manager and Dell iDRAC9. [Clément Notin]
  • [NSE][GH#1476][GH#1707] A MS-SMB spec non-compliance in Samba was causing protocol negotiation to fail with data string too short error. [Clément Notin, nnposter]
  • [NSE][GH#1480][GH#1713][GH#1714] A bug in SMB library was causing scripts to fail with bad format argument error. [Ivan Ivanov]
  • [NSE] New script, dicom-brute.nse, attempts to brute force the called Application Entity Title of DICOM servers. [Paulino Calderon]
  • [NSE] New script, dicom-ping.nse, discovers DICOM servers and determines if any Application Entity Title is allowed to connect. [Paulino Calderon]
  • [NSE] New library, dicom.lua, implements the DICOM protocol used for storing and transfering medical images. [Paulino Calderon]
  • [NSE][GH#1665] The HTTP library no longer crashes when code requests digest authentication but the server does not provide the necessary authentication header. [nnposter]
  • [NSE] Fixed a bug in http-wordpress-users.nse that could cause extraneous output to be captured as part of a username. [Duarte Silva]
  • Added a UDP payload for STUN (Session Traversal Utilities for NAT). [David Fifield]
  • [NSE] Fixed an off-by-one bug in the stun.lua library that prevented parsing a server response. [David Fifield]

New in Nmap 7.80 (Aug 12, 2019)

  • [GH#1291][GH#34][GH#1339] Use pcap_create instead of pcap_live_open in Nmap, and set immediate mode on the pcap descriptor. This solves packet loss problems on Linux and may improve performance on other platforms. [Daniel Cater, Mike Pontillo, Daniel Miller]
  • [NSE] Collected utility functions for string processing into a new library, stringaux.lua. [Daniel Miller]
  • [NSE] New rand.lua library uses the best sources of random available on the system to generate random strings. [Daniel Miller]
  • [NSE] New library, oops.lua, makes reporting errors easy, with plenty of debugging detail when needed, and no clutter when not. [Daniel Miller]
  • [NSE] Collected utility functions for manipulating and searching tables into a new library, tableaux.lua. [Daniel Miller]
  • [NSE] New knx.lua library holds common functions and definitions for communicating with KNX/Konnex devices. [Daniel Miller]
  • [NSE][GH#1571] The HTTP library now provides transparent support for gzip- encoded response body. (See https://github.com/nmap/nmap/pull/1571 for an overview.) [nnposter]
  • [Nsock][Ncat][GH#1075] Add AF_VSOCK (Linux VM sockets) functionality to Nsock and Ncat. VM sockets are used for communication between virtual machines and the hypervisor. [Stefan Hajnoczi]
  • [Security][Windows] Address CVE-2019-1552 in OpenSSL by building with the prefix "C:Program Files (x86)NmapOpenSSL". This should prevent unauthorized users from modifying OpenSSL defaults by writing configuration to this directory.
  • [Security][GH#1147][GH#1108] Reduced LibPCRE resource limits so that version detection can't use as much of the stack. Previously Nmap could crash when run on low-memory systems against target services which are intentionally or accidentally difficult to match. Someone assigned CVE-2018-15173 for this issue. [Daniel Miller]
  • [GH#1361] Deprecate and disable the -PR (ARP ping) host discovery option. ARP ping is already used whenever possible, and the -PR option would not force it to be used in any other case. [Daniel Miller]
  • [NSE] bin.lua is officially deprecated. Lua 5.3, added 2 years ago in Nmap 7.25BETA2, has native support for binary data packing via string.pack and string.unpack. All existing scripts and libraries have been updated. [Daniel Miller]
  • [NSE] Completely removed the bit.lua NSE library. All of its functions are replaced by native Lua bitwise operations, except for `arshift` (arithmetic shift) which has been moved to the bits.lua library. [Daniel Miller]
  • [NSE][GH#1571] The HTTP library is now enforcing a size limit on the received response body. The default limit can be adjusted with a script argument, which applies to all scripts, and can be overridden case-by-case with an HTTP request option. (See https://github.com/nmap/nmap/pull/1571 for details.) [nnposter]
  • [NSE][GH#1648] CR characters are no longer treated as illegal in script XML output. [nnposter]
  • [GH#1659] Allow resuming nmap scan with lengthy command line [Clément Notin]
  • [NSE][GH#1614] Add TLS support to rdp-enum-encryption. Enables determining protocol version against servers that require TLS and lays ground work for some NLA/CredSSP information collection. [Tom Sellers]
  • [NSE][GH#1611] Address two protocol parsing issues in rdp-enum-encryption and the RDP nse library which broke scanning of Windows XP. Clarify protocol types [Tom Sellers]
  • [NSE][GH#1608] Script http-fileupload-exploiter failed to locate its resource file unless executed from a specific working directory. [nnposter]
  • [NSE][GH#1467] Avoid clobbering the "severity" and "ignore_404" values of fingerprints in http-enum. None of the standard fingerprints uses these fields. [Kostas Milonas]
  • [NSE][GH#1077] Fix a crash caused by a double-free of libssh2 session data when running SSH NSE scripts against non-SSH services. [Seth Randall]
  • [NSE][GH#1565] Updates the execution rule of the mongodb scripts to be able to run on alternate ports. [Paulino Calderon]
  • [Ncat][GH#1560] Allow Ncat to connect to servers on port 0, provided that the socket implementation allows this. [Daniel Miller]
  • Update the included libpcap to 1.9.0. [Daniel Miller]
  • [NSE][GH#1544] Fix a logic error that resulted in scripts not honoring the smbdomain script-arg when the target provided a domain in the NTLM challenge. [Daniel Miller]
  • [Nsock][GH#1543] Avoid a crash (Protocol not supported) caused by trying to reconnect with SSLv2 when an error occurs during DTLS connect. [Daniel Miller]
  • [NSE][GH#1534] Removed OSVDB references from scripts and replaced them with BID references where possible. [nnposter]
  • [NSE][GH#1504] Updates TN3270.lua and adds argument to disable TN3270E [Soldier of Fortran]
  • [GH#1504] RMI parser could crash when encountering invalid input [Clément Notin]
  • [GH#863] Avoid reporting negative latencies due to matching an ARP or ND response to a probe sent after it was recieved. [Daniel Miller]
  • [Ncat][GH#1441] To avoid confusion and to support non-default proxy ports, option --proxy now requires a literal IPv6 address to be specified using square-bracket notation, such as --proxy [2001:db8::123]:456. [nnposter]
  • [Ncat][GH#1214][GH#1230][GH#1439] New ncat option provides control over whether proxy destinations are resolved by the remote proxy server or locally, by Ncat itself. See option --proxy-dns. [nnposter]
  • [NSE][GH#1478] Updated script ftp-syst to prevent potential endless looping. [nnposter]
  • [GH#1454] New service probes and match lines for v1 and v2 of the Ubiquiti Discovery protocol. Devices often leave the related service open and it exposes significant amounts of information as well as the risk of being used as part of a DDoS. New nmap-payload entry for v1 of the protocol. [Tom Sellers]
  • [NSE] Removed hostmap-ip2hosts.nse as the API has been broken for a while and the service was completely shutdown on Feb 17th, 2019. [Paulino Calderon]
  • [NSE][GH#1318] Adds TN3270E support and additional improvements to tn3270.lua and updates tn3270-screen.nse to display the new setting. [mainframed]
  • [NSE][GH#1346] Updates product codes and adds a check for response length in enip-info.nse. The script now uses string.unpack. [NothinRandom]
  • [Ncat][GH#1310][GH#1409] Temporary RSA keys are now 2048-bit to resolve a compatibility issue with OpenSSL library configured with security level 2, as seen on current Debian or Kali. [Adrian Vollmer, nnposter]
  • [NSE][GH#1227] Fix a crash (double-free) when using SSH scripts against non-SSH services. [Daniel Miller]
  • [Zenmap] Fix a crash when Nmap executable cannot be found and the system PATH contains non-UTF-8 bytes, such as on Windows. [Daniel Miller]
  • [Zenmap] Fix a crash in results search when using the dir: operator: AttributeError: 'SearchDB' object has no attribute 'match_dir' [Daniel Miller]
  • [Ncat][GH#1372] Fixed an issue with Ncat -e on Windows that caused early termination of connections. [Alberto Garcia Illera]
  • [NSE][GH#1359] Fix a false-positive in http-phpmyadmin-dir-traversal when the server responds with 200 status to a POST request to any URI. [Francesco Soncina]
  • [NSE] New vulnerability state in vulns.lua, UNKNOWN, is used to indicate that testing could not rule out vulnerability. [Daniel Miller]
  • [GH#1355] When searching for Lua header files, actually use them where they are found instead of forcing /usr/include. [Fabrice Fontaine, Daniel Miller]
  • [NSE][GH#1331] Script traceroute-geolocation no longer crashes when www.GeoPlugin.net returns null coordinates [Michal Kubenka, nnposter]
  • Limit verbose -v and debugging -d levels to a maximum of 10. Nmap does not use higher levels internally. [Daniel Miller]
  • [NSE] tls.lua when creating a client_hello message will now only use a SSLv3 record layer if the protocol version is SSLv3. Some TLS implementations will not handshake with a client offering less than TLSv1.0. Scripts will have to manually fall back to SSLv3 to talk to SSLv3-only servers. [Daniel Miller]
  • [NSE][GH#1322] Fix a few false-positive conditions in ssl-ccs-injection. TLS implementations that responded with fatal alerts other than "unexpected message" had been falsely marked as vulnerable. [Daniel Miller]
  • Emergency fix to Nmap's birthday announcement so Nmap wishes itself a "Happy 21st Birthday" rather than "Happy 21th" in verbose mode (-v) on September 1, 2018. [Daniel Miller]
  • [GH#1150] Start host timeout clocks when the first probe is sent to a host, not when the hostgroup is started. Sometimes a host doesn't get probes until late in the hostgroup, increasing the chance it will time out. [jsiembida]
  • [Ncat][GH#1267] Fixed communication with commands launched with -e or -c on Windows, especially when --ssl is used. [Daniel Miller]
  • [NSE] Script http-default-accounts can now select more than one fingerprint category. It now also possible to select fingerprints by name to support very specific scanning. [nnposter]
  • [NSE] Script http-default-accounts was not able to run against more than one target host/port. [nnposter]
  • [NSE][GH#1251] New script-arg `http.host` allows users to force a particular value for the Host header in all HTTP requests.
  • [NSE][GH#1258] Use smtp.domain script arg or target's domain name instead of "example.com" in EHLO command used for STARTTLS. [gwire]
  • [NSE][GH#1233] Fix brute.lua's BruteSocket wrapper, which was crashing Nmap with an assertion failure due to socket mixup [Daniel Miller]: nmap: nse_nsock.cc:672: int receive_buf(lua_State*, int, lua_KContext): Assertion `lua_gettop(L) == 7' failed.
  • [NSE][GH#1254] Handle an error condition in smb-vuln-ms17-010 caused by IPS closing the connection. [Clément Notin]
  • [Ncat][GH#1237] Fixed literal IPv6 URL format for connecting through HTTP proxies. [Phil Dibowitz]
  • [NSE][GH#1212] Updates vendors from ODVA list for enip-info. [NothinRandom]
  • [NSE][GH#1191] Add two common error strings that improve MySQL detection by the script http-sql-injection. [Robert Taylor, Paulino Calderon]
  • [NSE][GH#1220] Fix bug in http-vuln-cve2006-3392 that prevented the script to generate the vulnerability report correctly. [rewardone]
  • [NSE][GH#1218] Fix bug related to screen rendering in NSE library tn3270. This patch also improves the brute force script tso-brute. [mainframed]
  • [NSE][GH#1209] Fix SIP, SASL, and HTTP Digest authentication when the algorithm contains lowercase characters. [Jeswin Mathai]
  • [GH#1204] Nmap could be fooled into ignoring TCP response packets if they used an unknown TCP Option, which would misalign the validation, causing it to fail. [Clément Notin, Daniel Miller]
  • [NSE]The HTTP response parser now tolerates status lines without a reason phrase, which improves compatibility with some HTTP servers. [nnposter]
  • [nnposter]
  • [NSE][GH#1158] Fix parsing http-grep.match script-arg. [Hans van den Bogert]
  • [Zenmap][GH#1177] Avoid a crash when recent_scans.txt cannot be written to. [Daniel Miller]
  • Fixed --resume when the path to Nmap contains spaces. Reported on Windows by Adriel Desautels. [Daniel Miller]
  • New service probe and match lines for adb, the Android Debug Bridge, which allows remote code execution and is left enabled by default on many devices. [Daniel Miller]
  • [NSE] Added 11 NSE scripts, from 8 authors, bringing the total up to 598! They are all listed at https://nmap.org/nsedoc/, and the summaries are below:
  • [GH#1232] broadcast-hid-discoveryd discovers HID devices on a LAN by sending a discoveryd network broadcast probe. [Brendan Coles]
  • [GH#1236] broadcast-jenkins-discover discovers Jenkins servers on a LAN by sending a discovery broadcast probe. [Brendan Coles]
  • [GH#1016][GH#1082] http-hp-ilo-info extracts information from HP Integrated Lights-Out (iLO) servers. [rajeevrmenon97]
  • [GH#1243] http-sap-netweaver-leak detects SAP Netweaver Portal with the Knowledge Management Unit enabled with anonymous access. [ArphanetX]
  • https-redirect detects HTTP servers that redirect to the same port, but with HTTPS. Some nginx servers do this, which made ssl-* scripts not run properly. [Daniel Miller]
  • [GH#1504] lu-enum enumerates Logical Units (LU) of TN3270E servers. [Soldier of Fortran]
  • [GH#1633] rdp-ntlm-info extracts Windows domain information from RDP services. [Tom Sellers]
  • smb-vuln-webexec checks whether the WebExService is installed and allows code execution. [Ron Bowes]
  • smb-webexec-exploit exploits the WebExService to run arbitrary commands with SYSTEM privileges. [Ron Bowes]
  • [GH#1457] ubiquiti-discovery extracts information from the Ubiquiti Discovery service and assists version detection. [Tom Sellers]
  • [GH#1126] vulners queries the Vulners CVE database API using CPE information from Nmap's service and application version detection. [GMedian, Daniel Miller]
  • [NSE][GH#1169][GH#1170][GH#1171]][GH#1198] Parser for HTTP Set-Cookie header is now more compliant with RFC 6265:
  • empty attributes are tolerated
  • double quotes in cookie and/or attribute values are treated literally
  • attributes with empty values and value-less attributes are parsed equally
  • attributes named "name" or "value" are ignored
  • [NSE] Support for edns-client-subnet (ECS) in dns.lua has been improved by:
  • [GH#1271] Using ECS code compliant with RFC 7871 [John Bond]
  • Properly trimming ECS address, as mandated by RFC 7871 [nnposter]
  • Fixing a bug that prevented using the same ECS option table more than once [nnposter]

New in Nmap 7.70 (Mar 21, 2018)

  • Integrated all of your service/version detection fingerprints submitted from March 2017 to August 2017 (728 of them). The signature count went up 1.02% to 11,672, including 26 new softmatches. We now detect 1224 protocols from filenet-pch, lscp, and netassistant to sharp-remote, urbackup, and watchguard. We will try to integrate the remaining submissions in the next release.
  • Integrated all of your IPv4 OS fingerprint submissions from September 2016 to August 2017 (667 of them). Added 298 fingerprints, bringing the new total to 5,652. Additions include iOS 11, macOS Sierra, Linux 4.14, Android 7, and more.
  • Integrated all 33 of your IPv6 OS fingerprint submissions from September 2016 to August 2017. New groups for OpenBSD 6.0 and FreeBSD 11.0 were added, as well as strengthened groups for Linux and OS X.
  • Added the --resolve-all option to resolve and scan all IP addresses of a host. This essentially replaces the resolveall NSE script. [Daniel Miller]
  • [NSE][SECURITY] Nmap developer nnposter found a security flaw (directory traversal vulnerability) in the way the non-default http-fetch script sanitized URLs. If a user manualy ran this NSE script with against a malicious web server, the server could potentially (depending on NSE arguments used) cause files to be saved outside the intended destination directory. Existing files couldn't be overwritten. We fixed http-fetch, audited our other scripts to ensure they didn't make this mistake, and we updated the httpspider library API to protect against this by default. [nnposter, Daniel Miller]
  • [GH#978] Fixed Nsock on Windows giving errors when selecting on STDIN. This was causing Ncat 7.60 in connect mode to quit with error: libnsock select_loop(): nsock_loop error 10038: An operation was attempted on something that is not a socket. [nnposter]
  • [Ncat][GH#197][GH#1049] Fix --ssl connections from dropping on renegotiation, the same issue that was partially fixed for server mode in [GH#773]. Reported on Windows with -e by pkreuzt and vinod272. [Daniel Miller]
  • [NSE][GH#1062][GH#1149] Some changes to brute.lua to better handle misbehaving or rate-limiting services. Most significantly, brute.killstagnated now defaults to true. Thanks to xp3s and Adamtimtim for reporing infinite loops and proposing changes.
  • [NSE] VNC scripts now support Apple Remote Desktop authentication (auth type 30) [Daniel Miller]
  • [NSE][GH#1111] Fix a script crash in ftp.lua when PASV connection timed out. [Aniket Pandey]
  • [NSE][GH#1114] Update bitcoin-getaddr to receive more than one response message, since the first message usually only has one address in it. [h43z]
  • [Ncat][GH#1139] Ncat now selects the correct default port for a given proxy type. [Pavel Zhukov]
  • [NSE] memcached-info can now gather information from the UDP memcached service in addition to the TCP service. The UDP service is frequently used as a DDoS reflector and amplifier. [Daniel Miller]
  • [NSE][GH#1129] Changed url.absolute() behavior with respect to dot and dot-dot path segments to comply with RFC 3986, section 5.2. [nnposter]
  • Removed deprecated and undocumented aliases for several long options that used underscores instead of hyphens, such as --max_retries. [Daniel Miller]
  • Improved service scan's treatment of soft matches in two ways. First of all, any probes that could result in a full match with the soft matched service will now be sent, regardless of rarity. This improves the chances of matching unusual services on non-standard ports. Second, probes are now skipped if they don't contain any signatures for the soft matched service. Previously the probes would still be run as long as the target port number matched the probe's specification. Together, these changes should make service/version detection faster and more accurate. For more details on how it works, see https://nmap.org/book/vscan.html. [Daniel Miller]
  • --version-all now turns off the soft match optimization, ensuring that all probes really are sent, even if there aren't any existing match lines for the softmatched service. This is slower, but gives the most comprehensive results and produces better fingerprints for submission. [Daniel Miller]
  • [NSE][GH#1083] New set of Telnet softmatches for version detection based on Telnet DO/DON'T options offered, covering a wide variety of devices and operating systems. [D Roberson]
  • [GH#1112] Resolved crash opportunities caused by unexpected libpcap version string format. [Gisle Vanem, nnposter]
  • [NSE][GH#1090] Fix false positives in rexec-brute by checking responses for indications of login failure. [Daniel Miller]
  • [NSE][GH#1099] Fix http-fetch to keep downloaded files in separate destination directories. [Aniket Pandey]
  • Added a new service detection match for WatchGuard Authentication Gateway. [Paulino Calderon]
  • [NSE][GH#1038][GH#1037] Script qscan was not observing interpacket delays (parameter qscan.delay). [nnposter]
  • [NSE][GH#1046] Script http-headers now fails properly if the target does not return a valid HTTP response. [spacewander]
  • [Ncat][Nsock][GH#972] Remove RC4 from the list of TLS ciphers used by default, in accordance with RFC 7465. [Codarren Velvindron]
  • [NSE][GH#1022] Fix a false positive condition in ipmi-cipher-zero caused by not checking the error code in responses. Implementations which return an error are not vulnerable. [Juho Jokelainen]
  • [GH#1009][GH#1013] Fixes to autoconf header files to allow autoreconf to be run. [Lukas Schwaighofer]
  • [GH#977] Improved DNS service version detection coverage and consistency by using data from a Project Sonar Internet wide survey. Numerouse false positives were removed and reliable softmatches added. Match lines for version.bind responses were also conslidated using the technique below. [Tom Sellers]
  • [GH#977] Changed version probe fallbacks so as to work cross protocol (TCP/UDP). This enables consolidating match lines for services where the responses on TCP and UDP are similar. [Tom Sellers]
  • [NSE][GH#532] Added the zlib library for NSE so scripts can easily handle compression. This work started during GSOC 2014, so we're particularly pleased to finally integrate it! [Claudiu Perta, Daniel Miller]
  • [NSE][GH#1004] Fixed handling of brute.retries variable. It was being treated as the number of tries, not retries, and a value of 0 would result in infinite retries. Instead, it is now the number of retries, defaulting to 2 (3 total tries), with no option for infinite retries.
  • [NSE] http-devframework-fingerprints.lua supports Jenkins server detection and returns extra information when Jenkins is detected [Vinamra Bhatia]
  • [GH#926] The rarity level of MS SQL's service detection probe was decreased. Now we can find MS SQL in odd ports without increasing version intensity. [Paulino Calderon]
  • [GH#957] Fix reporting of zlib and libssh2 versions in "nmap --version". We were always reporting the version number of the included source, even when a different version was actually linked. [Pavel Zhukov]
  • Add a new helper function for nmap-service-probes match lines: $I(1,">") will unpack an unsigned big-endian integer value up to 8 bytes wide from capture 1. The second option can be "

New in Nmap 7.60 (Aug 2, 2017)

  • [NSE][GH#910] NSE scripts now have complete SSH support via libssh2, including password brute-forcing and running remote commands, thanks to the combined efforts of three Summer of Code students: [Devin Bjelland, Sergey Khegay, Evangelos Deirmentzoglou]
  • [NSE] Removed smbv2-enabled, which was incompatible with the new SMBv2/3 improvements. It was fully replaced by the smb-protocols script.
  • [Ncat][GH#446] Added Datagram TLS (DTLS) support to Ncat in connect (client) mode with --udp --ssl. Also added Application Layer Protocol Negotiation (ALPN) support with the --ssl-alpn option. [Denis Andzakovic, Daniel Miller]
  • Updated the default ciphers list for Ncat and the secure ciphers list for Nsock to use "!aNULL:!eNULL" instead of "!ADH". With the addition of ECDH ciphersuites, anonymous ECDH suites were being allowed. [Daniel Miller]
  • [NSE][GH#930] Fix ndmp-version and ndmp-fs-info when scanning Veritas Backup Exec Agent 15 or 16. [Andrew Orr]
  • [NSE][GH#943] Added new SMB2/3 library and related scripts. [Paulino Calderon]
  • [NSE][GH#950] Added wildcard detection to dns-brute. Only hostnames that resolve to unique addresses will be listed. [Aaron Heesakkers]
  • [NSE] FTP scripts like ftp-anon and ftp-brute now correctly handle TLS-protected FTP services and use STARTTLS when necessary. [Daniel Miller]
  • [NSE][GH#936] Function url.escape no longer encodes so-called "unreserved" characters, including hyphen, period, underscore, and tilde, as per RFC 3986. [nnposter]
  • [NSE][GH#935] Function http.pipeline_go no longer assumes that persistent connections are supported on HTTP 1.0 target (unless the target explicitly declares otherwise), as per RFC 7230. [nnposter]
  • [NSE][GH#934] The HTTP response object has a new member, version, which contains the HTTP protocol version string returned by the server, e.g. "1.0". [nnposter]
  • [NSE][GH#938] Fix handling of the objectSID Active Directory attribute by ldap.lua. [Tom Sellers]
  • [NSE] Fix line endings in the list of Oracle SIDs used by oracle-sid-brute. Carriage Return characters were being sent in the connection packets, likely resulting in failure of the script. [Anant Shrivastava]
  • [NSE][GH#141] http-useragent-checker now checks for changes in HTTP status (usually 403 Forbidden) in addition to redirects to indicate forbidden User Agents. [Gyanendra Mishra]
  • [NSE] Added 14 NSE scripts from 6 authors, bringing the total up to 579! They are all listed at https://nmap.org/nsedoc/, and the summaries are below:
  • ftp-syst sends SYST and STAT commands to FTP servers to get system version and connection information. [Daniel Miller]
  • [GH#916] http-vuln-cve2017-8917 checks for an SQL injection vulnerability affecting Joomla! 3.7.x before 3.7.1. [Wong Wai Tuck]
  • iec-identify probes for the IEC 60870-5-104 SCADA protocol. [Aleksandr Timorin, Daniel Miller]
  • [GH#915] openwebnet-discovery retrieves device identifying information and number of connected devices running on openwebnet protocol. [Rewanth Cool]
  • puppet-naivesigning checks for a misconfiguration in the Puppet CA where naive signing is enabled, allowing for any CSR to be automatically signed. [Wong Wai Tuck]
  • [GH#943] smb-protocols discovers if a server supports dialects NT LM 0.12 (SMBv1), 2.02, 2.10, 3.00, 3.02 and 3.11. This replaces the old smbv2-enabled script. [Paulino Calderon]
  • [GH#943] smb2-capabilities lists the supported capabilities of SMB2/SMB3 servers. [Paulino Calderon]
  • [GH#943] smb2-time determines the current date and boot date of SMB2 servers. [Paulino Calderon]
  • [GH#943] smb2-security-mode determines the message signing configuration of SMB2/SMB3 servers. [Paulino Calderon]
  • [GH#943] smb2-vuln-uptime attempts to discover missing critical patches in Microsoft Windows systems based on the SMB2 server uptime. [Paulino Calderon]
  • ssh-auth-methods lists the authentication methods offered by an SSH server. [Devin Bjelland]
  • ssh-brute performs brute-forcing of SSH password credentials. [Devin Bjelland]
  • ssh-publickey-acceptance checks public or private keys to see if they could be used to log in to a target. A list of known-compromised key pairs is included and checked by default. [Devin Bjelland]
  • ssh-run uses user-provided credentials to run commands on targets via SSH. [Devin Bjelland]

New in Nmap 7.50 (Jun 17, 2017)

  • Integrated all of your service/version detection fingerprints submitted from September to March (855 of them). The signature count went up 2.9% to 11,418. We now detect 1193 protocols from apachemq, bro, and clickhouse to jmon, slmp, and zookeeper. Highlights: http://seclists.org/nmap-dev/2017/q2/140
  • [NSE] Added 14 NSE scripts from 12 authors, bringing the total up to 566
  • [NSE][GH#266][GH#704][GH#238][GH#883] NSE libraries smb and msrpc now use fully qualified paths. SMB scripts now work against all modern versions of Microsoft Windows. [Paulino Calderon]
  • [NSE] smb library's share_get_list now properly uses anonymous connections first before falling back authenticating as a known user.
  • New service probes and matches for Apache HBase and Hadoop MapReduce. [Paulino Calderon]
  • Extended Memcached service probe and added match for Apache ZooKeeper. [Paulino Calderon]
  • [NSE] New script argument "vulns.short" will reduce vulns library script output to a single line containing the target name or IP, the vulnerability state, and the CVE ID or title of the vulnerability. [Daniel Miller]
  • [NSE][GH#862] SNMP scripts will now take a community string provided like `--script-args creds.snmp=private`, which previously did not work because it was interpreted as a username. [Daniel Miller]
  • [NSE][GH#766] The HTTP Host header will now include the port unless it is the default one for a given scheme. [nnposter]
  • [NSE] The HTTP response object has a new member, fragment, which contains a partially received body (if any) when the overall request fails to complete. [nnposter]
  • [NSE][GH#866] NSE now allows cookies to have arbitrary attributes, which are silently ignored (in accordance with RFC 6265). Unrecognized attributes were previously causing HTTP requests with such cookies to fail. [nnposter]
  • [NSE][GH#844] NSE now correctly parses a Set-Cookie header that has unquoted whitespace in the cookie value (which is allowed per RFC 6265). [nnposter]
  • [NSE][GH#731] NSE is now able to process HTTP responses with a Set-Cookie header that has an extraneous trailing semicolon. [nnposter]
  • [NSE][GH#708] TLS SNI now works correctly for NSE HTTP requests initiated with option any_af. As an added benefit, option any_af is now available for all connections via comm.lua, not just HTTP requests. [nnposter]
  • [NSE][GH#781] There is a new common function, url.get_default_port(), to obtain the default port number for a given scheme. [nnposter]
  • [NSE][GH#833] Function url.parse() now returns the port part as a number, not a string. [nnposter]
  • No longer allow ICMP Time Exceeded messages to mark a host as down during host discovery. Running traceroute at the same time as Nmap was causing interference. [David Fifield]
  • [NSE][GH#807] Fixed a JSON library issue that was causing long integers to be expressed in the scientific/exponent notation. [nnposter]
  • [NSE] Fixed several potential hangs in NSE scripts that used receive_buf(pattern), which will not return if the service continues to send data that does not match pattern. A new function in match.lua, pattern_limit, is introduced to limit the number of bytes consumed while searching for the pattern. [Daniel Miller, Jacek Wielemborek]
  • [Nsock] Handle any and all socket connect errors the same: raise as an Nsock error instead of fatal. This prevents Nmap and Ncat from quitting with "Strange error from connect:" [Daniel Miller]
  • [NSE] Added several commands to redis-info to extract listening addresses, connected clients, active channels, and cluster nodes. [Vasiliy Kulikov]
  • [NSE][GH#679][GH#681] Refreshed script http-robtex-reverse-ip, reflecting changes at the source site (www.robtex.com). [aDoN]
  • [NSE][GH#620][GH#715] Added 8 new http-enum fingerprints for Hadoop infrastructure components. [Thomas Debize, Varunram Ganesh]
  • [NSE][GH#629] Added two new fingerprints to http-default-accounts (APC Management Card, older NetScreen ScreenOS) [Steve Benson, nnposter]
  • [NSE][GH#716] Fix for oracle-tns-version which was sending an invalid TNS probe due to a string escaping mixup. [Alexandr Savca]
  • [NSE][GH#694] ike-version now outputs information about supported attributes and unknown vendor ids. Also, a new fingerprint for FortiGate VPNs was submitted by Alexis La Goutte. [Daniel Miller]
  • [GH#700] Enabled support for TLS SNI on the Windows platform. [nnposter]
  • [GH#649] New service probe and match lines for the JMON and RSE services of IBM Explorer for z/OS. [Soldier of Fortran]
  • Removed a duplicate service probe for Memcached added in 2011 (the original probe was added in 2008) and reported as duplicate in 2013 by Pavel Kankovsky.
  • New service probe and match line for NoMachine NX Server remote desktop. [Justin Cacak]
  • [Zenmap] Fixed a recurring installation problem on OS X/macOS where Zenmap was installed to /Applications/Applications/Zenmap.app instead of /Applications/Zenmap.app.
  • [Zenmap][GH#639] Zenmap will no longer crash when no suitable temporary directory is found. Patches contributed by [Varunram Ganesh] and [Sai Sundhar]
  • [Zenmap][GH#626] Zenmap now properly handles the -v0 (no output) option, which was added in Nmap 7.10. Previously, this was treated the same as not specifying -v at all. [lymanZerga11]
  • [GH#630] Updated or removed some OpenSSL library calls that were deprecated in OpenSSL 1.1. [eroen]
  • [NSE] Script ssh-hostkey now recognizes and reports Ed25519 keys [nnposter]
  • [NSE][GH#627] Fixed script hang in several brute scripts due to the "threads" script-arg not being converted to a number. Error message was "nselib/brute.lua:1188: attempt to compare number with string" [Arne Beer]
  • [NSE] Resolved several issues in the default HTTP redirect rules:
  • [GH#826] A redirect is now cancelled if the original URL contains embedded credentials
  • [GH#829] A redirect test is now more careful in determining whether a redirect destination is related to the original host
  • [GH#830] A redirect is now more strict in avoiding possible redirect loops
  • [Ncat] A series of changes and fixes based on feedback from the Red Hat community:
  • [GH#157] Ncat will now continue trying to connect to each resolved address for a hostname before declaring the connection refused, allowing it to fallback from IPv6 to IPv4 or to connect to names that use DNS failover. [Jaromir Koncicky, Michal Hlavinka]
  • The --no-shutdown option now also works in connect mode, not only in listen mode.
  • Made -i/--idle-timeout not cause Ncat in server mode to close while waiting for an initial connection. This was also causing -i to interfere with the HTTP proxy server mode. [Carlos Manso, Daniel Miller]
  • [GH#773] Ncat in server mode properly handles TLS renegotiations and other situations where SSL_read returns a non-fatal error. This was causing SSL-over-TCP connections to be dropped. [Daniel Miller]
  • Enable --ssl-ciphers to be used with Ncat in client mode, not only in server (listen) mode. [Daniel Miller]

New in Nmap 7.40 (Dec 21, 2016)

  • Integrated all of your IPv4 OS fingerprint submissions from April to September (568 of them). Added 149 fingerprints, bringing the new total to 5,336. Additions include Linux 4.6, macOS 10.12 Sierra, NetBSD 7.0, and more. Highlights: http://seclists.org/nmap-dev/2016/q4/110 [Daniel Miller]
  • Integrated all of your service/version detection fingerprints submitted from April to September (779 of them). The signature count went up 3.1% to 11,095. We now detect 1161 protocols, from airserv-ng, domaintime, and mep to nutcracker, rhpp, and usher. Highlights: http://seclists.org/nmap-dev/2016/q4/115 [Daniel Miller]
  • Fix reverse DNS on Windows which was failing with the message "mass_dns: warning: Unable to determine any DNS servers." This was because the interface GUID comparison needed to be case-insensitive. [Robert Croteau]
  • [NSE][GH#518] Brute scripts are faster and more accurate. New feedback and adaptivity mechanisms in brute.lua help brute scripts use resources more efficiently, dynamically changing number of threads based on protocol messages like FTP 421 errors, network errors like timeouts, etc. [Sergey Khegay]
  • [GH#353] New option --defeat-icmp-ratelimit dramatically reduces UDP scan times in exchange for labeling unresponsive (and possibly open) ports as "closed|filtered". Ports which give a UDP protocol response to one of Nmap's scanning payloads will be marked "open". [Sergey Khegay]
  • [NSE][GH#533] Removed ssl-google-cert-catalog, since Google shut off that service at some point. Reported by Brian Morin.
  • [NSE][GH#606] New NSE library, geoip.lua, provides a common framework for storing and retrieving IP geolocation results. [Mak Kolybabi]
  • [Ncat] Restore the connection success message that Ncat prints with -v. This was accidentally suppressed when not using -z.
  • [GH#316] Added scan resume from Nmap's XML output. Now you can --resume a canceled scan from all 3 major output formats: -oN, -oG, and -oX. [Tudor Emil Coman]
  • [Ndiff][GH#591] Fix a bug where hosts with the same IP but different hostnames were shown as changing hostnames between scans. Made sort stable with regard to hostnames. [Daniel Miller]
  • [NSE][GH#540] Add tls.servername script-arg for forcing a name to be used for TLS Server Name Indication extension. The argument overrides the default use of the host's targetname. [Bertrand Bonnefoy-Claudet]
  • [GH#505] Updated Russian translation of Zenmap by Alexander Kozlov.
  • [NSE][GH#588] Fix a crash in smb.lua when using smb-ls due to a floating-point number being passed to os.time ("bad argument"). [Dallas Winger]
  • [NSE][GH#596] Fix a bug in mysql.lua that caused authentication failures in mysql-brute and other scripts due to including a null terminator in the salt value. This bug affects Nmap 7.25BETA2 and later releases. [Daniel Miller]
  • The --open option now implies --defeat-rst-ratelimit. This may result in inaccuracies in the numbers of "Not shown:" closed and filtered ports, but only in situations where it also speeds up scan times. [Daniel Miller]
  • [NSE] Added known Diffie-Hellman parameters for haproxy, postfix, and IronPort to ssl-dh-params. [Frank Bergmann]
  • Added service probe for ClamAV servers (clam), an open source antivirus engine used in mail scanning. [Paulino Calderon]
  • Added service probe and UDP payload for Quick UDP Internet Connection (QUIC), a secure transport developed by Google and used with HTTP/2. [Daniel Miller]
  • [NSE] Enabled resolveall to run against any target provided as a hostname, so the resolveall.hosts script-arg is no longer required. [Daniel Miller]
  • [NSE][GH#573] Updated http.lua to allow processing of HTTP responses with malformed header names. Such header lines are still captured in the rawheader list but skipped otherwise. [nnposter]
  • [GH#416] New service probe and match line for iperf3. [Eric Gershman]
  • [NSE][GH#555] Add Drupal to the set of web apps brute forced by http-form-brute. [Nima Ghotbi]
  • [NSE] Added 12 NSE scripts from 4 authors, bringing the total up to 552! They are all listed at https://nmap.org/nsedoc/, and the summaries are below:
  • cics-enum enumerates CICS transaction IDs, mapping to screens in TN3270 services. [Soldier of Fortran]
  • cics-user-enum brute-forces usernames for CICS users on TN3270 services. [Soldier of Fortran]
  • fingerprint-strings will print the ASCII strings it finds in the service fingerprints that Nmap shows for unidentified services. [Daniel Miller]
  • [GH#606] ip-geolocation-map-bing renders IP geolocation data as an image via Bing Maps API. [Mak Kolybabi]
  • [GH#606] ip-geolocation-map-google renders IP geolocation data as an image via Google Maps API. [Mak Kolybabi]
  • [GH#606] ip-geolocation-map-kml records IP geolocation data in a KML file for import into other mapping software [Mak Kolybabi]
  • nje-pass-brute brute-forces the password to a NJE node, given a valid RHOST and OHOST. Helpfully, nje-node-brute can now brute force both of those values. [Soldier of Fortran]
  • [GH#557] ssl-cert-intaddr will search for private IP addresses in TLS certificate fields and extensions. [Steve Benson]
  • tn3270-screen shows the login screen from mainframe TN3270 Telnet services, including any hidden fields. The script is accompanied by the new tn3270 library. [Soldier of Fortran]
  • tso-enum enumerates usernames for TN3270 Telnet services. [Soldier of Fortran]
  • tso-brute brute-forces passwords for TN3270 Telnet services. [Soldier of Fortran]
  • vtam-enum brute-forces VTAM application IDs for TN3270 services. [Soldier of Fortran]
  • [NSE] Revised script http-default-accounts in several ways [nnposter]:
  • Added 21 new fingerprints, plus broadened 5 to cover more variants.
  • [GH#577] It can now can test systems that return status 200 for non-existent pages.
  • [GH#604] Implemented XML output. Layout of the classic text output has also changed, including reporting blank usernames or passwords as "", instead of just empty strings.
  • Added CPE entries to individual fingerprints (where known). They are reported only in the XML output.

New in Nmap 7.31 (Oct 21, 2016)

  • Fixed the way Nmap handles scanning names that resolve to the same IP. Due to changes in 7.30, the IP was only being scanned once, with bogus results displayed for the other names. The previous behavior is now restored. [Tudor Emil Coman]
  • [GH#350] Fix an assertion failure due to floating point error in equality comparison, which triggered mainly on OpenBSD: assertion "diff

New in Nmap 7.30 (Sep 30, 2016)

  • Integrated all 12 of your IPv6 OS fingerprint submissions from June to September. No new groups, but several classifications were strengthened, especially Windows localhost and OS X. [Daniel Miller]
  • Upgraded Npcap, our new Windows packet capturing driver/library, from version to 0.09 to 0.10r2. This includes many bug fixes, with a particular on emphasis on concurrency issues discovered by running hundreds of Nmap instances at a time. More details are available from https://github.com/nmap/npcap/releases. [Yang Luo, Daniel Miller, Fyodor]
  • New service probes and match lines for DTLS, IPMI-RMCP, MQTT, PCWorx, ProConOS, and Tridium Fox, [Stephen Hilt, Mak Kolybabi, Daniel Miller]
  • Improved some output filtering to remove or escape carriage returns ('r') that could allow output spoofing by overwriting portions of the screen. Issue reported by Adam Rutherford. [Daniel Miller]
  • [NSE] Fixed a few bad Lua patterns that could result in denial of service due to excessive backtracking. [Adam Rutherford, Daniel Miller]
  • Fixed a discrepancy between the number of targets selected with -iR and the number of hosts scanned, resulting in output like "Nmap done: 1033 IP addresses" when the user specified -iR 1000. [Daniel Miller]
  • Fixed a bug in port specification parsing that could cause extraneous 'T', 'U', 'S', and 'P' characters to be ignored when they should have caused an error. [David Fifield]
  • [GH#543] Restored compatibility with LibreSSL, which was lost in adding library version checks for OpenSSL 1.1. [Wonko7]
  • [NSE] Fixed a bug in ssl-enum-ciphers and ssl-dh-params which caused them to not output TLSv1.2 info with DHE ciphersuites or others involving ServerKeyExchange messages. [Daniel Miller]
  • [NSE] Added X509v3 extension parsing to NSE's sslcert code. ssl-cert now shows the Subject Alternative Name extension; all extensions are shown in the XML output. [Daniel Miller]
  • [Zenmap] Fixed a bug in the Compare Scans window of Zenmap on OS X resulting in this message instead of Ndiff output:
  • ImportError: dlopen(/Applications/Zenmap.app/Contents/Resources/lib/python2.7/lib-dynload/datetime.so, 2): no suitable image found. Did find:
  • /Applications/Zenmap.app/Contents/Resources/lib/python2.7/lib-dynload/datetime.so: mach-o, but wrong architecture
  • [NSE] Added 7 NSE scripts, from 3 authors, bringing the total up to 541! They are all listed at https://nmap.org/nsedoc/, and the summaries are below (authors are listed in brackets):
  • [GH#369] coap-resources grabs the list of available resources from CoAP endpoints. [Mak Kolybabi]
  • fox-info retrieves detailed version and configuration info from Tridium Niagara Fox services. [Stephen Hilt]
  • ipmi-brute performs authentication brute-forcing on IPMI services. [Claudiu Perta]
  • ipmi-cipher-zero checks IPMI services for Cipher Zero support, which allows connection without a password. [Claudiu Perta]
  • ipmi-version retrieves protocol version and authentication options from ASF-RMCP (IPMI) services. [Claudiu Perta]
  • [GH#352] mqtt-subscribe connects to a MQTT broker, subscribes to topics, and lists the messages received. [Mak Kolybabi]
  • pcworx-info retrieves PLC model, firmware version, and date from Phoenix Contact PLCs. [Stephen Hilt]

New in Nmap 7.25 Beta 2 (Sep 2, 2016)

  • [NSE] Upgraded NSE to Lua 5.3, adding bitwise operators, integer data type, a utf8 library, and native binary packing and unpacking functions. Removed bit library, added bits.lua, replaced base32, base64, and bin libraries. [Patrick Donnelly]
  • Integrated all of your service/version detection fingerprints submitted from January to April (578 of them). The signature count went up 2.2% to 10760. We now detect 1122 protocols, from elasticsearch, fhem, and goldengate to ptcp, resin-watchdog, and siemens-logo. [Daniel Miller]
  • [Nsock][GH#148] New, very fast IOCP Nsock engine uses "Overlapped I/O" to improve performance of version scan and NSE against many targets on Windows. [Tudor Emil Coman]
  • [Zenmap][GH#449] Fix a crash when closing Zenmap due to a read-only zenmap.conf. User will be warned that config cannot be saved and that they should fix the file permissions. [Daniel Miller]
  • [NSE] Fix a crash when parsing TLS certificates that OpenSSL doesn't support, like DH certificates or corrupted certs. When this happens, ssl-enum-ciphers will label the ciphersuite strength as "unknown." Reported by Bertrand Bonnefoy-Claudet. [Daniel Miller]
  • [NSE] Fixed a bug in ssl-enum-ciphers and ssl-dh-params which caused them to not output TLSv1.2 info with DHE ciphersuites or others involving ServerKeyExchange messages. [Daniel Miller]
  • [NSE][GH#531] Fix two issues in sslcert.lua that prevented correct operations against LDAP services when version detection or STARTTLS were used. [Tom Sellers]
  • [Zenmap] Long-overdue Spanish language translation has been added! Muy bien! [Vincent Dumont, Marta Garcia De La Paz, Paulino Calderon, Patricio Castagnaro]
  • [GH#426] Remove a workaround for lack of selectable pcap file descriptors on Windows, which required including pcap-int.h and locking us to a single version of libpcap. The new method, using WaitForSingleObject should work with all versions of both WinPcap and Npcap. [Daniel Miller]
  • [NSE][GH#234] Added a --script-timeout option for limiting run time for every individual NSE script. [Abhishek Singh]
  • [Ncat][GH#444] Added a -z option to Ncat. Just like the -z option in traditional netcat, it can be used to quicky check the status of a port. Port ranges are not supported. [Abhishek Singh]
  • Fix checking of Npcap/WinPcap presence on Windows so that "nmap -A" and "nmap" with no options result in the same behaviors as on Linux (and no crashes) [Daniel Miller]
  • [NSE] ssl-enum-ciphers will now warn about 64-bit block ciphers in CBC mode, which are vulnerable to the SWEET32 attack.
  • [NSE][GH#117] tftp-enum now only brute-forces IP-address-based Cisco filenames when the wordlist contains "{cisco}". Previously, custom wordlists would still end up sending these extra 256 requests. [Sriram Raghunathan]
  • [GH#472] Avoid an unnecessary assert failure in timing.cc when printing estimated completion time. Instead, we'll output a diagnostic error message: Timing error: localtime(n) is NULL, where "n" is some number that is causing problems. [Jean-Guilhem Nousse]
  • [NSE][GH#519] Removed the obsolete script ip-geolocation-geobytes. [Paulino Calderon]
  • [NSE] Added 9 new fingerprints for script http-default-accounts. (Motorola AP, Lantronix print server, Dell iDRAC6, HP StorageWorks, Zabbix, Schneider controller, Xerox printer, Citrix NetScaler, ESXi hypervisor) [nnposter]
  • [NSE] Completed a refresh and validation of almost all fingerprints for script http-default-accounts. Also improved the script speed. [nnposter]
  • [GH#98] Added support for decoys in IPv6. Earlier we supported decoys only in IPv4. [Abhishek Singh]
  • Various performance improvements for large-scale high-rate scanning, including increased ping host groups, faster probe matching, and ensuring data types can handle an Internet's-worth of targets. [Tudor Emil Coman]
  • [GH#484] Allow Nmap to compile on some older Red Hat distros that disable EC crypto support in OpenSSL. [Jeroen Roovers, Vincent Dumont]
  • [GH#439] Nmap now supports OpenSSL 1.1.0-pre5 and previous versions. [Vincent Dumont]
  • [Ncat] Fix a crash ("add_fdinfo() failed.") when --exec was used with --ssl and --max-conns, due to improper accounting of file descriptors. [Daniel Miller]
  • FTP Bounce scan: improved some edge cases like anonymous login without password, 500 errors used to indicate port closed, and timeouts for LIST command. Also fixed a 1-byte array overrun (read) when checking for privileged ports. [Daniel Miller]
  • [GH#140] Allow target DNS names up to 254 bytes. We previously imposed an incorrect limit of 64 bytes in several parts of Nmap. [Vincent Dumont]
  • [NSE] The hard limit on number of concurrently running scripts can now increase above 1000 to match a high user-set --min-parallelism value. [Tudor Emil Coman]
  • [NSE] Solved a memory corruption issue that would happen if a socket connect operation produced an error immediately, such as Network Unreachable. The event handler was throwing a Lua error, preventing Nsock from cleaning up properly, leaking events. [Abhishek Singh, Daniel Miller]
  • [NSE] Added the datetime library for performing date and time calculations, and as a helper to the clock-skew script.
  • [GH#103][GH#364] Made Nmap's parallel reverse DNS resolver more robust, fully handling truncated replies. If a response is too long, we now fall back to using the system resolver to answer it. [Abhishek Singh]
  • [Zenmap][GH#279] Added a legend for the Topography window. [Suraj Hande]
  • [NSE] Added 2 NSE scripts, bringing the total up to 534! They are both listed at https://nmap.org/nsedoc/, and the summaries are below:
  • oracle-tns-version decodes the version number from Oracle Database Server's TNS listener. [Daniel Miller]
  • clock-skew analyzes and reports clock skew between Nmap and services that report timestamps, grouping hosts with similar skews. [Daniel Miller]

New in Nmap 7.25 Beta 1 (Jul 17, 2016)

  • [NSE][GH#365] Added sslv2-drown for detecting vulnerability to the DROWN attack, including CVE-2016-0703 and CVE-2016-0704 that enable fast attacks on OpenSSL. [Bertrand Bonnefoy-Claudet]
  • [NSE] Added http-mcmp for detecting mod_cluster Management Protocol (MCMP) and dumping its configuration. [Frank Spierings]
  • [Nping] Nping is now fully compatible with Npcap. [Daniel Miller]
  • [GH#279][Zenmap] Added a legend for the Topography window. [Suraj Hande]
  • [NSE] Added clamav-exec to detect ClamAV servers vulnerable to unauthorized clamav command execution. [Paulino Calderon]
  • [NSE] Added http-aspnet-debug to detect ASP.NET applications with debugging enabled. Script submitted by Josh Amishav-Zlatin. [Paulino Calderon]
  • Nmap can now make full use of Npcap, the Nmap Project's packet sniffing library for Windows. Most notably, this enables SYN scan and OS detection against localhost. [Yang Luo]
  • [NSE] Fix a crash that happened when trying to print the percent done of 0 NSE script threads: timing.cc:710 bool ScanProgressMeter::printStats(double, const timeval*): Assertion 'ltime' failed. This would happen if no scripts were scheduled in a scan phase and the user pressed a key or specified a short --stats-every interval. Reported by Richard Petrie. [Daniel Miller]
  • [NSE] ssl-enum-ciphers will give a failing score to any server with an RSA certificate whose public key uses an exponent of 1. [Daniel Miller]
  • Update oldest supported Windows version to Vista (Windows 6.0). This enables the use of the poll Nsock engine. [Daniel Miller]
  • [GH#345][Zenmap] On Windows, save Zenmap's stderr output to a writeable location (%LOCALAPPDATA%zenmap.exe.log or %TEMP%zenmap.exe.log) instead of next to the zenmap.exe executable. This avoids a warning message when closing Zenmap if it produced any stderr output. [Daniel Miller]
  • [GH#379][NSE] Fix http-iis-short-name-brute to report non vulnerable hosts. Reported by alias1. [Paulino Calderon]
  • [GH#283][Nsock] Avoid "unknown protocol:0" debug messages and an "Unknown address family 0" crash on Windows and other platforms that do not set the src_addr argument to recvfrom for TCP sockets. [Daniel Miller]
  • [NSE][GH#371] Fix mysql-audit by adding needed library requires to the mysql-cis.audit file. The script would fail with "Failed to load rulebase" message. [Paolo Perego]
  • Retrieve the correct network prefix length for an adapter on Windows. If more than one address was configured on an adapter, the same prefix length would be used for both. This incorrect behavior is still used on Windows XP and earlier. Reported by Niels Bohr. [Daniel Miller]
  • [NSE] ssl-enum-ciphers will cap the score of an RC4-ciphersuite handshake at C and output a warning referencing RFC 7465.
  • Changed libdnet-stripped to avoid bailing completely when an interface is encountered with an unsupported hardware address type. Caused "INTERFACES: NONE FOUND!" bugs in Nmap whenever Linux kernel added new hardware address types. [Daniel Miller]
  • [NSE][GH#362] Added support for LDAP over udp to ldap-rootdse.nse. Also added version detection and information extraction to match the new LDAP LDAPSearchReq and LDAPSearchReqUDP probes. [Tom Sellers]
  • [GH#354] Added new version detection Probes for LDAP services, LDAPSearchReq and LDAPSearchReqUDP. The second is Microsoft Active Directory specific. The Probes will elicit responses from target services that allow better finger -printing and information extraction. Also added nmap-payload entry for detecting LDAP on udp. [Tom Sellers]
  • [NSE] Added vnc-title for logging in to VNC servers and grabbing the desktop title, geometry, and color depth. [Daniel Miller]
  • [NSE] More VNC updates: Support for VeNCrypt and Tight auth types, output of authentication sub-types in vnc-info, and all zero-authentication types are recognized and reported. [Daniel Miller]
  • [NSE] Update to enable smb-os-discovery to augment version detection for certain SMB related services using data that the script discovers. [Tom Sellers]
  • Improved version detection and descriptions for Microsoft and Samba SMB services. Also addresses certain issues with OS identification. [Tom Sellers]

New in Nmap 7.12 (Mar 30, 2016)

  • [Zenmap] Avoid file corruption in zenmap.conf, reported as files containing many null ("\x00") characters.
  • [NSE] VNC updates including vnc-brute support for TLS security type and negotiating a lower RFB version if the server sends an unknown higher version. [Daniel Miller]
  • [NSE] Added STARTTLS support for VNC, NNTP, and LMTP [Daniel Miller]
  • Added new service probes and match lines for OpenVPN on UDP and TCP.

New in Nmap 7.11 (Mar 23, 2016)

  • [NSE][GH#341] Added support for diffie-hellman-group-exchange-* SSH key exchange methods to ssh2.lua, allowing ssh-hostkey to run on servers that only support custom Diffie-Hellman groups. [Sergey Khegay]
  • [NSE] Added support in sslcert.lua for Microsoft SQL Server's TDS protocol, so you can now grab certs with ssl-cert or check ciphers with ssl-enum-ciphers. [Daniel Miller]
  • [Zenmap] Fix a crash when setting default window geometry
  • [Zenmap] Fix a crash when displaying the date from an Nmap XML file due to an empty or unknown locale:
  • [Zenmap] Fix a crash due to incorrect file paths when installing to /usr/local prefix.

New in Nmap 7.10 (Mar 17, 2016)

  • [NSE] Added 12 NSE scripts from 7 authors, bringing the total up to 527! They are all listed at https://nmap.org/nsedoc/, and the summaries are below (authors are listed in brackets):
  • [GH#322] http-apache-server-status parses the server status page of Apache's mod_status. [Eric Gershman]
  • http-vuln-cve2013-6786 detects a XSS and URL redirection vulnerability in Allegro RomPager web server. Also added a fingerprint for detecting CVE-2014-4019 to http-fingerprints.lua. [Vlatko Kosturjak]
  • [GH#226] http-vuln-cve2014-3704 detects and exploits the "Drupalgeddon" pre-auth SQL Injection vulnerability in Drupal. [Mariusz Ziulek]
  • imap-ntlm-info extracts hostname and sometimes OS version from NTLM-auth-enabled IMAP services. [Justin Cacak]
  • ipv6-multicast-mld-list discovers IPv6 multicast listeners with MLD probes. The discovery is the same as targets-ipv6-multicast-mld, but the subscribed addresses are decoded and listed. [Alexandru Geana, Daniel Miller]
  • ms-sql-ntlm-info extracts OS version and sometimes hostname from MS SQL Server instances via the NTLM challenge message. [Justin Cacak]
  • nntp-ntlm-info extracts hostname and sometimes OS version from NTLM-auth-enabled NNTP services. [Justin Cacak]
  • pop3-ntlm-info extracts hostname and sometimes OS version from NTLM-auth-enabled POP3 services. [Justin Cacak]
  • rusers retrieves information about logged-on users from the rusersd RPC service. [Daniel Miller]
  • [GH#333] shodan-api queries the Shodan API (https://www.shodan.io) and retrieves open port and service info from their Internet-wide scan data. [Glenn Wilkinson]
  • smtp-ntlm-info extracts hostname and sometimes OS version from NTLM-auth-enabled SMTP and submission services. [Justin Cacak]
  • telnet-ntlm-info extracts hostname and sometimes OS version from NTLM-auth-enabled Telnet services. [Justin Cacak]
  • Updated the OpenSSL shipped with our binary builds (Windows, OS X, and Linux RPM) to 1.0.2g with SSLv2 enabled.
  • Integrated all of your IPv4 OS fingerprint submissions from October to January (536 of them). Added 104 fingerprints, bringing the new total to 5089. Additions include Linux 4.2, more Windows 10, IBM i 7, and more. Highlights: http://seclists.org/nmap-dev/2016/q1/270 [Daniel Miller]
  • Integrated all of your service/version detection fingerprints submitted from October to January (508 of them). The signature count went up 2.2% to 10532. We now detect 1108 protocols, from icy, finger, and rtsp to ipfs, basestation, and minecraft-pe. Highlights: http://seclists.org/nmap-dev/2016/q1/271 [Daniel Miller]
  • Integrated all 12 of your IPv6 OS fingerprint submissions from October to January. The classifier added 3 new groups, including new and expanded groups for OS X, bringing the new total to 96. Highlights: http://seclists.org/nmap-dev/2016/q1/273 [Daniel Miller]
  • [NSE] Upgrade to http-form-brute allowing correct handling of token-based CSRF protections and cookies. Also, a simple database of common login forms supports Django, Wordpress, MediaWiki, Joomla, and others. [Daniel Miller]
  • [Zenmap] [GH#247] Remember window geometry (position and size) from the previous time Zenmap was run. [isjing]
  • New service probe for CORBA GIOP (General Inter-ORB Protocol) detection should elicit a not-found exception from GIOP services that do not respond to non-GIOP probes. [Quentin Hardy]
  • [GH#284] Fix retrieval of route netmasks on FreeBSD. IPv6 routes were given /32 netmasks regardless of actual netmask configured, resulting in failed routing. Reported by Martin Gysi. [Daniel Miller]
  • [GH#272][GH#269] Give option parsing errors after the usage statement, or avoid printing the usage statement in some cases. The options summary has grown quite large, requiring users to scroll to the top to see the error message. [Abhishek Singh]
  • [GH#249][Nsock] Avoid a crash on Windows reported by users using Zenmap's Slow Comprehensive Scan profile. In the case of unknown OpenSSL errors, ERR_reason_error_string would return NULL, which could not be printed with the "%s" format string. Reported by Dan Baxter. [Gisle Vanem, Daniel Miller]
  • [GH#293][Zenmap] Fix a regression in our build that caused copy-and-paste to not work in Zenmap on Windows.
  • Changed Nmap's idea of reserved and private IP addresses to include 169.254/16 (RFC3927) and remove 6/8, 7/8, and 55/8 networks. This list, in libnetutil's isipprivate function, is used to filter -iR randomly generated targets. The newly-valid address ranges belong to the U.S. Department of Defense, so users wanting to avoid those ranges should use their own exclusion lists with --exclude or --exclude-file. [Bill Parker, Daniel Miller]
  • Allow the -4 option for Nmap to indicate IPv4 address family. This is the default, and using the option doesn't change anything, but does make it more explicit which address family you want to scan. Using -4 with -6 is an error. [Daniel Miller]
  • [GH#265] When provided a verbosity of 0 (-v0), Nmap will not output any text to the screen. This happens at the time of argument parsing, so the usual meaning of "verbosity 0" is preserved. [isjing]
  • [NSE][GH#314] Fix naming of SSL2_RC2_128_CBC_WITH_MD5 and SSL2_RC2_128_CBC_EXPORT40_WITH_MD5 ciphers in sslv2 in order to match the draft specification from Mozilla. [Bertrand Bonnefoy-Claudet]
  • [NSE][GH#320] Add STARTTLS support to sslv2 to enable SSLv2 detection against services that are not TLS encrypted by default but that support post connection upgrade. This will enable more comprehensive detection of SSLv2 and DROWN (CVE-2016-0800) attack oracles. [Tom Sellers]
  • [NSE][GH#301] Added default credential checks for RICOH Web Image Monitor and BeEF to http-default-accounts. [nnposter]
  • Properly display Next-hop MTU value from ICMP Type 3 Code 4 Fragmentation Required messages when tracing packets or in Nping output. Improper offset meant we were printing the total IP length. [Sławomir Demeszko]
  • [NSE] Added support for DHCP options "TFTP server name" and "Bootfile name" to dhcp.lua and enabled checking for options with a code above 61 by default. [Mike Rykowski]
  • [NSE] whois-ip: Don't request a remote IANA assignments data file when the local filesystem will not permit the file to cached in a local file. [jah]
  • [NSE] Updated http-php-version hash database to cover all versions from PHP 4.1.0 to PHP 5.4.45. Based on scans of a few thousand PHP web servers pulled from Shodan API (https://www.shodan.io/) [Daniel Miller]
  • Use the same ScanProgressMeter for FTP bounce scan (-b) as for the other scan types, allowing periodic status updates with --stats-every or keypress events. [Daniel Miller]
  • [GH#274] Use a shorter pcap_select timeout on OpenBSD, just as we do for OS X, old FreeBSD, and Solaris, which use BPF for packet capture and do not have properly select-able fds. Fix by OpenBSD port maintainer [David Carlier]
  • Print service info in grepable output for ports which are not listed in nmap-services when a service tunnel (SSL) is detected. Previously, the service info ("ssl|unknown") was not printed unless the service inside the tunnel was positively identified. http://seclists.org/nmap-dev/2015/q4/260 [Daniel Miller]
  • [NSE] [GH#242] Fix multiple false-positive sources in http-backup-agent. [Tom Sellers]

New in Nmap 7.01 (Dec 9, 2015)

  • Switch to using gtk-mac-bundler and jhbuild for building the OS X installer. This promises to reduce a lot of the problems we've had with local paths and dependencies using the py2app and macports build system. [Daniel Miller]
  • Updated the OpenSSL shipped with our binary builds (Windows, OS X, and RPM) to 1.0.2e.
  • [Zenmap] [GH#235] Fix several failures to launch Zenmap on OS X. The new build process eliminates these errors: IOError: [Errno 2] No such file or directory: '/Applications/Zenmap.app/Contents/Resources/etc/pango/pangorc.in' LSOpenURLsWithRole() failed for the application /Applications/Zenmap.app with error -10810.
  • [NSE] [GH#254] Update the TLSSessionRequest probe in ssl-enum-ciphers to match the one in nmap-service-probes, which was fixed previously to correct a length calculation error. [Daniel Miller]
  • [NSE] [GH#251] Correct false positives and unexpected behavior in http-* scripts which used http.identify_404 to determine when a file was not found on the target. The function was following redirects, which could be an indication of a soft-404 response. [Tom Sellers]
  • [NSE] [GH#241] Fix a false-positive in hnap-info when the target responds with 200 OK to any request. [Tom Sellers]
  • [NSE] [GH#244] Fix an error response in xmlrpc-methods when run against a non-HTTP service. The expected behavior is no output. [Niklaus Schiess]
  • [NSE] Fix SSN validation function in http-grep, reported by Bruce Barnett.

New in Nmap 7.00 (Nov 19, 2015)

  • This is the most important release since Nmap 6.00 back in May 2012! For a list of the most significant improvements and new features, see the announcement at: https://nmap.org/7
  • [Ncat] [GH#151] [GH#142] New option --no-shutdown prevents Ncat from shutting down when it reads EOF on stdin. This is the same as traditional netcat's "-d" option. [Adam Saponara]
  • [NSE] [GH#229] Improve parsing in http.lua for multiple Set-Cookie headers in a single response. [nnposter]
  • [NSE] Added 6 NSE scripts from 6 authors, bringing the total up to 515! They are all listed at https://nmap.org/nsedoc/, and the summaries are below (authors are listed in brackets):
  • targets-xml extracts target addresses from previous Nmap XML results files. [Daniel Miller]
  • [GH#232] ssl-dh-params checks for problems with weak, non-safe, and export-grade Diffie-Hellman parameters in TLS handshakes. This includes the LOGJAM vulnerability (CVE-2015-4000). [Jacob Gajek]
  • nje-node-brute does brute-forcing of z/OS JES Network Job Entry node names. [Soldier of Fortran]
  • ip-https-discover detectings support for Microsoft's IP over HTTPS tunneling protocol. [Niklaus Schiess]
  • [GH#165] broadcast-sonicwall-discover detects and extracts information from SonicWall firewalls. [Raphael Hoegger]
  • [GH#38] http-vuln-cve2014-8877 checks for and optionally exploits a vulnerability in CM Download Manager plugin for Wordpress. [Mariusz Ziulek]

New in Nmap 6.49 Beta 6 (Nov 4, 2015)

  • [NSE] Added ip-https-discover for detecting support for Microsoft's IP over HTTPS tunneling protocol. [Niklaus Schiess]
  • [NSE] [GH#229] Improve parsing in http.lua for multiple Set-Cookie headers in a single response. [nnposter]
  • [NSE] [GH#194] Add support for reading fragmented TLS messages to ssl-enum-ciphers. [Jacob Gajek]
  • [Ncat] [GH#193] Fix Ncat listen mode over Unix sockets (named pipes) on OS X. This was crashing with the error: Ncat: getnameinfo failed: Undefined error: 0 QUITTING.
  • Fixed by forcing the name to "localhost" [Michael Wallner]
  • [NSE] Added knx-gateway-discover and knx-gateway-info scripts for gathering information from multicast and unicast KNX gateways, which connect home automation systems to IP networks. [Niklaus Schiess, Dominik Schneider]
  • [NSE] Added script http-ls. Parses web server directory index pages with optional recursion. [Pierre Lalet]
  • [NSE] Added script xmlrpc-methods. This script perfoms introspection of xmlrpc services and lists methods and their description. [Gyanendra Mishra]
  • [NSE] Added script http-fetch. This script can be used to fetch all files from the target, specific files from the target or files that match a given pattern. [Gyanendra Mishra]
  • [NSE] Added script http-svn-enum. Enumerates users of a Subversion repostory by examinning commit logs. [Gyanendra Mishra]
  • [NSE] Added script http-svn-info. Requests information from a Subversion repository.[Gyanendra Mishra]
  • [NSE] Added hnap-info, detects and outputs info for Home Network Administration Protocol devices. [Gyanendra Mishra]
  • [NSE] Added http-webdav-scan, which detects WebDAV servers. [Gyanendra Mishra]
  • [NSE] Added tor-consensus-checker, which checks if a target is a known Tor node. [Jiayi Ye]
  • [GH#51] Added IPv6 support to nmap_mass_rdns, improved reverse DNS cache, and refactored DNS code to improve readability and extensibility. All in all, this makes the rDNS portion of IPv6 scans much faster. [Gioacchino Mazzurco]
  • [NSE] Added NTLM brute support to http-brute. [Gyanendra Mishra]
  • [NSE] Added NTLM authentication support to http.lua and a related function to create an ntlm v2 session response in smbauth.lua. [Gyanendra Mishra]
  • [NSE] [GH#106] Added a new NSE module, ls.lua, for accumulating and outputting file and directory listings. The afp-ls, nfs-ls, and smb-ls scripts have been converted to use this module. [Pierre Lalet]
  • [NSE] [GH#171] Splits smb-check-vulns into smb-vuln-conficker, smb-vuln-cve2009-3103, smb-vuln-ms06-025, smb-vuln-ms07-029, smb-vuln-regsvc-dos and smb-vuln-ms08-067. The scripts now support the library vulns and the script arguments "safe" and and "unsafe" were removed in favor of allowing users to control execution by NSE category. [Paulino Calderon]
  • [NSE] bacnet-info.nse and s7-info.nse were added to the version category. [Paulino Calderon]
  • [NSE] Added 124 new identifiers to bacnet-info.nse vendor database. [Paulino Calderon]
  • [NSE] Fixed bacnet-info.nse to bind to the service port detected during scan instead of fixed port. [Paulino Calderon]
  • Fix a crash in Zenmap when using Compare Results: AttributeError: 'NoneType' object has no attribute 'get_nmap_output' [Daniel Miller]
  • [NSE] Enhanced reporting of elliptic curve names and strengths in ssl-enum-ciphers. The name of the curve is now reported instead of just "ec" [Brandon Paulsen]
  • [GH#75] Normalize Makefile targets to use the same verb-project format, e.g. build-ncat, check-zenmap, install-nping, clean-nsock [Gioacchino Mazzurco]
  • [NSE] Removed http-email-harvest as the the new http-grep does email address scraping by default. [Gyanendra Mishra]
  • [NSE] http-drupal-modules was renamed to http-drupal-enum. Extended to enumerate both themesa and modules of drupal installaions. [Gyanendra Mishra]
  • [NSE] Added builtin pattern and multiple pattern search to http-grep. [Gyanendra Mishra]
  • [NSE] http-crossdomainxml is now http-cross-domain-policy and supports client access policies and uses the new SLAXML parser. [Gyanendra Mishra]
  • [NSE] Added a patch for vulns lib that allows list of tables to be submitted to fields in the vulns report. [Jacob Gajek]
  • [NSE] Added additional checks for successful PUT request in http-put. [Oleg Mitrofanov]
  • [NSE] Added an update for http-methods that checks all possible methods not in Allow or Public header of OPTIONS response. [Gyanendra Mishra]
  • [NSE] Added SLAXML, an XML parser in Lua originally written by Gavin Kistner (a.k.a. Phrogz). [Gyanendra Mishra]
  • [NSE] [GH#122] Update the snmp-brute and other snmp-* scripts to use the creds library to store brute-forced snmp community strings. This allows Nmap to use the correct brute-forced string for each host. [Gioacchino Mazzurco]
  • Several improvements to TLS/SSL detection in nmap-service-probes. A new probe, TLSSessionReq, and improvements to default SSL ports should help speed up -sV scans. http://seclists.org/nmap-dev/2015/q2/17 [Daniel Miller]
  • [Nsock] Clean up the API so that nsp_* calls are now nsock_pool_* and nsi_* are nsock_iod_*. Simplify Nsock SSL init API, and make logging global to the library instead of associated with a nspool. [Henri Doreau]
  • [GH#181] The configure script now prints a summary of configured options. Most importantly, it warns if OpenSSL was not found, since most users will want this library compiled in. [Gioacchino Mazzurco]
  • Define TCP Options for SYN scan in nmap.h instead of literally throughout. This string is used by p0f and other IDS to detect Nmap scans, so having it a compile-time option is a step towards better evasion. [Daniel Miller]
  • [GH#51] Nmap's parallel reverse-DNS resolver now handles IPv6 addresses. This should result in faster -6 scans. The old behavior is available with --system-dns. [Gioacchino Mazzurco]
  • [NSE] Fix a couple odd bugs in NSE command-line parsing. Most notably, --script broadcast-* will now work (generally, wildcards with scripts whose name begins with a category name were not working properly). [Daniel Miller]
  • [NSE] [GH#113] http-form-fuzzer will now stop increasing the size of a request when an HTTP 413 or 414 error indicates the web server will not accept a larger request. [Gioacchino Mazzurco]
  • [NSE] [GH#159] Add the ability to tag credentials in the creds library with freeform text for easy retrieval. This gives necessary granularity to track credentials to multiple web apps on a single host+port. [Gioacchino Mazzurco]

New in Nmap 6.49 Beta 5 (Sep 27, 2015)

  • Work around a bug which could cause Nmap to hang when running multiple instances at once on Windows. The actual bug appears to be in the WinPCAP driver in that it hanges when accessed via OpenServiceA by multiple processes at once. So for now we have added a mutex to prevent even multiple Nmap processes from making concurrent calls to this part of WinPcap. We've received the reports from multiple users on Windows 8.1 and Windows Server 2012 R2 and this fix seems to resolve the hang for them. [Daniel Miller]
  • [GH#212][NSE] Fix http.get_url function which was wrongly attempting non-SSL HTTP requests first when passed https URLs. [jah]
  • [GH#201] Fix Ndiff interpreter path problems in the OS X .dmg installer which could prevent Ndiff (and the related Zenmap "compare results" window) from working on OS X in some cases. [Daniel Miller]
  • Fix Nmap's DTD, which did not recognize that the script element could contain character data when a script returns a number or a boolean. [Jonathan Daugherty]
  • [GH#172][NSE] Fix reporting of DH parameter sizes by ssl-enum-ciphers. The number shown was the length in bytes, not bits as it should have been. Reported by Michael Staruch. [Brandon Paulsen]
  • Our Windows Nmap packages are now compiled with the older platform toolset (v120_xp rather than v120) and so they may work with Windows XP again for the dwindling number of users still on that operating system.
  • [GH#34] Disable TPACKET_V3 in our included libpcap. This version of the Linux kernel packet ring API has problems that result in lots of lost packets. This patch falls back to TPACKET_V2 or earlier versions if available. [nnposter]
  • [NSE] Check for socket errors in iscsi.lua. This was causing the iscsi-info script to crash against some services. [Daniel Miller]
  • [NSE] Fix http-useragent-tester, which was using cached HTTP responses instead of testing new User-Agent strings. [Daniel Miller]
  • Output a warning when deprecated options are used, and suggest the preferred option. Currently deprecated: -i -o -m -sP -P0 -PN -oM -sR. The warning is only visible with -v. [Daniel Miller]
  • Add a fatal error for options like -oG- which is interpreted as the deprecated -o option, outputting to a file named "G-", instead of the expected behavior of -oG - (Grepable output to stdout). [Daniel Miller]
  • [GH#196] Fix raw packet sending on FreeBSD 10.0 and later. FreeBSD changed byte order of the IPv4 stack, so SYN scan and other raw packet functions were broken. [Edward Napierała] Also reported in [GH#50] by Olli Hauer.
  • [GH#183] Fix compilation on Visual Studio 2010, which failed with error: "service_scan.cc(2559): error C2065: 'EOPNOTSUPP' : undeclared identifier" [Daniel Miller]
  • [GH#115][NSE] ssl-enum-ciphers will still produce output if OpenSSL (required for certificate parsing) is not available. In cases where handshake strength depends on the certificate, it will be reported as "unknown". [jrchamp]

New in Nmap 6.49 Beta 4 (Jul 6, 2015)

  • [NSE] Added NTLM brute support to http-brute. [Gyanendra Mishra]
  • [NSE] Added NTLM authentication support to http.lua and a related function to create an ntlm v2 session response in smbauth.lua. [Gyanendra Mishra]
  • [NSE] ssl-enum-ciphers now marks cipher scores as unkown for ciphers requiring the use of openssl when openssl is missing. [jrchamp]
  • [NSE] Added builtin pattern and multiple pattern search to http-grep. [Gyanendra Mishra]
  • [NSE] http-crossdomainxml is now http-cross-domain-policy and supports client access policies and uses the new SLAXML parser. [Gyanendra Mishra]
  • [NSE] Added a patch for vulns lib that allows list of tables to be submitted to fields in the vulns report. [Jacob Gajek]
  • [NSE] Added additional checks for successful PUT request in http-put. [Oleg Mitrofanov]
  • [NSE] Added an update for http-methods that checks all possible methods not in Allow or Public header of OPTIONS response. [Gyanendra Mishra]
  • [NSE] Added SLAXML, an XML parser in Lua originally written by Gavin Kistner (a.k.a. Phrogz). [Gyanendra Mishra]
  • [NSE] Added hnap-info, detects and outputs info for Home Network Administration Protocol devices. [Gyanendra Mishra]
  • [NSE] Allow ssl-enum-ciphers to run on non-typical ports when it is selected by name. It will now send a service detection probe if the port is not a typical SSL port and version scan (-sV) was not used. [Daniel Miller]
  • [NSE] Added http-webdav-scan, which detects WebDAV servers. [Gyanendra Mishra]

New in Nmap 6.49 Beta 3 (Jun 26, 2015)

  • [GH#166] Fix Ncat listen mode on Solaris and other platforms where struct sockaddr does not have a sa_len member. This also affected use of the -p and -s options. Brandon Haberfeld reported the crash. [Daniel Miller]
  • [GH#164] Fix a Zenmap failure ot open on OS X with the error: "dyld: Symbol not found: _iconv Referenced from: /usr/lib/libcups.2.dylib". We had to remove the DYLD_LIBRARY_PATH environment variable from zenmap_wrapper.py. Reported by Robert Strom. [Daniel Miller]
  • Report our https URL (https://nmap.org) in more places rather than our non-SSL one. [David Fifield]
  • [NSE] Fix Diffie-Hellman parameter extraction in tls.lua. [Jacob Gajek]

New in Nmap 6.49 Beta 2 (Jun 17, 2015)

  • Integrated all of your IPv4 OS fingerprint submissions from May 2014 to February 2015 (1900+ of them). Added 281 fingerprints, bringing the new total to 4766. Addtions include Linux 3.18, Windows 8.1, OS X 10.10, Android 5.0, FreeBSD 10.1, OpenBSD 5.6, and more. Highlights: http://seclists.org/nmap-dev/2015/q2/169 [Daniel Miller]
  • Integrated all of your service/version detection fingerprints submitted from June 2013 to February 2015 (2500+ of them). The signature count soared over the 10000 mark, a 12% increase. We now detect 1062 protocols, from http, telnet, and ftp to jute, bgp, and slurm. Highlights: http://seclists.org/nmap-dev/2015/q2/171 [Daniel Miller]
  • Integrated all of your IPv6 OS fingerprint submissions from June 2013 to April 2015 (only 97 of them!). We are steadily improving the IPv6 database, but we need your submissions. The classifier added 9 new groups, bringing the new total to 90. Highlights: http://seclists.org/nmap-dev/2015/q2/170 [Daniel Miller]
  • Nmap now has an official bug tracker! We are using Github Issues, which you can reach from http://issues.nmap.org/. We welcome your bug reports, enhancement requests, and code submissions via the Issues and Pull Request features of Github (https://github.com/nmap/nmap), though the repository itself is just a mirror of our authoritative Subversion repository.
  • [Zenmap] New Chinese-language (zh) translation from Jie Jiang, new Hindi (hi) translation by Gyanendra Mishra, and updated translations for German (de, Chris Leick), Italian (it, Jan Reister), Polish (pl, Jacek Wielemborek), and French (fr, MaZ)
  • Added options --data and --data-string to send custom payloads in scan packet data. [Jay Bosamiya]
  • --reason is enabled for verbosity > 2, and now includes the TTL of received packets in Normal output (this was already present in XML) [Jay Bosamiya]
  • Update our Windows build system to VS 2013 on Windows 8.1. Also, we now build our included OpenSSL with DEP, ASLR, and SafeSEH enabled. [Daniel Miller]
  • Our OS X installer is now built for a minimum supported version of 10.8 (Mountain Lion), a much-needed update from 10.5 (Leopard). Additionally, OpenSSL is now statically linked, allowing us to distribute the latest from Macports instead of being subjected to the 0.9.8 branch still in use as of 10.9. [Daniel Miller]
  • New features for the IPv6 OS detection engine allow for better classification of systems: IPv6 guessed initial hop limit (TTL) and ratio of TCP initial window size to maximum segment size. [Alexandru Geana]
  • [NSE] Rework ssl-enum-ciphers to actually score the strength of the SSL/TLS handshake, including certificate key size and DH parameters if applicable. This is similar to Qualys's SSL Labs scanner, and means that we no longer maintain a list of scores per ciphersuite. [Daniel Miller]
  • All nmap.org pages are now available SSL-secured to improve privacy and ensure your binaries can't be tampered with in transit. So be sure to download from https://nmap.org/download.html. We will soon remove the non-SSL version of the site. We still offer GPG-signed binaries as well: https://nmap.org/book/install.html#inst-integrity
  • Enhance Nmap's tcpwrapped service detection by using a shorter timeout for the tcpwrapped designation. This prevents falsely labeling services as tcpwrapped which merely have a read timeout shorter than 6 seconds. Full discussion: http://issues.nmap.org/39 [nnposter, Daniel Miller]
  • Fix ICMP Echo (-PE) host discovery for IPv6, broken since 6.45, caused by failing to set the ICMP ID for outgoing packets which is used to match incoming responses. [Andrew Waters]
  • Add 2 more ASCII-art configure splash images to be rotated randomly with the traditional dragon image. New ideas for other images to use here may be sent to [email protected]. [Jay Bosamiya, Daniel Miller]
  • Solve a crash on Windows (reported on Windows 8.1 on Surface Pro 3) caused by passing a NULL pointer to a WinPcap function that then tries to write an error message to it. [Peter Malecka]
  • Fix compilation and several bugs on AIX. [Daniel Miller]
  • Fix a bug in libdnet-stripped on Solaris that resulted in the wrong MAC address being detected for all interfaces. http://seclists.org/nmap-dev/2015/q2/1 [Daniel Miller]
  • [NSE] Improved http-form-brute autodetection and behavior to handle more unusual-but-valid HTML syntax, non-POST forms, success/failure testing on HTTP headers, and more. [nnposter]
  • [NSE] Reduce many NSE default timeouts and base them on Nmap's detected timeouts for those hosts from the port scan phase. Scripts which take timeout script-args can now handle 's' and 'ms' suffixes, just like Nmap's own options. [Daniel Miller]
  • [NSE] Remove db2-discover, as its functionality was performed by service version detection since the broadcast portion was separated into broadcast-db2-discover. http://seclists.org/nmap-dev/2014/q3/415 [Daniel Miller]
  • Cache dnet names not found on Windows when enumerating interfaces in the Windows Registry. Reduces startup times. [Elon Natovich]
  • [NSE] Make smb-ls able to leverage results from smb-enum-shares or list of shares specified on command line. [Pierre Lalet]
  • [NSE] Fix X509 cert date parsing for dates after 2049. Reported by Teppo Turtiainen. [Daniel Miller]
  • Handle a bunch of socket errors that can result from odd ICMP Type 3 Destination Unreachable messages received during service scanning. The crash reported was "Unexpected error in NSE_TYPE_READ callback. Error code: 92 (Protocol not available)" [Daniel Miller]
  • Fixed a crash (NULL pointer dereference) in PortList::isTCPwrapped when using -sV and -O on an unknown service not listed in nmap-services. [Pierre Lalet]
  • Fixed a benign TOCTOU race between stat() and open() in mmapfile(). Reported by Camille Mougey. [Henri Doreau]
  • Reduce CPU consumption when using nsock poll engine with no registered FD, by actually calling Poll() for the time until timeout, instead of directly returning zero and entering the loop again. [Henri Doreau]
  • Change the URI for the fingerprint submitter to its new location at https://nmap.org/cgi-bin/submit.cgi
  • [NSE] Added a check for Cisco ASA version disclosure, CVE-2014-3398, to http-enum in the 'security' category [Daniel Miller]
  • Fixed a bug that caused Nmap to fail to find any network interface when a Prism interface is in monitor mode. The fix was to define the ARP_HRD_IEEE80211_PRISM header identifier in the libdnet-stripped code. [Brad Johnson]
  • Added a version probe for Tor. [David Fifield]
  • [NSE] Add support to citrix-enum-apps-xml for reporting if Citrix published applications in the list are enforcing/requiring the level of ICA/session data encryption shown in the script result. [Tom Sellers]
  • [NSE] Updated our Wordpress plugin list to improve the http-wordpress-enum NSE script. We can now detect 34,077 plugins, up from 18,570. [Danila Poyarkov]
  • [NSE] Add the signature algorithm that was used to sign the target port's x509 certificate to the output of ssl-cert.nse [Tom Sellers]
  • [NSE] Fixed a bug in the sslcert.lua library that was triggered against certain services when version detection was used. [Tom Sellers]
  • [NSE] vulns.Report:make_output() now generates XML structured output reports automatically. [Paulino Calderon]
  • [NSE] Add port.reason_ttl, host.reason, host.reason_ttl for use in scripts [Jay Bosamiya]
  • [NSE] If a version script is run by name, nmap.version_intensity() returns the maximum value (9) for it [Jay Bosamiya]
  • [NSE] shortport.version_port_or_service() takes an optional rarity parameter now to run only when version intensity > rarity [Jay Bosamiya]
  • [NSE] Added nmap.version_intensity() function so that NSE version scripts can use the argument to --version-intensity (which can be overridden by the script arg 'script-intensity') in order to decide whether to run or not [Jay Bosamiya]
  • Improve OS detection; If a port is detected to be 'tcpwrapped', then it will not be used for OS detection. This helps in cases where a firewall might be the port to be 'tcpwrapped' [Jay Bosamiya]
  • [Zenmap] Reduce noise generated in Topology View due to anonymous hops [Jay Bosamiya]
  • Added option --exclude-ports to Nmap so that some ports can be excluded from scanning (for example, due to policy) [Jay Bosamiya]
  • [Zenmap] Catch the MemoryError caused in Zenmap due to large Nmap Output, and display a more helpful error message [Jay Bosamiya]
  • Catch badly named output files (such as those unintentionally caused by "-oX -sV logfile.xml") [Jay Bosamiya]
  • [Zenmap] Improved NmapParser to increase speed in opening scans. Large scans now open in seconds instead of hours. [Jay Bosamiya]
  • Modify the included libpcap configure script to disable certain unused features: bluetooth, usb, usb-can, and dbus sniffing. Dbus support caused a build problem on CentOS 6.5. [Daniel Miller]
  • Updated the bundled libpcap from 1.2.1 to 1.5.3 [Jay Bosamiya]
  • Correct the Target MAC Address in Nmap's ARP discovery to conform to what IP stacks in currently popular operating systems use. [Jay Bosamiya]
  • Fixed a bug which caused Nmap to be unable to have any runtime interaction when called from sudo or from a shell script. [Jay Bosamiya]
  • Improvements to whois-ip.nse: fix an unhandled error when a referred-to response could not be understood; add a new pattern to recognise a LACNIC "record not found" type of response and update the way ARIN is queried. [jah]
  • [NSE] Added 25 NSE scripts from 17 authors, bringing the total up to 494! They are all listed at https://nmap.org/nsedoc/, and the summaries are below (authors are listed in brackets):
  • bacnet-info gets device information from SCADA/ICS devices via BACnet (Building Automation and Control Networks) [Stephen Hilt, Michael Toecker]
  • docker-version detects and fingerprints Docker [Claudio Criscione]
  • enip-info gets device information from SCADA/ICS devices via EtherNet/IP [Stephen Hilt]
  • fcrdns performs a Forward-confirmed Reverse DNS lookup and reports anomalous results. [Daniel Miller]
  • http-avaya-ipoffice-users enumerates users in Avaya IP Office 7.x systems. [Paulino Calderon]
  • http-cisco-anyconnect gets version and tunnel information from Cisco SSL VPNs. [Patrik Karlsson]
  • http-crossdomainxml detects overly permissive crossdomain policies and finds trusted domain names available for purchase. [Paulino Calderon]
  • http-shellshock detects web applications vulnerable to Shellshock (CVE-2014-6271). [Paulino Calderon]
  • http-vuln-cve2006-3392 exploits a file disclosure vulnerability in Webmin. [Paul AMAR]
  • http-vuln-cve2014-2126, http-vuln-cve2014-2127, http-vuln-cve2014-2128 and http-vuln-cve2014-2129 detect specific vulnerabilities in Cisco AnyConnect SSL VPNs. [Patrik Karlsson]
  • http-vuln-cve2015-1427 detects Elasticsearch servers vulnerable to remote code execution. [Gyanendra Mishra]
  • http-vuln-cve2015-1635 detects Microsoft Windows systems vulnerable to MS15-034. [Paulino Calderon]
  • http-vuln-misfortune-cookie detects the "Misfortune Cookie" vulnerability in Allegro RomPager 4.07, commonly used in SOHO routers for TR-069 access. [Andrew Orr]
  • http-wordpress-plugins was renamed http-wordpress-enum and extended to enumerate both plugins and themes of Wordpress installations and their versions. http-wordpress-enum is now http-wordpress-users. [Paulino Calderon]
  • mikrotik-routeros-brute performs password auditing attacks against Mikrotik's RouterOS API. [Paulino Calderon]
  • omron-info gets device information from Omron PLCs via the FINS service. [Stephen Hilt]
  • s7-info gets device information from Siemens PLCs via the S7 service, tunneled over ISO-TSAP on TCP port 102. [Stephen Hilt]
  • snmp-info gets the enterprise number and other information from the snmpEngineID in an SNMPv3 response packet. [Daniel Miller]
  • ssl-ccs-injection detects whether a server is vulnerable to the SSL/TLS CCS Injection vulnerability (CVE-2014-0224) [Claudiu Perta]
  • ssl-poodle detects the POODLE bug in SSLv3 (CVE-2014-3566) [Daniel Miller]
  • supermicro-ipmi-conf exploits Supermicro IPMI/BMC controllers. [Paulino Calderon]
  • targets-ipv6-map4to6 generates target IPv6 addresses which correspond to IPv4 addresses mapped within a particular IPv6 subnet. [Raúl Fuentes]
  • targets-ipv6-wordlist generates target IPv6 addresses from a wordlist made of hexadecimal characters. [Raúl Fuentes]

New in Nmap 6.47 (Sep 4, 2014)

  • Integrated all of your IPv4 OS fingerprint submissions since June 2013 (2700+ of them). Added 366 fingerprints, bringing the new total to 4485. Additions include Linux 3.10 - 3.14, iOS 7, OpenBSD 5.4 - 5.5, FreeBSD 9.2, OS X 10.9, Android 4.3, and more. Many existing fingerprints were improved. Highlights: http://seclists.org/nmap-dev/2014/q3/325 [Daniel Miller]
  • Removed the External Entity Declaration from the DOCTYPE in Nmap's XML. This was added in 6.45, and resulted in trouble for Nmap XML parsers without network access, as well as increased traffic to Nmap's servers. The doctype is now:
  • [Ndiff] Fixed the installation process on Windows, which was missing the actual Ndiff Python module since we separated it from the driver script. [Daniel Miller]
  • [Ndiff] Fixed the ndiff.bat wrapper in the zipfile Windows distribution, which was giving the error, "\Microsoft was unexpected at this time." See https://support.microsoft.com/kb/2524009 [Daniel Miller]
  • [Zenmap] Fixed the Zenmap .dmg installer for OS X.
  • [Ncat] Fixed SOCKS5 username/password authentication. The password length was being written in the wrong place, so authentication could not succeed. Reported with patch by Pierluigi Vittori.
  • Avoid formatting NULL as "%s" when running nmap --iflist. GNU libc converts this to the string "(null)", but it caused segfault on Solaris. [Daniel Miller]
  • [Zenmap][Ndiff] Avoid crashing when users have the antiquated PyXML package installed. Python tries to be nice and loads it when we import xml, but it isn't compatible. Instead, we force Python to use the standard library xml module. [Daniel Miller]
  • Handle ICMP admin-prohibited messages when doing service version detection. Crash reported by Nathan Stocks was: Unexpected error in NSE_TYPE_READ callback. Error code: 101 (Network is unreachable) [David Fifield]
  • [NSE] Fix a bug causing http.head to not honor redirects. [Patrik Karlsson]
  • [Zenmap] Fix a bug in DiffViewer causing this crash: TypeError: GtkTextBuffer.set_text() argument 1 must be string or read-only buffer, not NmapParserSAX

New in Nmap 6.46 (Apr 18, 2014)

  • [NSE] Made numerous improvements to ssl-heartbleed to provide more reliable detection of the vulnerability.
  • [Zenmap] Fixed a bug which caused this crash message: IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. The bug was caused by us adding a DOCTYPE definition to Nmap's XML output which caused Python's XML parser to try and fetch the DTD every time it parses an XML file. We now override that DTD-fetching behavior. [Daniel Miller]
  • [NSE] Fix some bugs which could cause snmp-ios-config and snmp-sysdescr scripts to crash (http://seclists.org/nmap-dev/2014/q2/120) [Patrik Karlsson]
  • [NSE] Improved performance of citrixlua library when handling large XML responses containing application lists. [Tom Sellers]

New in Nmap 6.45 (Apr 18, 2014)

  • NOTE THAT THE CHANGELOG FOR THIS RELEASE IS INCOMPLETE. We plan to finish it soon.
  • [NSE] Add ssl-heartbleed script to detect the Heartbleed bug in OpenSSL CVE-2014-0160 [Patrik Karlsson] [NSE] Fixed an error-handling bug in socks-open-proxy that caused it to fail when scanning a SOCKS4-only proxy. Reported on IRC by Husky. [Daniel Miller]
  • [NSE] Improved ntp-info script to handle underscores in returned data. [nnposter]
  • [NSE] Add quake1-info script for retrieving server and player information from Quake 1 game servers. Reports potential DoS amplification factor. [Ulrik Haugen]
  • [NSE] Add unicode library for decoding and encoding UTF-8, UTF-16, CP437 and other character sets to Unicode code points. Scripts that previously just added or skipped nulls in UTF-16 data can use this to support non-ASCII characters. [Daniel Miller]
  • When doing a ping scan (-sn), the --open option will prevent down hosts from being shown when -v is specified. This aligns with similar output for other scan types. [Daniel Miller]
  • [Ncat] Added support for socks5 and corresponding regression tests. [Marek Lucaszuk, Petr Stodulka]
  • [NSE] Add http-ntlm-info script for getting server information from Web servers that require NTLM authentication. [Justin Cacak]
  • Added TCP support to dns.lua. [John Bond]
  • Added safe fd_set operations. This makes nmap fail gracefully instead of crashing when the number of file descriptors grows over FD_SETSIZE. Jacek Wielemborek reported the crash. [Henri Doreau]
  • [NSE] Added tls library for functions related to SSLv3 and TLS messages. Existing ssl-enum-ciphers, ssl-date, and tls-nextprotoneg scripts were updated to use this library. [Daniel Miller]
  • [NSE] Add sstp-discover script to discover Microsoft's Secure Socket Tunnelling Protocol (http://msdn.microsoft.com/en-us/library/cc247338.aspx) [Niklaus Schiess]
  • [NSE] Added unittest library and NSE script for adding unit tests to NSE libraries. See unittest.lua for examples, and run `nmap --script=unittest --script-args=unittest.run -d` to run the tests. [Daniel Miller]
  • Updated bundled liblua from 5.2.2 to 5.2.3 (bugfix release) [Daniel Miller]
  • Added version detection signatures and probes for a bunch of Android remote mouse/keyboard servers, including AndroMouse, AirHID, Wifi-mouse, and RemoteMouse. [Paul Hemberger]
  • [NSE] Added allseeingeye-info for gathering information from games using this query protocol. A version detection probe was also added. [Marin Maržić]
  • [NSE] Add freelancer-info to gather information about the Freelancer game server. Also added a related version detection probe and UDP protocol payload for detecting the service. [Marin Maržić]
  • [Ncat] Fixed compilation when --without-liblua is specified in configure (an #include needed an ifdef guard). [Quentin Glidic]
  • [NSE] Add http-server-header script to grab the Server header as a last-ditch effort to get a software version. This can't be done as a softmatch because of the need to match non-HTTP services that obey some HTTP requests. [Daniel Miller]
  • [NSE] Add rfc868-time script to get the date and time from an RFC 868 Time server. [Daniel Miller]
  • [NSE] Add weblogic-t3-info script that detects the T3 RMI protocol used by Oracle/BEA Weblogic. Extracts the Weblogic version, as well [Alessandro Zanni, Daniel Miller]
  • Fixed a bug in libdnet with handling interfaces with AF_LINK addresses on FreeBSD >9 reported by idwer on IRC. Likely affected other *BSDs. Handled by skipping these non-network addresses. [Daniel Miller]
  • Fixed a bug with UDP checksum calculation. When the UDP checksum is zero (0x0000), it must be transmitted as 1's-complement -0 (0xffff) to avoid ambiguity with +0, which indicates no checksum was calculated. This affected UDP on IPv4 only. Reported by Michael Weber. [Daniel Miller]
  • [NSE] Removed a fixed value (28428) which was being set for the Request ID in the snmpWalk library function; a value based on nmap.clock_ms will now be set instead. [jah]
  • [NSE] Add http-iis-short-name-brute script that detects Microsoft IIS servers vulnerable to a file/folder name disclosure and a denial of service vulnerability. The script obtains the "shortnames" of the files and folders in the webroot folder. [Paulino Calderon]
  • Idle scan now supports IPv6. IPv6 packets don't usually come with fragments identifiers like IPv4 packets do, so new techniques had to be developed to make idle scan possible. The implementation is by Mathias Morbitzer, who made it the subject of his master's thesis.
  • [NSE] Add http-dlink-backdoor script that detects DLink routers with firmware backdoor allowing admin access over HTTP interface. [Patrik Karlsson]
  • The ICMP ID of ICMP probes is now matched against the sent ICMP ID, to reduce the chance of false matches. Patch by Chris Johnson.
  • [NSE] Made telnet-brute support multiple parallel guessing threads, reuse connections, and support password-only logins. [nnposter]
  • [NSE] Made the table returned by ssh1.fetch_host_key contain a "key" element, like that of ssh2.fetch_host_key. This fixed a crash in the ssh-hostkey script reported by Dan Farmer and Florian Pelgrim. The "key" element of ssh2.fetch_host_key now is base64-encoded, to match the format used by the known_hosts file. [David Fifield]
  • [Nsock] Handle timers and timeouts via a priority queue (using a heap) for improved performance. Nsock now only iterates over events which are completed or expired instead of inspecting the entire event set at each iteration. [Henri Doreau]
  • [NSE] Update dns-cache-snoop script to use a new list of top 50 domains rather than a 2010 list. [Nicolle Neulist]
  • [NSE] Added the qconn-exec script by Brendan Coles, which tests the QNX QCONN service for remote command execution.
  • [Zenmap] Fixed a crash that would happen when you entered a search term starting with a colon: "AttributeError: 'FilteredNetworkInventory' object has no attribute 'match_'". Reported by Kris Paernell. [David Fifield]
  • [Ncat] Added NCAT_PROTO, NCAT_REMOTE_ADDR, NCAT_REMOTE_PORT, NCAT_LOCAL_ADDR and NCAT_LOCAL_PORT environment variables being set in all --*-exec child processes.

New in Nmap 6.40-2 (Nov 12, 2013)

  • [Ncat] Fixed compilation when --without-liblua is specified in configure (an #include needed an ifdef guard). [Quentin Glidic]
  • [NSE] Add http-server-header script to grab the Server header as a last-ditch effort to get a software version. This can't be done as a softmatch because of the need to match non-HTTP services that obey some HTTP requests. [Daniel Miller]
  • [NSE] Add rfc868-time script to get the date and time from an RFC 868 Time server. [Daniel Miller]
  • [NSE] Add weblogic-t3-info script that detects the T3 RMI protocol used by Oracle/BEA Weblogic. Extracts the Weblogic version, as well [Alessandro Zanni, Daniel Miller]
  • Fixed a bug in libdnet with handling interfaces with AF_LINK addresses on FreeBSD >9 reported by idwer on IRC. Likely affected other *BSDs. Handled by skipping these non-network addresses. [Daniel Miller]
  • Fixed a bug with UDP checksum calculation. When the UDP checksum is zero (0x0000), it must be transmitted as 1's-complement -0 (0xffff) to avoid ambiguity with +0, which indicates no checksum was calculated. This affected UDP on IPv4 only. Reported by Michael Weber. [Daniel Miller]
  • [NSE] Removed a fixed value (28428) which was being set for the Request ID in the snmpWalk library function; a value based on nmap.clock_ms will now be set instead. [jah]
  • [NSE] Add http-iis-short-name-brute script that detects Microsoft IIS servers vulnerable to a file/folder name disclosure and a denial of service vulnerability. The script obtains the "shortnames" of the files and folders in the webroot folder. [Paulino Calderon]
  • Idle scan now supports IPv6. IPv6 packets don't usually come with fragments identifiers like IPv4 packets do, so new techniques had to be developed to make idle scan possible. The implementation is by Mathias Morbitzer, who made it the subject of his master's thesis.
  • [NSE] Add http-dlink-backdoor script that detects DLink routers with firmware backdoor allowing admin access over HTTP interface. [Patrik Karlsson]
  • The ICMP ID of ICMP probes is now matched against the sent ICMP ID, to reduce the chance of false matches. Patch by Chris Johnson.
  • [NSE] Made telnet-brute support multiple parallel guessing threads, reuse connections, and support password-only logins. [nnposter]
  • [NSE] Made the table returned by ssh1.fetch_host_key contain a "key" element, like that of ssh2.fetch_host_key. This fixed a crash in the ssh-hostkey script reported by Dan Farmer and Florian Pelgrim. The "key" element of ssh2.fetch_host_key now is base64-encoded, to match the format used by the known_hosts file. [David Fifield]
  • [Nsock] Handle timers and timeouts via a priority queue (using a heap) for improved performance. Nsock now only iterates over events which are completed or expired instead of inspecting the entire event set at each iteration. [Henri Doreau]
  • [NSE] Update dns-cache-snoop script to use a new list of top 50 domains rather than a 2010 list. [Nicolle Neulist]
  • [NSE] Added the qconn-exec script by Brendan Coles, which tests the QNX QCONN service for remote command execution.
  • [Zenmap] Fixed a crash that would happen when you entered a search term starting with a colon: "AttributeError: 'FilteredNetworkInventory' object has no attribute 'match_'". Reported by Kris Paernell. [David Fifield]
  • [Ncat] Added NCAT_PROTO, NCAT_REMOTE_ADDR, NCAT_REMOTE_PORT, NCAT_LOCAL_ADDR and NCAT_LOCAL_PORT environment variables being set in all --*-exec child processes.

New in Nmap 6.40 (Jul 29, 2013)

  • [Ncat] Added NCAT_PROTO, NCAT_REMOTE_ADDR, NCAT_REMOTE_PORT, NCAT_LOCAL_ADDR and NCAT_LOCAL_PORT environment variables being set in all --*-exec child processes.
  • [Nping] Nping now checks for a matching ICMP ID on echo replies, to avoid receiving crosstalk from other ping programs running at the same time. [David Fifield]
  • [NSE] Added http-adobe-coldfusion-apsa1301.nse. It exploits an authentication bypass vulnerability in Adobe Coldfusion servers. [Paulino Calderon]
  • [NSE] The ipOps.isPrivate library now considers the deprecated site-local prefix fec0::/10 to be private. [Marek Majkowski]
  • [Ncat] Added --lua-exec. This feature is basically an equivalent of ncat --sh-exec "lua " and allows you to run Lua scripts with Ncat, redirecting all stdin and stdout operations to the socket connection. [Jacek Wielemborek]
  • [NSE] Oops, there was a vulnerability in one of our 437 NSE scripts. If you ran the (fortunately non-default) http-domino-enum-passwords script with the (fortunately also non-default) domino-enum-passwords.idpath parameter against a malicious server, it could cause an arbitrarily named file to to be written to the client system. Thanks to Trustwave researcher Piotr Duszynski for discovering and reporting the problem. We've fixed that script, and also updated several other scripts to use a new stdnse.filename_escape function for extra safety. This breaks our record of never having a vulnerability in the 16 years that Nmap has existed, but that's still a fairly good run. [David, Fyodor]
  • [NSE] Added teamspeak2-version.nse by Marin Maržić.
  • Nmap's routing table is now sorted first by netmask, then by metric. Previously it was the other way around, which could cause a very general route with a low metric to be preferred over a specific route with a higher metric.
  • [Ncat] The -i option (idle timeout) now works in listen mode as well as connect mode. [Tomas Hozza]
  • Fixed a byte-ordering problem on little-endian architectures when doing idle scan with a zombie that uses broken ID incremements. [David Fifield]
  • [Ncat] Ncat now support chained certificates with the --ssl-cert option. [Greg Bailey]
  • Stop parsing TCP options after reaching EOL in libnetutil. Bug reported by Gustavo Moreira. [Henri Doreau]
  • [NSE] The dns-ip6-arpa-scan script now optionally accepts "/" syntax for a network mask. Based on a patch by Indula Nayanamith.
  • [Ncat] Reduced the default --max-conns limit from 100 to 60 on Windows, to stay within platform limitations. Suggested by Andrey Olkhin.
  • Fixed IPv6 routing table alignment on NetBSD.
  • [NSE] Added http-phpmyadmin-dir-traversal by Alexey Meshcheryakov.
  • Added a service probe for Erlang distribution nodes. [Michael Schierl]
  • Updated libdnet to not SIOCIFNETMASK before SIOCIFADDR on OpenBSD. This was reported to break on -current as of May 2013. [Giovanni Bechis]
  • Fixed address matching for SCTP (-PY) ping. [Marin Maržić]
  • Removed some non-ANSI-C strftime format strings ("%F") and locale-dependent formats ("%c") from NSE scripts and libraries. C99-specified %F was noticed by Alex Weber. [Daniel Miller]
  • [Zenmap] Added Polish translation by Jacek Wielemborek.
  • [NSE] Added http-coldfusion-subzero. It detects Coldfusion 9 and 10 vulnerable to a local file inclusion vulnerability and grabs the version, install path and the administrator credentials. [Paulino Calderon]
  • [Nsock] Added a minimal regression test suite for nsock. [Henri Doreau]
  • [NSE] Updated redis-brute.nse and redis-info.nse to work against the latest versions of redis server. [Henri Doreau]
  • [Ncat] Fixed errors in conneting to IPv6 proxies. [Joachim Henke]
  • Added a service probe for Minecraft servers. [Eric Davisson]
  • [NSE] Updated hostmap-bfk to work with the latest version of their website. [Paulino Calderon]
  • [NSE] Added XML structured output support to hostmap-bfk, hostmap-robtex, and hostmap-ip2hosts. [Paulino Calderon]
  • [NSE] Added hostmap-ip2hosts. It uses the service provider ip2hosts.com to list domain names pointing to the same IP address. [Paulino Calderon]
  • [NSE] Added http-vuln-cve2013-0156. It detects Ruby on Rails servers vulnerable to remote command execution (CVE-2013-0156). [Paulino Calderon]
  • Added a service probe for the Hazelcast data grid. [Pavel Kankovsky]
  • [NSE] Rewrote telnet-brute for better compatibility with a variety of telnet servers. [nnposter]
  • [Nsock] Added initial proxy support to nsock. Nsock based modules (version scan, nse) of nmap can now establish TCP connections through chains of proxies. HTTP CONNECT and SOCKS4 protocols are supported, with some limitations. [Henri Doreau]
  • Fixed a regression that changed the number of delimiters in machine output. [Daniel Miller]
  • [Zenmap] Updated the Italian translation. [Giacomo]
  • Handle ICMP type 11 (Time Exceeded) responses to port scan probes. Ports will be reported as "filtered", to be consistent with existing Connect scan results, and will have a reason of time-exceeded. DiabloHorn reported this issue via IRC. [Daniel Miller]
  • Add new decoders (BROWSER, DHCP6 and LLMNR) to broadcast-listener and changed output of some of the decoders slightly. [Patrik Karlsson]
  • Timeout script-args are now standardized to use the timespec that Nmap's command-line arguments take (5s, 5000ms, 1h, etc.). Some scripts that previously took an integer number of milliseconds will now treat that as a number of seconds if not explicitly denoted as ms. [Daniel Miller]
  • The list of nameservers on Windows now ignores nameservers from inactive interfaces. [David Fifield]
  • Namespace the pipes used to communicate with subprocesses by PID, to avoid multiple instances of Ncat from interfering with each other. Patch by Andrey Olkhin.
  • Nmap may now partially rearrange its target list for more efficient host groups. Previously, a single target with a different interface, or with an IP address the same as a that of a target already in the group, would cause the group to be broken off at whatever size it was. Now, we buffer a small number of such targets, and keep looking through the input for more targets to fill out the current group. [David Fifield]
  • [NSE] Changed ip-geolocation-geoplugin to use the web service's new output format. Reported by Robin Wood.
  • Limited the number of open sockets in ultra_scan to FD_SETSIZE. Very fast connect scans could write past the end of an fd_set and cause a variety of crashes: nmap: scan_engine.cc:978: bool ConnectScanInfo::clearSD(int): Assertion `numSDs > 0' failed. select failed in do_one_select_round(): Bad file descriptor (9) [David Fifield]
  • Fixed a bug that prevented Nmap from finding any interfaces when one of them had the type ARP_HDR_APPLETALK; this was the case for AppleTalk interfaces. However, This support is not complete since AppleTalk interfaces use different size hardware addresses than Ethernet. Nmap IP level scans should work without any problem, please refer to the '--send-ip' switch and to the following thread: http://seclists.org/nmap-dev/2013/q1/214 This bug was reported by Steven Gregory Johnson. [Daniel Miller]
  • [Nping] Nping now skips localhost targets for privileged pings (with an error message) because those generally don't work. [David Fifield]
  • [Ncat] Ncat now keeps running in connect mode after receiving EOF from the remote socket, unless --recv-only is in effect. [Tomas Hozza]
  • Routes are now sorted to prefer those with a lower metric. Retrieval of metrics is supported only on Linux and Windows. [David Fifield]
  • Packet trace of ICMP packets now include the ICMP ID and sequence number by default. [David Fifield]
  • [NSE] Added ike-version and a new ike library by Jesper Kückelhahn. Thanks also go to Roy Hills, who allowed the use of the signature database from the ike-scan tool.
  • [NSE] Fixed various NSEDoc bugs found by David Matousek.
  • [Zenmap] Zenmap now understands the NMAP_PRIVILEGED and NMAP_UNPRIVILEGED environment variables. [Tyler Wagner]
  • It's now possible to mix IPv4 range notation with CIDR netmasks in target specifications. For example, 192.168-170.4-100,200.5/16 is effectively the same as 192.168.168-170.0-255.0-255. [David Fifield]
  • Added nmap-fo.xsl, contributed by Tilik Ammon. This converts Nmap XML into XSL-FO, which can be converted into PDF using Apache FOP.
  • Increased the number of slack file descriptors not used during connect scan. Previously, the calculation did not consider the descriptors used by various open log files. Connect scans using a lot of sockets could fail with the message "Socket creation in sendConnectScanProbe: Too many open files". [David Fifield]
  • [Zenmap] Fixed internationalization files. Running in a language other than the default English would result in the error "ValueError: too many values to unpack". [David Fifield]
  • Changed the --webxml XSL stylesheet to point to the new location of nmap.xsl in the new respository, https://svn.nmap.org/nmap/docs/nmap.xsl This was noticed by Simon John.
  • [NSE] Made the vulnerability library able to preserve vulnerability information across multiple ports of the same host. The bug was reported by iphelix. [Djalal Harouni]
  • [NSE] Added ventrilo-info by Marin Maržić. This gets information from a Ventrilo VoIP server.
  • Removed the undocumented -q option, which renamed the nmap process to something like "pine".
  • Moved the Japanese man page from man1/jp to man1/ja. jp is a country code while ja is a language code. Reported by Christian Neukirchen.
  • [NSE] Added mysql-enum script which enumerates valid mysql server usernames [Aleksandar Nikolic]
  • [Nsock] Reworked the logging infrastructure to make it more flexible and consistent. Updated nmap, nping and ncat accordingly. Nsock log level can now be adjusted at runtime by pressing d/D in nmap. [Henri Doreau, David Fifield]
  • [NSE] Fixed scripts using unconnected UDP sockets. The bug was reported by Dhiru Kholia. [David Fifield]
  • [NSE] Added structured output to http-git.nse. [Alex Weber]
  • [NSE] Added murmur-version by Marin Maržić. This gets the server version and other information for Murmur, the server for the Mumble VoIP system.
  • Added a corresponding UDP payload for Murmur. [Marin Maržić]
  • [Zenmap] Fixed a crash that could be caused by opening the About dialog, using the window manager to close it, and opening it again. This was reported by Yashartha Chaturvedi and Jordan Schroeder. [David Fifield]
  • [Ncat] Made test-addrset.sh exit with nonzero status if any tests fail. This in turn causes "make check" to fail if any tests fail. [Andreas Stieger]
  • Fixed compilation with --without-liblua. The bug was reported by Rick Farina, Nikos Chantziaras, and Alex Turbov. [David Fifield]
  • Fixed CRC32c calculation (as used in SCTP scans) on 64-bit platforms. [Pontus Andersson]
  • [NSE] Added multicast group name output to broadcast-igmp-discovery.nse. [Vasily Kulikov]
  • [NSE] Added new fingerprints for http-enum: Sitecore, Moodle, typo3, SquirrelMail, RoundCube. [Jesper Kückelhahn]

New in Nmap 6.25 (Dec 4, 2012)

  • [NSE] Added CPE to smb-os-discovery output.
  • [Ncat] Fixed the printing of warning messages for large arguments to the -i and -w options. [Michal Hlavinka]
  • [Ncat] Shut down the write part of connected sockets in listen mode when stdin hits EOF, just as was already done in connect mode. [Michal Hlavinka]
  • [Zenmap] Removed a crashing error that could happen when canceling a "Print to File" on Windows: Traceback (most recent call last): File "zenmapGUI\MainWindow.pyo", line 831, in _print_cb File "zenmapGUI\Print.pyo", line 156, in run_print_operation GError: Error from StartDoc This bug was reported by Imre Adácsi. [David Fifield]
  • Added some new checks for failed library calls. [Bill Parker]

New in Nmap 6.01 (Jun 24, 2012)

  • [Zenmap] Fixed a hang that would occur on Mac OS X 10.7. A symptom of the hang was this message in the system console: "Couldn't recognize the image file format for file '/Applications/Zenmap.app/Contents/MacOS ../Resources/share/zenmap/pixmaps/radialnet/padlock.png'". [David Fifield]
  • [Zenmap] Fixed a crash that happened when activating the host filter. File "zenmapCore\SearchResult.pyo", line 155, in match_os KeyError: 'osmatches'
  • [jah]
  • Fixed an error that occurred when scanning certain addresses like 192.168.0.0 on Windows XP: get_srcaddr: can't connect socket: The requested address is not valid in its context. nexthost: failed to determine route to 10.80.0.0 [David Fifield]
  • Fixed a bug that caused Nmap to fail to find any network interface when at least one of them is in the monitor mode. The fix was to define the ARP_HRD_IEEE80211_RADIOTAP 802.11 radiotap header identifier in the libdnet-stripped code. Network interfaces that are in this mode are used by radiotap for 802.11 frame injection and reception. The bug was reported by Tom Eichstaedt and Henri Doreau.
  • Fixed the greppable output of hosts that time-out (when --host-timeout was used and the host timed-out after something was received from that host). This issue was reported by Matthew Morgan. [jah]
  • [Zenmap] Updated the version of Python used to build the Windows release from 2.7.1 to 2.7.3 to remove a false-positive security alarm flagged by tools such as Secunia PSI. There was a minor vulnerability in certain Python27.dll web functionality (which Nmap doesn't use anyway) and Secunia was flagging all software which includes that version of Python27.dll. This update should prevent the false alarm.

New in Nmap 6.00 (May 22, 2012)

  • [NSE] Added the script http-traceroute, which exploits the Max-Forwards HTTP header to detect reverse proxies. [Hani Benhabiles]
  • Added the script distcc-CVE-2004-2687 that checks and exploits a remote command execution vulnerability in distcc. [Patrik Karlsson]
  • Added two new scripts mysql-query and mysql-dump-hashes, which add support for performing custom MySQL queries and dump MySQL password hashes. [Patrik Karlsson]
  • Improved the mysql library to handle multiple columns with the same name, added a formatResultset function to format a query response to a table suitable for script output. [Patrik Karlsson]
  • The message "nexthost: failed to determine route to ..." is now a warning rather than a fatal error. Addresses that are skipped in this way are recorded in the XML output as elements. [David Fifield]
  • [NSE] Added the script http-drupal-modules, which enumerates the installed Drupal modules using drupal-modules.lst. [Hani Benhabiles]
  • [NSE] Added http-vuln-cve2012-1823.nse, which checks for PHP CGI installations with a remote code execution vulnerability. [Paulino Calderon]
  • [NSE] Added the script dict-info, which retrieves information from a DICT server, by issuing the SHOW SERVER command. [Patrik Karlsson]
  • [NSE] Added the script gkrellm-info, which displays information retrieved from the GKRellm monitoring service. [Patrik Karlsson]
  • [NSE] Added the script ajp-request, which adds support for creating custom Apache JServer Protocol requests. [Patrik Karlsson]
  • [NSE] Added the script ajp-brute, which enables password brute force auditing against the Apache JServ Protocol service. [Patrik Karlsson]
  • [NSE] Added the script broadcast-tellstick-discover, which discovers Telldus Technologies TellStickNet devices on the LAN. [Patrik Karlsson]
  • [NSE] Added the Apache JServer Protocol (AJP) library and the scripts ajp-methods, ajp-headers and ajp-auth. [Patrik Karlsson]
  • In XML output, elements are now child elements of the they belong to. Old output was thus: ...... New output is: ...... The option --deprecated-xml-osclass restores the old output, in case you use an Nmap XML parser that doesn't understand the new structure. The xmloutputversion has been increased to 1.04.
  • Added a new element to XML output that indicates when a target specification was ignored, perhaps because of a syntax error or DNS failure. It looks like this: [David Fifield]
  • Nmap's development pace has increased because Google (again) sponsored 5 full-time college and graduate student programmer interns this summer as part of their Summer of Code program! Thanks, Google Open Source Department! We're delighted to introduce the team: http://seclists.org/nmap-dev/2012/q2/204
  • [NSE] Added the script mmouse-exec that connects to a Mobile Mouse server, starts an application, and sends a sequence of keystrokes to it. [Patrik Karlsson]
  • [NSE] Added the script mmouse-brute that performs brute force password auditing against the Mobile Mouse service. [Patrik Karlsson]
  • [NSE] Added the script cups-queue-info that lists the contents of a remote CUPS printer queue. [Patrik Karlsson]
  • [NSE] Added the script ip-forwarding that detects devices that have IP forwarding enabled (acting as routers). [Patrik Karlsson]
  • [NSE] Added the script samba-vuln-cve-2012-1182 which detects the SAMBA CVE 2012-1182 vulnerability. [Aleksandar Nikolic]
  • [NSE] Added the script dns-check-zone that checks DNS configuration against best practices including RFC 1912. [Patrik Karlsson]
  • [NSE] Added the http-gitweb-projects-enum that queries a gitweb for a list of Git projects, their authors and descriptions. [riemann]
  • [NSE] targets-sniffer now is capable of sniffing IPv6 addresses. [Daniel Miller]
  • [NSE] Added the script traceroute-geolocation that queries geographic locations of each traceroute hop and allows to export the results to KLM, allowing the hops to be plotted on a map. [Patrik Karlsson]
  • [NSE] Added the ipp library and the script cups-info that lists available printers by querying the cups network daemon. [Patrik Karlsson]
  • [NSE] Added the mobilme library and the scripts http-icloud-findmyiphone and http-icloud-sendmsg, that finds the location of iOS devices and provides functionality to send them messages. [Patrik Karlsson]
  • [NSE] Added gps library and the gpsd-info script that collects GPS data from the gpsd daemon. [Patrik Karlsson]
  • [NSE] Ported the pop3-brute script to use the brute library. [Piotr Olma]
  • Fixed a compilation problem on Solaris 9 caused by a missing definition of IPV6_V6ONLY. Reported by Dagobert Michelsen.
  • Upgraded included libpcap to version 1.2.1.
  • [NSE] Added hostmap-robtex.nse by Arturo Busleiman, which finds other domain names sharing the IP address of the target.
  • [NSE] Renamed hostmap.nse to hostmap-bfk.nse.
  • [NSE] Added http-robtex-shared-ns by Arturo Busleiman, finding domain names that share the same name server as the target.
  • [NSE] Added the script http-vlcstreamer-ls which queries the VLC Streamer helper service for a list of files in a given directory. [Patrik Karlsson]
  • [NSE] Added the script targets-ipv6-mld that sends a malformed ICMP6 MLD Query to discover IPv6 enabled hosts on the LAN. [Niteesh Kumar]
  • [NSE] Added script http-virustotal that allows checking files, or hashes of previously scanned files, against the major antivirus engines. [Patrik Karlsson]
  • Setting --min-parallelism by itself no longer forces the maximum parallelism to the same value. [Chris Woodbury, David Fifield]
  • [NSE] Added an error message indicating script failure, when Nmap is being run in non verbose/debug mode. [Patrik Karlsson]
  • Service-scan information is now included in XML and grepable output even if -sV wasn't used. This information can be set by scripts in the absence of -sV. [Daniel Miller]
  • [NSE] Added the script dns-ip6-arpa-scan which uses a very efficient technique to scan the ip6.arpa zone for PTR records. [Patrik Karlsson]
  • Changed XML output to show the "service" element whenever a tunnel is discovered for a port, even if the service behind it was unknown. [Matt Foster]
  • [Zenmap] Fixed a crash that would happen in the profile editor when the script.db file doesn't exist. The bug was reported by Daniel Miller.
  • [Zenmap] It is now possible to compare scans having the same name or command line. [Jah, David Fifield]
  • [NSE] Added rdp-vuln-ms12-020.nse by Aleksandar Nikolic. This tests for two Remote Desktop vulnerabilities, including one allowing remote code execution, that were fixed in the MS12-020 advisory.
  • Fixed an error that could occur with ICMPv6 probes and -d4 debugging: "Unexpected probespec2ascii type encountered" [David Fifield]
  • Fixed the routing table loop on OS X so that on-link routes appear. Previously, they were ignored so that things like ARP scan didn't work. [Patrik Karlsson, David Fifield]
  • [NSE] Added new script http-chrono, which measures min, max and average response times of web servers. [Ange Gutek]
  • Applied a workaround to make pcap captures work better on Solaris 10. This involves peeking at the pcap buffer to ensure that captures are not being lost. A symptom of behavior before this fix was that, when doing ARP host discovery against two targets, only one would be reported up. [David Fifield]
  • Added ciphers from RFC 5932 and Fortezza-based ciphers to ssl-enum-ciphers.nse. The patch was submitted by Darren McDonald.
  • [NSE] Added new script http-drupal-users-enum, which enumerates all available Drupal user accounts by exploiting a vulnerability in the Views module. [Hani Benhabiles]
  • [NSE] Added new script broadcast-ataoe-discover, which discovers ATA over Ethernet capable devices through LAN ethernet broadcasts. [Patrik Karlsson]
  • Fixed a bug that could cause Nsock timers to fire too early. This could happen for the timed probes in IPv6 OS detection, causing an incorrect measurement of the TCP_ISR feature. [David Fifield]
  • [NSE] Added a stun library and the scripts stun-version and stun-info, which extract version information and the external NAT:ed address. [Patrik Karlsson]
  • [NSE] Added the script duplicates which attempts to determine duplicate hosts by analyzing information collected by other scripts. [Patrik Karlsson]
  • Changed the way timeout calculations are made in the IPv6 OS engine. In rare cases a certain interleaving of probes and responses would result in an assertion failure.

New in Nmap 5.61 TEST 4 (Jan 4, 2012)

  • [NSE] Added a new httpspider library which is used for recursively crawling web sites for information. New scripts using this functionality include http-backup-finder, http-email-harvest, http-grep, http-open-redirect, and http-unsafe-output-escaping. See http://nmap.org/nsedoc/ or the list later in this file for details on these. [Patrik]
  • Our Mac OS X packages are now x86-only (rather than universal), reducing the download size from 30 MB to about 17. If you still need a PowerPC version (Apple stopped selling those machines in 2006), you can use Nmap 5.51 or 5.61TEST2 from http://nmap.org/dist/?C=M&O=D.
  • We set up a new SVN server for the Nmap codebase. This one uses SSL for better security, WebDAV rather than svnserve for greater functionality, is hosted on a faster (virtual) machine, provides Nmap code history back to 1998 rather than 2005, and removes the need for the special "guest" username. The new server is at https://svn.nmap.org. More information: http://seclists.org/nmap-dev/2011/q4/504.
  • [NSE] Added a vulnerability management library (vulns.lua) to store and to report discovered vulnerabilities. Modified these scripts to use the new library: - ftp-libopie.nse - http-vuln-cve2011-3192.nse - ftp-vuln-cve2010-4221.nse - ftp-vsftpd-backdoor.nse - smtp-vuln-cve2011-1720.nse - smtp-vuln-cve2011-1764.nse - afp-path-vuln.nse [Djalal, Henri]
  • [NSE] Added a new script force feature. You can force scripts to run against target ports (even if the "wrong" service is detected) by placing a plus in front of the script name passed to --script. See http://nmap.org/book/nse-usage.html#nse-script-selection. [Martin Swende]
  • [NSE] Added 51(!) NSE scripts, bringing the total up to 297. They are all listed at http://nmap.org/nsedoc/
  • Nmap now includes a nmap-update program for obtaining the latest updates (new scripts, OS fingerprints, etc.) The system is currently only available to a few developers for testing, but we hope to enable a larger set of beta testers soon. [David]
  • On Windows, the directory \AppData\Roaming\nmap is now searched for data files. This is the equivalent of $HOME/.nmap on POSIX. [David]
  • Improved OS detection performance by scaling congestion control increments by the response rate during OS scan, just as was done for port scan before. [David]
  • [NSE] The targets-ipv6-multicast-*.nse scripts now scan all interfaces by default. They show the MAC address and interface name now too. [David, Daniel Miller]
  • Added some new version detection probes: MongoDB service [Martin Holst Swende], Metasploit XMLRPC service [Vlatko Kosturjak], Vuze filesharing system [Patrik], Redis key-value store [Patrik], memcached [Patrik], Sybase SQL Anywhere [Patrik], VMware ESX Server [Aleksey Tyurin], TCP Kerberos [Patrik], PC-Duo [Patrik], PC Anywhere [Patrik]
  • Targets requiring different source addresses now go into different hostgroups, not only for host discovery but also for port scanning. Before, only responses to one of the source addresses would be processed, and the others would be ignored. [David]
  • Tidied up the version detection DB (nmap-service-probes) with a new cleanup/canonicalization program sv-tidy.
  • The --exclude and --excludefile options for excluding targets can now be used together. [David]
  • [NSE] Added support for detecting whether a http connection was established using SSL or not to the http.lua library [Patrik]
  • [NSE] Added local port to BPF filter in snmp-brute to fix bug that would prevent multiple scripts from receiving the correct responses. The bug was discovered by Brendan Bird. [Patrik]
  • [NSE] Changed the dhcp-discover script to use the DHCPINFORM request to query dhcp servers instead of DHCPDISCOVER. Also removed DoS code from dhcp-discover and placed the script into the discovery and safe categories. Added support for adding options to DHCP requests and cleaned up some code in the dhcp library. [Patrik]
  • [NSE] Applied patch to snmp-brute that solves problems with handling errors that occur during community list file parsing. [Duarte Silva]
  • [NSE] Added new fingerprints to http-enum for: - Subversion, CVS and Apache Archiva [Duarte Silva] - DVCS systems Git, Mercurial and Bazaar [Hani Benhabiles].
  • [NSE] Applied some code cleanup to the snmp library. [Brendan Byrd]
  • [NSE] Fixed an undeclared variable bug in snmp-ios-config [Patrik]
  • [NSE] Add additional version information to Mongodb scripts [Martin Swende]
  • [NSE] Added path argument to the http-auth script and update the script to use stdnse.format_output. [Duarte Silva, Patrik]
  • [NSE] Fixed bug in the http library that would fail to parse authentication headers if no parameters were present. [Patrik]
  • Made a syntax change in the zenmap.desktop file for compliance with the XDG standard. [Frederik Schwarzer]
  • [NSE] Replaced a number of GET requests to HEAD in http- fingerprints.lua. HEAD is quicker and sufficient when no matching is performed on the returned contents. [Hani Benhabiles]
  • [NSE] Added support for retrieving SSL certificates from FTP servers. [Matt Selsky]
  • [Nping] The --safe-payloads option is now the default. Added --include-payloads for the special situations where payloads are needed. [Colin Rice]
  • [NSE] Added new functionality and fixed some bugs in the brute library: - Added support for restricting the number of guesses performed by the brute library against users, to prevent account lockouts. - Added support to guess the username as password. The documentation previously suggested (wrongly) that this was the default behavior. - Added support to guess an empty string as password if not present in the dictionary. [Patrik]
  • [NSE] Re-enabled support for guessing the username in addition to password that was incorrectly removed from the metasploit-xmlrpc-brute in previous commit. [Patrik] [NSE] Fixed bug that would prevent brute scripts from running if no service field was present in the port table. [Patrik]
  • [NSE] Turned on promiscuous mode in targets-sniffer.nse so that it finds packets not only from or to the scanning host. [David]
  • The Zenmap topology display feature is now disabled when there are more than 1,000 target hosts. Those topology maps slow down the interface and are generally too crowded to be of much use.
  • [NSE] Modified the http library to support servers that don't return valid chunked encoded data, such as the Citrix XML service. [Patrik]
  • [NSE] Fixed a bug where the brute library would not abort even after all retries were exhausted [Patrik]
  • Fixed a bug in the IPv6 OS probe called NI. The Node Information Query didn't include the target address as the payload, so at least OS X didn't respond. This differed from the probe sent by the ipv6fp.py program from which some of our fingerprints were derived. [David]
  • [NSE] Fixed an error in the mssql library that was causing the broadcast-ms-sql-discover script to fail when trying to update port version information. [Patrik]
  • [NSE] Added the missing broadcast category to the broadcast-listener script. [Jason DePriest]
  • [NSE] Made changes to the categories of the following scripts (new categories shown) [Duarte Silva]: - http-userdir-enum.nse (auth,intrusive) - mysql-users.nse (auth,intrusive) - http-wordpress-enum.nse (auth,intrusive,vuln) - krb5-enum-users.nse (auth,intrusive) - snmp-win32-users.nse (default,auth,safe) - smtp-enum-users.nse (auth,external,intrusive) - ncp-enum-users.nse (auth,safe) - smb-enum-users.nse (auth,intrusive)
  • Made nbase compile with the clang compiler that is a part of Xcode 4.2. [Daniel J. Luke]
  • [NSE] Fix a nil table index bug discovered in the mongodb library. [Thomas Buchanan]
  • [NSE] Added XMPP support to ssl-cert.nse.
  • [NSE] Made http-wordpress-enum.nse able to get names of users who have no posts. [Duarte Silva]
  • Increased hop distance estimates from OS detection by one. The distance now counts the number of hops including the final one to the target, not just the number of intermediate nodes. The IPv6 distance calculation already worked this way. [David]

New in Nmap 5.51 (Feb 21, 2011)

  • [Ndiff] Added support for prerule and postrule scripts. [David]
  • [NSE] Fixed a bug which caused some NSE scripts to fail due to the absence of the NSE SCRIPT_NAME environment variable when loaded. Michael Pattrick reported the problem. [Djalal]
  • [Zenmap] Selecting one of the scan targets in the left pane is supposed to jump to that host in the Nmap Output in the right pane (but it wasn't). Brian Krebs reported this bug. [David]
  • Fixed an obscure bug in Windows interface matching. If the MAC address of an interface couldn't be retrieved, it might have been used instead of the correct interface. Alexander Khodyrev reported the problem. [David]
  • [NSE] Fixed portrules in dns-zone-transfer and ftp-proftpd-backdoor that used shortport functions incorrectly and always returned true. [Jost Krieger]
  • [Ndiff] Fixed ndiff.dtd to include two elements that can be diffed: status and address. [Daniel Miller]
  • [Ndiff] Fixed the ordering of hostscript-related elements in XML output. [Daniel Miller]
  • [NSE] Fixed a bug in the nrpe-enum script that would make it run for every port (when it was selected--it isn't by default). Daniel Miller reported the bug. [Patrick]
  • [NSE] When an NSE script sets a negative socket timeout, it now causes a controlled Lua stack trace instead of a fatal error. Vlatko Kosturjak reported the bug. [David]
  • [Zenmap] Worked around an error that caused the py2app bootstrap executable to be non-universal even when the rest of the application was universal. This prevented the binary .dmg from working on PowerPC. Yxynaxen reported the problem. [David]
  • [Ndiff] Fixed an output line that wasn't being redirected to a file when all other output was. [Daniel Miller]

New in Nmap 5.50 (Jan 29, 2011)

  • [Zenmap] Added a new script selection interface, allowing you to choose scripts and arguments from a list which includes descriptions of every available script. Just click the "Scripting" tab in the profile editor. [Kirubakaran]
  • [Nping] Added echo mode, a novel technique for discovering how your packets are changed (or dropped) in transit between the host they originated and a target machine. It can detect network address translation, packet filtering, routing anomalies, and more. You can try it out against our public Nping echo server using this command: nping --echo-client "public" echo.nmap.org' Or learn more about echo mode at http://nmap.org/book/nping-man-echo-mode.html. [Luis]
  • [NSE] Added an amazing 46 scripts, bringing the total to 177! You can learn more about any of them at http://nmap.org/nsedoc/. Here are the new ones (authors listed in brackets):
  • broadcast-dns-service-discovery: Attempts to discover hosts' services using the DNS Service Discovery protocol. It sends a multicast DNS-SD query and collects all the responses. [Patrik Karlsson]
  • broadcast-dropbox-listener: Listens for the LAN sync information broadcasts that the Dropbox.com client broadcasts every 20 seconds, then prints all the discovered client IP addresses, port numbers, version numbers, display names, and more. [Ron Bowes, Mak Kolybabi, Andrew Orr, Russ Tait Milne]
  • broadcast-ms-sql-discover: Discovers Microsoft SQL servers in the same broadcast domain. [Patrik Karlsson]
  • broadcast-upnp-info: Attempts to extract system information from the UPnP service by sending a multicast query, then collecting, parsing, and displaying all responses. [Patrik Karlsson]
  • broadcast-wsdd-discover: Uses a multicast query to discover devices supporting the Web Services Dynamic Discovery (WS-Discovery) protocol. It also attempts to locate any published Windows Communication Framework (WCF) web services (.NET 4.0 or later). [Patrik Karlsson]
  • db2-discover: Attempts to discover DB2 servers on the network by querying open ibm-db2 UDP ports (normally port 523). [Patrik Karlsson]
  • dns-update.nse: Attempts to perform an unauthenticated dynamic DNS update. [Patrik Karlsson]
  • domcon-brute: Performs brute force password auditing against the Lotus Domino Console. [Patrik Karlsson]
  • domcon-cmd: Runs a console command on the Lotus Domino Console with the given authentication credentials (see also: domcon-brute). [Patrik Karlsson]
  • domino-enum-users: Attempts to discover valid IBM Lotus Domino users and download their ID files by exploiting the CVE-2006-5835 vulnerability. [Patrik Karlsson]
  • firewalk: Tries to discover firewall rules using an IP TTL expiration technique known as firewalking. [Henri Doreau]
  • ftp-proftpd-backdoor: Tests for the presence of the ProFTPD 1.3.3c backdoor reported as OSVDB-ID 69562. This script attempts to exploit the backdoor using the innocuous id command by default, but that can be changed with a script argument. [Mak Kolybabi]
  • giop-info: Queries a CORBA naming server for a list of objects. [Patrik Karlsson]
  • gopher-ls: Lists files and directories at the root of a gopher service. Remember those? [Toni Ruottu]
  • hddtemp-info: Reads hard disk information (such as brand, model, and sometimes temperature) from a listening hddtemp service. [Toni Ruottu]
  • hostmap: Tries to find hostnames that resolve to the target's IP address by querying the online database at http://www.bfk.de/bfk_dnslogger.html. [Ange Gutek]
  • http-brute: Performs brute force password auditing against http basic authentication. [Patrik Karlsson]
  • http-domino-enum-passwords: Attempts to enumerate the hashed Domino Internet Passwords that are (by default) accessible by all authenticated users. This script can also download any Domino ID Files attached to the Person document. [Patrik Karlsson]
  • http-form-brute: Performs brute force password auditing against http form-based authentication. [Patrik Karlsson]
  • http-vhosts: Searches for web virtual hostnames by making a large number of HEAD requests against http servers using common hostnames. [Carlos Pantelides]
  • informix-brute: Performs brute force password auditing against IBM Informix Dynamic Server. [Patrik Karlsson]
  • informix-query: Runs a query against IBM Informix Dynamic Server using the given authentication credentials (see also: informix-brute). [Patrik Karlsson]
  • informix-tables: Retrieves a list of tables and column definitions for each database on an Informix server. [Patrik Karlsson]
  • iscsi-brute: Performs brute force password auditing against iSCSI targets. [Patrik Karlsson]
  • iscsi-info: Collects and displays information from remote iSCSI targets. [Patrik Karlsson]
  • modbus-discover: Enumerates SCADA Modbus slave ids (sids) and collects their device information. [Alexander Rudakov]
  • nat-pmp-info: Queries a NAT-PMP service for its external address. [Patrik Karlsson]
  • netbus-auth-bypass: Checks if a NetBus server is vulnerable to an authentication bypass vulnerability which allows full access without knowing the password. [Toni Ruottu]
  • netbus-brute: Performs brute force password auditing against the Netbus backdoor ("remote administration") service. [Toni Ruottu]
  • netbus-info: Opens a connection to a NetBus server and extracts information about the host and the NetBus service itself. [Toni Ruottu]
  • netbus-version: Extends version detection to detect NetBuster, a honeypot service that mimes NetBus. [Toni Ruottu]
  • nrpe-enum: Queries Nagios Remote Plugin Executor (NRPE) daemons to obtain information such as load averages, process counts, logged in user information, etc. [Mak Kolybabi]
  • oracle-brute: Performs brute force password auditing against Oracle servers. [Patrik Karlsson]
  • oracle-enum-users: Attempts to enumerate valid Oracle user names against unpatched Oracle 11g servers (this bug was fixed in Oracle's October 2009 Critical Patch Update). [Patrik Karlsson]
  • path-mtu: Performs simple Path MTU Discovery to target hosts. [Kris Katterjohn]
  • resolveall: Resolves hostnames and adds every address (IPv4 or IPv6, depending on Nmap mode) to Nmap's target list. This differs from Nmap's normal host resolution process, which only scans the first address (A or AAAA record) returned for each host name. [Kris Katterjohn]
  • rmi-dumpregistry: Connects to a remote RMI registry and attempts to dump all of its objects. [Martin Holst Swende]
  • smb-flood: Exhausts a remote SMB server's connection limit by by opening as many connections as we can. Most implementations of SMB have a hard global limit of 11 connections for user accounts and 10 connections for anonymous. Once that limit is reached, further connections are denied. This script exploits that limit by taking up all the connections and holding them. [Ron Bowes]
  • ssh2-enum-algos: Reports the number of algorithms (for encryption, compression, etc.) that the target SSH2 server offers. If verbosity is set, the offered algorithms are each listed by type. [Kris Katterjohn]
  • stuxnet-detect: Detects whether a host is infected with the Stuxnet worm (http://en.wikipedia.org/wiki/Stuxnet). [Mak Kolybabi]
  • svn-brute: Performs brute force password auditing against Subversion source code control servers. [Patrik Karlsson]
  • targets-traceroute: Inserts traceroute hops into the Nmap scanning queue. It only functions if Nmap's --traceroute option is used and the newtargets script argument is given. [Henri Doreau]
  • vnc-brute: Performs brute force password auditing against VNC servers. [Patrik Karlsson]
  • vnc-info: Queries a VNC server for its protocol version and supported security types. [Patrik Karlsson]
  • wdb-version: Detects vulnerabilities and gathers information (such as version numbers and hardware support) from VxWorks Wind DeBug agents. [Daniel Miller]
  • wsdd-discover: Retrieves and displays information from devices supporting the Web Services Dynamic Discovery (WS-Discovery) protocol. It also attempts to locate any published Windows Communication Framework (WCF) web services (.NET 4.0 or later). [Patrik Karlsson]
  • [NSE] Added 12 new protocol libraries: - dhcp.lua by Ron - dnssd.lua (DNS Service Discovery) by Patrik - ftp.lua by David - giop.lua (CORBA naming service) by Patrik - informix.lua (Informix database) by Patrik - iscsi.lua (iSCSI - IP based SCSI data transfer) by Patrik - nrpc.lua (Lotus Domino RPC) by Patrik - rmi.lua (Java Remote Method Invocation) by Martin Holst Swende - tns.lua (Oracle) by Patrik - upnp.lua (UPnP support) by Thomas Buchanan and Patrik - vnc.lua (Virtual Network Computing) by Patrik - wsdd.lua (Web Service Dynamic Discovery) by Patrik
  • [NSE] Added a new brute library that provides a basic framework and logic for brute force password auditing scripts. [Patrik]
  • [Zenmap] Greatly improved performance for large scans by benchmarking intensively and then recoding dozens of slow parts. Time taken to load our benchmark file (a scan of just over a million IPs belonging to Microsoft corporation, with 74,293 hosts up) was reduced from hours to less than two minutes. Memory consumption decreased dramatically as well. [David]
  • Performed a major OS detection integration run. The database has grown more than 14% to 2,982 fingerprints and many of the existing fingerprints were improved. Highlights include Linux 2.6.37, iPhone OS 4.2.1, Solaris 11, AmigaOS 3.1, GNU Hurd 0.3, and MINIX 2.0.4. David posted highlights of his integration work at http://seclists.org/nmap-dev/2010/q4/651
  • Performed a huge version detection integration run. The number of signatures has grown by more than 11% to 7,355. More than a third of our signatures are for http, but we also detect 743 other service protocols, from abc, acap, access-remote-pc, and achat to zenworks, zeo, and zmodem. David posted highlights at http://seclists.org/nmap-dev/2010/q4/761.
  • [NSE] Added the target NSE library which allows scripts to add newly discovered targets to Nmap's scanning queue. This allows Nmap to support a wide range of target acquisition techniques. Scripts which can now use this feature include dns-zone-transfer, hostmap, ms-sql-info, snmp-interfaces, targets-traceroute, and several more. [Djalal]
  • [NSE] Nmap has two new NSE script scanning phases. The new pre-scan occurs before Nmap starts scanning. Some of the initial pre-scan scripts use techniques like broadcast DNS service discovery or DNS zone transfers to enumerate hosts which can optionally be treated as targets. The other phase (post scan) runs after all of Nmap's scanning is complete. We don't have any of these scripts yet, but they could compile scan statistics or present the results in a different way. One idea is a reverse index which provides a list of services discovered during a network scan, along with a list of IPs found to be running each service. See http://nmap.org/book/nse-usage.html#nse-script-types. [Djalal]
  • [NSE] A new --script-help option describes all scripts matching a given specification. It accepts the same specification format as --script does. For example, try 'nmap --script-help "default or http-*"'. [David, Martin Holst Swende]
  • Dramatically improved nmap.xsl (used for converting Nmap XML output to HTML). In particular: - Put verbose details behind expander buttons so you can see them if you want, but they don't distract from the main output. In particular, offline hosts and traceroute results are collapsed by default. - Improved the color scheme to be less garish. - Added support for the new NSE pre-scan and post-scan phases. - Changed script output to use 'pre' tags to keep even lengthy output readable. - Added a floating menu to the lower-right for toggling whether closed/filtered ports are shown or not (they are now hidden by default if Javascript is enabled). Many smaller improvements were made as well. You can find the new file at http://nmap.org/svn/docs/nmap.xsl, and here is an example scan processed through it: http://nmap.org/tmp/newxsl.html. [Tom]
  • [NSE] Created a new "broadcast" script category for the broadcast-* scripts. These perform network discovery by broadcasting on the local network and listening for responses. Since they don't directly relate to targets specified on the command line, these are kept out of the default category (nor do they go in "discovery").
  • Integrated cracked passwords from the Gawker.com compromise (http://seclists.org/nmap-dev/2010/q4/674) into Nmap's top-5000 password database. A team of Nmap developers lead by Brandon Enright has cracked 635,546 out of 748,081 password hashes so far (85%). Gawker doesn't exactly have the most sophisticated users on the Internet--their top passwords are "123456", "password", "12345678", "lifehack", "qwerty", "abc123", "12345", "monkey", "111111", "consumer", and "letmein".
  • XML output now excludes output for down hosts when only doing host discovery, unless verbosity (-v) was requested. This is how it already worked for normal scans, but the ping-only case was overlooked. [David]
  • Updated the Windows build process to work with (and require) Visual C++ 2010 rather than 2008. If you want to build Zenmap too, you now need Python 2.7 (rather than 2.6) and GTK+ 2.22. See http://nmap.org/book/inst-windows.html#inst-win-source [David, Rob Nicholls, KX]
  • Merged port names in the nmap-services file with allocated names from the IANA (http://www.iana.org/assignments/port-numbers). We only added IANA names which were "unknown" in our file--we didn't deal with conflicting names. [David]
  • Enabled the ASLR and DEP security technologies for Nmap.exe, Ncat.exe and Nping.exe on Windows Vista and above. Visual C++ will set the /DYNAMICBASE and /NXCOMPAT flags in the PE header. Executables generated using py2exe or NSIS and third party binaries (OpenSSL, WinPcap) still don't support ASLR or DEP. Support for DEP on XP SP3, using SetProcessDEPPolicy(), could still be implemented. See http://seclists.org/nmap-dev/2010/q3/328. [Robert]
  • Investigated using the CPE (Common Platform Enumeration) standard for describing operating systems, devices, and service names for Nmap OS and service detection. You can read David's reports at http://seclists.org/nmap-dev/2010/q3/278 and http://seclists.org/nmap-dev/2010/q3/303.
  • [Zenmap] Improved the output viewer to show new output in constant time. Previously it would get slower and slower as the output grew longer, eventually making Zenmap appear to freeze with 100% CPU. Rob Nicholls and Ray Middleton helped with testing. [David]
  • The Linux RPM builds of Nmap and related tools (ncat, nping, etc.) now link to system libraries dynamically rather than statically. They still link statically to dependency libraries such as OpenSSL, Lua, LibPCRE, Libpcap, etc. We hope this will improve portability so the RPMs will work on distributions with older software (like RHEL, Debian stable) as well as more bleeding edge ones like Fedora. [David]
  • [NSE] Added the ability to send and receive on unconnected sockets. This can be used, for example, to receive UDP broadcasts without having to use Libpcap. A number of scripts have been changed so that they can work as prerule scripts to discover services by UDP broadcasting, and optionally add the discovered targets to the scanning queue: - ms-sql-info - upnp-info - dns-service-discovery The nmap.new_socket function can now optionally take a default protocol and address family, which will be used if the socket is not connected. There is a new nmap.sendto function to be used with unconnected UDP sockets. [David, Patrik]
  • [Nping] Substantially improved the Nping man page. You can read it online at http://nmap.org/book/nping-man.html. [Luis, David]
  • Documented the licenses of the third-party software used by Nmap and it's sibling tools: http://nmap.org/svn/docs/3rd-party-licenses.txt. [David]
  • [NSE] Improved the SMB scripts so that they can run in parallel rather than using a mutex to force serialization. This quadrupled the SMB scan speed in one large scale test. See http://seclists.org/nmap-dev/2010/q3/819. [Ron]
  • Added a simple Nmap NSE script template to make writing new scripts easier: http://nmap.org/svn/docs/sample-script.nse. [Ron]
  • [Zenmap] Made the topology node radiuses grow logarithmically instead of linearly, so that hosts with thousands of open ports don't overwhelm the diagram. Also only open ports (not open|filtered) are considered when calculating node sizes. Henri Doreau found and fixed a bug in the implementation. [Daniel Miller]
  • [NSE] Added the get_script_args NSE function for parsing script arguments in a clean and standardized way (http://nmap.org/nsedoc/lib/stdnse.html#get_script_args). [Djalal]
  • Increased the initial RTT timeout for ARP scans from 100 ms to 200 ms. Some wireless and VPN links were taking around 300 ms to respond. The default of one retransmission gives them 400 ms to be detected.
  • Added new version detection probes and signatures from Patrik for: - Lotus Domino Console running on tcp/2050 (shows OS and hostname) - IBM Informix Dynamic Server running native protocol (shows hostname, and file path) - Database servers running the DRDA protocol - IBM Websphere MQ (shows name of queue-manager and channel)
  • Fix Nmap compilation on OpenSolaris (see http://blogs.sun.com/sdaven/entry/nmap_5_35dc1_compile_on) [David]
  • [NSE] The http library's request functions now accept an additional "auth" table within the option table, which causes Basic authentication credentials to be sent. [David]
  • Improved IPv6 host output in that we now remember and report the forward DNS name (given by the user) and any non-scanned addresses (usually because of round robin DNS). We already did this for IPv4. [David]
  • [Zenmap] Upgraded to the newer gtk.Tooltip API to avoid deprecation messages about gtk.Tooltip. [Rob Nicholls]
  • [NSE] Made dns-zone-transfer script able to add new discovered DNS records to the Nmap scanning queue. [Djalal]
  • [NSE] Enhance ssl-cert to also report the type and bit size of SSL certificate public keys [Matt Selsky]
  • [Ncat] Make --exec and --idle-timeout work when connecting with --proxy. Florian Roth reported the bug. [David]
  • [Nping] Fixed a bug which caused Nping to fail when targeting broadcast addresses (see http://seclists.org/nmap-dev/2010/q3/752). [Luis]
  • [Nping] Nping now limits concurrent open file descriptors properly based on the resources available on the host (see http://seclists.org/nmap-dev/2010/q4/2). [Luis]
  • [NSE] Improved ssh2's kex_init() parameters: all of the algorithm and language lists can be set using new keys in the "options" table argument. These all default to the same value used before. Also, the required "cookie" argument is now replaced by an optional "cookie" key in the "options" table, defaulting to random bytes as suggested by the RFC. [Kris]
  • Ncat now logs Nsock debug output to stderr instead of stdout for consistency with its other debug messages. [David]
  • [NSE] Added a new function, shortport.http, for HTTP script portrules and changed 14 scripts to use it. [David]
  • Updated to the latest config.guess and config.sub. Thanks to Ty Miller for a reminder. [David]
  • [NSE] Added prerule support to snmp-interfaces and the ability to add the remote host's interface addresses to the scanning queue. The new script arguments used for this functionality are "host" (required) and "port" (optional). [Kris]
  • Fixed some inconsistencies in nmap-os-db and a small memory leak that would happen where there was more than one round of OS detection. These were reported by Xavier Sudre from netVigilance. [David]
  • [NSE] Fixed a bug with worker threads calling the wrong destructors. Fixing this allows better parallelism in http-brute.nse. The problem was reported by Patrik Karlsson. [David, Patrick]
  • Upgraded the OpenSSL binaries shipped in our Windows installer to version 1.0.0a. [David]
  • [NSE] Added prerule support to the dns-zone-transfer script, allowing it to run early to discover IPs from DNS records and optionally add those IPs to Nmap's target queue. You must specify the DNS server and domain name to use with script arguments. [Djalal]
  • Changed the name of libdnet's sctp_chunkhdr to avoid a conflict with a struct of the same name in . This caused a compilation error when Nmap was compiled with an OpenSSL that had SCTP support. [Olli Hauer, Daniel Roethlisberger]
  • [NSE] Implemented a big cleanup of the Nmap NSE Nsock library binding code. [Patrick]
  • Added a bunch of Apple and Netatalk AFP service detection signatures. These often provide extra details such as whether the target is a MacBook Pro, Air, Mac Mini, iMac, etc. [Brandon]
  • [NSE] Host tables now have a host.traceroute member available when --traceroute is used. This array contains the IP address, reverse DNS name, and RTT for each traceroute hop. [Henri Doreau]
  • [NSE] Made the ftp-anon script return a directory listing when anonymous login is allowed. [Gutek, David]
  • [NSE] Added the nmap.resolve() function. It takes a host name and optionally an address family (such as "inet") and returns a table containing all of its matching addresses. If no address family is specified, all addresses for the name are returned. [Kris]
  • [NSE] Added the nmap.address_family() function which returns the address family Nmap is using as a string (e.g., "inet6" is returned if Nmap is called with the -6 option). [Kris]
  • [NSE] Scripts can now access the MTU of the host.interface device using host.interface_mtu. [Kris]
  • Restrict the default Windows DLL search path by removing the current directory. This adds extra protection against DLL hijacking attacks, especially if we were to add file type associations to Nmap in the future. We implement this with the SetDllDirectory function when available (Windows XP SP1 and later). Otherwise, we call SetCurrentDirectory with the directory containing the executable. [David]
  • Nmap now prints the MTU for interfaces in --iflist output. [Kris]
  • [NSE] Removed references to the MD2 algorithm, which OpenSSL 1.x.x no longer supports. [Alexandru]
  • [Ncat,NSE] Server Name Indication (SNI) is now supported by Ncat and Nmap NSE, allowing them to connect to servers which run multiple SSL websites on one IP address. To enable this for NSE, the nmap.connect function has been changed to accept host and port tables (like those provided to the action function) in place of a string and a number. [David]
  • [NSE] Renamed db2-info and db2-brute scripts to drda-*. Added support other DRDA based databases such as IBM Informix Dynamic Server and Apache Derby. [Patrik]
  • [Nsock] Added a new function, nsi_set_hostname, to set the intended hostname of the target. This allows the use of Server Name Indication in SSL connections. [David]
  • [NSE] Limits the number of ports that qscan will scan (now up to 8 open ports and up to 1 closed port by default). These limits can be controlled with the qscan.numopen and qscan.numclosed script arguments. [David]
  • [NSE] Made sslv2.nse give special output when SSLv2 is supported, but no SSLv2 ciphers are offered. This happened with a specific Sendmail configuration. [Matt Selsky]
  • [NSE] Added a "times" table to the host table passed to scripts. This table contains Nmap's timing data (srtt, the smoothed round trip time; rttvar, the rtt variance; and timeout), all represented as floating-point seconds. The ipidseq and qscan scripts were updated to utilize the host's timeout value rather than using a conservative guess of 3 seconds for read timeouts. [Kris]
  • Fixed the fragmentation options (-f in Nmap, --mtu in Nmap & Nping), which were improperly sending whole packets in version 5.35DC1. [Kris]
  • [NSE] When receiving raw packets from Pcap, the packet capture time is now available to scripts as an additional return value from pcap_receive(). It is returned as the floating point number of seconds since the epoch. Also added the nmap.clock() function which returns the current time (and convenience functions clock_ms() and clock_us()). Qscan.nse was updated to use this more accurate timing data. [Kris]
  • [Ncat,Nsock] Fixed some minor bugs discovered using the Smatch source code analyzer (http://smatch.sourceforge.net/). [David]
  • [Zenmap] Fixed a crash that would happen after opening the search window, entering a relative date criterion such as "after:-7", and then clicking the "Expressions" button. The error message was AttributeError: 'tuple' object has no attribute 'strftime' [David]
  • Added a new packet payload--a NAT-PMP external address request for port 5351/udp. Payloads help us elicit responses from listening UDP services to better distinguish them from filtered ports. This payload goes well with our new nat-pmp-info script. [David, Patrik]
  • Updated IANA IP address space assignment list for random IP (-iR) generation. [Kris]
  • [Ncat] Ncat now uses case-insensitive string comparison when checking authentication schemes and parameters. Florian Roth found a server offering "BASIC" instead of "Basic", and the HTTP RFC requires case-insensitive comparisons in most places. [David]
  • [NSE] There is now a limit of 1,000 concurrent running scripts, instituted to keep memory under control when there are many open ports. Nathan reported 3 GB of memory use (with an out-of-memory NSE crash) for one host with tens of thousands of open ports. This limit can be controlled with the variable CONCURRENCY_LIMIT in nse_main.lua. [David]
  • The command line in XML output (/nmaprun/@args attribute) now does quoting of whitespace using double quotes and backslashes. This allows recovering the original command line array even when arguments contain whitespace. [David]
  • Added a service detection probe for master servers of Quake 3 and related games. [Toni Ruottu]
  • [Zenmap] Updated French translation. [Henri Doreau]
  • [Zenmap] Fixed an crash when printing a scan that had no output (like a scan made by command-line Nmap). Henri Doreau noticed the error. [David]

New in Nmap 5.20 (Jan 23, 2010)

  • Dramatically improved the version detection database, integrating 2,596 submissions that users contributed since February 3, 2009
  • More than a thousand signatures were added, bringing the total to 8,501. Many existing signatures were improved as well. Please keep those submissions and corrections coming! Nmap prints a submission URL and fingerprint when it receives responses it can't yet interpret
  • [NSE] Added a new script, oracle-sid-brute, which queries the Oracle TNS-listener for default instance/sid names. The SID enumeration list was prepared by Red Database security.
  • [Ncat] The --ssl, --output, and --hex-dump options now work with exec and --sh-exec. Among other things, this allows you to make a program's I/O available over the network wrapped in SSL encryption for security. It is implemented by forking a separate process to handle network communications and relay the data to the sub-process. [Venkat, David]
  • Nmap now tries start the WinPcap NPF service on Windows if it is not already running. This is rare, since our WinPcap installer starts NPF running at system boot time by default. Because starting NPF requires administrator privileges, a UAC dialog for net.exe may appear on Windows Vista and Windows 7 before NPF is loaded. Once NPF is loaded, it generally stays loaded until you reboot or run "net stop npf". [David, Michael Pattrick]
  • The Nmap Windows installer and our WinPcap installer now have an option / NPFSTARTUP=NO, which inhibits the installer from setting the WinPcap NPF service to start at system startup and at install-time. This option only affects silent mode (/S) because existing GUI checkboxes allow you to configure this behavior during interactive installation. [David]
  • [NSE] Replaced our runlevel system for managing the order of script execution with a much more powerful dependency system. This allows scripts to specify which other scripts they depend on (e.g. a brute force authentication script might depend on username enumeration scripts) and NSE manages the order. Dependencies only enforce ordering, they cannot pull in scripts which the user didn't specify.
  • [Ncat] For compatibility with Hobbit's original Netcat, The -p option now works to set the listening port number in listen mode So "ncat -l 123" can now be expressed as "ncat -l -p 123" too. [David]
  • A new script argument, http.useragent, lets you modify the User-Agent header sent by NSE from its default of "Mozilla/5.0 compatible; Nmap Scripting Engine; http://nmap.org/book/nse.html)"
  • Set it to the empty string to disable the User-Agent entirely. [David, Tom Sellers, Jah]
  • [Zenmap] The locale setting had been taken from the Windows locale which inadvertently made setting the locale with the LANG environment variable stop working. Now the LANG variable is examined first, and if that is not present, the system-wide setting is used. This change allows users to keep Zenmap in its original English (or any of Zenmap's other languages) even if their system is set to use a different locale. [David]
  • [NSE] The http-favicon script is now better at finding "link rel=icon" tags in pages, and uses that icon in preference to favicon.ico if found. If the favicon.uri script arg is given, only that is tried. Meanwhile, a giant (10 million web servers) favicon scan by Brandon allowed us to add about 40 more of the most popular icons to the DB. [David, Brandon]
  • [NSE] smb-psexec now works against Windows XP (as well as already-supported Win2K and Windows 2003). The solution involved changing the seemingly irrelevant PID field in the SMB packet.
  • [NSE] Fixed a bug which kept the nselib/data/psexec subdirectory out of the Windows packages. We needed to add the /s and /e options to xcopy in our Visual C++ project file. [David]
  • [NSE] Overhauled our http library to centralize HTTP parsing and make it more robust. The biggest user-visible change is that http.request goes back to returning a parsed result table rather than raw HTTP data. Also the http.pipeline function no longer accepts the no-longer-used "raw" option. [David]
  • Fixed a bug in traceroute that could lead to a crash terminate called after throwing an instance of 'std::out_of_range' what(): bitset::test
  • It happened when the preliminary distance guess for a target was greater than 30, the size of an internal data structure. David and Brandon tracked down the problem
  • Fixed compilation of libdnet-stripped on platforms that don't have socklen_t. [Michael Pattrick]
  • Added a service probe and match lines for the Logitech/SlimDevices SqueezeCenter music server. [Patrik Karlsson]
  • Fixed the RTSPRequest version probe, which was accidentally modified to say "RTSP/2.0" rather than "RTSP/1.0" in 5.10BETA2. [Matt Selsky]
  • [NSE] Our http library no longer allows cached responses from a GET request to be returned for a HEAD request. This could cause problems with at least the http-enum script. [David]
  • Fixed a bug in the WinPcap installer: If the "Start the WinPcap service 'NPF' at startup" box was unchecked and the "Start the WinPcap service 'NPF' now" box was checked, the second checkbox would be ignored (the service would not be started now). [Rob Nicholls]

New in Nmap 5.00 (Nov 16, 2009)

  • Added support for connecting to nameservers over IPv6. IPv6 addresses
  • can be used in /etc/resolv.conf or with the --dns-servers option. The
  • parallel reverse DNS resolver still only support IPv4 addresses, but
  • it can look them up over IPv6. [Ankur Nandwani]
  • [NSE] Modified script telnet-brute.nse to use the unpw database
  • instead of a hardcoded list. [Ron]
  • Removed IP ID matching in packet headers returned in ICMP errors.
  • This was already the case for some operating systems that are known
  • the IDs of sent IP packets. In rare cases of ID mangling, requiring
  • a match could cause replies to be ignored even after other tests had
  • shown them to be relevant. See http://seclists.org/nmap-dev/2009/q2/580
  • for an example of host order affecting scan results, caused by this
  • phonomenon. [David]
  • Added some additional matching rules to keep a reply to a SYN probe
  • from matching an ACK probe to the same port, or vice versa, in ping
  • scans that include both scan types. Such a mismatch could cause an
  • ineffective timing ping or traceroute probe to be selected. [David]
  • [Zenmap] There is a new command-line option, --confdir, which allows
  • setting the per-user configuration directory. Its value defaults to
  • $HOME/.zenmap. This was suggested by Jesse McCoppin. [David]
  • Upgraded the included libpcap to 1.0.0. [David]
  • Nmap now prefers to display the hostname supplied by the user instead
  • of the reverse-DNS name in most places. If a reverse DNS record
  • exists, and it differs from the user-supplied name, it is printed
  • like this:
  • Nmap scan report for www.google.com (74.125.53.103)
  • rDNS record for 74.125.53.103: pw-in-f103.1e100.net
  • See http://seclists.org/nmap-dev/2009/q4/199 for a summary of other
  • minor changes to output. [David]
  • Upgraded our Winpcap installer to use the new WinPcap version 4.1.1.
  • A bug which could prevent proper uninstallation of previous versions
  • was fixed at the same time. [Rob Nicholls]
  • [NSE] Modified NSE script ssl-cert.nse to support TLS negotiation
  • against SMTP ports that support it. Depends on Patrick's addition
  • of the reconnect_ssl method. [Tom Sellers, David]
  • [NSE] Added the reconnect_ssl method for sockets. We sometimes need
  • to reconnect a socket with SSL because the initial communication on
  • the socket is done without SSL. See this thread [1] for more details.
  • [Patrick, Tom Sellers]
  • [1] http://seclists.org/nmap-dev/2009/q4/3
  • [Zenmap] Fixed a crash that could occur when entering certain
  • characters in the target entry (those whose UTF-8 encoding contains
  • a byte that counts as whitespace in the Windows locale):
  • File "zenmapGUIScanNotebook.pyo", line 184, in _target_entry_changed
  • File "zenmapCoreNmapOptions.pyo", line 719, in render_string
  • UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 1:
  • unexpected end of data