Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Wybrane aspekty bezpieczeństwa oprogramowania na przykładach zadań z zawodów CTF

Informacje ogólne

Kod przedmiotu: 1000-2M16CTF
Kod Erasmus / ISCED: 11.303 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (0612) Database and network design and administration Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Wybrane aspekty bezpieczeństwa oprogramowania na przykładach zadań z zawodów CTF
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obieralne dla informatyki
Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka
Punkty ECTS i inne: (brak) Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: angielski
Rodzaj przedmiotu:

monograficzne

Wymagania (lista przedmiotów):

Bezpieczeństwo systemów komputerowych 1000-215bBSK

Założenia (opisowo):

Od uczestników przedmiotu wymagana będzie znajomość asemblera x86 w stopniu pozwalającym na czytanie ze zrozumieniem fragmentów kodu manipulującego pamięcią programu. Wskazane jest również dobre opanowanie języka C. Niezbędna będzie umiejętność posługiwania się językami skryptowymi (Python, PHP, Bash) oraz językiem zapytań SQL na podstawowym poziomie (czytanie ze zrozumieniem fragmentów kodu oraz pisanie własnych, niewielkich skryptów/zapytań).


Uczestnicy laboratorium pracować będą zarówno w środowisku Linux jak i Windows – zakładana będzie podstawowa znajomość obu tych platform.


Kluczowe informacje w tym zakresie powtórzone będą jeszcze na wykładzie.

Skrócony opis:

Celem przedmiotu jest wprowadzenie uczestników w świat "zawodów dla hackerów”, czyli konkursów Capture the Flag (CTF). W ramach zajęć omówione zostaną wybrane zagadnienia z zakresu bezpieczeństwa, których znajomość może okazać się przydatna podczas zmagań z zadaniami konkursowymi.

Kurs ilustrowany będzie przykładami archiwalnych zadań konkursowych.

Przedmiot skierowany jest do osób zainteresowanych tematyką bezpieczeństwa informatycznego i ma za zadanie zachęcić słuchaczy do spróbowania własnych sił w konkursach CTF. Przedmiot, w dłuższej perspektywie, ma pomóc w budowie zespołu, który będzie mógł rywalizować z najlepszymi drużynami na świecie.

Przedmiot prowadzony będzie we współpracy ze specjalistami z tej dziedziny, w tym osobami posiadającymi doświadczenie w startach w konkursach CTF.

Pełny opis:

Celem przedmiotu jest wprowadzenie uczestników w świat “zawodów dla hackerów”, czyli konkursów Capture the Flag (CTF). W ramach zajęć omówione zostaną wybrane zagadnienia z zakresu bezpieczeństwa, których znajomość może okazać się przydatna podczas zmagań z zadaniami konkursowymi. Wśród poruszanych tematów znajdą się między innymi:

niskopoziomowe metody ataków na aplikacje,

ataki na aplikacje internetowe,

analiza współczesnych systemów kryptograficznych,

techniki inżynierii wstecznej,

metody tzw. informatyki śledczej (np. odzyskiwanie danych z dysków).

Kurs ilustrowany będzie przykładami archiwalnych zadań konkursowych.

Przedmiot skierowany jest do osób zainteresowanych tematyką bezpieczeństwa informatycznego i ma za zadanie zachęcić słuchaczy do spróbowania własnych sił w konkursach CTF. Przedmiot, w dłuższej perspektywie, ma pomóc w budowie zespołu, który będzie mógł rywalizować z najlepszymi drużynami na świecie.

Przedmiot prowadzony będzie we współpracy ze specjalistami z tej dziedziny, w tym osobami posiadającymi doświadczenie w startach w konkursach CTF.

1. Zawody CTF – wprowadzenie. Przedstawienie typów (jeopardy, attack-defence) i zasad konkursów. Krótki przegląd kategorii zadań konkursowych.

2. Ataki na aplikacje internetowe (2-3 wykłady):

a. Omówienie najważniejszych grup podatności na przykładzie rankingów organizacji OWASP – SQL injection, Cross-site scripting (XSS), Cross-site request forgery (CSRF), Clickjacking.

b. Directory traversal. Session poisoning. Luki w konfiguracji (np. w plikach .htaccess, robots.txt, .git)

c. Błędy w implementacjach dla wybranych technologii (np. PHP – type juggling). Ataki na protokół SSL.

3. Kryptografia i steganografia (4 wykłady)

a. Kryptosystem RSA, wybrane metody faktoryzacji (algorytm p-1 Pollarda, rho Pollarda, sito kwadratowe, sito ciała liczbowego), metody kratowe (redukcja LLL), fault injection.

