Home page logo
/
Zenmap screenshot
Intro Reference Guide Book Install Guide
Download Changelog Zenmap GUI Docs
Bug Reports OS Detection Propaganda Related Projects
In the Movies In the News
Example Nmap output

Nmap Summer of Code Introduction

The Nmap Security Scanner Project has participated in all ten previous Google Summers of Code and we're really excited for a spectacular 11th SoC in 2015! They have been a tremendous success for us and the 74 student participants we've mentored! Google even featured our success stories and lessons learned in their Open Source Program blog. This innovative and extraordinarily generous program provides $5,500 stipends to 1,000+ college and graduate students each year to create and enhance open source software during their summer break. Students gain valuable experience, get paid, strengthen their résumé, and write code which will be distributed freely and used by millions of people! Last year was a huge success, and we're excited to participate again in 2015.

Nmap is a free tool for network exploration or security auditing. Several project ideas are suggested below, or you can come up with your own clever project. Maybe there is a feature that you have wanted for years, but nobody has yet stepped up to the plate to implement it.

Almost all college and graduate students are eligible, but you need to hurry because student applications are only accepted from March 16 until Friday, March 27, 19:00 UTC (complete timeline). Applications can be submitted using the orange “Log in” button (under “Students” not “Mentors and Administrators”) on the Google SoC 2015 Homepage. We have written some tips for preparing a great application. If you apply (or plan to), please join the temporary Nmap SoC mailing list to receive announcements. If you have any questions about your ideas, the best place to post them is the Nmap Dev mailing list (you can join here or read the archives online). Questions specific to the Nmap SoC program may be sent to Nmap Dev or SoC lists, but we recommend Nmap Dev if the post is technical in nature.

Note that there are some basic requirements which apply to all sponsored projects.

Project Ideas

While you may submit a proposal for any cool idea your heart desires, here are some suggestions that we consider extremely desirable for the Nmap project and its users:

Index


Performance/Optimization Specialist

Key requirements: Strong C++, algorithm, data structure, benchmarking, and code analysis skills.

We at the Nmap project pride ourselves at writing fast, efficient code, but there is always room for improvement. We're looking for someone who can do a deep dive into Nmap and find ways to improve the user experience by increasing speed and reducing resource (memory, CPU, network) usage. But we don't want to dramatically increase code complexity or cause other major maintenance headaches either.

For this role, deciding what to do will probably involve as much or more work than actually doing that. It will take careful analysis to determine what changes are likely to provide the most postive effect for users for a given amount of work.

The person in this role may also help with our large-scale scanning research to collect empirical data for improving performance, and/or analyze existing large data sets such as the Carna botnet. You will also want to take a close look at "competitive" scanning tools which focus on performance, such as Masscan and Zmap.

Here are some example tasks:

  • Parallelize Nmap's forward DNS (target lookup) system so it doesn't have to handle them one-by-one using the gethostbyname family of system calls.
  • Consider using a binary decision diagram for --exclude list to make it more efficient for large exclude lists. See http://seclists.org/nmap-dev/2012/q4/420.
  • Improve our "top port list" (finding the best ports to scan by default) by using empirical data from the Carna botnet (details) or maybe by conducting large scale Internet scanning research.
  • Benchmark Nmap's fixed rate scanning capability to ensure we can keep up with smaller tools like Masscan and Zmap.
  • Optimize Zenmap to work with large-scale scans without running out of memory or otherwise bogging down.

Applications for this position should focus on your relevant optimization skills and experience as well as any ideas you have for improving Nmap performance.


WinPcap developer (low-level Windows expert)

Key requirements: Extensive low level Windows programming experience, particularly networking/NDIS.

