Bezpečnosť počítačových systémov a dát
1. cvičenie
Hesla
2. cvičenie
- 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
- 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
- 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
- V OS Linux:
- nastavte zložitosť hesla, zablokovanie po niekoľkých neúspešných pokusoch kód
- nastavte kvóty pre používateľov a skupiny kód, RedHat
- spustite vybraný príkaz cez chroot kód
tree jail
sudo chroot jail prikaz
- zobrazte logy a v nich nájdite použitie su/sudo
- nájdite aj ďalšie nastavenie pre Linux Hardening (okrem sieťových)
- BONUS: zapnite SELinux a doplňte nejaké pravidlo
Odovzdajte riešenie úloh c,d,e.
4. cvičenie
- V OS Windows 10 Educational:
- Dosiahnite čo najlepšie (najvyššie) skóre v HardeningKitty, odovzdajte report (-Report) a zoznam vašich úprav:
- Windows Sandbox - nastavte zdieľanie priečinku a spustenie programu
5. cvičenie
- FAT: Vyriešte úlohu v súbore citaj.ma v obraze disku.
- EXT4: Ukážte rozloženie blokov súboru (v súborovom systéme aj DiskEditore), ktorého inode obsahuje aspoň jeden indirect pointer
- NTFS: Ukážte MFT tabuľku známeho súboru v Disk Editore.
6. cvičenie
- 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.
-
- Aký je rozdiel v ELF hlavičke príkazov ls a passwd?
- Koľko funkcií je uvedených v symboloch príkazu ls?
- 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.
- Koľko volaní statfs vykoná príkaz df?
strace, ltrace
Odovzdajte príkaz a jeho výstup.
7. cvičenie
- 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
- 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;
}
- 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).
- 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?
- 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.
- Vypíšte všetky riešenia 3. fázy.
- Aký vstup treba zadať, aby fcia 0x401350 vrátila hodnotu 55? Čo počíta daná funkcia?
- Čo robí funkcia 0x4017d0?
10. cvičenie
Dynamická analýza súboru.
- Vypíšte 2x riadok "Which to blow..."
- Pre prvú fázu zadajte svoje meno.
- 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.
- Ukážte využitie Buffer Overflow na spustenie nepoužitej funkcie pri zadaní dlhého vstupu.
- Ukážte využitie Buffer Overflow na spustenie príkazu pri zadaní dlhého vstupu v ladiacom prostredí aj v termináli.