Wo kann ich Ostereier für Schüler „verstecken“, die etwas über Linux-Sicherheit lernen? [geschlossen]

7

Ich denke, dies ist nicht der beste Ort, um dies zu fragen (da es keine richtige Antwort gibt), aber ich kann mir keinen besseren Ort vorstellen. Wenn Sie eine bessere Empfehlung haben, können Sie sie bitte weiterempfehlen, und ich kann die Frage verschieben, anstatt sie einfach vollständig schließen zu lassen?

Ich unterrichte eine Klasse von Schülern über allgemeine Linux-Sicherheit. Auf hoher Ebene möchte ich, dass sie in der Lage sind, einen bestimmten Linux-Server zu verwenden und zu wissen, wie man ihn gegen häufig auftretende Sicherheitsprobleme absichert - z. B. das Schließen alter Konten mithilfe eines starken pw-Hashing-Algorithmus, um sicherzustellen, dass beim Booten keine seltsamen Prozesse ausgeführt oder ausgeführt werden . Ihr Kenntnisstand ist breit gefächert, und ich suche nach Möglichkeiten, sie zu motivieren, das zu verwenden, was wir besprochen haben (z. B. Crontab, Benutzer und Gruppenkonfigurationen, offene Ports).

Ich habe 200 US-Dollar erhalten, um einen Wettbewerb abzuhalten, um sie zu ermutigen, und ich dachte, ich könnte vielleicht ein paar Amazon-Geschenkkarten in Schritten von 10 US-Dollar kaufen. Die Idee wäre, die Einlösungscodes an verschiedenen Stellen auf unserem Sandbox-Server zu "verstecken", damit die Kinder sie finden können. Zum Beispiel könnte ich die Passwörter im Klartext speichern und einem der Beispielbenutzerkonten ein Passwort für einen der Codes zuweisen lassen. Oder vielleicht könnte ich einen Cron-Job einrichten, um alle 30 Sekunden einen der Codes in einem Systemprotokoll zu protokollieren.

Was ich suche, sind Orte / Methoden, um diese Codes so zu verbergen, dass jemand, der den Server sichern möchte, über sie stolpert.

Vielen Dank!

einsames Boot
quelle
Möglicherweise möchten Sie höherwertige Eier an Orten platzieren, die schwieriger zu finden sind. Beispielsweise haben Sie möglicherweise ein Ei, das nur mit mehreren Schritten kryptischer Hinweise gefunden werden kann. Führen Sie beispielsweise einen Webserver aus, der auf Port 80 ausgeführt wird, und geben Sie Hinweise in den HTTP-Headern an, um eine Verbindung zu einem anderen Server herzustellen, der auf einem nicht standardmäßigen Port ausgeführt wird. Die Website gibt dann Hinweise darauf, dass sie für SQL-Injection anfällig ist. Die Datenbank enthält möglicherweise Hinweise darauf, dass der endgültige Code gefunden werden kann, indem er stringauf der Binärdatei eines gefälschten Standardwerkzeugs (z. B. Zeichenfolge ls) ausgeführt wird.
Lie Ryan

Antworten:

6
  • Führen Sie einen ncListener aus, der einen der Gutscheincodes ausgibt, wenn Sie telnetoder nczu ihm. Wenn sie sich die Datei ansehen, bekommen sie sie auch.

    #!/bin/sh
    nc -i 2 -l -p 3128 -c "echo amazoncode"
    

    Nennen Sie es etwas Nützliches, wie squid

  • Erstellen Sie einige lokale Firewall-Regeln mit Namen oder Parametern von Amazon-Codes.

    iptables -N amazoncode -P ACCEPT
    iptables -I INPUT -j amazoncode
    
  • Einige sshAnmeldungen mit dem Code als Benutzername schlagen fehl.

  • Führen Sie eine ungesicherte oder schlecht gesicherte MySQL-Instanz mit einigen Datenbanken aus, die Codes enthalten.

Sie könnten einige weise Leute bekommen, die nur grep -r amazoncodeohne einige Verschleierungsmethoden. Das zeigt etwas Einfallsreichtum, wenn sie einen regulären Ausdruck herausfinden können, hilft aber nicht viel bei der Sicherheit.

