Tema 3

Ce trebuie să știu? Studiați secțiunea de Cunoștințe evaluate și suportul agregat necesar temei. Nu contactaţi responsabilii de temă pe mail privat decât dacă aceştia vă cer explicit (e.g. pentru debugging local, vizualizarea unor comenzi din rezolvare) Pentru orice fel de întrebare vă rugăm folositi forumul!

Thread nou? Nu. Pentru o ușoară parcurgere a mesajelor, folosiți thread-urile de discuții existente în cadrul forumului, fără a crea altele. În consecință, thread-urile (subiectele de discuții) nou create vor fi șterse.

Căutare. Căutați pe forum informația pe care doriți să o obțineți, înainte să puneți o întrebare. De cele mai multe ori, cineva a mai întrebat același lucru. În fiecare thread al forumului aveți informații despre cum puteți căuta în forum.

Printscreen/poză? Nu. În cazul în care doriți să publicați un printscreen pe forum, recomandăm folosirea site-urilor pentru partajarea gratuită a imaginilor, precum imgur sau alternativele sale, publicând pe forum doar link către printscreen. Pozele inserate în răspunsuri, vor fi șterse. NU SE ACCEPTA POZE FACUTE CU TELEFONUL (se poate recurge la depunctări, sunt imposibil de urmărit).

Actualizări. Urmăriți în special forumul, în topic-urile dedicate taskurilor respective. Urmăriţi şi modificările aduse enunțului/checker-ului, modificări ce sunt publicate și explicate în paragrafele de mai jos.

Regulament. Înainte și în timpul realizării temei, vă rugăm să parcurgeți indicațiile legate de realizarea temelor, încluzând ce înseamnă o temă copiată și cum penalizăm temele copiate. Folosiți cu încredere forumurile de pe cs.curs.pub.ro pentru întrebări și neclarități legate de teme.

Întrebări frecvente. În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de USO, parcurgeți și lista de întrebări frecvente întâlnite în cadrul temelor. Să țineți cont, va rugăm, și de recomandările de comunicare electronică.

Ajutor reciproc. Vă încurajăm ca atunci când găsiți soluția la o problemă pe care ați postat-o anterior pe forum să postați și soluția găsită. De asemenea dacă știți răspunsul la întrebările colegilor sunteți încurajați să le răspundeți. Studenţii cu o atitudine pozitivă, activă şi care îşi ajută colegii pot fi răsplătiţi cu puncte karma sau un PIN USO.

Înainte și în timpul realizării temei, vă rugăm să parcurgeți indicațiile legate de realizarea temelor, încluzând ce înseamnă o temă copiată și cum penalizăm temele copiate. Folosiți cu încredere forumurile de pe acs.curs.pub.ro pentru întrebări și neclarități legate de teme.

În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de USO, parcurgeți și lista de întrebări frecvente întâlnite în cadrul temelor. Să țineți cont, va rugăm, și de recomandările de comunicare electronică.

Informații generale

Deadline: 17 Decembrie, ora 23:55
Noul deadline: 14 Ianuarie, ora 23:55
Timp de lucru: 14 zile
Punctaj: 1.0 puncte din nota finală

Actualizări enunț:

  • s-a lansat versiunea iniţială
  • corectare typo
  • exemplu redenumire fișier la task 6

Actualizări checker: versiunea 1.0.0

  • s-a lansat versiunea iniţială

Suportul necesar pentru realizarea temei

  • Pe parcusul acestei teme vom folosi cunoștințe generale legate de scripting și securitate (mai precis spargerea parolelor, decriptare vs. decodificare, hashing), dar și comenzi uzuale de lucru în linia de comandă, așa că verificați laboratoarele aferente înainte să vă apucați de această temă.

Testarea temei. Finalizarea temei. Mașină virtuală.

La task-ul 2, pentru a primi toate punctele, trebuie salvate parolele decodificate (nu decriptate) în wordlist_decoded.txt (atenție la trailing whitespaces).

Este interzisă publicarea pe forum a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a temei ori a unui task. Dacă e necesar acest lucru vă rog să contactaţi în privat responsabilii de temă, la specificarea explicită a acestora pe forum!

Aveţi voie, însă, să sugerați diferite abordări pe care mergeţi sau să dați idei generale (dar nu comenzi sau fişiere shell script) celorlalți chiar direct pe forum. Încurajăm clarificarea lucrurilor între studenţi atât timp cât nu sunt rezolvate cerinţele în mod direct.

