26C3 - 26C3 1.15

26th Chaos Communication Congress
Here be dragons

Speakers
AltesWecken
Schedule
Day Day 4 - 2009-12-30
Room Saal3
Start time 11:30
Duration 00:45
Info
ID 3340
Event type Lecture
Track Hacking
Language used for presentation German
Feedback

Wolpertinger. Ein verteilter Portscanner.

Schneller scannen!

Wolpertinger ist ein Portscanner. Allerdings kein gewöhnlicher Portscanner, sondern entwickelt um hunderte oder tausende von Adressen schnell scannen zu können. Dazu kann er sowohl "Dronen" zur Aufgabenverteilung verwenden als auch von einem einzelnen System aus sehr schnell fertig werden. Wolpertinger ist ein reiner TCP-Portscanner, der die Verarbeitung der Ergebnisse anderen überlässt. Dazu speichert er die Resultate in einer relationalen Datenbank, und wer auch immer sie entweder anderen Werkzeugen übergeben will und in l33tspeak, Excel oder Kuchengrafiken umwandeln will kann das gerne tun. Wolpertinger basiert auf mehreren Ansätzen, um Portscans zu beschleunigen und gleichzeitig präzise Ergebnisse zu erhalten, welche im Vortrag vorgestellt werden. Quelle: http://sourceforge.net/projects/wolpertinger

Wolpertinger is a portscanner. However, not your uncle's portscanner. It has been created to scan either very large networks or a lot of small ones in short time. Very short time. In order to achieve this necessary goal, it can distribute the scanning-work between several drones, controlled by the "Wolpermaster". However it is also very fast when scanning from a single system. These and other measures to make a fast and reliable scanners are presented in the talk (in german). Sourceforge: http://sourceforge.net/projects/wolpertinger

Wolpertinger - verteiltes schnelles Portscannen (see below for english info)

Die Hintergrundgeschichte:

Heutzutage fusionieren Unternehmen schneller als je zuvor, werden verstaatlicht oder gehen in die Insolvenz. Traditionelle Portscanning-Techniken können daher mit dem Zeitgeist nicht mehr mithalten. Bei grossen Netzen sind sie nicht fertig, bevor diese umstrukturiert oder gar abgeschaltet wurden und sich vielleicht gänzlich unter neuer Leitung befinden. Auch sind traditionelle Portscanner ein Risiko für den Scannenden, da er vielleicht vor Abschluss pensioniert, dann dement wird und schliesslich begraben werden kann. Junge, aufstrebende Hacker, Sicherheitstechniker -all die young hopefuls- leben daher grosser Furcht und Angst vor dem ersten Scan von etwas, was sich größer als ein Class-C Netz darstellt.

Mit Angst und Furcht ist aber Schluss, denn der Wolpertinger löst dieses Problem. Er kennt nur eine Aufgabe und lässt sich nicht ablenken: Schneller Scannen! Denn der Wolpertinger ist ein verteilter TCP-Portscanner, der nichts tut als offene Ports möglichst schnell festzustellen - indem er die Entscheidung über die Geschwindigkeit dem Benutzer -also Diir- bzw. der Benutzerin überlässt. Auch liegt er bei seinen eigenen Zeitschätzungen um weniger als 1% daneben. Wolpertinger hat wenig Toleranz gegenüber Geräten, die am modernen Internet mangels Leistung nicht teilnehmen sollten. Gegenüber der Weiterverabeitung ist er aber offen:

Ergebnisse werden in einer relationalen Datenbank (sqlite) abgelegt; wie man mit den dort gewonnen Daten umgeht, ob man sie in l33tspeak oder Excel konvertieren möchte (bzw. muss) ist ihm einfach egal.

Die Technischen Infos:

  • Grundlage ist "stateless connection tracking"
  • Verteilter Portscanner, arbeitet mit "Drohnen" ** automatische, faire Aufgabenverteilung zwischen Drohnen ** automatischer Ausgleich von Ausfällen einzelner Drohnen ** CRAM-MD5 Authentifikation zwischen "Drohne" und "Master" ** Dronen loggen via syslog
  • begrenzter Support für lokales, drohnenloses Scannen (Entwickleroption!)
  • Linux basiert, quellenoffen, 32/64bit-Support
  • "No-Frills"-Ansatz, reiner TCP-Portscanner
  • z.Z. in der Beta-Phase: http://sourceforge.net/projects/wolpertinger

Abhängigkeiten:

  • funktionierendes, halbwegs stabiles Linux-System
  • funktionierender Internet-Zugang, schnell (Keine Modems, kein ISDN, kein instabiles DSL/Kabel, kein wackliges WLAN)
  • libpcap, openssl
  • sqlite
  • libdnet von http://libdnet.sourceforge.net/ ** nicht zu verwechseln mit der gleichnamigen DECT-Bibliothek; bitte bei Debian/Ubuntu-Systemen beachten