Matt
quelle
Guter Anruf auf der Grep. Ich kann ihnen nichts vorwerfen, weil sie schlau sind, aber ich möchte nicht, dass sie den ganzen Wettbewerb stehlen. :-) Wir überlegen, nur unsere eigenen Hashes der Amazon-Codes zu veröffentlichen, die sie für die tatsächlichen Codes bei uns einlösen können. Auf diese Weise können wir auch überwachen, welche zu einem bestimmten Zeitpunkt abgegeben wurden. Vielen Dank!
einsames Boot
5

Ich weiß nicht, ob diese Methode die Schüler interessieren könnte.

  1. Ich erstelle eine Datei als Amazoncode mit dem Originalcode.

    cat amazoncode
    125622234
    
  2. Verschlüsseln Sie nun die Datei mit dem folgenden Befehl.

    openssl aes-128-cbc -salt -in amazoncode -out amazoncode.aes -k somepassword
    
    • somepassword ist das Kennwort, das Sie für die Datei festgelegt haben.
  3. Entfernen Sie nun die Originaldatei.

    rm amazoncode
    
  4. Weisen Sie die Schüler nun an, dass der Amazon-Geschenkcode verschlüsselt ist, und wenn sie den Code benötigen, müssen sie ihn entschlüsseln. Sie können den Schülern auch den ursprünglichen Befehl zur Verschlüsselung und zum Kennwort mitteilen.

  5. Die Schüler können anhand des ursprünglichen Befehls herausfinden, dass sie das Gegenteil tun sollten, um die folgende Datei zu entschlüsseln. Sie können ihnen auch mitteilen, dass die -dOption zur Entschlüsselung dient und die verschlüsselte Datei die Eingabe sein sollte, um den Code als Ausgabe zu erzeugen. Hier können Sie den Schülern auch sagen, dass sie die Entschlüsselungstechnik auf der manSeite von herausfinden sollen openssl.

     openssl aes-128-cbc -d -salt -in amazoncode.aes -out amazoncode
    
  6. Jetzt erhalte ich den Code, nachdem ich auch einige Verschlüsselungs- / Entschlüsselungstechniken gelernt habe.

    cat amazoncode
    125622234
    

Tatsächlich könnte das opensslPasswort als versteckte Datei im Home-Verzeichnis des Benutzers abgelegt werden. Dann lernen die Schüler auch, wie sie auf die versteckten Dateien zugreifen und das opensslPasswort von dort erhalten und dann die Entschlüsselung versuchen.

Ramesh
quelle
3

Einige Ideen:

  • Nur-Text-Datei im Home-Verzeichnis eines Benutzers (" Amazon Code.txt" oder etwas anderes Offensichtliches), weltweit lesbar
  • Nur-Text-Datei im Home-Verzeichnis eines Benutzers, nicht weltlesbar, aber der Benutzer hat ein leicht zu erratendes Passwort
  • Prozess mit dem im Quellcode verschleierten Schlüssel, aber es ruft etwas anderes (sagen wir system("sleep 864000 $key")) auf, das den Schlüssel in der psAusgabe verfügbar macht
  • Gleich, aber von Crontab laufen und sein Kind nur für ein paar Sekunden schlafen lassen
  • Prozess mit dem im Quellcode verschleierten Schlüssel, aber es öffnet einen TCP-Socket und druckt den Schlüssel an jeden, der eine Verbindung herstellt
David
quelle
3

Vielleicht ein 'lustiges' Skript in ~ / bin / oder / etc / bin /. Ersetzen Sie beispielsweise die Funktionalität von LS, Cat oder CD, um sich ein wenig anders zu verhalten, und geben Sie ihnen einen kleinen Hinweis darauf, dass etwas nicht stimmt (das erste, was Ihnen in den Sinn kommt, ist, dass sich ls / cd ändert den falschen Ordner auflisten / verschieben) und den Code in einem Kommentar der sh-Datei auflisten lassen.

Führen Sie möglicherweise einen Prozess aus, der übermäßig viel RAM verbraucht / seltsame Ports öffnet. Der Prozessname muss ein Amazon-Code sein.

Sidney
quelle