Frage Sind IP-Adressen "trivial" zu schmieden?


Ich habe einige Notizen gelesen Der neue öffentliche DNS-Dienst von Google:

Ich habe unter dem Sicherheitsabschnitt diesen Absatz bemerkt:

Bis eine standardmäßige systemweite Lösung für DNS-Schwachstellen wie das DNSSEC2-Protokoll allgemein implementiert ist, müssen Open-DNS-Resolver unabhängig voneinander Maßnahmen ergreifen, um bekannte Bedrohungen zu mindern. Viele Techniken wurden vorgeschlagen; sehen IETF RFC 4542: Maßnahmen, um DNS widerstandsfähiger gegen gefälschte Antworten zu machen für einen Überblick über die meisten von ihnen. In Google Public DNS haben wir die folgenden Ansätze implementiert und empfehlen sie:

  • Übermäßige Bereitstellung von Maschinenressourcen zum Schutz vor direkten DoS-Attacken auf die Resolver selbst. Da es für Angreifer einfach ist, IP-Adressen zu fälschen, ist es unmöglich, Abfragen basierend auf der IP-Adresse oder dem Subnetz zu blockieren. Der einzige effektive Weg, solche Angriffe zu handhaben, ist einfach die Last zu absorbieren.

Das ist eine bedrückende Erkenntnis; Selbst auf Stack Overflow / Server Fault / Super User verwenden wir häufig IP-Adressen als Basis für Bans und Blöcke aller Art.

Zu glauben, dass ein "talentierter" Angreifer trivial die gewünschte IP-Adresse verwenden und so viele einzigartige gefälschte IP-Adressen synthetisieren kann, wie er möchte, ist wirklich gruselig!

Also meine Frage (n):

  • Ist das wirklich Das Einfach für einen Angreifer, eine IP-Adresse in der Wildnis zu fälschen?
  • Wenn ja, welche Maßnahmen sind möglich?

64
2017-12-03 17:53


Ursprung


Gefälschte IPs sollten kein Problem für IP-basierte Verbote sein, da das ultimative Ziel der Zugang ist, der legitime Antworten benötigt. Aber einige der größeren Risiken sind: IPs, die von vielen Leuten geteilt werden (Schulen, Arbeitsplätze, Internetcafés, ...) und IPs, die sich nach einem Modem-Reset auf nicht-statischen DSLs ändern können. - Halil Özgür
Zugang zu gewinnen ist nicht das primäre Ziel für viele Angriffe mit gefälschten Adressen. Ich vermute, dass die verschiedenen Verstärkungsangriffe mit DNS häufiger sind. DNS ist schön (mit DNSSEC schlechter) - Sie können ein kleines <100 Byte Paket mit einer gefälschten Quelladresse senden, damit die gefälschte Adresse eine 7x bis 40x Verstärkung als Antwort erhält. - Michael Graff


Antworten:


Wie von vielen anderen angegeben, sind IP-Header trivial, solange man sich nicht darum kümmert, eine Antwort zu erhalten. Deshalb wird es meistens mit UDP gesehen, da TCP einen 3-Wege-Handshake benötigt. Eine bemerkenswerte Ausnahme ist die SYN-Flut, die TCP verwendet und versucht, Ressourcen auf einem empfangenden Host zu binden; Da die Antworten verworfen werden, spielt die Quelladresse keine Rolle.

Ein besonders hässlicher Nebeneffekt der Fähigkeit von Angreifern, Quelladressen zu fälschen, ist a Rückstreuung Attacke. Es gibt eine ausgezeichnete Beschreibung Hier, aber kurz, es ist das Gegenteil eines traditionellen DDoS-Angriffs:

  1. Übernehmen Sie die Kontrolle über ein Botnet.
  2. Konfigurieren Sie alle Ihre Knoten für die Verwendung der gleiche Quell-IP-Adresse für bösartige Pakete. Diese IP-Adresse wird Ihr eventuelles Opfer sein.
  3. Senden Sie Pakete von allen von Ihnen kontrollierten Knoten an verschiedene Adressen im Internet, wobei Sie auf Ports abzielen, die normalerweise nicht geöffnet sind, oder Verbindungen zu gültigen Ports (TCP / 80) herstellen, die sich als Teil einer bereits bestehenden Transaktion ausgeben.

