This is an old revision of the document!


Curs 12 - Securitatea sistemelor de operare

  • Suport curs
    • Operating System Concepts
      • Capitolul 14 – Protection
      • Capitolul 15 – Security
        • Secțiunile 15.1, 15.2, 15.5
    • Modern Operating Systems
      • Capitolul 9 – Security
        • Secțiunile 9.4, 9.6

Demo-uri

Pentru parcurgerea demo-urilor, folosiți arhiva aferentă.

  1. Bitul de set-user-ID-on-execution
    • Intrați în directorul 1-setuid/.
    • Consultați fișierul setuid-test.c.
    • Compilați fișierul folosind comanda make.
      • Trebuie să aveți drept de sudo pentru a reuși întreg procesul.
    • Folosiți ls -l pentru a obține informații complete despre executabilul setuid-test.
      • Observați că executabiul este deținut de root și că are bitul de set-user-ID activat.
    • Ca utilizator neprevilegiat rulați executabilul:
      ./setuid-test
    • Observați cele trei tipuri de identificatori de utilizatori: user id, effective user ID, saved set-user-ID.
    • Observați că se poate reveni la utilizator privilegiat, dacă cel puțin unul dintre identificatorii de utilizatori este 0 (root) (temporary privilege drop).
      • În momentul în care nici unul dintre identificatorii de utilizatori nu mai este 0, nu se poate reveni la utilizator privilegiat (permanent privilege drop).
  2. Exemplu de shellcode
    • Intrați în directorul 2-shellcode/.
    • Consultați fișierul shellcode-samples.c.
      • Urmăriți cele trei variabile de tip shellcode.
    • Acele variabile se găsesc în forma binară și în fișierul binary-shellcodes.
      • Folosiți objdump pentru a dezasambla fișierul:
        objdump -D -b binary -mi386 binary-shellcodes
      • Se afișează instrucțiunile dezasamblate; au fost plasate niște instrucțiuni de tip nop între cele trei shellcode-uri.
      • Observați apelul int $0x80, reprezentând trap pentru acces în kernel space (apel de sistem).
    • Shellcode-ul din variabila shellcode_write realizează un apel write, iar shellcode-urile din variabilele shellcode_exec, respectiv shellcode_exec_sh deschid o sesiune de shell.
    • Pentru compilare va trebui să folosiți un sistem pe 32 de biți, precum mașina virtuală de Linux de SO.
    • Compilați fișierul folosind comanda make.
    • Rulați fișierul obținut:
      ./shellcode-samples
      • Observați că se deschide o nouă sesiune de shell.
    • Înlocuiți, în main, variabila shellcode_exec cu shellcode_exec_sh și, respectiv, shellcode_write, recompilați si rulați, din nou, fișierul obținut.
so/cursuri/curs-12.1369053128.txt.gz · Last modified: 2013/05/20 15:32 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0