Die einzelnen Angriffsmethoden lassen sich wiederum weiter aufgliedern und nach den Ursachen, die den Angriffsmöglichkeiten zugrundeliegen, klassifizieren:
Die vorher bereits beschriebene Angriffsmethode der Nutzung von server-Privilegien zur Umgehung des Authentifikationssystems läßt sich auf verschiedene Ursachen zurückführen:
Ein server kann eventuell bei bestimmten Anfragen bzw. Eingaben Funktionen ausführen, die vom Betreiber nicht beabsichtigt sind. Kennt ein Angreifer diese Fehler, so kann er versuchen, sie zu seinen Zwecken zu mißbrauchen. Handelt es sich um einen echten Fehler im Programmcode, also einen Fehler der bei der Erstellung des Programms unbeabsichtigt entstand, so spricht man von einem sogenannten bug. Ist die Fehlfunktion vom Entwickler des servers gewollt, um später Zugang zum System erlangen zu können, so spricht man von einem trapdoor.
Da die Anforderungen an einen server in jeder Umgebung unterschiedlich ausfallen können, muß beim Start des servers eine Konfiguration vorgenommen werden. Hier wird beispielsweise festgelegt, welche Benutzer die Möglichkeit haben sollen, die Dienste dieses servers in Anspruch zu nehmen. Werden bei der Konfiguration Fehler gemacht, so kann es sein, daß ein Angreifer Zugang zum System erlangt, ohne über die entsprechende Autorisation zu verfügen.
Die Fehlkonfigurationen können einerseits durch den Systemadministrator verschuldet sein, der beim Start des servers eine falsche Konfiguration eingibt, können andererseits aber auch durch unbedarfte Benutzer entstehen. Manche server erlauben den Benutzern eine eigenmächtige Erweiterung der Konfiguration, wobei den im Umgang mit sicherheitskritischen Problemen nicht vertrauten Benutzern teilweise beträchtliche Fehler unterlaufen. Der dritte Punkt, wie eine Fehlkonfiguration zustande kommen kann, ist eine Umkonfiguration durch einen Angreifer. Da der Angreifer hierzu aber bereits Zugang zum System haben muß, ist es vorrangig, diesen ersten Angriff zu unterbinden, anstatt zu versuchen, die Konfiguration des servers zu schützen.
Manche Protokolle sind zu einem Zeitpunkt definiert worden, als das Sicherheitsproblem noch nicht seine heutige Bedeutung genoß. Deswegen können diese Protokolle Möglichkeiten bereitstellen, die es einem Angreifer erlauben, Zugang zum System zu erlangen. Insbesondere die Authentifikationsmechanismen vieler Dienste sind viel zu schwach, um einen ausreichenden Schutz vor Angreifern zu bieten.
Einen Benutzer kann man auf vielerlei Arten dazu bringen, Kommandos auszuführen, die dem Angreifer Möglichkeiten bereitstellen, einen Angriff auszuführen. Zwei typische Beipiele sind im folgenden erwähnt:
Unter trojan horses verteht man Programme, die den Anschein erwecken, eine bestimmte Funktion zu erfüllen, gleichzeitig aber irgendwelche anderen Funktionen ausführen [Garf92].
Führt nun ein Benutzer ein derartiges Programm aus, so kann das Programm gleichzeitig beliebige Aktionen durchführen, wobei ihm die Privilegien dieses Benutzers zur Verfügung stehen. Ein beliebtes Beispiel hierfür ist die Ersetzung des ls-Kommandos durch ein Programm, das zwar ebenfalls das gewünschte Verzeichnis anzeigt, zusätzlich aber noch beliebige andere Funktionen erfüllen kann. Die Verteidigung gehen einen derartigen Angriff muß es wiederum sein, die Installation des trojan horse zu verhindern, da zu einem späteren Zeitpunkt kaum mehr eine Verteidigung möglich ist.
Eine andere Methode, Kommandos unter dem Namen eines rechtmäßigen Benutzers auszuführen ist es, dem Benutzer mail unter falschem Namen zu senden, die ihn auffordert, bestimmte Tätigkeiten auszuführen. Beispielsweise ist es denkbar, einem Benutzer unter dem Namen des Systemadministrators eine Nachricht zu schicken, die ihn auffordert, ein bestimmtes vorgegebenes Paßwort statt seinem alten zu verwenden. Ein unbedarfter Benutzer wird einer solchen Nachricht vielleicht Glauben schenken und die gewünschte Aktion ausführen.
Beim source routing [Ches94] bestimmt der Absender den genauen Weg, den das Paket auf dem Weg zum Ziel zurückzulegen hat. Der Empfänger muß seine Antworten auf genau dem umgekehrten Weg versenden. Somit kann man den Empfänger dazu bringen, die Antwortpakete auf einem Umweg über den Rechner des Angreifers zu senden, wo sie vom Netz genommen werden. Auf diese Weise kann ein Angreifer die Identität eines anderen Rechners übernehmen, ohne das der angegriffene Rechner dies bemerkt (siehe auch Kap. ).
Manche Angriffe erfordern es nicht, daß der Angreifer eine Rückantwort erhält. Hierbei ist es wieder von großer Bedeutung, ob als Transportprotokoll TCP oder UDP verwendert wird.
Bei UDP-basierenden Diensten ist es egal, wenn der Angreifer keine Antworten empfängt, da der angegriffene Rechner keine Informationen darüber erhält, ob die Pakete angekommen sind oder nicht.
Da TCP einen three-way handshake beim Verbindungsaufbau durchführt (siehe Kap. ), ist es normalerweise erforderlich, daß die Antwortpakete beim richtigen Absender eintreffen. Dieser muß nämlich die vom seinem Kommunikationspartner übermittelte sequence number bestätigen. Gelingt es nun aber, diese Nummer vorauszusagen, so kann eine Verbindung aufgebaut werden, ohne daß der Angreifer je ein Antwortpaket erhalten muß [Bello89].
Die dritte Möglichkeit ist nun mit Hilfe der Routing-Protokolle [Bello89]. Verbreitet ein Rechner die Nachricht, daß er eine besonders günstige Route zu einem bestimmten Rechner anbieten kann, so werden die anderen Router und Gateways Pakete für diesen Rechner auf diesem Weg versenden. Somit kann, ähnlich wie beim source routing, die Identität eines anderen Rechners angenommen werden.