In jedem der in (3) erwähnten Fälle antworten viele Hosts mit einem nicht erreichbaren ICMP oder einem TCP - Reset, der auf das Ziel gerichtet ist Quelladresse des schädlichen Pakets. Der Angreifer hat nun potenziell Tausende von kompromisslosen Rechnern im Netzwerk, die DDoS-Angriffe auf sein Opfer durchführen, und zwar durch die Verwendung einer gefälschten Quell-IP-Adresse.

Was die Risikominderung anbelangt, so ist dieses Risiko wirklich ein Risiko, das nur ISPs (und insbesondere ISPs, die den Kunden Zugang und nicht den Transit bieten) angehen können. Dazu gibt es zwei Methoden:

  1. Ingress-Filterung - Sicherstellen, dass Pakete, die in Ihr Netzwerk gelangen, aus Adressbereichen stammen, die sich auf der anderen Seite der eingehenden Schnittstelle befinden. Viele Router-Anbieter implementieren Funktionen wie Unicast-Reverse-Pfad-Weiterleitung, die die Router- und Weiterleitungstabellen des Routers verwenden, um zu überprüfen, ob der nächste Sprung der Quelladresse eines eingehenden Pakets die eingehende Schnittstelle ist. Dies wird am besten im ersten Hop der Schicht 3 im Netzwerk durchgeführt (d. H. In Ihrem Standard-Gateway).

  2. Egress-Filterung - Stellen Sie sicher, dass Pakete, die Ihr Netzwerk verlassen, nur aus Adressbereichen stammen, die Sie besitzen. Dies ist die natürliche Ergänzung zur Ingress-Filterung und gehört im Wesentlichen dazu, ein "guter Nachbar" zu sein; Stellen Sie sicher, dass dieser Datenverkehr nicht an Netzwerke weitergeleitet wird, mit denen Sie interagieren, selbst wenn Ihr Netzwerk durch bösartigen Datenverkehr beeinträchtigt wird.

Beide dieser Techniken sind am effektivsten und leicht zu implementieren, wenn sie dies in "Edge" - oder "Access" -Netzwerken tun, wo Clients mit dem Provider kommunizieren. Die Implementierung der Ingress / Egress-Filterung über der Zugriffsschicht wird aufgrund der Komplexität von mehreren Pfaden und asymmetrischem Routing schwieriger.

Ich habe gesehen, dass diese Techniken (insbesondere die Ingress-Filterung) in einem Unternehmensnetzwerk eine große Wirkung erzielen. Vielleicht kann jemand mit mehr Erfahrung mit Service Providern einen besseren Einblick in die Herausforderungen beim Einsatz von Ingress / Egress-Filterung im Internet geben. Ich kann mir vorstellen, dass Hardware- / Firmware-Support eine große Herausforderung darstellt, und ich bin nicht in der Lage, Upstream-Anbieter in anderen Ländern zu zwingen, ähnliche Richtlinien zu implementieren ...


51
2017-12-04 01:57



Klingt fies. Gibt es also etwas, was ein Administrator tun könnte, wenn er seinen Server so zielgerichtet finden würde? Könnte es möglich sein, die ICMP-Pakete und die TCP-Reset-Nachrichten von allen IPs vorübergehend zu blockieren? Würdest du überhaupt so halbnormal operieren können? - UpTheCreek


Ist das wirklich so einfach für einen Angreifer?   um eine IP-Adresse in der Wildnis zu fälschen?

Sicher, wenn es mir egal ist, tatsächlich Antworten zu erhalten, kann ich sehr einfach Pakete mit jeder Quelladresse senden, die ich mag. Da viele ISPs keine guten Egress-Regeln haben, wird alles, was ich fälsche, geliefert.

Wenn der Angreifer tatsächlich eine Zweiwegkommunikation benötigt, wird es sehr schwierig. Wenn sie Zweiwegkommunikation benötigen, ist es einfacher, einfach einen Proxy zu verwenden. Das ist sehr einfach einzurichten, wenn Sie wissen, was Sie tun.

Das Sperren von Personen anhand der IP-Adresse ist für SF / SO / SU mäßig effektiv, da die Website http / https verwendet, was eine bidirektionale Kommunikation erfordert.


46
2017-12-03 17:59



