Eskalacja Uprawnień
Prowadzący
Mateusz Pstruś
Opis
Na warsztatach omówimy sposoby exploitacji aplikacji działających na wyższych uprawnieniach niż nasze, nauczymy się różnych technik wykorzystywania błędów programistycznych i przejmowania kontroli nad procesami. Będziemy działać głównie na linuxie.
Program zajęć
Dzień pierwszy: Poznamy niezbędną teorię (budowa plików wykonywalnych, struktura pamięci itd.) oraz trywialne błędy.
Dzień drugi: Zajmiemy się zdalnymi atakami na aplikacje.
Dzień trzeci: Nauczymy się zaawansowanych metod ataków.
Wymagania
- Wyobraźnia
- Dobra niskopoziomowa znajomość C (głównie wskaźniki, referencje, tablice, typy zmiennych, linux!)
- Podstawowa znajomość assembly.
- Podstawy reverse engineeringu aplikacji.
- Wyobraźnia
Zadania kwalifikacyjne
Zadanie 1 - assembly (2pkt)
- Odczytaj zdeasemblowaną treść zadania: klik.
- Wykonaj dalszą część zadania. (dane wypisz na standardowe wyjście)
Zadanie 2 - C (3pkt)
Napisz program w C, który:
- przekopiuje dane z argv[1] do wcześniej zaalokowanej pamięci na stercie, ustawi na tej pamięci prawa EXECUTE, następnie ją wykona.
- będzie posiadał zaimplementowane dowolne kodowanie przekazywanych danych, tak aby można było wykonać kod maszynowy zawierający bajty zerowe.
- w razie błędu wykonania (segmentation fault), wyświetli komunikat "CRASH" oraz zakończy działanie z kodem 1.
Zadanie 3 - reverse engineering (3pkt)
Przeanalizuj prostą aplikację: link.
- Napisz, co robi funkcja main.
- Napisz, dlaczego funkcja main "nie działa", mimo iż jest wykonywana. (dodatkowe)
- Zrekonstruuj kod C. (dodatkowe)
Dodatkowe informacje
Szczegółowe informacje na aplikacji warsztatowej.