Raw - Socket Programmierung
-
Servus,
Also ich hab erstmal eine Frage vorweg: Kann ich es irgentwie einstellen, dass ein bestimmter Nutzer (ich) immer raw sockets benutzen kann??
Ok jetzt zu meiner eigentlichen Frage:
Es gibt ja diverse Flooder, SYN-Flooder, die IP-Pakete mit dem Syn-Flag schicken und dabei die IP noch fälschen, damit der Empfänger im Endeffekt krepiert, weil er die Pakete nicht verarbeiten kann, da ja die IP gefälscht ist.So, jetzt könnte man das ganze ja noch von mehreren Rechnern aus machen und hätte dann einen DoS Angriff.
So jetzt aber die wirklich eigentliche Frage:
Der Empfänger will ja die Verbindung eingehen und versucht ein Paket mit ACK-Flag zu schicken, dass macht er ja wie oben an die gefälschte IP. Ich stell mit das grad nur so vor, also folgendes Szenario:Bösewicht A mit IP(A)
Opfer B mit IP(B)Jetzt sucht sich Bösewicht A, beliebig viele "lebende" Hosts aus, sagen wir mal mit einem IP Scan und Ping usw..., und sendet an diese alle ein Paket mit SYN-Flag und der Absenderadresse IP(B) von Opfer B.
Müsste es jetzt nicht so, sein, dass diese beliebigen Hosts jetzt ALLE ein Paket mit ACK an Opfer B schicken und dieser damit überlastet??
Also das war meine Frage, ist mir nur grad so in Sinn gekommen...
Vielleicht kann mir das ja einer beantworten....ciao
para
-
der Angriff ist theoretisch möglich, nur hast du folgende Probleme
-du brauchst unmengen an Hosts
-du muss es schaffen an jeden Host Packete zu senden, in der Geschwindigkeit, dass der andere Host zusammen bricht
-ist es schneller falsche ACKs zu verwerfen, als falsche SYNs zu prüfen
-
was schätzt du denn, wieviele Hosts nötig sind?
und wie wäre es wenn man beides kombiniert?Dann noch ne Frage:
Normal sieht es ja so aus: (vereinfacht)A -------- SYN ------> B A <------- ACK ------- B A < -- Verbindung ---> B
Kann ich jetzt nicht als Ausenstehender einfach eine Verbindung zwischen zwei PC's aufbauen, ohne dass die beteiligt sind, also das ich SYN und ACK mit gespoofter IP sende.
Ne, quark kann eigentlich nicht gehen oder was macht ein PC, der einfach so ein ACK bekommt ohne vorher das passende SYN gesendet zu haben?
Ach egal...
cu para
-
Original erstellt von paranoiac.org:
**Servus,Ok jetzt zu meiner eigentlichen Frage:
Es gibt ja diverse Flooder, SYN-Flooder, die IP-Pakete mit dem Syn-Flag schicken und dabei die IP noch fälschen, damit der Empfänger im Endeffekt krepiert, weil er die Pakete nicht verarbeiten kann, da ja die IP gefälscht ist.
**Er kann sie schon verarbeiten, schickt ein SYN/ACK ja auch noch an die gefälschte Adresse zurück. Der Trick dabei ist, dass er, wenn die Adresse nicht erreichbar ist, ziemlich lange wartet, bis er merkt dass er keine Antwort kriegt und die Verbiundung dicht macht. Sendet man jetzt in diesem Fenster genug andere Pakete mit gesetztem SYN, so ist er irgendwann überlastet.
Original erstellt von paranoiac.org:
**
So, jetzt könnte man das ganze ja noch von mehreren Rechnern aus machen und hätte dann einen DoS Angriff.
**Nope. Wenn dann einen DDoS-Angriff...
Vorausgesetzt der andere hat keinen Flooding-Schutz...Original erstellt von paranoiac.org:
**
Müsste es jetzt nicht so, sein, dass diese beliebigen Hosts jetzt ALLE ein Paket mit ACK an Opfer B schicken und dieser damit überlastet??
**Ein Paket mit SYN/ACK bitte schön. Ja so müsste es sein, aber ich glaube nicht, dass "das Opfer" dadurch überlastet wird, da die SYN/ACK-Pakete ja von ihm alle storniert werden und er nicht wie beim SYN-Flooding auf Verbindungsantworten zu warten hat...
Ich denke es mal so, genau sagen kann ich es aber auch nicht
-
Kann ich jetzt nicht als Ausenstehender einfach eine Verbindung zwischen zwei PC's aufbauen, ohne dass die beteiligt sind, also das ich SYN und ACK mit gespoofter IP sende.
Ne, quark kann eigentlich nicht gehen oder was macht ein PC, der einfach so ein ACK bekommt ohne vorher das passende SYN gesendet zu haben?
Nein, kannst du nicht, da A das ACK einfach verwerfen sollte
(zu deinem Angriff, ich glaube, dass du selber so viele Packete los schicken müsstest, dass du eine riesen Datenleitung brauchst, so dass der Angriff unrealistisch wird)
[ Dieser Beitrag wurde am 22.04.2003 um 18:16 Uhr von kingruedi editiert. ]
-
Original erstellt von paranoiac.org:
**
Dann noch ne Frage:
Normal sieht es ja so aus: (vereinfacht)A -------- SYN ------> B A <------- ACK ------- B A < -- Verbindung ---> B
Kann ich jetzt nicht als Ausenstehender einfach eine Verbindung zwischen zwei PC's aufbauen, ohne dass die beteiligt sind, also das ich SYN und ACK mit gespoofter IP sende.
**Falsch, normal sieht es so aus:
A -------- SYN ------> B A <------ SYN+1/ACK ---- B A -------- ACK+1 ------> B A < -- Verbindung ---> B
Dabei wird das SYN und ACK vom System eher zufällig bzw. nach einem schwer zu erratenden Algorithmus ermittelt. Da du ja das SYN/ACK nicht erhältst, wenn du eine gespoofte IP nimmst, so kannst du auch nicht mit ACK antworten. Zudem könnte eine Verbindung zwischen 2 Rechnern von einem anderen Rechner aus auf die Art nicht zustande kommen, da Rechner A in dem Fall quittieren würde, da er keinen Verbindgunsaufbau gewünscht hat...
-
OK, kleiner Denkfehler....
danke!
ciao para
-
Also, ich hätt da noch n paar Fragen bzgl. SYN-Flooding:
1. Ist SYN-Flooding irgentwie nachweisbar?
2. Ist der Server nur solang überlastet wie man ihn zufloodet oder hängt er sich komplett auf
3. Wie kann ich SYN-Flooding an mir selbst testen?
4. Wie kann man einen Server gegen diese Atacken schützen?Das wärst erstmal...
danke!
cu para
[edit]Punk 4 hinzugefügt[/edit]
[ Dieser Beitrag wurde am 22.04.2003 um 20:02 Uhr von paranoiac.org editiert. ]
-
hab ich irgentwas falsch gemacht?
-
naja, du fragst quasi, wie man eine straftat begeht...
zu 1) ja ist nachweisbar
zu 2) das kommt auf den server drauf an, wenn du glück hast, hängt er sich auf
zu 3) geh online und sag nem kumpel er soll dcich mit deinem tool flooden, oder einfacher wenn du n netzwerk daheim hast
zu 4) ich hab mal was von hardwarefirewalls gehört, die können sowas abfangen, sonst fällt mir grad nix ein. ja doch: große firmen haben so komische aufteiler. also wenn du z.b. www.pentagon.gov machst, bekommst du bei jedem ping ne andere adresse, heist, die leiten dich je nach anfrage auf nen anderen server um. ob das aber waw hilft?
-
Original erstellt von Korbinian:
zu 4) ich hab mal was von hardwarefirewalls gehört, die können sowas abfangen, sonst fällt mir grad nix ein.Ich hatte bei meinem SuSE 7.1 ein Programm dabei, welches eine SYN-Flood-Protection aufgesetzt hat, frage mich jetzt aber nicht mehr, wie das hieß, ist schon etwas her...
Ansonsten kannst du dir einen einfachen Schutz auch mit iptables aufsetzen:
iptables -N syn-flood iptables -A INPUT -i $IFACE -p tcp --syn -j syn-flood iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN iptables -A syn-flood -j DROP
-
Ja ich weiss ich drücke mich so aus als wollte ich eine Straftat begehen, aber das will ich eigentlich nicht. Ich hab hier daheim ein Netz mit 4 PCs, da wollte ich mal n bissl rumprobieren.
Ansonsten denk ich ist soetwas auf einer kleineren LAN ganz witzig. Nur mal so neben bei: Ich kann mir kaum vorstellen, dass ich mit meinem PC es schaffen könnte einen größeren Rechner der ja wahnsinnige Bandbreiten, CPU, RAM, etc hat, lahmzulegen.
Dann das mit dem Nachweiss noch nicht verständlich. Man benutzt doch eigentlich eine gefälschte IP und ist somit nahezu annonym. Die einzige Möglichkeit wäre doch mit traceroute das ganze zurückzuverfolgen. Aber ich hab mal wo gelesen, dass es nahezu unmöglich sei, Traceroute erflogreich auszuführen bei solechen Atacken, keine Ahnung ob das stimmt, sagt es mir!
Dann nochwas, ein Server merkt ja irgentwann, dass das Packet fehlerhaft oder unvollständig ist, diese IP könnte er sich doch merken und kommt von dieser IP 2 weitere fehlerhafte Packete an so kann er diese bei neuem Auftreten einfach sofort löschen. Das geht natürlich nicht wenn der Angreifer seine gefakte IP ständig wechselt, oder?
Das gleiche könnte doch der Server auch machen, dass er jedes fehlerhafte Packet traceroutet (:D) und somit auch die Quelle des Angreifers annalysieren.
Das geht zwar sehr lange, also wäre es bei einem Webserver zum Beispiel unbrauchbar, aber bei irgenteinem Login oder so...Wahrscheinlich laber ich wieder viel zu viel Stuss, aber das Thema interessiert mich einfach
ciao und danke!
para
-
Original erstellt von <Mellon>:
**Ich hatte bei meinem SuSE 7.1 ein Programm dabei, welches eine SYN-Flood-Protection aufgesetzt hat, frage mich jetzt aber nicht mehr, wie das hieß, ist schon etwas her...
**die dinger heißen tcp-syncookies.
kannste mit
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
aktivieren.die funktionieren ungefähr folgendermaßen:
wenn der client ein SYN paket schickt, dann werden normalerweise auf dem server die ganzen daten wie port und ip vom client im speicher gelassen. bei den syncookies wird stattdessen alles in die sequenznummer codiert, diese wird nicht im speicher gelassen. diese verschickt der server dann beim hand-shake als SYN+ACK paket zum client. wenn der mit einem ACK antwortet, dann kann der server aus der sequenznummer wieder alle wichtigen daten rekonstruieren und die verbindung aufbauen.Gruß mathik
[ Dieser Beitrag wurde am 23.04.2003 um 13:16 Uhr von mathik editiert. ]
-
schick doch gleich nen ping / echo an den ziel-pc...nur das das ganze mit ner irren geschwindigkeit gehen muss und alle pings die absender ip des ziel-pc's haben....
<-OPFER<---
| ^
--------->|
|
TÄTER-->|wobei dagegen glaub ich mittlerweile sogar schon windows-rechner geschützt sind *g*
-
hmpf..hier werden die leerzeichen weggeschnitten?
mist
-
jo wär vielleicht auch ne idee
-
@<Desire>
wenn du ASCII Grafiken machen willst, mach die in Code Tags