http (s) ist hier der Schlüssel. DNS verwendet UDP, daher erfolgt die gesamte Kommunikation über einzelne Pakete ohne Bestätigungen im Protokoll. - noah
Guess ist wie E-Mail. Sie können mit der gewünschten Adresse senden, sofern Sie keine Antworten erhalten möchten - Jorge Bernal
@Jorge: Definitiv. Die E-Mail / Post-Analogie eignet sich hervorragend, um Endnutzern das zu erklären. - Evan Anderson
In DNS kann TCP auch verwendet werden, aber das erschreckt derzeit Leute. Es ist jedoch kein ACK eingebaut, da die Antwort der ACK ist. - Michael Graff
@noah - eigentlich TCP ist der Schlüssel, nicht HTTP. TCP ist nicht unmöglich zu fälschen, aber es ist 100 mal schwerer als UDP. - Alnitak


Kleiner Beweis des Konzeptes für Zordeches Antwort (mit ubuntu):

$ sudo apt-get install hping3
$ sudo hping3 -1 --spoof 11.10.10.20 www.google.com
HPING www.google.com (eth0 64.233.169.105): icmp mode set, 28 headers + 0 data bytes

Dann in einer anderen Konsole:

$ sudo tcpdump -i eth0 'icmp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:19.439737 IP 11.10.10.20 > yo-in-f105.1e100.net: ICMP echo request, id 31297, seq 0, length 8

Also ja, trivial, aber dann bekommst du die Antworten nicht wie zuvor erwähnt, es sei denn du hast Zugriff auf 11.10.10.20 oder hast irgendwo zwischen www.google.com und 11.10.10.20 einen Sniffer (und es müsste gleich vorne sein von beiden Enden, da Sie die Route der Pakete nicht vorhersagen können). Auch das Gateway des Spähers (ISP) könnte dieses Paket nicht aus der Tür lassen, wenn sie eine Art IP-Inspektion durchführen und feststellen, dass die Quelle schlecht riecht.


22
2017-12-03 18:28



Aber ISPs stören sich normalerweise nicht mit der Paket-Inspektion? - Pacerier


IP-Adressen lassen sich leicht für eine Richtung fälschen UDP der Verkehr. Bei TCP-Paketen können Sie nur eine halboffene TCP-Verbindung mit SYN-Paketen herstellen. Dies ist auch die Grundlage für eine Art DOS-Angriff. Sie können jedoch keine HTTP-Verbindung mit einer gefälschten Adresse herstellen (z. B. wenn Sie Sitzungen filtern, um dieselbe IP-Adresse zu verwenden). Während ja, können Sie eine IP-Adresse in den Paketen spoofen, es ist nur für bestimmte Arten von Denial-of-Service-Angriffen nützlich.


13
2017-12-03 18:24



Meinst du es ist schwer um eine HTTP-Verbindung mit einer gefälschten Adresse zu schmieden, oder das ist nicht gerade möglich zu tun? - Pacerier
Im offenen Internet ist es unmöglich. Es gibt einige Tricks, wenn Sie sich im selben LAN befinden, das den anderen Computer dazu bringen kann, Daten an Sie zu senden (web.eecs.umich.edu/~zhiyunq/pub/...). Du kannst es dir so vorstellen. UDP ist wie das Senden einer Postkarte. Sie können einen beliebigen Namen auf die gewünschte Rücksendeadresse schreiben. TCP ist wie eine Konversation, bei der Sie die Konversation nicht fortsetzen können, wenn Sie nicht die richtige Absenderadresse angeben. Einige der anderen Antworten hier erklären es viel besser. - FryGuy


Der GOOG-Artikel besprach explizit DNS. DNS verwendet sowohl UDP- als auch TCP-Pakete. Die UDP-Einsen können gefälscht sein, aber nicht der TCP. TCP erfordert a 3-Wege-Handshake. Wenn die IP-Adresse für ein TCP-Paket gefälscht ist, empfängt der Schmiedecomputer die Antwort nicht und die Verbindung schlägt fehl. UDP ist, wie in anderen Antworten erwähnt, "Feuer und Vergessen" und erfordert keine Antwortkommunikation. DoS-Attacken kommen aus diesem Grund fast ausschließlich in Form von UDP-Paketen.

