TU Wien:Introduction to Security VU (Maffei)
- Introduction to Security UE (Squarcina) (TU Wien, 0 Materialien)
- Introduction to Security VU (Maffei) (TU Wien, 13 Materialien)
- Introduction to Security VU (Schanes) (TU Wien, 0 Materialien)
- Introduction to Security VU (Tempesta) (TU Wien, 0 Materialien)
- Introduction to Security UE (Maffei) (TU Wien, veraltet, 0 Materialien)
- Introduction to Security VU (Brem) (TU Wien, veraltet, 14 Materialien)
- Introduction to Security VU (Mairhofer) (TU Wien, veraltet, 4 Materialien)
- Introduction to Security VU (Weippl) (TU Wien, veraltet, 14 Materialien)
Daten[Bearbeiten | Quelltext bearbeiten]
Vortragende | Jakob Bleier• Simon Jeanteur• Matteo Maffei• Marco Squarcina• Mauro Tempesta |
---|---|
ECTS | 3 |
Letzte Abhaltung | 2022S |
Sprache | English |
Mattermost | introduction-to-security • Register • Mattermost-Infos |
Links | tiss:184783 |
Inhalt[Bearbeiten | Quelltext bearbeiten]
System security: Bufferoverflows (auch ROP), Gegenmaßnahmen(Canary, DEP, ASLR,..)
Web Security: XSS, CSRF, SQL-Injection, Drive-by-Pharming
Cryptography: Symmetrische und Asymmetrische Verschlüsselung, DES, AES, ElGamal, ...
Cryptohgraphic Protocols: Mögliche Attacken (Replay,..), Kerberos, SSL/TLS
Ablauf[Bearbeiten | Quelltext bearbeiten]
WS 17: Bis Weihnachten jede Woche 2h Vorlesung. Außerdem sind drei Übungen zu lösen.
SS 19: Jede Woche 2h VO, 3/4 Übungen müssen gelöst werden.
Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]
- Betriebssysteme UE - hilfreich für die binary exploitation
Programmierkenntnisse für die Übungen, Algebra für den Kryptographieteil
Es wurde C, Python, JavaScript, SQL verwendet. Ein bisschen PHP Wissen schadet sicher auch nicht. Algebra für den Kryptographieteil nur erforderlich, wenn man die Materie verstehen will ;)
Vortrag[Bearbeiten | Quelltext bearbeiten]
Der Vortrag wird in Englisch gehalten, welches manchmal einen starken (Italienischen) Akzent hat. Jedoch kann man dem Vortrag trotzdem folgen. Die Folien sind jedoch meist auch recht detailliert was dazu führt, dass der Vorlesungsbesuch nicht zwingend erforderlich ist.
Übungen[Bearbeiten | Quelltext bearbeiten]
1. System Security: Zwei Bufferoverflow-Aufgaben, wobei beim ersten ein Canary "umgangen" werden muss und beim 2. eigentlich zum Großteil einer Anleitung gefolgt werden muss und damit verschafft man sich Zugang zur Root-Shell.
2. Web Security: Aufgaben zu XSS, SQL-Injection, CSRF
3. Kryptographie: Anhand eines bestimmten Verschlüsselungsverfahren soll eine Datei entschlüsselt werden. Dabei gibt es eine 2. Datei die mit dem gleichen Schlüssel verschlüsselt worden ist und es soll ein Programm implementiert werden, die anhand dieser Datei den wahrscheinlichsten Schlüssel liefert.
SS 2022:
1. System Security: Eine Bufferoverflow-Aufgabe - Exploitation von einem sehr einfachen Wett-Programm.
2. SQL Injection: Injection einer SQL (Postgres) Datenbank über ein Webinterface mit einer Eingabezeile.
3. Web Security: "Hacken" einer einfachen Website um an die Accountdaten eines Admins zu gelangen.
4. Information Flow System: Leaken von high Variablen in low Variablen auf sechs verschiedene Wege.
Für die Übungen ist ca. jeweils 1 Monat Zeit.
SS 2019: Erweiterte praktische Übungen finden im Rahmen der LVA Introduction to Security UE statt.
Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]
Die Prüfung war imo recht schwer, allerdings nicht unfair gestaltet. Gekommen sind (im S19) ausschließlich 16 multiple-choice Fragen, wovon einige code-snippets enthalten haben. Diese waren aber recht kurz und nichts, was man in der Übung nicht sehen würde. Die Fragen waren allerdings schon recht trickreich (z.B. konnte leich ein <= übersehen/falsch interpretiert werden, allerdings ist das in der Übung auch nicht anders gewesen). Wenn man den Stoff verstanden hat, sollten die meisten davon aber sicher kein Problem darstellen. Ein paar (4-5) haben allerdings schon recht genau Details abgefragt (z.B. wie genau eine Formel lautete, die in der VO präsentiert und bewiesen wurde).
Die praktischen Aufgaben wurden recht fair bewertet. Solange man sie selbst gemacht hat und bei der Abgabe alle geforderten Beschreibungen und den Code dazugegeben hat, sollten sich 100% auf alle Aufgaben ausgehen. Die Bewertung hat allerdings unheimlich lange gedauert (bis 1-2 Tage vor der Prüfung).
Benotung Prüfung:
SS19: Eigentlich waren min. 50% auf Übungsteil und Prüfungsteil gefordert, am Ende (nach/bei Veröffentlichung der Ergebnisse) wurde das Minimum der Prüfung auf 7/15 richtigen Fragen (all or nothing) heruntergesetzt.
Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]
SS19: Prüfung am 04.06.2019, Note am 01.07.2019, Zeugnis am 23.07.2019
SS20: Prüfung am 23.06.2020, Note am 23.06.2020, Zeugnis am 31.07.2020
SS20: Re-Take Prüfung am 24.09.2020, Note am 24.09.2020, Zeugnis am 30.09.2020
Zeitaufwand[Bearbeiten | Quelltext bearbeiten]
Für die Übungen werden laut TISS 24h Stunden eingeschätzt. Das kommt ca. hin.
Andere Meinung (S19): Die Übungen nehmen, wenn man noch nicht viel Ahnung mit den eingsetzten Technologien hat sehr viel Zeit in Anspruch. Die Übungen können schwer sein und sind nicht zu unterschätzen.
Unterlagen[Bearbeiten | Quelltext bearbeiten]
Zur VO werden Folien angeboten. Zur ersten Übung gabs ein GDB Tutorial. Wesentliche Materialien sind bei jeder Übung auf der Übungsplattform verlinkt.
Tipps[Bearbeiten | Quelltext bearbeiten]
- Meiner Meinung nach war das schwierigste an den Übungen draufzukommen, wie man einen Exploit ausnutzen oder generell das System hacken kann. Sobald man da mal eine Idee hatte dauerte die Aufgabe in der Regel nur noch ein paar Minuten. Daher gut überlegen, bevor man anfängt.
- Beim Code (in Übungen, in der Prüfung) ganz genau überlegen, wie groß z.B. ein Puffer ist, wie viele Durchläufe eine Schleife macht, etc. und bei C nicht auf das \0 vergessen.
- Während man die Übungsaufgaben löst, irgendwo Notizen machen (Notepad, Word, auf Papier, ...), damit man dann nachher leichter Schritt für Schritt erklären kann, was man gemacht hat.
- Manchmal kann man die zur Verfügung gestellten Programme verwenden, um die Aufgaben zu lösen. Dann muss kein komplett neues Programm geschrieben werden.
- Ein Englischwörterbuch darf bei der Prüfung verwendet werden
- Anm.: Wer einfach nur die 3 ECTS braucht, sollte unbedingt das deutsche Introduction to Security VU (Brem) machen. Lab0 ist da völlig geschenkt, womit man die ersten 20 Übungspunkte nach 1-2 Stunden sicher hat. Gerade die (seit SS19 optionalen) Übungen sind bei dieser LVA wirklich relativ zeitaufwändig, falls keine Vorerfahrung vorhanden ist.
- Tipps, um Lernaufwand zu minimieren (vom SS23)
- Sei der gesamte Stoff der LVA und der Stoff, der beim Test abgefragt wird. Trivialerweise gilt
- Es sind gefühlt 25% der Folien wichtig und der Rest wird nicht genau abgeprüft und muss daher nicht super genau gelernt werden.
- Alttests geben einen guten Überblick, was abgefragt wird und was die wichtigen Themen sind, es wiederholen sich oft Fragen, oder werden nur leicht abgeändert
- Test 2
- Information Flow Control: Die Channel Arten verstehen und was es heißt, wenn Low Variables in High Variables fließen; Typing Rules müssen nicht genau gelernt werden, es reicht ein grobes Verständnis; zum Test können kleine Programmstücke kommen, und man muss bestimmen, ob die Typing Rules eingehalten werden; Typing Rules werden beim Test sogar angegeben; Declassification sollte man in der Theorie verstehen
- Introduction to Cryptography: Substitution Cipher könnte als kleines Beispiel kommen; One-Time Pad soll gut Verstanden werden, am besten man versucht selbst zwei Nachrichten damit zu verschlüsseln und die Schwachstelle zu verstehen (c1 ⊕ c2 = m1 ⊕ m2!); Genaue Funktionsweise des Algorithmus von AES wurde nicht abgeprüft, aber Grundsätzliches Verständnis ist wichtig; ECB, CBC, CTR Unterschiede Kennen; Textbook RSA Schwachstellen kennen; The structure of ℤ*p; Grundsätzlich ist dieser Foliensatz sehr mathematisch, was aber nicht so genau abgeprüft wird; Digital Signatures vs MACs; Diffie-Hellman Protocol verstehen
- Public Key Infrastructure: Wird beim Test nicht so genau abgefragt wie in den Folien, Details sind also nicht wichtig für den Test; wie funktioniert Certificate Validation?; Root CA's verstehen; Cipher Suites und Forward Secrecy wurde bei TLS abgefragt
- Cryptografic Protocols: Hier ist wieder viel dabei, was nicht so genau angeschaut werden muss (Process Calculi Syntax und ProVerify wurde nicht abgeprüft); Basic security goals und zugehörige Folien danach sind wichtig, aber die formalen Definitionen muss man nicht können; Challenge-response handshakes ist wichtig
Links[Bearbeiten | Quelltext bearbeiten]
Highlights / Lob[Bearbeiten | Quelltext bearbeiten]
noch offen
Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]
Die Korrektur und Benotung war recht langsam, das könnte eindeutig noch verbessert werden.
Mehr Tutorenstunden, besonders bei den späteren (viel schwereren) Beispielen wären hilfreich. Leider gabs die Tutorien nur zu Beginn der LVA bei den einfacheren Beispielen.