Google Summer of Code 2012 Ideas

Umit Project is a Mentoring Organization for Google Summer of Code 2012 !

Check our ideas below, and use our application template to send us your proposal!

If you need help elaborating your proposal, interact with us through our mailing list .

1 - The Coolest Summer Project of Your Life part 2

We've recently witnessed several occurrences of natural disasters, internet shortages and ISPs service blockage all around the globe. At Umit Project, we believe we can help the world on that with our Open Monitor project.

Although, we can't help with reconnecting people to the Internet in case of shortages or blockages, we can help whoever is got the capability for reconnecting the access with a world wide internet connectivity monitor. Pretty ambitious, uh? If that feels like the sort of thing you're eager to put your hand on during this summer, keep reading...

Last Summer we've developed the infrastructure for making this real. We have it, and now it works. We're doing our final tweaks to allow for a first alpha relase in the next few weeks, and we are already envisioning several areas we can make this tool better.

Open Monitor is a hybrid peer-to-peer network, and it is consisted of 3 main pieces:
  1. The aggregator - A cloud based central server that collects reports and aggregates them to show on a map in real time.
  2. Desktop Agent - A portable desktop agent that run our tests and collect data about internet connectivity in the region where it is.
  3. Mobile Agent - An Android based agent that can collect connectivity data from inside mobile networks.

These are a few of the improvement ideas we have for each of them...

The Aggregator

Support various slave aggregators

Right now, the aggregator runs on appengine. We don't have scaling issues there, but we want to have an easily deployable version of the aggregator to be able to run from any virtualized environment and serve as a slave of the main appengine version. This is in order to ensure availability of the service from anywhere in the globe.

Internet Map

Aside showing a world map with pins over regions with possible connectivity issues, we would like to be able to also use our nodes to map the Internet and show that in real time on our site. This is yet another view on internet connectivity that people usually can't have in real time, and that we think we can offer with our agents.

IPv6 Support and other Improvements

We currently do not support IPv6 networks, and we really need this now that all IPv4 addresses were sold out. Also, we have several other fixes and improvements we need to make in our aggregator code base that you could take a shot at.

Desktop Agent

Improve inter peer communication

This is the greatest challenge for any peer-to-peer network. Finding other peers when we have a central server is easy, but what is the fastest and cheapest way to find other peers when you don't? Also, imagine a scenario where peers could be communicating using different ports. We have a basic solution for now, but we definitely have room for improvements. This is where you weight in.

IPv6 Support and other Improvements

It isn't just the aggregator that can't work with IPv6 addressed networks. The agents can't do that either! And we need to adapt them for this task. The student responsible for this task, will also have to deal with improving our tests, and creating new connectivity tests that the agent will run against target specified by the aggregator to figure more about connectivity in a specific region.

Mobile Agent

iOS Agent

Why not get a peak on mobile networks from iOS operated phones? You'll be also responsible for implementing new connectivity tests suggested by the team, and make sure you conform with the inter peer communication procedures. I bet someone is going to have a lot of fun implementing for this new platform this summer.

IPv6 Support and other Improvements

It isn't just the aggregator that can't work with IPv6 addressed networks. The agents can't do that either! And we need to adapt them for this task. The student responsible for this task, will also have to deal with improving our tests, and creating new connectivity tests that the agent will run against target specified by the aggregator to figure more about connectivity in a specific region.

Technologies we use in this project

The aggregator

  1. Python 2.7
  2. Django Non-rel
  3. Google App Engine
  4. Google Protocol Buffers
  5. Google Maps API
  6. OAuth2

Desktop Agent

  1. Python
  2. GTK
  3. Twisted Matrix
  4. Google Protocol Buffers

Mobile Agent

  1. Java
  2. Android
  3. Google Protocol Buffers

2 - Google TV / Android@Home