Im Zusammenhang mit Stack Overflow und Familienseiten ist das von Takaun Daikon aufgeworfene Problem sehr gültig. Es gibt viele Möglichkeiten, eine neue IP-Adresse von einem ISP zu erhalten. Die Änderung einer MAC-Adresse ist eindeutig die einfachste und funktioniert für viele ISPs. Darüber hinaus können viele Leute, die Albernheit sind, einen öffentlichen Proxy oder TOR verwenden. Ein klares Blockieren der Ursprungs-IP für diese Pakete würde nur den Proxy- oder TOR-Beendigungsknoten blockieren.

Blockieren Sie also die IP-Adressen? Hölle ja ist es. Aber Sie werden mit Fehlern enden. Sie werden einige IPs blockieren, die wirklich nicht die Quelle des Problems sind (d. H. Proxies) und Sie werden auch Leute haben, die Ihre Blöcke durch Ändern von IPs vermeiden. Die Person, die Pech hat, die gesperrte IP später zu bekommen, wird nicht in der Lage sein, auf die SO-Familie von Websites zuzugreifen. Aber der Fehler Bewertung sollte klein sein. Es sei denn, Sie blockieren große Gruppen von IPs. Aber wenn Sie ein oder zwei pro Tag blockieren, sollten Sie in Ordnung sein.

Vielleicht möchten Sie ein etwas ausgeklügelteres Schema einführen, wo Sie blocken, aber nur für einen Zeitraum, wie ein Jahr. Wenn Ihr Netzwerk in der Lage ist, Bandbreite zu drosseln oder die Verbindung zu beschränken, sollten Sie auch ein Schema in Betracht ziehen, bei dem Sprüche, die Apache-Benchmarks auf Ihrer Website ausführen, in einen Käfig mit sehr begrenzter Bandbreite gesetzt werden.


11
2017-12-03 18:20



Du kannst geschmiedet werden. Sehen Sie sich nur die Hijacking-TCP-Sitzungen an. google.com/search?q=hijack+tcp+session - Dan
Wenn der Angreifer nicht Zugriff auf den Verkehrsstrom hat, sind TCP-Sequenzierungsangriffe mit modernen Betriebssystemen ziemlich unpraktisch. Wenn sie sowieso ein Mann in der Mitte sind, dann müssen sie wahrscheinlich sowieso nicht TCP-Verbindungsentführungen durchführen. - Evan Anderson


Das IP-Spoofing wird fortgesetzt, da ISPs faul sind.

Mein ISP verdammt gut weiß, dass ich an einer bestimmten Adresse, oder zumindest das Subnetz bin ich bin. Trotzdem kann ich jede Quelladresse verwenden. Warum das? Einfach, Kosten.

Wenn ich hier und da ein paar Adressen vortäusche, kostet das meinem ISP nichts. Wenn jeder Benutzer meines ISP ein Paket zwischen 1:00 und 2:00 vortäuscht, wäre es immer noch kaum ein Blip auf dem Radar. Wenn jedoch ein Botnetz viele gefälschte Pakete von vielen Hosts auf vielen ISPs sendet, fällt die Zielmaschine oder das Netzwerk um.

Die finanzielle Realität ist, dass Spoofing nichts kostet, es sei denn, Sie sind derjenige, der angegriffen wird. Es kostet Geld, Filter in der Nähe des Kunden zu implementieren, und derjenige, der das Geld ausgibt, realisiert sehr wenig Rendite, außer zu wissen, dass sie gute Netzwerkbürger sind.

UDP und ICMP sind am einfachsten zu fälschen, aber TCP ist auch möglich. Es erfordert ein unsiches Remote-Betriebssystem, das vorhersagbare Sequenznummern zur Auswertung nutzt. Manchmal sind es die Lastenausgleichsmaschinen, die Sequenznummern verändern und vorhersagbar machen. Also, TCP ist möglich - aber schwieriger.

Das Anti-Spoofing von DNS konzentriert sich hauptsächlich auf die Sicherheitsseite, die verhindert, dass jemand eine falsche Antwort an einen rekursiven Resolver sendet. Die Überflutungsaspekte von UDP sind nicht DNS-spezifisch, außer einer einzelnen kleinen Abfrage (z. B. für '.') Wird eine ziemlich große Antwort verursacht. So macht es einen schönen Verstärkungsvektor. Es gibt viele andere UDP-Protokolle, die funktionieren, aber DNS wird überall verwendet, und es ist einfach, Maschinen zu finden, die zur Verstärkung von Angriffen verwendet werden können.

