IT-Security Teil 6: Paket-Generatoren 28.03.15 1
Literatur [6-1] http://de.wikipedia.org/wiki/penetrationstest_(informatik) [6-2] BSI-Studie "Durchführungskonzept für Penetrationstests", siehe: https://www.bsi.bund.de/cln_156/contentbsi/publikationen/studie n/pentest/index_htm.html [6-3] http://www.secupedia.info/wiki/penetrationstest [6-4] http://www.packetlevel.ch/ [6-5] http://nemesis.sourcearchive.com/documentation/1.32plusp1.4beta3/nemesis-proto dns_8c-source.html [6-6] https://supportforums.cisco.com/docs/doc-17948 [6-7] http://althing.cs.dartmouth.edu/secref/resources/recon.shtml [6-8] http://www.iphelp.ru/faq/2/ch06lev1sec9.html 2
Übersicht Penetrationstests Testen von Firewalls Das Testen von Firewalls ist deshalb so interessant, weil Geräte zum Schutz von Systemen die ersten und wichtigsten Angriffsziele darstellen. 3
Penetrationstests Penetrationstest = Pentest = Umfassender Sicherheitstest durch Werkzeuge von Außen ohne Nutzung von Insider- Informationen Diese Tests sind ein wichtiger Bestandteil der Sicherheitsaudits. Das BSI gibt dazu eine Studie heraus: https://www.bsi.bund.de/shareddocs/downloads/de/bsi/publika tionen/studien/penetrationstest/penetrationstest_pdf.pdf? blob=publicationfile Methode: Es werden bekannte Angriffsmuster auf die zu testende Anlage generiert und das Verhalten analysiert. Es werden noch weitere Angriffsmuster benutzt, die (bisher?) nicht zu Angriffen benutzt wurden. 4
Testen von Firewalls - Stufe I Scann von Innen in der Firewall mit nmap auf 127.0.0.1 Scann von außen bezogen auf die Firewall (2x, d.h. von Innennetz und vom Außennetz) mit nmap mit nessus oder openvas Natürlich... Anschließendes Löschen von nmap Weder nessusd (oder ein openvas-server) noch ein Browser sollten auf der Firewall installiert sein. 5
Bemerkungen Ein kümmerlicher Ersatz von nmap kann netstat(i) zusammen mit lsof(i) sein. Diese Werkzeuge sind die für die "armen Leute". Besser ist aber immer die Sicht von außen auf die Systeme mit Werkzeugen, die dafür konstruiert sind. Manchmal sind Scanns von Außen nur mit externer Hilfe möglich. Über folgende Websites lassen sich erste Tests durchführen: http://grc.com/x/ne.dll?bh0bkyd2 http://digisec.de/check.html http://www.port-scan.de http://scan.sygatetech.com http://www.blackcode.com/scan http://www.hq42.net/net_tools/portscan.php http://wizard.ae.krakow.pl/ mike/traceping.cgi http://www.it-sec.de/vulchke.html 6
Testen von Firewalls - Stufe II Benutzung von Paketgeneratoren: hping, hping2 und hping3 sendip nemesis sing... Diese Aufrufe werden in Shell-Dateien zu einzelnen Testfällen zusammengefasst. 7
hping* I Quellen www.hping.org http://sourceforge.net/projects/hping2/ http://pkgs.repoforge.org/hping/ Links Anleitung in http://www.ethicalhacker.net/content/view/72/24/ http://www.windowsecurity.com/articles- tutorials/intrusion_detection/packet-analysis-tools-methodology- Part1.html http://wiki.hping.org/86 http://www.brandonhutchinson.com/testing_firewall_rules.html http://etutorials.org/networking/network+security+assessment/chapter +4.+IP+Network+Scanning/4.5+Low-Level+IP+Assessment/ http://www.radarhack.com/dir/papers/hping2_v1.5.pdf 8
hping* II Aufruf: hping2 Optionen Destination Auszug aus den Optionen: (Siehe http://linux.die.net/man/8/hping2) Parameter Erläuterung -c NN Anzahl der Pakete: NN -i NN Interwall zwischen Paketen in NN Sekunden oder beginnend mit u in ms --fast Gleich zu "-i u10000", d.h. 10 Pakete/s -a NN Absenderadresse NN -r Aufsteigende ID bei IP -p NN Portnummer NN -S TCP-Aufbau-Paket 9
hping* III Parameter Erläuterung -v -V Steuerung des Umfangs der Ausgabe -W Byte-Anordnung für Windows-Maschinen benutzen --sign Daten Füllt den Datenbereich mit Daten aus --file Datei Paket wird mit den Daten aus Datei gefüllt --ipproto NN Setzen des Protokollfeldes in IP bei --rawip --rawip Alles kann gesetzt werden --icmp Auswahl des ICMP-Protokolls --icmptype Typ Setzt den Typ --icmpcode Code Setzt den Code --icmp-ipver Setzt die IP-Version bei ICMP-Pakete --icmp-iphlen Setzt IP-Header-Längenfeld (Default 5*32 bit) --icmp-iplen Setzt IP-Paketlängenfeld --icmp-cksum Setzt die Checksumme 10
hping* IV Parameter --udp --ttl --frag --mtu --morefrag --dontfrag --fragoff NN --tos NN --rroute Erläuterung Auswahl des ICMP-Protokolls Setzen des TTL-Wertes Erzeugt Fragmente mit mtu=16 byte Setzt die maximale Fragmentgröße Setzt das more-fragment-flag Setzt das don't-fragment-flag Setzt den Fragmentoffset auf NN Setzt den Type of Service auf den Hexcode NN Setzt die Record Route-Option 11
hping* V Verkürzungen: Parameter --icmp-ts --icmp-addr Erläuterung ICMP Timestamp Request ICMP Address Mask Request Setzen der TCP-Flags: Parameter Erläuterung -F FIN-Flag -S SYN-Flag -R RST-Flag (Reset) -P PSH-Flag (Push) -A ACK-Flag -U URG-Flag (Urgent) 12
hping* VI Allgemeine Scann-Modi (als nmap-ersatz/ergänzung): hping2 --scan 1-1000,12345,known -S Adresse Scannt Ports 1-1000 zusammen mit 12345 und den definierten hping2 --scan '1-1024,!known' -S Adresse Scannt Ports 1-1024 ohne die definierten Ports Das! Hat in vielen Shells eine besondere Bedeutung. hping2 --listen String wartet auf der Schnittstelle auf ein Paket mit den Zeichen String hping2 Adresse --traceroute Traceroute-Modus 13
Hping2-Beispiel Target=141.45 PacketCount=42 echo "ICMP Echo Request: " hping2 -V -c $PacketCount -C 8 $Target echo "Portscan 1-1024: " hping2 --scan 1-1024 -V -S -t 16 $Target echo "Fragment Offset Test: " hping2 -y -g 1263 -c $PacketCount $Target echo "SMTP request: " hping2 -V -c $PacketCount -S -p 25 $Target echo "Xmas Scan: " hping2 $Target --xmas -c $PacketCount; echo "Bad IP Checksum: " hping2 $Target --badcksum -c $PacketCount echo "Set Ack Flag" hping2 $Target --xmas -c $PacketCount echo "Force all ICMP Modes: " hping2 $Target --force-icmp -c $PacketCount 14
sendip 2.5 Quellen http://packetstormsecurity.org/search/?q=sendip&s=files http://snad.ncsl.nist.gov/ipv6/sendip.html http://www.earth.li/projectpurple/progs/sendip.html http://www.packetlevel.ch/html/sendip/sendip.html Dokumentation http://snad.ncsl.nist.gov/ipv6/sendip/sendipman.html http://www.ufsdump.org/papers/uuasc-november-ddos.html 15
sendip 2.5 sendip [-v] [-d Daten] [-h] [-f Datei] [-p Proto] [Options] Adresse (Weitere) Parameter: Parameter Erläuterung -p Protokoll Angabe des Protokolls: ipv4, ipv6, tcp, udp, icmp, icmpv6, BGP, RIP, NTP -is Adresse Absenderadresse -id Adresse Empfängeradresse -d Daten Daten hinten an das Paket hängen -f Datei Nimmt Datei für Datenfelder des Pakets -v Verbose -h Hilfeinformation, auch nach Protokollen aufgeteilt 16
sing I sing = Send ICMP Nasty Garbage Sing kann den Ping-of-Death und fragmentierte ICMP-Pakete generieren. Version für Windows und Linux Version 1.1 http://sourceforge.net/projects/sing/ http://packetstormsecurity.org/search/files/?q=sing icmp Es gibt fertige Binärpakete: http://rpmfind.net/linux/rpm2html/search.php?query=sing 17
sing II Dokumentation http://www.cyberciti.biz/tips/test-network-with-unix-linux-icmpsing-tool.html http://www.youtube.com/watch?v=pm7s0hfmig4 http://www.codewalkers.com/c/a/server-administration/ip- Network-Scanning/1/ Links http://etutorials.org/networking/network+security+assessment/ch apter+4.+ip+network+scanning/4.1+icmp+probing/ 18
sing III Parameter Erläuterung -echo --echo_req Echo Request -reply Echo Reply -mask --mask_req Address Mask Request -tstamp --timestamp Timestamp -rts --router_solicit Router Solicitation -rta --router_advert Router Advertisement -du --dest_unreach Destination Unreachable -info --info_req Information Request -red --redirect Redirection -param --param_problem Parameter Problem -sq --src_quench Source Quench -tx --time_exc Time Exceeded 19
Nemesis 1.4 Nemesis ist ein Paketgenerator, siehe dazu: http://nemesis.sourceforge.net/ http://nemesis.sourceforge.net/docs.html https://code.google.com/p/ips-builder/downloads/detail?name=libnet- 1.0.2a.tar.gz&can=2 Installation: http://insecurety.net/?p=54 http://codeidol.com/community/security/nemesis-packet-weaving- 101/22532/ http://dependns-extensions.googlecode.com/svnhistory/r51/trunk/tools/hack/ http://nemesis.sourcearchive.com/ Windows-Port: http://www.engagesecurity.com/dev/#nemesiswin32 Beispiele http://www.packetlevel.ch/html/nemesis.html http://seclists.org/fulldisclosure/2005/dec/207 http://www.win.tue.nl/~aeb/linux/hh/hh-15.html 20
Probleme beim Testen Es ist eine eigene Testumgebung erforderlich (schlecht im "laufenden" Betrieb, sprich: innerhalb der Einsatzumgebung zu testen ist nicht immer möglich) Bei automatisierten Tests fehlt die Ausgabe, so dass im Vergleich mit dem Erwarteten alle Tests automatisiert ablaufen könnten. So eine Art JUnit-Tests für Firewalls fehlt. Eine Variante wäre noch: Start-Paket mit signifikanten Muster einschließlich Testnummer senden Testpakete senden und Sniffer-Output abspeichern End-Paket mit signifikanten Muster senden Sniffer-Output vergleichen 21
Nun wieder etwas entspannen... Mitternacht in den Sümpfen 22