Dark ITSec
Attacks
(Distributed) Denial of Service
(Distributed) Denial of Service bedeutet soviel wie "etwas ausser
Betrieb setzen".
Eine Denial of Service Attacke, die auf das RL (Real Life) zurück greift wäre
wenn man z.B.
an einem intakten Automaten den Schlitz verstopft, in dem man das Geld hinein
steckt.
Eine Distributed Denial of Service Attacke wäre, die auf das RL zurück greift
wäre wenn man z.B.
mit mehreren Leuten zusammen an einem intakten Automaten den Schlitz verstopft,
in dem man das Geld hinein steckt.
Land
Durch Land wurde ein relativ komplexer Angriff gefahren,
indem ein SYN Paket mit identischem Absender und Empfängerport erzeugt wurde.
Anschließend wurde dieses Paket an einen offenen Port gesendet,
an dem das Paket durch die vielen IP Stacks eine Art Race Condition erzeugte und
dadurch das OS gecrashed hat.
Land wurde 1997 entdeckt oder zumindest bekannt.
Die Auswirkungen waren sehr begrenzt, denn viele Rechner waren schon durch die
Attacken vorhergehender Tools geschützt
und die Systemverwalter trafen schnell Sicherheitsvorkehrungen.
CISCO-Router waren jedoch oft von Land Attacken betroffen.
OOB
Der "Out of Band" Angriff bzw. die Möglichkeit das er entstehen konnte lag an
MicroSoft bzw.
dessen Implementierung des NETBIOS.
Wenn wirre Zeichen oder Daten über Port 139 eintrafen kam es zum Systemcrash.
Der erste OOB Nuker war "WinNuke" der - wie Land - 1997 bekannt wurde.
OOB Attacken verloren schnell ihren Reiz da es Plugins für Win95 gab und Win98
von vorne rein darauf vorbereitet war.
Dieser Fehler von MicroSoft war erschreckend primitiv und die Nuker wurden immer
besser.
Man konnte nach einiger Zeit sogar Nuker finden die "MassNuke"-Funktionen
hatten, dem Opfer Nachrichten zukommen ließen
oder gleich einen Ping ausführten um zu sehen ob das Opfer wirklich aus dem Netz
gefegt wurde.
Bufferoverflow
Eigentlich ist das
ganze leichter als man denkt, es geht hier einfach darum mehr in den Puffer zu
schreiben als dieser eigentlich aufnehmen kann. Allerdings ist das garnicht mal
so selten, oft passieren solche Programmierfehler unfreiwillig, indem z.B. ein
String länger ist als sein zugewiesener Bereich und somit die Bereiche dahinter
mit überschreibt. Hier ein Beispiel:
void main() {
char ZuGross[256]; /*
wir initialisieren die Variable ZuGross mit 256 Bytes */
int i;
/* Laufvariable */
for( i = 0; i < 255; i++)
ZuGross[i] = 'A'; /*
eine Schleife die den Speicherbreich mit A's füllt */
Overflow(ZuGross);
}
/*Hier ist die Function die
den Fehler verursachen wird */
void Overflow(char *string)
{
char PufferZuKlein[16];
/* Puffer ist kleiner als unsere ZuGross Variable die wir übergeben haben */
strcpy(PufferZuKlein,
string);
/* Wir versuchen
Puffer mit 256 Bytes vollzuschreiben obwohl
nur 16 Bytes möglich wären, dadurch wird der ganze Bereich
dahinter überschrieben */
}
Da die meisten die Größenüberprüfung nicht machen sondern immer die MAX_PATH
oder andere Definitionskonstanten dafür nehmen, kracht es wenn es mehr zu
kopieren gibt als dazu platz reserviert wurde.
Das was mit CodeRed der hat den IIS so als erstes gekrascht und dann müsste man
untersuchen wie man es am besten die Zugroße Eingabe macht um die
Rücksprungadresse zu überschreiben denn dann ist es möglich Code ausführen zu
lassen, der in dem überlauf string mit übergeben wird, das ist aber viel
Debugging und Assembler wissen was man vermitteln müsste und das wollte ich euch
nicht antun.
Ping of Death
Durch "übergrosse" Ping-Pakete wurde ein Buffer Overflow erzeugt.
"Ping of Death" funktionierte nicht nur über ICMP mit Ping, sondern auch über
UDP und TCP.
Diese DoS Attacke war auch Jahrgang 1997 und so ziemlich alles was einen IP
Stack hatte war betroffen.
Es war die einzige Attacke mit der man sein Opfer auf einen Schlag crashen
konnte und das sogarvon Windows aus!
Man bracuhte mit dem Standard Programm "Ping" von Windows nur eine ping mit
einem entsprechend grossem Wert angeben.
So erzeugt man einen Ping of Death unter Windows:
Start --> Ausführen --> Ping -l 65510 www.target.com --> Enter
Mitlerweile sind die meisten Hosts sicher vor Angriffen solcher Art.
Smurf
Bei "Smurf" schickt man mehrere Pings an mehrere Hosts und spooft(fälscht) den
Absender so,
das Absender mit dem eigentlichen Ziel gleich ist.
Senden wir nur 1000 Pakete pro Sekunde an 1000 Rechner, die alle antworten,
so erhält das eigentliche Opfer 1.000.000 Pakete/s, die es durch den
unglaublichen Traffic zum Crash bringen.
Wir sehen also das Smurf eine DDoS Attacke ist.
Sie war unter dem Namen "ICMP Storm" schon länger bekannt, aber das Tool "Smurf"
wurde erst 1997 programmiert.
Leider, oder auch nicht - je nachdem wie man es sehen mag - ist Smurf/ICMP Storm
heute eher selten noch wirksam.
SYN Flooding
Beim "SYN Flooding" werden TCP Connections zum Opfer mit dem "three-way-handshake"
aufgebaut.
Normalerweise wird ein SYN Paket gesendet, auf dem mit einem SYN/ACK Paket
geantwortet wird und darauf wiederum
wird mit ACK bestätigt.
Bei der "SYN Flooding" Attacke wird beim "three-way-handshake" die
Absenderadresse gespooft.
Dadurch wird das SYN/ACk Paket ins leere laufen.
Wenn nun nach einiger Zeit keine ernaute Antwort auf diese erfolgt wird der
Verbindungsversuch als erfolglos klassifiziert.
In der Zeit bis zum Abbruch wird das Opfer mit SYN Paketen geflutet bzw.
überflutet 8-)
Das SYN Flooding wurde 1996 sehr populär.
Teardrop
Der "teardrop" Angriff hat strake Ähnlichkeit mit dem "Ping of Death".
Während der Ping of Death eine übergroße Fragmentierung erzeugte,
überlappte Teardrop die Fragmente einfach und brachte damit Linux & Windows in
Probleme.
Diese Attacke führte in den meisten Fällen auch zum Systemcrash.
Wie könnte es auch anders sein? Auch eine 97er Attacke...
Teardrop wurde durch Patches schnell ein Ende gesetzt.