DNSSEC macht das sogar noch schlimmer, mit UDP-Paketen, die 4k groß werden können.


9
2017-12-03 20:00





IP-Adressen sind bei DNS-basierten (D) DOS-Attacken trivial, da es sich in der Regel um UDP-Pakete handelt, bei denen es sich um Fire-and-Forget-Pakete handelt. Bei HTTP-Datenverkehr ist dies nicht der Fall. Sie müssen sich also entweder im selben lokalen Netzwerk wie der Webserver befinden (natürlich je nachdem, wo Ihre Website gehostet wird) oder die Zwischenrouter steuern.


6
2017-12-03 18:02





Sie können einen Brief an irgendjemanden senden, und wenn Sie keine Rücksendeadresse auf den Umschlag legen (oder den falschen setzen), können sie alle Junk-Mail-Filterer in der Welt einstellen und Ihre Nachricht nicht ausfiltern, ohne sie zu öffnen (Verarbeitung ) es.

Wenn der Absender jedoch eine Antwort wünscht, ist die Rücksendeadresse besser korrekt, oder es muss ein Mechanismus auf der Anwendungsebene vorhanden sein, um die richtige Adresse zu erhalten. Also kann ich dich glauben machen, dass du einen Brief von Nana öffnest, aber selbst wenn ich dich mit dem Inhalt des Briefes täusche, wirst du Nana keinen Scheck an CASH an eine Adresse in Nigeria schicken (es sei denn, Nana ist Nigerianerin) ). Herausforderung / Antwort ist also eine wirksame Verteidigung, solange Sie nicht auch ein Mensch im Middle sind.


6
2017-12-03 18:05





Ich kann die gewünschte Quell-IP-Adresse in einem Datagramm setzen.
Ob mein ISP solch ein Paket in die Wildnis lassen würde, ist eine andere Frage.


5
2017-12-03 17:58



Gibt es trotzdem den ISP-Filter zu umgehen? - Pacerier


Während dies sicherlich eine Realität ist, mit der umgegangen werden muss, ist das zugrunde liegende Problem wirklich nichttechnisch: Menschen mit böswilliger Absicht, die versuchen, bösartige Dinge zu tun. Die wirkliche Lösung muss daher auch nichttechnisch sein.

Ich denke, was Stackoverflow getan hat, ist GENAU die richtige Lösung für den Umgang mit der zweiten Verteidigungslinie: Die Techniken zur Beschränkung potenzieller Spam-Nutzer durch die verschiedenen Möglichkeiten, ihre Fähigkeiten zur Interaktion mit der Plattform einzuschränken, bevor sie ein gewisses Maß an Glaubwürdigkeit erreichen.

Diese Techniken tragen nicht nur dazu bei, die Gesamtqualität der Website zu verbessern, sie bieten auch Anreize für Nutzer, sich stärker einzubringen und glaubwürdigere / zuverlässigere Antworten zu liefern.

Vom technischen Standpunkt aus wäre das Beste, was Google tun würde: einfach effizient die zusätzliche Last aufzunehmen.

Gute Arbeit und weiter verbessern!


5
2017-12-03 18:00





UDP ist der Hauptgrund warum das so einfach ist - Skype und Slingbox nutzen die Fähigkeit, IP-Adressen einfach in UDP zu "schlagen'durch NAT und ermöglichen Sie einfach Peer-to-Peer.

TCP ist schwieriger, da es einen vollständigen SYN / ACK-Zyklus erfordert, aber Sie könnten den Server immer noch mit hängenden SYN-Paketen überfluten, die viele Meilen entfernt zu IP-Adressen gehen und im Wesentlichen eine große Anzahl von Routern binden.


3
2017-12-03 18:22



Die Router leiten nur Pakete weiter. Sie behalten den TCP-Status nicht bei, so dass ein Paket ein Paket für sie ist. - Michael Graff
guter Punkt. So werden Server (oder jedes Frontend-Gerät, das SYN / ACK-Verhandlungen durchführt) auf ihren ACK warten :-) Wir haben unsere Load-Balancer so konfiguriert, dass sie SYN / ACK vollständig aushandeln, bevor sie sie an die Server weiterreichen eine bereits geöffnete Verbindung, so dass es in diesem Fall sehr hilfreich ist. - Justin