Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Benutzer:Grey/Security Tool Developement Projekt EN

< Benutzer:Grey
Version vom 14. Oktober 2005, 21:13 Uhr von 84.59.17.79 (Diskussion) (Wie sieht der Versuchsaufbau für ein Testskript aus?)

Documentation

HowTo

For what do we need the testscript?

For testing a firewall, we need the ability to generate and send different packets through our firewall. Our testscript ist here the manager, who administer to the sending and generating of the packets, while using the wrapper-classes. The testscript is refered in the commandline(the path to the script is refered) to FWTEST, so that FWTEST has not be compiled again for using another testscript.

Which language is used to implement a testscript? And why this language?

Python.

Python has many advantages:

  • simple syntax and easy to learn
  • a mighty programming library
  • simple to integrate in C and reversed
  • platformindependent

What abilities has a testscript?

  • default packets
  • IP-packets
  • UDP-packets
  • TCP-packets
  • ICMP-packets
  • sending packets
  • everything that Python can

How does a breadboard construction for a testscript looking?

As a basic principle we can say that FWTEST has two agents- and one FWTEST-process.

We have two mostly used breadboard constructions.

variation 1:

We have three computers: the firewall, agent a(achen) and agent b(bchen). On achen and bchen is running an instance of our agent, additionaly is an instance of fwtest running on one of our agents (achen or bchen). So one agent adopts the function of fwtest.

A possible construction could be:

http://www.freitagsrunde.org/~grey/sonstiges/std/versuchsaufbau1.png

variation 2:

The ohther variation is based on four computers, two computers are functioning as agents and the third adopts the function of the controller (so FWTEST). The fourth, the firewall, is untouched.

A possible construction could be:

http://www.freitagsrunde.org/~grey/sonstiges/std/versuchsaufbau2.png

Wie schreibe ich meine eigenen Testskripte?

Im Grunde ist das Implementieren eines Testskriptes recht einfach. Nehmen wir beispielhaft ein UDP-Paket, welches den Inhalt "Hallo Welt!" hat. Als erstes generieren wir ein default IP-Paket und passen die Felder unseren bedürfnissen an. Danach generieren wir erstmal unabhängig vom IP-Paket ein default UDP-Paket. Auch hier passen wir unser Paket unseren bedürfnissen an. Am Ende müssen wir noch das IP-Paket mit dem UDP-Paket verschmelzen. Wir geben dem IP-Paket das UDP-Paket als Payload und korrigieren die checksum-Felder mit der Funktion FIXUP. Nun sollte ein UDP/IP-Paket vorhanden sein, daß mittels transceive-Funktion verschickt wird.

Eine genauere Erklärung, bei der ein UDP-Testskript implementiert wird, finden Sie hier: UDP-Testskript

Grenzen von Tests

Testskripte sollen den Traffic simulieren und somit einen realistischen Paketaustausch darstellen. Zum Beispiel in unserem netdate-Beispiel haben wir eine Einschränkung.

Wir benutzen nicht wirklich den Heise-Server, sondern unser Agent nimmt diese Funktion ein, so daß natürlich die IP-Adresse unseres Agenten B (Bchen) im IP-Paket stehen muß. So gesehen ist es nicht wirklich eine Einschränkung des Testsktiptes, sondern eher des Versuchaufbaus. Es sei denn Bchen ist www.heise.de.

Eine weitere Einschränkung ist die komplexe Nachbildung einer Verbindungsstrecke, wie beim ICMP Fragmentation Needed Aufbau. Wir haben nicht alles, Server und Rechner zu denen eine Verbindung in der Realität aufgebaut werden würde, aber das ist auch nicht nötig. Es soll nur die Firewall getestet werden, ob sie richtig konfiguriert ist oder Schwachstellen hat.

So sind nur die Pakete wichtig die durch die Firewall gehen.