GNU/Linux >> LINUX-Kenntnisse >  >> Linux

TCP-Angriffe:TCP-Sequenznummernvorhersage und TCP-Reset-Angriffe

Obwohl das TCP-Protokoll ein verbindungsorientiertes und zuverlässiges Protokoll ist, gibt es dennoch verschiedene Schlupflöcher, die ausgenutzt werden können. Diese Schlupflöcher werden meist mit Angriffen erklärt.

Im vorherigen Artikel über die Serie TCP/IP-Angriffe haben wir ARP-Cache-Poisoning erklärt.

Dieser Artikel erklärt die folgenden zwei Angriffe:

  1.  TCP-Sequenzvorhersageangriff
  2.  TCP-Reset-Angriffe

Überblick über TCP

Bevor Sie mit Erklärungen zu Angriffen beginnen. Lassen Sie uns ein grundlegendes Verständnis dafür entwickeln, wie TCP funktioniert.

Ein TCP-Header sieht wie folgt aus:

Die folgende Erklärung erklärt, wie eine Verbindung zwischen zwei Hosts auf TCP-Ebene hergestellt wird. Dies wird als Drei-Wege-Handshake bezeichnet. Dieser Handshake ist erforderlich, bevor Daten in beide Richtungen gesendet werden können. Sobald die Verbindung hergestellt ist, können Daten bidirektional fließen, wobei jedes Paket die Sequenznummer des Anfangsbytes der darin enthaltenen Daten und die Bestätigung der empfangenen Daten enthält.

  • Angenommen, es gibt zwei Hosts (A und B), die miteinander kommunizieren möchten. Nehmen wir an, Host A startet die Kommunikation. Aus TCP-Sicht sendet nun Host A ein SYN-Paket an Host B.
  • Ein SYN-Paket ist ein TCP-Paket mit aktiviertem SYN-Flag.
  • In diesem Paket wird auch die anfängliche Sequenznummer (die ein vom TCP von Host A generierter Wert ist), der Quellport, der Zielport usw. erwähnt.
  • Wenn dieses Paket auf der TCP-Schicht von Host B empfangen wird, antwortet dieser Host mit einem TCP-Paket mit aktivierten SYN- und ACK-Flags, Anfangssequenznummer und anderen Informationen.
  • Wenn Host A dieses Paket empfängt, überprüft er einige Informationen wie das SYN-Flag, die Bestätigungsnummer (die die anfängliche Sequenznummer von Host A + 1 sein sollte) usw., um zu bestätigen, dass dies ein erwartetes Paket von Host B ist.
  • Als Antwort sendet Host A ein Paket mit aktiviertem ACK-Flag und einer Bestätigungsnummer, die auf die anfängliche Sequenznummer von Host B + 1 gesetzt ist.

Wir sehen also, dass Sequenznummern eine wichtige Rolle bei der TCP-Kommunikation spielen. Eine Sequenznummer ist eine Nummer, die TCP dem Anfangsbyte von Daten in einem bestimmten Paket zuordnet. Auf diese Weise verfolgt das empfangende TCP die empfangenen Daten und bestätigt entsprechend. Die Bestätigungsnummer ist immer die nächste erwartete Sequenznummer.

TCP Sequence Prediction Attack

Angenommen, Host A und Host B kommunizieren miteinander. Nehmen wir an, ein dazwischen sitzender Angreifer ist irgendwie in der Lage, die Pakete zwischen A und B zu überwachen.

Mal sehen, was der Angreifer tut:

  • Der Angreifer möchte Host A angreifen.
  • Es überschwemmt Host B mit neuen Anfragen, was zu einem Denial-of-Service-Angriff führt, der Host B daran hindert, mit A zu kommunizieren.
  • Jetzt kann der Angreifer die Sequenznummer des Pakets vorhersagen, das A von B erwartet.
  • Der Angreifer bereitet ein solches Paket vor und sendet es an Host A.
  • Da es sich um eine gefälschte Verpackung handelt, denkt Host A, dass es von B stammt.
  • Nun, dieses Paket kann ein Paket sein, das die Verbindung beendet oder Host A auffordert, einige bösartige Befehle/Skripte usw. auszuführen.

So kann eine Verbindung von einem Angreifer gekapert werden.

Ein anderer Weg könnte die Vorhersage der ISN(initial sequence number) sein.

Sehen wir uns einen Auszug aus RFC-793 an:

Wenn neue Verbindungen erstellt werden, wird ein Generator für eine Anfangssequenznummer (ISN) verwendet, der eine neue 32-Bit-ISN auswählt. Der Generator ist an einen (möglicherweise fiktiven) 32-Bit-Takt gebunden, dessen niederwertiges Bit ungefähr alle 4 Mikrosekunden inkrementiert wird. Somit wechselt die ISN ungefähr alle 4,55 Stunden. Da wir davon ausgehen, dass Segmente nicht länger als die maximale Segmentlebensdauer (MSL) im Netzwerk verbleiben und dass die MSL weniger als 4,55 Stunden beträgt, können wir vernünftigerweise davon ausgehen, dass ISNs eindeutig sind.

BSD-TCP/IP-Stacks weichen vom obigen Mechanismus ab. BSD-TCP/IP-Stacks erhöhen die Sequenznummer jede Sekunde um 128.000 und für jede neue TCP-Verbindung um 64.000. Dies ist, wie Sie sich vorstellen können, vorhersehbarer und kann daher leicht ausgenutzt werden.

TCP-Reset-Angriffe

Dieser Angriff ist ziemlich einfach zu verstehen, sobald Ihnen der obige Angriff klar ist. Bei diesem Angriff :

  • Sobald der Angreifer in der Lage ist, eine TCP-Sitzung zu kapern (wie oben beschrieben), kann dieser Angriff gestartet werden.
  • Der Angreifer sendet Pakete mit aktiviertem RST-Flag an A und B oder einen der Hosts.
  • Da sowohl A als auch B nicht wissen, dass ein Angreifer diese Pakete gesendet hat, behandeln sie diese Pakete ganz normal.
  • Da es sich um zurückgesetzte Pakete handelt, wird die Verbindung zwischen A und B beendet.

Wir können also sehen, dass TCP-Reset-Angriffe darauf abzielen, eine gültige TCP-Verbindung zwischen zwei Hosts zu beenden.


Linux
  1. So finden Sie die Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen

  2. Wie beendet man eine einzelne TCP-Verbindung in Linux?

  3. Rufen Sie die Anzahl der hergestellten TCP-Verbindungen ab

  4. Kopieren und Einfügen zwischen Hyper-V-Gast und -Host

  5. Wann sollte TCP SACK deaktiviert werden?

Bash-Sequenzausdruck (Bereich)

Linux-Hostdatei:Wie wird sie bearbeitet und verwendet?

Richten Sie einen freigegebenen Ordner zwischen KVM-Host und Gast ein

Linux:Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen finden

So setzen Sie ein vergessenes Windows-Host-Administratorkennwort zurück

So fügen Sie dem VS-Code einen SSH-Schlüssel hinzu und stellen eine Verbindung zu einem Host her