Entwicklungsziel:

Insbesondere bei der Vorstellung von Portbunny durch FX am 24C3 gab es reichlich Missverständnisse. Im Nachhinein wurde der Scanner fast ohne Ausnahme nur beim Test von Klein- und Kleinstnetzen (Class-C, einzelne Hosts) mit anderen verglichen - obwohl er ausdrücklich als Tools zum scannen sehr grosser Netze in erträglicher Zeit vorgestellt wurde. Dies ist auch der Ansatz von Wolpertinger, nur sollen die Ergebnisse zudem ihn angenehmer Zeit vorliegen und der Nutzer vergleichsweise frei in der (Weiter-)Verarbeitung der Ergebnisse sein.

Situation:

Grosse Portscans finden i.d.R. im Rahmen von Sicherheitstests statt. Die Netze, die hier gescannt werden, verbieten typischerweise ICMP ("Ping") und nur einige wenige Adressen sind überhaupt aktiv (i.S.v. von aussen erreichbar). Konkret hat man z.B. mehrere Class-C-Netze vor sich, in denen pro Netz auf 2-4 Hosts Port 80 und 443 erreichbar sind, und auf einem einzelnen System Port 25. Die restlichen Ports sind nicht erreichbar und werden komplett gefiltert. Ähnlich wie bereits am 24C3 von FX dargestellt, besteht das Problem nun darin, dass ein Sicherheitstest auch manchmal Inventarisierungsaufgaben übernimmt, d.h. unabhängig von Sicherheitsproblemen soll z.B. festgestellt werden, ob alles so ist wie es sein soll. Konkretes Beispiel: Die Abteilung für Katzenfutter soll in ihrem Netz zwei erreichbare Webserver haben, ein Test- und ein Produktivsystem. Die restlichen Systeme sind komplett gefiltert. Nun hat die Abteilung für Katzenfutter ein Class-B-Netz und man selbst ein Problem.

Die meisten Portscanner stellen ihr Timing nach der Reaktion des Zieles auf einen "Trigger" ein, sei dies ein ICMP-Paket "Ping", eine Reaktion auf Port 80 usw. Hier weiss man im Vorfeld, dass von einem grossen Teil der Hosts nie eine Reaktion auf den "Trigger" kommen kann und wird. Des weiteren möchte man, dass die Abteilung für Katzenfutter auf keinen Fall irgendwo einen anderen Port als die genehmigten offen hat. Und schliesslich und endlich ist es Donnerstag, 15:30 Uhr und am Montag um 7:00 Uhr müssen die Ergebnisse zur Strategie-Besprechung der Koordinations-Abteilung vorliegen. Und was jetzt? "Waiting for things that don't happen doesn't cut it" - so sagte FX am 24C3. Recht hat er. Deswegen wartet Wolpertinger nicht, er sendet Pakete. Und wenn das nicht hilft - noch mehr Pakete.

Anhand des Beispiels sollte auch klar sein, wie die Abgrenzung zu anderen Scannern aussieht: Sofern alle Systeme brav auf Ping antworten, offene Ports im voraus bekannt sind oder nur ein LAN gescannt wird, ist es egal, welchen Scanner man verwendet. Auch um den Scan eines einzelnen Systems, bei dem ein Kumpel wissen möchte, ob seine Firewall tut was sie soll, geht es bei Wolpertinger nicht. Es geht um grosse, ordentlich "gefilterte" Netze. Ansonsten ist der Scanner Overkill.

Entwicklungsgeschichte:

Ansätze gab bzw. gibt es bereits bei Unicornscan. Diese wurden in einem Paper vor einiger Zeit (~2004) veröffentlicht, aber in Unicornscan in der Vergangenheit nicht voll ausgereift implementiert - wahrscheinlich, da Unicornscan onehin schnell arbeitet. Allerdings war dieser Ansatz nach Tests extrem vielversprechend. Auf der Basis der Erfahrungen mit einem weiteren Portscanner, "Lutz" und dem stateless connection tracking in Unicornscan entstand so Wolpertinger.

Nutzen:

Wolpertinger will weder ein Security-Scanner, Diensterkennungstool noch etwas anderes sein. Daher ist er sinnvoll für alle, die entweder grosse Netze im internationalen, weltumfassenden Internet scannen wollen oder für Leute, die z.B. in ihrem eigenen (grossen) Netz unerwünschte Veränderungen schnell erkennen wollen. Oder sogar müssen, soll es ja auch geben.

Vorstellung:

Der Wolpertinger wird von killswitch und flauschibauschi präsentiert, die sich der Trockenheit des Themas sehr bewusst sind und diesem entgegen wirken wollen. Mit Wolpertinger kann Portscannen auch Beamten Spass machen.

English background info:

The background: Today companies merge faster then ever, fail or get nationalized. Traditional portscanners cannot keep up with the zeitgeist anymore. They won't be able to finish their scan before the network is either re-structured, or even shutdown and sold for scraps. Even if the network stays, the person scanning might not - he runs a high risk that he might grow old, suffer from dementia and be in need of a burial service before his scan is finished. Therefore, todays young hopefuls - the happy hacker who hasn't beend jaded by time, society and the sloppy code produced by manufacturers worldwide, the security enthusiast who still believes in it and the security technician who doesn't regret his career choice yet are all scared of their first scan of a big network. Can you look a young hacker - no older than 13- who just was able to start linux (or BSD) on the cellphone you just gave him and tell him that one day he'll sit there, wringing his hands, drenched in cold sweat, waiting for the results of an ordinary and boring portscan? Well, we sure can't. That's why we created the wolpertinger.

Goal of the wolpertinger is "scan faster" and nothing else. This means that the "else" such as service detection, security scan or strange hacks are up to you and other tools. This includes drawing pie charts, should you wear a suit. Anyway, wolpertinger is actually rather fast and guess how much we're pleased that his estimates are usually less then 1% off. However, it requires a stable and "known good" internet connection - as a lot of DSL and cable customers know, this isn't as common as it should be. So, a system actually on the internet itself in a nice facility should do the trick.

Wolpertinger stores the results of his scans in database (sqlite) - you retrieve them and to with them whatever your heart desires - the wolpertinger stops here.

The technical details:

  • "stateless connection tracking"
  • Distributed scanner, uses drones controlled by a wolpermaster ** fair distribution of work between all drones ** handles failure of individual drones ** doesn't handle failure of all drones ** CRAM-MD5 authentication between drones and master
  • only basic support for scanning w/o drones (locally)
  • linux-based, open-source, 32/64bit
  • "No frills" TCP-portscanner. Will not read email.
  • "Beta"-phase at the moment, terrible things might still happen
  • used in production nevertheless
  • http://sourceforge.net/projects/wolpertinger

The dependencies:

  • running linux system, a.t.m. "linux-only"
  • good, stable internet-connection ** no modems, no ISDN, no IP-over-carrier-pidgeons
  • libpcap, openssl
  • sqlite
  • libdnet, http://libdnet.sourceforge.net ** remember there's a DECT-library with the same name

The goal:

The presentation of portbunny at 24C3 by FX left some folks confused. Afterwards, it was compared to other scanners scanning miniscule networks - such as single hosts or a Class-C network. Well, it was presented as tool to scan large or even titanic networks in short time. This is also the goal of wolpertinger.

The situation:

Big portscans are usually (or "legally") done in security tests. The networks scanned here usually will not allow ICMP ("pings") and only a few hosts will actually have an open port - 80 or 443 and maybe a single system with 25. Everything else, sometimes over 80% of all systems will be totally filtered, no response, no nothing. As described by FX in the beginning of the portbunny presentation, the test goals might also be checking the inventory, i.e. "Are there only the webservers running that are supposed to be running?". Example: The subdepartment of cat-food for long-haired cats of the Meowcow cat food company is only allowed to run two webservers in their entire network, access from the internet to everything else is "verboten". Or even "strengstens verboten". Now, the subdepartment of cat-food for long-haired cats has a class-B network and you have a problem. Because most portscanners base their timing on the reaction time of the target host to a "trigger" - be it an ICMP-response, a reaction from port 80 and so on. However, in this case, you know beforehand that there'll be no response to the triggers from many, many hosts. Still, you have to know if they run a third webserver or "something bad". It's thursday, 15:30 and the main coordination department of internet activities of Meowcow has its big strategy meeting on monday, 7:00. What now? "Waiting for things that don't happen doesn't cut it" - so said FX at 24C3 and there is much wisdom in his words. Wolpertinger doesn't wait, it sends packets. And if that doesn't help, more packets.

This example shows what wolpertinger is all about and what it is not. If you're scanning small networks, when you know certain ports are open, ICMP is not considered that evil, you're on the local net or when your buddy in Montevideo wants to know if his firewall does what it is supposed to do then the wolpertinger is overkill.

The development history:

Distributed scanning wasn't invented with wolpertinger. Using it for speed reasons was implemented in unicornscan already several years ago - but not completely finished; maybe because its timing scheme already makes it a fast scanner. Based on experiments with unicornscan and lutz, another fast, aggressive scanner the wolpertinger was born.

The people who might benefit:

Anyone who wants -or rather has to- scan networks fast. That includes folks who'd really like know if the webserver of a small access point turns up in their network. You can also do research with it and scan parts of the internet - you just need enough drones. This bold claim is hidden in the english part for a reason.

Presentation:

Will be done by killswitch and flauschibauschi. Make no mistake - this is actually a dry topic, as the reason for the scanner itself reeks of offices, schedules and timetables. However, they'll do their best to present in an enjoyable way. In german. However, they'll be availabe after the talk. The technical details will also be presented in english in the paper submitted for this event.