Nmap uses the excellent open source WinPcap library for sending and receiving raw packets (usually encapsulated in ethernet frames). We currently ship it in our own installer which adds features such as silent install mode. But there are other features we'd like to have, and we're looking for a talented person to make these improvements. We'd hope the WinPcap devs will incorporate them into their upstream release, but that isn't assured since they haven't made a new release since March 2013. So our alternative approach is to develop and ship our own modified “NPcap” library containing the changes. Here are some ideas:

  • Support for the newer NDIS 6 API rather than NDIS 4
  • Privileges support so we can restrict WinPcap uses to users with Administrator access. This is similar to UNIX where you need root access to capture packets.
  • No-install DLL support would allow Pcap to load and unload automatically while the application runs. Riverbed used to sell a "WinPcap Pro" edition which did that, but they have discontinued that.
  • Enable Microsoft Driver Signing.
  • If we release our own “NPcap”, we'd presumably change the function entry point and external variable names so that we don't conflict with original WinPcap. Riverbed WinPcap Pro did this.

This is a lot of work, but the good news is that some of it has already been accomplished by a 2013 GSoC student Yang Luo. The main goal for this summer is to finish the job in developing an NPcap that we can ship with Nmap. The WinPcap developer might also help with other low level Windows networking code.

Applicants for this position should emphasize their low-level Windows network programming experience, with a particular emphasis on any sample code or previous projects (with downloadable source code) you can show us.

Nmap Scripting Engine—Script Developers (3 Positions)

Key requirements: Know or quickly learn the (simple) Lua scripting language. Have significant network security and/or network administration skills. Experience with the C and C++ languages is a plus.

In 2006, Diman Todorov worked as a GSoC student with Nmap author Fyodor to create the Nmap Scripting Engine (NSE). It has become one of Nmap's most popular and powerful features, allowing users to write (and share) simple scripts to automate a wide variety of networking tasks. We now have more than 430 scripts, all documented at the NSEDoc Reference Portal. They run the gamut from simple discovery tasks like whois lookups, retrieving web site titles, and banner grabbing, to complex functions like spidering a web server to find SQL injection vulnerabilities and brute force authentication cracking of MSRPC (SMB) servers. For a fun 38-minute introduction to NSE, see Fyodor and David Fifield's 2010 Defcon presentation video.

It is time we make the most of this fast and powerful scripting system! We need talented, creative developers to identify useful scripts (through research and community input) and then implementing them. We already have many candidate script ideas on our wiki.

The script developers will also likely write some new libraries since general code that many scripts are likely to use belongs in libraries rather than the scripts themselves. Developers will also help with testing and reviewing each other's scripts as well as those submitted by the Nmap community. They may also have opportunities to improve the NSE engine and infrastructure itself (this is where the C/C++ experience helps).

If we receive enough great applications and sufficient slots from Google, we would like to sponsor three script developers. Please specify your preferences among the following development roles:

  • Web scanning specialist

    This position is perfect for a budding web guru with intimate knowledge and interest in web-related standards and protocols, particularly HTTP and HTML. SSL, Javascript, CSS, and XML are important too. An understanding of common web vulnerabilities such as SQL injection and cross-site scripting (XSS) will also help. Tools to look at for inspiration include Burp Suite and w3af. Nmap already has quite a few HTTP scripts that you can find on the NSEDoc Portal, but many of them could use improvement and they only scratch the surface of possible scripts. The web has grown to dominate the Internet, so it is crucial that Nmap have solid web scanning capabilities.

  • Discovery scanning specialist

    Nmap is famous for network discovery and it already has 256 discovery scripts. That still isn't good enough for us. Applicants for this position must enjoy learning about and implementing a wide variety of protocols. They will also be the go-to guy (or gal) for any scripts which don't fit either of the positions above, even if they aren't exclusively related to discovery.

  • Vulnerability and exploitation specialist

    If you love researching vulnerabilities and devising (and implementing) scripts to detect and/or exploit them, this position is for you! This person will follow the vulnerability announcement forums and decide which ones merit detection and/or exploitation in Nmap. They will watch what competing vuln scanners and exploitation tools are implementing, but we also hope to beat many of those tools to the punch. Malware detection scripts fit in this role too. You can see our current scripts in this genre by reviewing our vuln, exploit, auth, and malware categories.

While script developers may have specialties, they won't focus exclusively on that single niche. Sometimes priorities or workload balancing will dictate that they work on scripts or libraries which don't precisely match their NSE specialty.