Urmăriți indicațiile legate de realizarea temelor. La prima abatere studentul primește un avertisment, iar punctajul obținut pe temă îi este redus cu valoarea punctajului pe task-ul respectiv. Începând cu a doua abatere, se va anula întregul punctaj pe tema curentă. Temele anterioare sau cele viitoare nu vor fi afectate. Abaterile se păstrează pe parcursul semestrului. Ori de câte ori se încalcă această regulă, se va ține cont de istoricul abaterilor. Abaterile vor fi actualizate în catalog.

Este interzis studenților să modifice parametrii de rulare ai mașinii virtuale. Orice tentativă malițioasă de modificare a fișierelor și executabilelor care fac mașina virtuală sa ruleze in parametrii optimi (fișierele si folderele ce nu țin de enunțul temei curente), ne conferă dreptul de a oferi 0 puncte pe temele respectivului student.

Task 01 (10p)

Task-urile 2 și 3 sunt dependende de rezolvarea corectă și completă a Task-ului 1. În primele 3 task-uri vom simula trecerea prin mai multe filtre de securitate - de cele mai multe ori, pentru a ajunge la informația pe care o dorește, un atacator va avea de trecut mai multe bariere (firewalls, parole, drepturi limitate ale utilizatorului compromis etc.). În cele ce vor urma, vom încerca să ajungem la un fișier ascuns în 3 arhive protejate de parole.

  • În directorul /home/student/tema3-sec se află arhiva1.zip, protejată de o parolă simplă. Folosiți un utilitar precum fcrackzip sau john the ripper pentru a extrage fișierele din aceasta. Lungimea parolei căutate este de 6 litere.

Task 02 (20p)

  • În interiorul arhivei se află un fișier, wordlist.txt, și arhiva2.zip, pe care trebuie să o dezarhivați la rândul ei. Pentru aceasta, trebuie să vă folosiți de fișierul wordlist.txt, singura problemă este că parolele din el sunt criptate cu OTP/XOR, cu cheia usostrongkey. Criptarea cu xor este foarte simplă, presupune realizarea operației xor între textul în clar și cheie, decriptarea realizându-se prin aplicarea xor între textul cifrat și cheie.
  • Mai mult, după criptare, cifrurile au fost codificate în base64. Codificarea este diferită de criptare, neascunzând datele, ci doar trecându-le într-un alt format (baza 64 în acest caz fiind formată din caracterele A-Z, a-z, 0-9 și +/) pentru a fi mai ușoară prelucrarea sau afișarea lor. Scopul acestui task este să decodificați și să decriptați parolele din wordlist pentru a le folosi în spargerea arhivei 2.
  • Dacă vă este mai ușor, puteți realiza un script care să facă aceste operații. Aveți însă grijă SĂ NU MODIFICAȚI wordlist.txt. Salvați decodificările în wordlist_decoded.txt pentru punctajul intermediar aferent acestei operații.

Hint: man base64.

După decodificare, parolele criptate pe care le veți descoperi sunt sub forma unor bitstrings pentru o mai ușoară prelucrare. Folosiți scriptul python otp_decrypt.py pentru decriptarea unui bitstring (string format din biți, ex: “0100111”), pasându-i în linia de comandă, în ordine, bitstring-ul de decriptat și cheia (usostrongkey):

$ python3 otp_decrypt.py <bitstring> <key>.

(

 $ wget https://pastebin.com/raw/4mhCcJmv 

)