b. Funkcje haszujące - konstrukcje (schemat Merkle–Damgård), odporność/podatność na kolizje (na przykładzie funkcji MD5 i SHA1), length extension attack, programowanie z więzami (zastosowanie narzędzi typu SAT/SMT solver).

c. Steganografia. Przegląd popularnych formatów przechowywania obrazów i możliwości ukrywania informacji w obrazie.

d. Inne, wybrane zagadnienia: algorytm podpisu elektronicznego, szyfr plecakowy, kryptosystem oparte o krzywe eliptyczne, szyfrowanie homomorficzne, indistinguishability obfuscation, generatory pseudolosowe.

4. Inżynieria wsteczna oprogramowania (2 wykłady). Identyfikacja kluczowych elementów programu w kodzie asemblera. Metody wykrywania obecności debuggera. Kompresja plików wykonywalnych (narzędzia typu packer).

5. PWNing – wykorzystanie podatności programów w zawodach CTF (2 wykłady). Ataki z przepełnieniem bufora (buffer overflow). Organizacja sterty i możliwe podatności (heap exploitation). Ataki typu use-after-free i double-free. Podatność “uncontrolled format string”. Nadpisanie struktur Procedure Linkage Table (PLT) i Global Offset Table (GOT), metody obrony (RELRO). Shellcode i Return-oriented programming (ROP).

6. Computer forensic. Sposoby zbierania i zabezpieczania informacji o aktywności użytkownika. Odzyskiwanie danych z dysków. Narzędzia do przechwytywania ruchu sieciowego (na przykładzie narzędzia Wireshark).

7. Attack-defense. Analiza logów zdarzeń. Tworzenie łat (patch) dla binariów. Filtrowanie wywołań funkcji bibliotecznych. Filtrowanie ruchu sieciowego.

Literatura:

* Zadania archiwalne z konkursów CTF i ich omówienia dostępne w Internecie

* J. Erickson, Hacking: The Art of Exploitation, 2nd Edition. No Starch Press, 2008.

* M. Dowd, J. McDonald, J. Schuh, The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities. Pearson Education, 2006.

* P. H. Engebretson, The Basics of Hacking and Penetration Testing: Ethical Hacking and Penetration Testing Made Easy. Syngress/Elsevier, 2013.

* G. Coldwind, M. Jurczyk (red.), Praktyczna inżynieria wsteczna. Metody, techniki i narzędzia. PWN, 2016.

* wybrane materiały (ziny) w serwisie sekurak.pl

Efekty uczenia się:

Wiedza:

1. Zna klasyfikację najczęściej spotykanych ataków prowadzących do przejęcia kontroli nad wykonaniem programu.

2. Zna najczęściej spotykane kategorie luk w aplikacjach internetowych.

3. Rozumie najważniejsze pojęcia z zakresu kryptografii występujące w zadaniach konkursowych CTF oraz zna najczęściej używane techniki do rozwiązywania tych zadań.

Umiejętności

1. Rozumie mechanizm ataku typu buffer overflow i potrafi wykorzystać lukę w programie podatnym na taki atak. Potrafi skonstruować atak składający się z tzw. gadżetów ROP.

2. Potrafi korzystać z narzędzi wspomagających pracę przy rozwiązywaniu zadań z konkursów CTF, w tym m.in. debuggerów, narzędzi do deasemblacji, narzędzi do przechwytywania pakietów.

3. Potrafi dokonać analizy binariów program za pomocą narzędzi do inżynierii wstecznej.

Kompetencje

1. Zna ograniczenia własnej wiedzy i rozumie potrzebę dalszego kształcenia (K_K01).

2. Potrafi samodzielnie wyszukiwać informacje w literaturze, także w językach obcych (K_K04).

3. Potrafi zrozumieć specjalistyczne artykuły o zabezpieczeniach i lukach w oprogramowaniu na poziomie średniozaawansowanym.

4. Potrafi rozwiązać w krótkim czasie proste zadania z konkursów CTF.

Metody i kryteria oceniania:

Ocena wystawiana będzie na podstawie zadań domowych o zróżnicowanym stopniu trudności i postaci zbliżonej do zadań występujących na konkursach CTF.

Przedmiot nie jest oferowany w żadnym z aktualnych cykli dydaktycznych.
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
ul. Banacha 2
02-097 Warszawa
tel: +48 22 55 44 214 https://www.mimuw.edu.pl/
kontakt deklaracja dostępności USOSweb 7.0.3.0-2b06adb1e (2024-03-27)