Feature Creepers and Bug Wranglers

Key requirements: Strong C/C++ skills. Python and
Lua skills are valuable as well.

There are many Nmap bugs and desired features which are quite important but take much less than a whole summer to implement. Some may only take hours, while others could take weeks or even a month. The feature creeper and bug wranglers handle many such tasks during the summer. This lets them explore and contribute to a wide variety of the Nmap code base rather than spending the whole summer working on just one subsystem. The exact tasks won't all be itemized in advance, but you can look at our bug tracker or the Nmap TODO list for the current list of pending tasks. Also see the community ideas page. If you apply for this task, you might mention several of the TODO items which you would be interested in and qualified for. Here are some more ideas:

  • Implement port scanning from within the Nmap Scripting Engine (see here and here.
  • When high-priority bugs are discovered, you get on the case and solve them.

Rather than take a specific role (bug wrangler or feature creeper), the individual(s) sponsored for this position will do some of each. If you have ideas for small feature-creeping/bug-wrangling tasks, we'd love to hear about them in your application.


Nmap and Zenmap on Mobile Devices (Android and iOS)

Key requirements: Embedded device development experience. Strong C++ and Python skills are a plus. Candidates should already carry an Android or iOS smart phone.

Most techies now carry smart phones which allow them to perform many computing tasks on the go. It is possible to use Nmap on many of these devices, but not as easily or as capably as on a "real computer". The goal of this project is to improve this situation by porting and documenting Nmap on the major mobile platforms (Android and iOS based). The goal is to make Nmap as easy to install (e.g. included with the default app store or repository) and as powerful (e.g. including privileged operations such as OS detection) as possible. It would ideally support our Zenmap GUI, which is easier to use than the command line on most small devices. But if that is practical, it at least needs a simple GUI of some sort. The Nmap project will pay for the hardware where necessary, but it is expected that sponsored students will try to minimize expenses by using mobile development virtual machines and the like whenever possible.


Slacker

Nmap developers are known as some of the most productive in the open source world. In order to crank out more code, many eschew luxuries like classes, social lives, sex, and sleep. To counterbalance all of this planned productivity, we may need some experienced slackers to spend the summer playing Call of Duty (or NetHack), surfing Reddit, taking elaborate vacations, and dating. You will report these activities in a weekly status report so the rest of us can live our lives vicariously through yours.

Since laziness is a virtue for this position, our normal application form is not required. Just tell us your best time-wasting story or any other relevant credentials for this critical role.


Your Own Creative Idea!

Key requirements: Creativity

Don't feel constrained to the ideas we have suggested here. If you are very familiar with Nmap and have your own great idea for improvement, propose it! There will be dozens of applicants for each position listed on this page, but your suggestions have less competition. Before writing a whole proposal, we recommend that you send a paragraph or two describing your idea to the nmap-dev list for feedback. Also, the idea does have to be directly related to Nmap or it's family of tools (Ncat, Ndiff, etc.) We're not going to sponsor unrelated security projects.

Note that even if we don't accept your project idea (maybe the timing is not right or it doesn't quite fit into the Nmap roadmap), we will consider you for other Nmap projects if possible. We pay close attention to the credentials of every applicant and are happy to work with anyone with exceptional talent to find a project which is highly desirable to them and to the Nmap project. So even submitting your own "long shot" idea is often more successful than cut and pasting one of the canned ideas on this page.


Community-contributed Ideas

Key requirements: Varies

If nothing yet has tickled your fancy and you don't want to propose your own idea from scratch, consider some of the community-contributed ideas on our wiki. Or feel free to add your own ideas there, even if you don't plan to apply for Nmap SoC.

In addition, we have many candidate ideas in the Nmap TODO list and the bug tracker.


Ready to apply? Great! Please visit our SoC Application Notes page for instructions.

Nmap Site Navigation

Intro Reference Guide Book Install Guide
Download Changelog Zenmap GUI Docs
Bug Reports OS Detection Propaganda Related Projects
In the Movies In the News
[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]