Task 03 (15p)

  • La finalul punctului anterior ar fi trebuit să obțineți o ultimă arhivă, arhiva3.zip, și trei fișiere user[1..3].txt cu câte un nume de utilizator și mai multe parole (fictive) pentru diverse site-uri. Doar una dintre ele este parola pentru arhiva3. Pentru a nu face brute-force, încercând fiecare parolă, mai aveți în arhiva2 și fișierul hashes.txt, care conține hash-urile celor trei fișiere menționate.
  • Verificați care hash-uri sunt corecte, pentru a vă reduce căutarea (unele fișiere au fost modificate și nu mai sunt integre).
  • Redenumiți fișierele corupte în user_corrupted_{i}.txt, unde {i} se va înlocui cu numărul prezent în denumirea fișierului inițial.
  • Numele de utilizator rămase pot fi căutate cu o unealtă precum Sherlock (https://github.com/sherlock-project/sherlock) pentru a descoperi care cont dintre cele listate în fișier există cu adevărat (parola rămâne una fictivă totuși). Sherlock primește un nume de utilizator și realizează o căutare extensivă pe o multitudine de site-uri (în special de social media) pentru a găsi conturi asociate cu acel nume de utilizator. Acest gen de activitate poartă numele de OSINT și reprezintă un pas important într-un potențial atac, atunci când dorești să afli cât mai multe informații despre țintă (fie ea sistem sau persoană).
  • Odată găsită parola, dezarhivați ultima barieră între voi și mesajul ascuns.

Task 04 (15p)

  • În directorul home/student/tema3-scripts, creați un script numit users.sh ce sortează alfabetic utilizatori din fișierul /etc/passwd care lansează servicii în sistem și afișează numele și serviciile aferente acestora pentru primii 10. Numele utilizatorilor și serviciul aferent vor fi separate prin : (ex. irc:irc). Scriptul va afișa informațiile în fișierul /home/student/tema3-scripts-output/users.out. Vom considera că toți utilizatorii care lansează servicii în sistem au atribuit shell-ul /usr/sbin/nologin.

Task 05 (25p)

  • În fișierul /home/student/tema3-scripts/weather.sh creați un script care primește argumente în linia de comandă. Argumentele sunt de forma <Oraș temperatura vreme> (ex. București 10 soare). Scriptul va realiza următoarele acțiuni:
    1. (7p) Va adăuga o intrare de forma <Oraș temperatura vreme> în fișierul /home/student/tema3-scripts-output/weather.info. Ex: La rularea comenzii ./weather.sh Bucuresti 10 soare fișierul weather.info va conține linia București 10 soare.
    2. (10p) Va memora starea actuală a vremii și a temperaturii pentru fiecare oraș în fișierul live.info (dacă un oraș există, informațiile vor fi actualizate, dacă nu există, se va adăuga o intrare nouă). Fiecare linie din fișierul live.info va fi de forma Oraș temperatura vreme. Ex: După rularea comenzilor ./weather.sh Bucuresti 10 soare și ./weather.sh Bucuresti 8 ploaie fișierul live.info va conține linia București 8 ploaie.
    3. (8p) Modificați script-ul într-un script numit /home/student/tema3-scripts/weather_2.sh care realizează aceleași acțiuni, dar poate primi argumentele în orice ordine. În rezolvarea acestei cerințe, păstrați și fișierul inițial, weather.sh. Ex: După rularea comenzilor ./weather_2.sh soare 10 Bucuresti și ./weather_2.sh Bucuresti ploaie 8 fișierul weather.info va conține liniile București 10 soare și București 8 ploaie, iar fișierul live.info va conține linia București 8 ploaie.

Task 06 (15p)

  • Realizați un script în directorul /home/student/tema3-scripts numit backup_task.sh care creează un director cu numele /home/student/tema3-scripts-output/backup-confs și salvează în acesta toate fișierele cu extensia .conf din /etc (în mod recursiv), indiferent de tipul acestora. Salvarea fișierelor presupune copierea acestora. NU modificati si nu mutați, niciun fisier din /etc, riscati compromiterea mașinii virtuale de teme. Toate erorile vor fi raportate în fișierul /home/student/tema3-scripts-output/backup-confs/errors.txt. Mai departe, scriptul va realiza modificările necesare, astfel încât toate fișierele din directorul /home/student/tema3-scripts-output/backup-confs de dimensiune mai mare de 1K să fie redenumite prin adăugarea sufixului _large (ex: fișierul test2K.conf ar trebui să devină test2K.conf_large, nu test2K_large.conf). Atenție! Verificarea se va face rulând scriptul drept utilizatorul student.

Task obligatoriu pentru toate temele la final

Când finalizați tema si asigurați-vă că ați trimis tema cu sudo uso submit.

Este interzis studenților să modifice parametrii de rulare ai mașinii virtuale. Orice tentativă malițioasă de modificare a fișierelor și executabilelor care fac mașina virtuală sa ruleze in parametrii optimi (fișierele si folderele ce nu țin de enunțul temei curente), ne conferă dreptul de a oferi 0 puncte pe temele respectivului student.

uso/teme/tema-3.txt · Last modified: 2021/12/15 18:08 by costin.ghiban
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