Blog

Das böse ICMP

“ICMP ist Böse.” Warum eigentlich?

Frühertm, als das Internet noch aus wenigen (einigen Tausenden) Nodes bestand gab es ein großes Problem, das Ping of Death. Packete, die eine bestimmte größe hatten brachten den IP-Stack mancher Betriebssysteme zum Absturz. Dies wurde auch ausgenutzt.

Heute verrichtet ICMP verschiedene nutzliche Sachen. Es unterrichtet die beiden Seiten einer TCP-Übertragung darüber, dass eine Leitung voll ist oder eine Anwendung nicht schnell genug die Daten verarbeitet, ein Router schickt eine Nachricht, dass ein Host nicht erreichbar ist usw… also im Prinzip nichts böses.

Im Prinzip, also in der Theorie. In der Praxis kann man schon böses damit anstellen. Wenn man nur bischen kriminelle Energie hat ;)

ICMP lebt auf Layer 4 im OSI-Schichtmodell, neben UDP, TCP usw. Es hat die Protokollnummer 1. Nebenbei: TCP hat 6 und UDP 17.

Wie wir bei IANA (http://www.iana.org/assignments/icmp-parameters) nachlesen können gibt es einige Nachrichten, die versandt oder empfangen werden können:

Type Name Reference


0 Echo Reply [RFC792]
1 Unassigned [JBP]
2 Unassigned [JBP]
3 Destination Unreachable [RFC792]
4 Source Quench [RFC792]
5 Redirect [RFC792]
6 Alternate Host Address [JBP]
7 Unassigned [JBP]
8 Echo [RFC792]
9 Router Advertisement [RFC1256]
10 Router Solicitation [RFC1256]
11 Time Exceeded [RFC792]
12 Parameter Problem [RFC792]
13 Timestamp [RFC792]
14 Timestamp Reply [RFC792]
15 Information Request [RFC792]
16 Information Reply [RFC792]
17 Address Mask Request [RFC950]
18 Address Mask Reply [RFC950]
19 Reserved (for Security) [Solo]
20-29 Reserved (for Robustness Experiment) [ZSu]
30 Traceroute [RFC1393]
31 Datagram Conversion Error [RFC1475]
32 Mobile Host Redirect [David Johnson]
33 IPv6 Where-Are-You [Bill Simpson]
34 IPv6 I-Am-Here [Bill Simpson]
35 Mobile Registration Request [Bill Simpson]
36 Mobile Registration Reply [Bill Simpson]
37 Domain Name Request [RFC1788]
38 Domain Name Reply [RFC1788]
39 SKIP [Markson]
40 Photuris [RFC2521]
41 ICMP messages utilized by experimental [RFC4065]
   mobility protocols such as Seamoby
42-255 Reserved [JBP]

Sollte man also ICMP auf der Firewall komplett blocken?

Meine Antwort lautet NEIN. Auf keinen Fall. Eine gut eingerichtete Firewall antwortet wohl auf z.B. ICMP Echo. Nur weil eine, beispielweise, IPSEC Firewall nicht auf “ping” antwortet heisst nicht, dass man nicht rausfinden kann ob sie da ist.

ICMP-Typen die auf jeden fall durchgelassen werden sollten sind:

0,3,4,5,6,8,11,12,30

Dann funktioniert die Firewall richtig und es gibt keine merkwürdigen Probleme. Man kann aber durchaus komplett ICMP erlauben. Es ist nicht Böse! ;)

Viel wichtiger ist es z.B. FTP abzusichern, da es “Löcher” bohren kann oder aufzupassen, dass die Hosts nicht von Innen nach Aussen Verbindungen aufbauen, was z.B. bei geknackten Rechnern der Fall sein kann, der Tunneling über DNS.

Also, lass uns pingen…

MySQL: DB und Benutzer anlegen

Script für MySQL: Datenbank und Benutzer mit Passwort anlegen

Mehrfach braucht man für verschiedene Sachen eine getrennte MySQL-Datenbank mit eigenem Benutzer und mit Passwort. Dieses Script erleichtert das ganze.

#!/bin/sh

if [ "$1" != "" -a "$2" != "" -a "$3" != "" ]; then

mysql << __EOF__
create database $1 CHARACTER SET utf8;
quit
__EOF__

mysql << __EOF__
use mysql;
insert into user (User, Host, Password) values ('$2', 'localhost', PASSWORD('$3'));
flush privileges;
__EOF__

mysql << __EOF__
grant all on $1.* to $2@localhost;
flush privileges;
quit
__EOF__

else

echo "No parameters given, exiting..."
echo ""
echo "Usage: $0 <database> <username> <pass>"
exit 1

fi

Voraussetzung dazu ist, dass man es vom Benutzer ‘root’ aufruft und in roots Home folgende Datei existiert

.my.cnf

sowie deren Inhalt:

[mysql]
host = localhost
user = root
pass = geheimespasswort

Dann ruft man es einfach folgendermassen auf:

./mysql-add-user-with-db dbtest1 usertest1 blahblahgeheim

und schon kann man es verwenden.

Google hacks, oder Quirks

Bei Google kann man viele Begriffe suchen (und finden!). Dass Google aber auch zu ganz anderen Zwecken genutzt werden kann, werde ich hier einmal demonstrieren.

Network Cams
Im Web gibt es viele Sicherheitskameras, die fernsteuerbar sind – zum Beispiel wissen viele nicht, dass sie live zu sehen sind, sei es in Hotels, am Strand, auf dem Firmenparkplatz etc. Um solche Sicherheitskameras aufzuspüren, gibt man zum Beispiel folgende Begriffe in das Suchfeld ein:

inurl:”ViewerFrame?mode=Motion”

Da die meisten Firmen diese Netzwerk-Kameras nicht richtig konfigurieren, kann man diese auch hin- und herbewegen und den Wachmann in Schacht halten, wenn er den Parkplatz beobachten will.

MP3-Suche
Viele Nutzer benutzen ihr eigenes Webspace (=Speicherplatz im Internet) auch für ihre MP3s, um sie vielleicht mit Freunden auszutauschen, online zu hören oder auch zu streamen. Wieviele das sind, weiss man nicht. So findet man z.B. den Song “Word Up” der Band namens “Korn”:

inurl:”index” +intitle:”index of” +mp3 +Korn +”Word Up”

Passwörter
Tja, fangen wir mal an Richtung Thema Sicherheit. Viele Nutzer haben wenig Ahnung vom “Website”-Design und nutzen das allseits beliebte Klick-dich-durch Programm namens “Frontpage” von der Firma Microsoft. Da dieses Tool ein MS-Derivat ist, legt es natürlich keinen Wert auf Geheimhaltung der Daten und Passwörter. Warum das so ist, weiss man nicht. Was man damit machen kann, ist schon eher wichtig. Je nachdem, ob der Betreiber der Seite einen FTP-Account nutzt, um seine Daten hochzuladen, kann man das Passwort vielleicht “nützlich” verwenden, wenn man es herausbekommt. Hierzu tippen wir im Suchfeld folgendes ein:

inurl:_vti_pvt “service.pwd”

Wir bekommen einige Dateien mit gehashten Passwörtern. Der Hashwert kann an sich mit den meisten Verfahren (MD5, SHA1 – siehe Wikipedia…) nicht entschlüsselt werden, die Hashwertmöglichkeiten aber eingegrenzt werden. Dadurch kann man z.B. via Zufall (in einer bestimmten Reihenfolge) Hashwerte generieren lassen und diese Hashwerte vergleichen, bis man den richtigen gefunden hat. Dieses Prinzip nennt man IRC-Botnet Cracking, da diese Zufallshashwerte auf verschiedenen Servern berechnet werden, um Ressourcen zu sparen. Diese Server “sitzen” dann in einem IRC-Channel und posten fleißig die Hashwerte. Die Clients können dann die Log auswerten und ihren gesuchten Hashwert darin suchen.

VNC-Desktop
Ihr habt gerade Lust, einmal ein anderes Betriebssystem oder einen anderen Rechner zu testen, aber nur einen PC zur Hand? Kein Problem, es gibt genügend VNC-Server im Netz, die solche Services (wohl eher ungewollt) bereitstellen. Der “Standardwert” für den VNC-Port ist 5800. Wir suchen ein Dokument mit dem Titel “vnc desktop”. Dieses “Dokument” beinhaltet ein Javaapplet, welches die Fernsteuerung realisiert (deswegen muss auf deinem Rechner das Java Runtime Environment installiert sein). Wir suchen also folgendes:

“vnc desktop” +inurl:5800

Druckersuche
Ihr habt gerade keinen Drucker, müsst aber dringen drucken (und wollt nicht wissen, wo es ausgedruckt wird?), dann könnt ihr via Google verschiedene Konfigurations-Interfaces von Druckern finden, die freigegeben sind. Durch das Webinterface kann man lokale Dateien via Button auf den Drucker laden und ausdrucken lassen. Wenn man dann noch etwas Glück hat, und der Besitzer deutsch kann, bekommt man vielleicht das Dokument via Brief zugesandt. Via google sucht man folgendes:

inurl:”port_255″ -htm

MySQL-Datenbanken
Ihr habt einen scheiss Hoster, der euch keine MySQL-Datenbank bereitstellt – ihr braucht aber eine für euer Forum? Dann seit ihr hier richtig, es gibt diese natürlich auch “gratis” im Netz. Wir suchen das Tool phpMyAdmin in der Standardkonfiguration (also ohne ein eingegebenes Passwort):

intitle:”phpMyAdmin” “Welcome to phpMyAdmin ***” “running on * as root@*”

Nun können wir mit einer Chance von ca. 50% unsere Datenbank erstellen, das Kennwort für den Systembesitzer root ändern und haben unseren eigenen MySQL-Server zur Verfügung bereit gestellt bekommen.