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.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License