WOLPERTINGER(1)

NAME
wolpertinger - Not your little sisters portscanner. Designed to do portscans from multiple hosts.

SYNTAX

wolpertinger [Options] {target host}

DESCRIPTION

The wolpertinger is a portscanner designed to do portscans from multiple hosts. It uses inter-process communication over TCP (or unix domain sockets when using only one host) to synchronize the three parts of the scanner: the sender, the listener and the master. Multiple sender-processes (send drones) can be used to speed up the portscan. The workunits are distributed by a round-robin algorithm, trying to get each sender drone the same number of probe-packets to send. All send drones are spoofing the source adress of the host where the listener-process is located. The listener-process (listener drone) is waiting for the responses of the scan. By using a TCP hashtracking algorithm, the listener drone can decide whether the packet belongs to a the portscan or not. Once an open port is found the listener drone report it to the master process. With this mechanism it is possible to use the bandwih of multiple hosts with as little overhead for IPC as possible.

FEATURES
- scan targets from multiple hosts

- challenge response authentication between drones and master

- round-robin loadbalancing

- very flexible target specification

- relational database backend

OPTIONS

Every commandline option without a flag is treated as a host expression. Hosts can be specified as single ip adresses or hostnames (192.168.1.1 www.yahoo.com), with CIDR notation (127.0.0.1/24) or as an ip range (10.100,101.0.10-20,40-60).

The following options can be used with the wolpertinger:

-D <ip:port,ip:port,...> (Drones)
    Mit dieser Option wird das zu nutzende Netzwerk-Interface auf interface gesetzt. Diese Option dient dazu einen PCAP Filter zu installieren. Wird ein falsches Interface gesetzt können von PCAP keine Pakete eingelesen werden und lutz wird nach einiger Zeit in einen Timeout laufen. Wird kein Interface explizit angegeben, verwendet lutz die Kernel Routing Table und ermittelt automatisch das richtige Netzwerk-Interface.

    -i <interface> (Network Interface)
        Mit dieser Option wird das zu nutzende Netzwerk-Interface auf interface gesetzt. Diese Option dient dazu einen PCAP Filter zu installieren. Wird ein falsches Interface gesetzt können von PCAP keine Pakete eingelesen werden und lutz wird nach einiger Zeit in einen Timeout laufen. Wird kein Interface explizit angegeben, verwendet lutz die Kernel Routing Table und ermittelt automatisch das richtige Netzwerk-Interface.

    -p <port ranges> (Nur bestimmte Ports scannen)
        Mit dieser Option werden spezielle Ports bzw. Portbereiche angegeben die lutz scannen soll. einzelne Ports werden mit Kommata voneinander abgetrennt. Portbereiche werden in der Form <startport>-<endport> definiert, also Beispielsweise 20-80. Es ist auch möglich mehrere Portbereiche mit Kommata separiert anzugeben. Eine mögliche Portangabe sieht folgendermaßen aus: -p 22,80,100-200,514,1024-6000.

    -iL <hostfile> (Ziele aus einer Datei auslesen)
        Wird diese Option verwendet, liest lutz die angegebene Datei ein und versucht die darin angegebenen Hosts zu seiner Liste der Ziele hinzuzufügen. Die Trennung kann durch Leerzeichen, Tabulatoren und Zeilenumbrüche erfolgen. Zusätzlich auf der Kommandozeile angegebene Hosts werden ebenfalls in die Liste der Ziele aufgenommen.

    -L <seconds> (Timeout festlegen)
        Das Timing ist bei einem Scan die schwierigste Komponente. Setzt man den Timeout für die Antworten zu hoch, dauert der Scan eine Ewigkeit. Setzt man den Timeout zu niedrig, werden Ports als "filtered" markiert, die in wirklichkein geschlossen oder gar offen sind. Lutz versucht wärend des Scans den Timeout selbstständig zu berechnen. Das funktioniert aber nicht immer einwandfrei. Darum ist es möglich mit der Option -T manuel einen Timeout anzugeben. Dieser gibt an wie viele Millisekunden pro Paket auf eine Antwort gewartet werden soll.

    -g <SourcPort> (Source Port festlegen)
        Setzt den Quellport für die Scans auf einen bestimmten Wert. Lutz benutzt den Quellport um einzelne Pakete die mitgelesen werden einem bestimmten Scan zuzuordnen. Wird diese Option nicht angegeben, wird ein zufälliger, nicht privilegierter Port gewählt.

    -h (Hilfe anzeigen)
        Zeigt eine kurze Übersicht über alle Kommandozeilenoptionen an und beendet dann das Programm.

    -v (Verbouse)
        Lutz gibt mehr Informationen darüber aus was gerade geschieht wenn diese Option gesetzt ist. -v kann mehrfach verwendet werden um die Informationsmenge noch weiter zu erhöhen.

    -V (Version anzeigen)
        Zeigt die Version von lutz an und beendet dann das Programm.

EXAMPLES
Zum besseren Verständnis wird hier anhand von einigen Beispielen die Handhabung von lutz erklärt:

wolpertinger -v 192.168.2.0/24

Hier benutzt lutz einen einfachen SYN-Scan um die Ports 1-1024 sowie alle weiteren bekannten Ports (/etc/services, lutz-services) auf dem Zielhost mit der IP 192.168.2.1 zu scannen. Durch den Schalter -v werden zusätzliche Informationen über den Scan ausgegeben.

wolpertinger -t testscan -s 2000 -p a 192.168.0-10.1-254

In diesem Beispiel wird die Reihenfolge der zu scannenden Ports zufällig gewählt um die erkennung des Portscans zu erschweren. Es werden nur bekannte Ports auf dem Zielsystem 192.168.2.1 gescannt. Zur Host-Discovery und zur Timeout berechnung wird ein ICMP Ping verwendet. Weiterhin gibt der scan durch den Schalter -v zusätzliche Informationen aus.

wolpertinger --drone-list drones.txt -s 1000 -vv 10.10.0.0/16

Bei diesem Scan wird das Netzwerkinterface explizit auf eth0 gesetzt. Die Option -v wurde zweimal angegeben um eine noch detailiertere Ausgabe zu erhalten. Es werden die Ports 80 und 443 gescann sowie alle Ports zwischen 1024 und 6000. Es wird nicht versucht die IP Adresse 192.168.2.1 zu einem Hostnamen aufzulösen.

FILES

~/.wolpertinger/wolpertinger.db
    SQLite3 database to where all scan results are commited. The resulst are saved along with a bunch of informations about the scan. Some configuration stuff is also stored in the database like the defaultports that are used when no portstring is provided by the user.

AUTHOR
Christian Eichelmann <ceichelmann@gmx.de> (http://www.codeware.org)

BUGS
Das Timing zu berechnen ist eine der schwierigsten Aufgaben bei einem Portscan. Hier liegen im Moment auch die größten Probleme bei lutz. Es kann gelegentlich vorkommen das einige Ports als "filtered" angezeigt werden (der Port hat nicht geantwortet) obwohl der Port garnicht hinter einer Firewall steht. Hat man einen solchen Verdacht sollte man das Timing mit -T auf einen höheren Wert setzen.

Please report any bugs or feature request on sourceforge: http://sourceforge.net/projects/wolpertinger!