Was läuft bei Serverangriffen ab ?

  • Internetserver werden immer wieder angegriffen.
    Über die Gründe kann man sich wohl tagelang auslassen. Sie reichen von Konkurrenzangst oder -Neid bis hin zum bloßen Schabernack oder Zerstörungswut. Manchmal soll es aber auch nur der "Beweis der eigenen Geialität" sein á la "Ich bin ja so gut. Ich kann einen Server angreifen und down bringen"


    Hihi, wer meint, einen Server massiv zu stören hätte mit Schläue zu tun, der wird es garantiert auch als "Schlauigkeit" bezeichnen. :loool:


    Einen Server down zu bringen , hat nichts mit Genie oder besonderen eigenen Fähigkeiten zu tun. Ein Server funktioniert auf einer ganz gewissen Basis. Die muss man nur kennen, um einen Angriff zu starten. Ob er dann von Erfolg gekrönt ist, liegt nur an den aufgewendeten Ressourcen.
    Gewinner wird nicht "der Genialere" werden, sondern der mit der leistungsfähigeren Hardware. Oft reicht schon einfach die reine Quantität. Da die Abläufe relativ einfach sind, muss die Angreiferhardware auch keine besondere Anforderungen erfüllen. Jeder einfache Computer erfüllt die technischen Voraussetzungen dafür. Hat man also genügend davon (und eine entsprechende Bandbreite) kann man faktisch jeden Server lahm legen.


    Die Basis fast aller Angriffe ist, dass man ein typisches Verhalten ausnutzt: Ein Server antwortet immer auf Anfragen.


    Wenn du einen Mensch etwas fragst, wird er dir die gewünschte Antwort geben oder eben sagen "weiß ich nicht".
    Spätestens nachdem du mehrmals die gleiche Frage gestellt hast, wird er dich einfach ignorieren oder sagen: "Du kennst die Antwort. Lass mich in Ruhe"


    Der Server kennt so etwas aber nicht. Er wird dir auch 1 Million Mal stoisch immer wieder die gleiche Antwort geben.
    Der Server ist jedoch dazu noch so dumm, dass er wirklich jedes mal neu überlegt, ob er eine Antwort kennt und dazu in seinem System nachschaut.
    Eine einzelne Anfrage kostet kaum Zeit oder Rechenleistung. Sie macht sich nicht bemerkbar.
    Kommen aber "Milliarden" gleichzeitig rein, so macht sich der Server "Milliardenmal Gedanken darüber" , auch wenn es Milliardenmal die gleiche Frage hintereinander vom gleichen Fragesteller ist.



    Neben dem "Frage-Antwort-Spiel", gibt es noch weitere Möglichkeiten , wie man einen Server überlasten kann.


    1) Er reagiert auf jedes "Pingen", das ihn erreicht.
    So ein Ping ist mit einem Anklopfen an einer Tür zu vergleichen. Du pingst (klopfst an) und der Server reagiert ( "ja, bitte ?")


    2) Er stellt sich immer wieder auf dich ein
    Mit dem ersten Kontakt, tauschen Rechner Daten aus . "Sie schütteln sich die Hände" (handshake) und vereinbaren, diverse Übertragungsarten und Geschwindigkeiten.
    Das ist vergleichbar, als wenn dich ein Mensch ganz schnell oder langsam in einer bestimmten Sprache anspricht: Du stellst dich auf seine Sprechgeschwindigkeit und Sprache ein (falls du sie kennst). Wenn das passiert ist, könnt ihr miteinander kommunizieren.


    Diese 3 Basisfunktionen eine jeden Servers, werden einzeln oder kombiniert für Angriffe ausgenutzt.
    Da sie zur normalen Funktion jeden Servers gehören, kann man sie auf der Serverseite "nicht einfach abschalten". Er muss die Funktionen abarbeiten, damit er überhaupt erreichbar ist und seine Inhalte liefern kann.



    ---------------------------


    Jeder Server hat Hunderte von "Türen" ( = Ports) auf denen er Anfragen entgegen nimmt. Jede "Tür" ist eigentlich für eine bestimmte Art von Anfragen gedacht. Kommt man mit seiner Anfrage nun zur falschen Tür, erhält man trotzdem eine Antwort.
    Selbst die Antwort "kein Zutritt" kostet in der Masse Rechenleistung.
    Aber: Auch wenn der Server nicht reagiert, muss er erst einmal rechnen, ob die Anfrage an dieser Tür auch "der Norm" entspricht = während du selbst keine Reaktion siehst, laufen im Server Rechenprozesse ab.


    All diese Angriffe werden unter dem Begriff "DoS" zusammen gefasst: DoS = denial of Service = Dienstverweigerung.
    Eine Besonderheit sind die DDoS. Hiervon spricht man, wenn der Angriff durch mehrere Computer geführt wird (z.B. ein Botnet)



    Eine Vervollkommnung dieser Angriffsarten ist, dass man zusätzlich noch Sicherheitslücken oder Programmierfehler ausnutzt.
    Eine schlecht gecodete Seite kann sehr schnell zum Absturz gebracht werden.
    Dabei muss der Code eigentlich nicht "wirklich schlecht" sein. Es genügt schon, wenn er so komplex ist, dass das "Ergebnis" erst erfolgt, wenn alle Teilberechnungen vorliegen.


    Beispiel:
    (((1+2) x (2x2)) / 4) x 500 / 5 = ???
    Na bitte, rechne doch einmal nach. Du wirst ein Gesamtergebnis bekommen. Weil diese kleine Formel aber zusammen hängend ist, musst du sie als Gesamtes betrachten.


    Würdest du sie aber in Teilstücken bekommen, würde es einfacher werden und durchaus schneller gehen.
    1+2 = 3
    2x2 = 4
    3x4 = 12
    12 / 4 = 3
    3x 500 = 1.500
    1.500 / 5 = 3


    Bei Computerprogrammen gibt es auch einzelne Berechnungen. Das sind in der Regel jedoch Abfragen aus Datenbanken usw.


    Wenn eine Seite so aufgebaut ist, dass sie erst komplett erscheint, wenn alles durchgerechnet wurde. Muss der Server darauf warten, dass er alle Daten zusammen hat. Vorher erscheint nichts.
    Ist sie aber so programmiert, dass immer das Teilstück erscheint, das gerade berechnet wurde, erscheinen die einzelne Inhalte nacheinander (was man durch die Rechengeschwindigkeit aber nicht mitbekommt). So lange eine Teilberechnung noch nicht vorliegt, erscheint der davon abhängige Inhalt eben noch nicht.


    Es sieht natürlich viel besser aus, wenn alles wirklich gleichzeitig erscheint. Die Seite bleibt aber so lange "unsichtbar", bis wirklich alles an Daten vorliegt. (So etwas sieht man sehr oft in der Browseranzeige)


    Jetzt kommt das "Gefährliche" an so einem verschachtelten Code:
    Sobald du die Seite neu aufrufen willst, fangen die Berechnungen ganz von vorne an = auch wenn nur eine Abfrage noch ausstand, wird doch alles wieder neu berechnet und abgefragt. Mit einer Aktualisierung setzt du den Rechenprozess erneut in Gang.
    Faktisch kann man so eine Internetseite relativ schnell down bringen, wenn nur genügend Rechner gleichzeitig die Seite immer und immer wieder aktualisieren lassen wollen.


    Natürlich kann man gegen so eine Art von Angriffen etwas tun:
    a) "besseren" Code schreiben
    b) Sicherheitssperren einbauen


    Hat die Software aber eine Sicherheitslücke, kann man die eben ganz gezielt ausnutzen, um einen Angriff "durchzubringen".


    Gegen DoS und DDoS gibt es keine wirkliche Abwehr.
    Man kann nur dafür sorgen, dass der eigene Server auf genügend zusätzliche Ressourcen zurückgreifen kann, wenn es zu so einem Angriff kommt.
    Moderne Server sind deshalb schon länger in Clouds eingebunden. Wird ein Server überlastet, könne die anderen Rechner des gleichen Rechenzentrums mitbenutzt werden um die nötige Rechenleistung zu erhalten.


    Die Grenze liegt jedoch in der freien Rechenkapzität des Rechenzentrums (RZ). Ist der Angriff nur groß genug, hat das Rechenzentrum nur noch die Wahl zwischen "Abschalten des angegriffenen Servers" und dem Risiko, dass am Ende die Angreiferressourcen höher sind als die des kompletten Rechenzentrums = in dem Fall würden alle Server unter der Überlast zusammen brechen.
    Ein "normales Rechenzentrum" wird sich in der Regel eher dazu entscheiden, den angegriffenen einzelnen Server vom Netz zu nehmen, als den Totalausfall zu riskieren.


    Bei der Abwehr von DoS/DDoS-Angriffen kommt es also faktisch vorrangig auf "RZ-Power" an und welche (finanziellen) Ressourcen man hat. Der eigene Server sollte schon von Haus aus relativ leistungsfähig sein. Zusätzlich sollte er in einer Server-Cloud eingebunden sein und/oder es sollten freie Zusatzserver und Mirrors bereitstehen.
    Dann sollte das RZ selbst auch noch relativ leistungsfähig sein. Wer häufig unter Angriffen leidet, muss dann eben zu einem RZ wechseln, das höhere Kapazitäten bereitstellen kann.
    Die Inanspruchnahme von Rechenkapazität kostet aber Geld, das man erst einmal haben muss.


    Nicht umsonst können Internetserver von großen, und finanziell starken, Anbietern nur selten down gebracht werden.
    Sie haben eben das nötige Geld, um die benötigten Rechenressourcen zu aktivieren, damit ein "einfacher Angriff" wirkungslos bleibt.
    Betroffen (und angegriffen) werden deshalb eher Anbieterserver, die relativ finanzschwach sind und sich deshalb eher in "kleineren" Rechenzentren hosten lassen.


    Je (finanziell) kleiner ein Anbieter ist, desto höher also ist die Gefahr, dass er unter DDoS leiden muss .. und zum "Verlierer" wird.

    Aktuell läuft eine Angriffswelle so langsam quer über alle Freehoster.
    Freehoster sind zwar in Clouds eingebunden, verfügen jedoch in der Regel nicht über hohe finanzielle Ressourcen, die sie bei einem Angriff einsetzen könnten um weitere Rechenpower zu aquirieren und aktivieren. Ihnen hilft dann stattdessen nur "Handarbeit" mit der sie die Angriffe auf die Server parieren müssen. Erst jetzt kommt es "auf den Genius" an.


    "Wie kann man sich der übermächtigen Rechenpower eines Angreifers erwehren und wie lange ist es erfolgreich ?"
    Der "Faktor Zeit" spielt bei der Beantwortung eine herausragende Rolle.


    Will der Angreifer den Server auf jeden Fall lahmlegen, hat der Angegriffene keine Chance: Die Verteidigung wird irgendwann zusammen brechen. Der Angriff muss nur lange genug geführt werden (Voraussetzung, die Ressourcen lassen sich auf keiner Seite mehr erweitern)


    Hat der Angreifer aber nur ein zeitlich begrenztes Ziel (nachdem er sich dem nächsten Server zuwendet), wird der Angegriffene schnell wieder erreichbar sein.


    Wie und was die Ziele des Angreifers sind, ist natürlich immer noch unklar.
    1) Das RZ soll in Misskredit gebracht werden
    2) Der Hoster soll geschädigt werden
    3) Der Internetauftritt soll gestört werden

  • Ein Mensch schaut übrigens auch bei jeder Anfrage "in seinem System" nach - was aber so rasend schnell geht, dass du es selbst nicht merkst.


    Wenn ich dich heute frage, wie du heisst, und du mir antwortest "Michael", weiss ich aha - er heisst also Michael - du hast aber trotzdem in einer Milliardsten Sekunde oder noch kürzer selber überlegt wie du heisst.


    Morgen frage ich dich wieder, wie du heissts - du antwortest, etwas genervter: "Genauso wie gestern auch - Michael". Jetzt hast du 2 Dinge überlegt, erstens ob du mir das gestern schonmal gesagt hast, und zweitens, ob du mir das nochmal sagen willst.


    Übermorgen frage ich dich nochmals nach deinem Namen, deine Antwort wird lauten: "Jetz lack mich doch anne Futt, ich habs dir 2x gesagt". 4 Überlegungen: a) Wie du heisst, b) ob du mir das schonmal gesagt hast, c) wie oft und d) ob du es mir ein weiteres Mal sagen möchtest.


    Dies geht aber immer noch so dermassen schnell, dass man es selber so nicht realisiert.


    Zur DDoS - auch die mal aufs Menschliche abstrahiert:


    Stell dir vor, tausend Leute klopfen an eurer Tür und jeder brabbelt einfach drauf los. Ob davon manche das Gleiche wollen oder jeder was Anderes, sei erstmal dahin gestellt, Hauptsache erstmal, alle reden durcheinander. Du wirst kein Wort verstehen, sondern "deiner Bandbreite entsprechend" erstmal sagen jetzt mal jeder erstmal schön der Reihe nach, oder du hast vllt wenn du Glück hast 2 oder 3 der "Anfragen" verstanden - was aber dennoch dazu führt, dass es zu einer längeren Warteschlange kommt. Dauert halt alles ein bisschen. Irgendwann sagste aber selber auch "Leckt mich sonstwo, ich hab Feierabend und will schlafen".

    "Ich weiß nicht, wer mich in die Welt gesetzt hat, und auch nicht, was mein Körper, meine Seele, meine Sinne und jener Teil meines Ichs sind, der denkt. Ich sehe überall nur Unendlichkeiten, die mich wie ein Atom und wie einen Schatten einschließen." (Blaise Pascal)