Google TV is a reality, and there is a lot of room for implementing new features there. With Android@Home, Google have created a wireless communication network that works on the 900MHz range, and several appliances are expected to implement this network and be able to communicate with android devices at home. Google TV is a very promising device, and we believe we can help users out in that platform by scanning all sorts of devices (bluetooth, wi-fi, ethernet or Google's short range network) and providing users a glance of what they have in range, and inform them when a new device shows up or when a device disappears.
We're also open for your big idea. We really want to give a shot at Google TV and see how we can contribute there.

3 - Network Administrator to the Cloud Land

This project's focus is to offer an easy and reliable way to monitor your hosts and services in the cloud. Network Administrator is a cloud based and can scale to monitor virtually any amount of hosts or services you need. This is a project we started last year that is already in working state, and that integrates perfectly with our new Network Inventory tool. This Summer, we're planning to further develop this tool and prepare for a release.

Ideas for the Summer

Plugins, IPv6 Support and other features

We need to make Network Administrator really useful and extensible, and plugin system easy to use and develop for will help us with that. Also, we need to support IPv6 and add a few other features to our system. This is a really nice chance to get started early in a very promising project.

Advanced monitoring mechanisms

During the last GSoC a simple events tracking has been implemented. Now we have to develop advanced monitoring mechanisms. Network Administrator should be able to monitor any type of network architecture and service, so user should be provided with highly customizable event filters and notifications. The system have to be highly reliable as well.

Technologies we use in this project

  1. Python 2.7
  2. Django Non-rel
  3. Google App Engine
  4. Google Protocol Buffers
  5. jQuery

4 - Site Status

Site availability can mean a lot for most of the online businesses today, and when users find a website to be offline users will get frustrated. What most sites does is to try and ease that feeling by providing a status page where users can be directed to in case site is incurring any technical difficulties at that moment.
We want to do a bit more, by providing an easy to deploy site status that keeps track of site availability and notifies subscribed users when site is back by email, and integrate with Network Administrator to inform site admins about any issues in as soon as they're noticed.
Example of status sites:

  1. Google App Engine
  2. Amazon's AWS
  3. 37Signals
  4. Twitter

Basic requirements are:

  • Site must be fully customizable. Users won't want to use it if it always look the same on every site.
  • If site is down, traffic should be directed to the status page if user wants to. So, traffic increase could also be used as an indicator that something might be wrong somewhere.
  • If user finds the site to be off, he may want to receive a one time e-mail informing him that the service is back once it is back as stated by the site admin.
  • RSS feed must be made available to inform site status.
  • Users may be able to subscribe to always receive notifications about site status.
  • Graphics are very useful for providing an overview on availability, and we want to show people what is being availability for a given period of time.
  • The system must monitor urls, and check response status code and response content against regular expressions to confirm site is working as it should be.
  • System must be able to monitor other services, and should be easy to extend so user can implement plugins to monitor specific services.
  • Must integrate to Network Administrator to send alarms to system admin and site admin if any of the monitored services and sites is facing issues
  • Must run on appengine as well as on any other cloud platform.

5 - Network Inventory

Network Inventory has now evolved. We have two different versions of it now: the Network Inventory and its lite version. The Lite version is the original one that is bundled and packaged with Umit Network Scanner, while the other one is a brand new robust and standalone version that send events, monitor SNMP traps and send reports to Network Administrator for monitoring large amounts of hosts and services from inside the network.

Ideas for the Summer

New agents, IPv6 Support and other features

We need to implement new monitoring agents to send stats to Network Inventory, and also make sure that we deal with SNMP extensions properly while monitoring a host. IPv6 needs to be supported, and your whole summer will be filled with several features that needs to be implemented.

Technologies we use in this Project

  1. Python 2.7
  2. GTK
  3. Twisted Matrix
  4. Google Protocol Buffers

6 - Interactive visualization of network nodes on Web Network Scanner

Web Network Scanner is a web interface to Umit Network Scanner. Rodolfo Carvalho as GSoC student with Adriano Marques started this project in 2007. On the other side, João Medeiros built RadialNet in 2007 and 2008. Since than many other developers have been improved and work his theory and Network Scanner have now a very good network topology viewer.

Ideas for the Summer

Web Network Scanner with RadialNet

The other goal is to put Web Network Scanner back on track, by implementing the other capabilities that we have at his desktop counterpart in a web ready manner. Our ultimate goal, is to port Web Network Scanner to the cloud, and allow for people to use it for remote scanning of hosts.
The basic idea is to implement RadialNet in web environment and integrate it with Web Network Scanner.

Technologies we use in this project

  1. Python 2.7
  2. Umit Network Scanner

7 - Packet Tracker Platform

Packet Manipulator is a frontend that is really useful for advanced users and easy to be used by newbies. With Packet Manipulator, network admin can forge custom packets and send them over the wire to analyze the network, sniff on a selected interface or simply edit a pcap file for further replay. In 2008 and 2009, Packet Manipulator Plugin Framework and Audit Framework have been created, allowing users to easily write their own plugins, and plugins to audit network.

Ideas for the Summer

Implement the Packet Tracker Platform

The idea on Packet Tracker is to create a platform where users can monitor and configure alarms, for instance:

  • Alarm when packet arrive/leave
  • Detect packets with debit (e.g. more/less than 100Kb/s)
  • Detect packets of specific types between a interval
  • Jitter based
  • Dipacket Inspection: inspect packet contents (e.g. HTTP contents)

Technologies we use in this project

  1. Python 2.7
  2. GTK
  3. UMPA

8 - Distributed Packet Capture (DiPac)

DiPac aims to be a tool with capability of capture packets in multiple points, in real-time. There are a lot of scenarios where this feature can be applied, e.g. enterprise auditing and educational proposes. The first step will be create an agent (DiPac agent) based on UMPA, write library that enable capture packets, and send the packets to the central DiPac (use UMPA extensions). Then a driver to PacketManipulator will be needed to show packets: DiPac Wrapper.

Technologies we use

  1. Python 2.7
  2. GTK
  3. UMPA

9 - Network Scanner Android Devices

From the work of one of our GSoC students last year we released a working version of the Umit Network Scanner for Android on the Android Market. It works beautifully, but we still want to improve on that tool.

Ideas for the Summer

Improve GUI and add feature to ease mobile use

The current version has done a great job proving that we can run nmap scans on an android phone and also to create a basis for us to build upon, and now it is time to create those neat graphics, improve usability to make our users happy and make sure to add some useful features for mobile users there. We'll be releasing another version to Android Market by the end of this summer with these improvements!

Improve non-root capabilities

Currently, the network scanner requires root for some features such as traceroute etc. More non-root features should be added. Traceroute currently runs from busybox shell.

Porting Linux networking tools to Android

The Linux traceroute should be ported to Android http://traceroute.sourceforge.net/
Nmap binaries currently inside the apk are used from http://ftp.linux.hr/android/nmap/
A proper porting method using ndk-build needs to be done this summer. This involves going over the configuration and makefiles for the nmap source and compiling them with either ndk-build or arm cross-compile toolchain. Same goes for traceroute.
More linux networking tools can be ported to android by cross-compiling them for arm - it would be great if you have some knowledge about cross-compiling.

Porting a webserver to Android

There are several ports of popular web servers to Android - lighttpd, mongoose etc.
To improve the reporting of results a web server can be running on the localhost and any device on the network can view the results.

Technologies we use in this project

  1. Java
  2. C
  3. Android NDK
  4. Cross-compiling
  5. Nmap

10 - Network Scanner developer

Network Scanner has a lot of small features that are enough for a summer project. The Network Scanner developer will assign some tasks in our feature request list, and fix some important bugs actives in the development stage.

Ideas for the Summer

Umit Network Scanner features and improvements

We have a lot to do here, and your major goal is going to be to finish Umit Network Scanner integration, and make a release. Saying like that, doesn't sound like there is much to do here, but there is. One of the things we want to see coming out of this summer besides a release:
  • Add new Nmap profiles, and work on ZION Profiles
  • Improve the scan details, and view of scan details (e.g. red colour in host down, green in hosts up, etc)
  • Improve RadialNet to better view in large-scale network topologies (more than 1000 nodes).
  • Get Quick Scan to work on all supported operating systems

Technologies we use in this project

  1. Python 2.7
  2. GTK
  3. Nmap
  4. HIGWidgets

11 - Reporter Tool to Network Scanner/PacketManipulator

Umit Project has two strong graphical utilities very useful for the users. However, it does not generate useful reports. All it supports is save/load from a Umit format properly defined. But in some cases, it is useful to export information to be printed, or saved to PDF/PS for sharing. In order to solve this issue, a report generator have to be created in a generic way. The user should be able to customize their reports. In Network Scanner export network topology and network inventory are mandatory. Also, we're going to find good use for this report system on Open Monitor and several other projects we develop like Packet Manipulator, Network Inventory and Network Administrator, so make sure you write this tool in a way that can be used by our desktop apps as well as our web based apps.

12 - Packet Manipulator

PM (PacketManipulator) is a graphical tool which is used for packet crafting and security auditing of a network. It has a modular and pluggable audit framework that's useful to provide lots of interesting features for strengthening network security such as: remote OS profiling/fingerprinting, check the security of implemented protocols, i.e. detect non blinded information, and change the protocols behavior based on MITM audits, and much more.

Ideas for the summer

Fuzzing

Fuzzing is a brute force testing technique, that involves providing invalid, unexpected, or random data to the inputs of a computer program. The program is then monitored for exceptions such as crashes, or failing built-in code assertions or for finding potential memory leaks. Fuzzing is commonly used to test for security problems in software or computer systems.

Protocol fuzzing is essentially the same technique that is applied for testing network protocols (L3-L7 protocols in general, although is it possible to also fuzz low level protocols such as 802.11 ).

Scapy library already provides some mechanism to generate, according to several rules, fuzzed packets through the fuzz() function. The final goal of the project is to add some sort of high level language (such as the Mu Scenario Languagee ) to PacketManipulator by both reusing the Scapy backend or by devising a different mid-level (that can be used independently from Scapy or Umpa backend) or low level (using UMPA) implementation back end that would serve for the scope.

3rd-party tools interaction

It should be nice to have interaction with other security tools like UMIT, hydra or metasploit. For example after a host is discovered some contextual menu could be presented to the user to further analyze a given host by using external tools. This can be implemented through the plugin system.

Other tools that can be supported through plugins includes sslstrip, john, aircrack.

Information gathering and visualization

Bringing some information gathering and visualization capabilities to PacketManipulator would be a killer feature and may be the most entertaining idea for this summer. For reference take a look at the most common tools used to this scope Inguma and Maltego

The final goal is to add to PacketManipulator the capability to provide to the user a visual representation of the network and its inner information such as type, OS, open ports of each specific network device, ASN number, personal information about the administrator/users of the network. For reference take a look at these screenshots one and two presenting the GUI of Inguma and to Xdot by José Fonseca which is an Interactive viewer for Graphviz dot files.

New Audits

The objective of this idea is to further optimize the existing modules and add more. Interesting audits plugins could target/Routing (and related) protocols such as:

  • VLAN truncking protocol (VTP)
  • Dynamic Trunking Protocol (DTP)
  • Hot Standby Router Protocol (HSRP)
  • Cisco Discovery protocol (CDP)
  • Virtual Router Redundancy Protocol (VRRP)
  • Spanning Tree Protocol (STP)
  • Label Distribution Protocol (LDP)
  • Border Gateway Protocol (BGP)
  • Multiprotocol Label Switching (MPLS)
  • Open Shortest Path First (OSPF)

Other protocols:

  • SIP (partially implemented)
  • HTTP (partially implemented)
  • SSH (SSH mitm, not implemented)
  • ...

General improvements

Several parts of PacketManipulator are out of date or might require a complete rewrite/redesing:

  • UMPA backend is (or quasi) missing for the moment being.
  • GUI performance and style improvements (dependency solver for plugin/audit loader, plugin configurator, host list, ..)

Your own idea

Feel free to propose your original idea! We are open minded. Please take the ideas above just as suggestion. If you are interested in several points belonging to different "ideas" just mix them up and send us your proposal!

Packet Manipulation improvements

Packet Manipulator has a lot of room for improvements, and we need a helping hand here to implement them! Clone our packet-manipulator repository , run it and elaborate your proposal based on what you think that should be improved.

Technologies we use in this project

  1. Python 2.7
  2. GTK
  3. UMPA
  4. Scapy

13 - Mobile Sniffer for Android

Last year, we had a Umit Summer of Code student working on a mobile version of our Packet Manipulator focused on network sniffing. This project is almost there, but we still need some more work to make a release soon. Our goal is to get started by releasing an early alpha of the sniffer in the Android Market, and evolve from that releasing soon and often while implementing new features, fixing bugs and collecting users feedback.

Technologies we use in this project

  1. Java
  2. Android
  3. Libpcap

14 - Your Great Idea!

We truly believe there is a lot of creative and talented students out there with exciting ideas waiting for a chance of a GSoC or USoC to be developed, and we're wide open to receive them! We want to hear from you, whatever your idea may be.
Don't feel ashamed, don't feel restrained by our own ideas, and give your great idea a try with us. Umit begin as a dream also, and we think that your dream could as much or even more successful than Umit currently is.