Rastislav Krivoš-Belluš

Bezpečnosť počítačových systémov a dát

1. cvičenie

Hesla

2. cvičenie

  1. V OS Windows vypíšte (iba) mená všetkých skrytých súbory (nie adresárov) v koreni systémovej partície. Zároveň vypíšte kompletné práva k jednému z týchto súborov. ACLs v OS Windows
  2. V OS Linux vytvorte adresár /bpd a nastavte práva nasledovne:
    • adresár /bpd/data - používatelia bpd/bpd01/bpd02/bpd03 môžu vytvárať a mazať iba svoje súbory, iba bpd a bpd2 vidia obsah adresára
    • súbor /bpd/prvy - čítať môžu bpd/bpd02/bpd04, zapisovať bpd/bpd03
    • súbor /bpd/log - čítať môžu bpd/bpd01/bpd04, zapisovať iba na koniec bpd/bpd01
    • súbor /bpd/dolezity - je imúnny voči všetkým zmenám, ani root nemôže priamo vymazať
    Odovzdajte výpis príkazov:
    tree -p /bpd
    lsattr -R /bpd
    getfacl -R /bpd
    ACLs v OS Linux
  3. Pomocou príkazu find vypíšte zoznam všetkých súborov, ktoré majú nastavený aspoň jeden zo SETUID/SETGUID bitov.
prezentácia(2019), SELinux

3. cvičenie

  1. V OS Linux:
    1. nastavte zložitosť hesla, zablokovanie po niekoľkých neúspešných pokusoch kód
    2. nastavte kvóty pre používateľov a skupiny kód, RedHat
    3. spustite vybraný príkaz cez chroot kód
      tree jail
      sudo chroot jail prikaz
    4. zobrazte logy a v nich nájdite použitie su/sudo
    5. nájdite aj ďalšie nastavenie pre Linux Hardening (okrem sieťových)
    6. BONUS: zapnite SELinux a doplňte nejaké pravidlo
  2. Odovzdajte riešenie úloh c,d,e.

4. cvičenie

  1. V OS Windows 10 Educational:
    1. Dosiahnite čo najlepšie (najvyššie) skóre v HardeningKitty, odovzdajte report (-Report) a zoznam vašich úprav:
    2. Windows Sandbox - nastavte zdieľanie priečinku a spustenie programu

5. cvičenie

  1. FAT: Vyriešte úlohu v súbore citaj.ma v obraze disku.
  2. EXT4: Ukážte rozloženie blokov súboru (v súborovom systéme aj DiskEditore), ktorého inode obsahuje aspoň jeden indirect pointer
  3. NTFS: Ukážte MFT tabuľku známeho súboru v Disk Editore.

6. cvičenie

  1. Spustite z jedného shell-u 3 procesy yes a ukážte vplyv nastavenia priority/niceness na 5, 10 a 15 na vyťaženie CPU.
    ps, pstree, top, htop, btop, CRTL+Z, bg, fg, jobs
    Odovzdajte snímku obrazovky ukazujúcu vyťaženie, niceness aj čísla procesov a rodičovského procesu.
    1. Aký je rozdiel v ELF hlavičke príkazov ls a passwd?
    2. Koľko funkcií je uvedených v symboloch príkazu ls?
    3. Koľko sekcií a koľko z nich je spúštateľných v príkaze zsh?
    file, readelf
    Odovzdajte príkazy a ich výstupy.
  2. Koľko volaní statfs vykoná príkaz df?
    strace, ltrace
    Odovzdajte príkaz a jeho výstup.

7. cvičenie

  1. Ukážte umiestnenie globálnych (jeden znak aj veľké pole čísel) a lokálnych premenných v ELF súbore (sekcia, zarovnanie)? Ktoré názvy premenných je možné vyčítať?
    g++, as, objdump, strings, gdb, ghidra
    Odovzdajte príkazy a ich výstupy.
Computer Science from the Bottom Up

8. cvičenie

x86, x86-64, x86 calling conventions kód na cvičenie
  1. Skompilujte nasledovný C++ kód:
    #include <stdio.h>
    #include <cstdint>
    
    char pismeno;
    int pole[10*1024*1024];
    
    int premenna = 9;
    
    int main(void)
    {
     int pomoc = 9;
     char c1, c2;
     int cislo = 7;
     c1 = 'a';
     c2 = 65;
     pole[123] = 987654;
     pomoc = 13;
     cislo = cislo*2;
     printf("Hodnota: %d\n", pomoc);
     printf("Adresa : %p\n", &pomoc);
     printf("Znak   : %c\n", c1);
     return 0;
    }
    
    1. Nájdite reťazce použité na výpis v skompilovanom súbore (aj s ich umiestnením/adresami). Ukážte výpočty adries v disassemblovanom kóde (objdump -d).
    2. Na základe vygenerovaného assemblera (g++ -S) zobrazte/načrtnite umiestnenie lokálnych premenných na zásobníku. Ako sa zmení rozloženie, ak premennú cislo deklarujete ako int16_t?
  2. Statická analýza prvých 3 funkcií (pomocou IDA Freeware/Ghidra) súboru.

9. cvičenie

Statická analýza (pomocou IDA Freeware/Ghidra) súboru.
  1. Vypíšte všetky riešenia 3. fázy.
  2. Aký vstup treba zadať, aby fcia 0x401350 vrátila hodnotu 55? Čo počíta daná funkcia?
  3. Čo robí funkcia 0x4017d0?

10. cvičenie

Dynamická analýza súboru.
  1. Vypíšte 2x riadok "Which to blow..."
  2. Pre prvú fázu zadajte svoje meno.
  3. Program nech vypíše info o vyriešení všetkých 6 fáz.
Odovzdajte snímku obrazovky spusteného programu s ladiacim prostredím v pozadí a popis vykonaných zmien (čo/ako/kde ste zmenili).

11. cvičenie

Buffer Overflow.
  1. Ukážte využitie Buffer Overflow na spustenie nepoužitej funkcie pri zadaní dlhého vstupu.
  2. Ukážte využitie Buffer Overflow na spustenie príkazu pri zadaní dlhého vstupu v ladiacom prostredí aj v termináli.