Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:teme:tema-3 [2022/12/22 13:27]
adelin_costin.popa [Informații generale]
uso:teme:tema-3 [2025/11/29 16:32] (current)
alexandru.raduta06 [Task 01 (15p)] Updated task1
Line 28: Line 28:
  
 <note important>​ <note important>​
-Deadline: **15 Ianuarie, ora 23:55**\\ +Deadline: **19 Decembrie, ora 23:59**\\
-Punctaj: **1.0 puncte** din nota finală\\+
 </​note>​ </​note>​
  
Line 37: Line 36:
 </​note>​ </​note>​
 <​note>​ <​note>​
-**Actualizări checker: <color red>​versiunea 1.1.0</​color>​**+**Actualizări checker: <color red>​versiunea 1.0.0</​color>​**
   * s-a lansat versiunea iniţială   * s-a lansat versiunea iniţială
-  * update major la primele 3 taskuri 
 </​note>​ </​note>​
  
Line 45: Line 43:
  
  
-  * 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ă.+  * Pe parcusul acestei teme vom folosi cunoștințe generale legate de scripting, expresii regulate ​și securitate, 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ă. ===== ===== Testarea temei. Finalizarea temei. Mașină virtuală. =====
  
-<​note>​La task-ul 2, pentru a primi toate punctele, trebuie salvate parolele //​decodificate//​ (nu decriptate) în wordlist_decoded.txt (atenție la trailing whitespaces).</​note>​ +<​note>​ 
 +În rezolvarea temei va trebui să instalați un fișier cu paroleSă aveți grijă să îl ștergeți înainte să trimiteți tema.</​note>​
  
 <note warning>​Este interzisă publicarea pe forum a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a  <note warning>​Este interzisă publicarea pe forum a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a 
Line 65: Line 63:
  
  
-==== Task 01 (10p) ====+==== Task 01 (15p) ====
  
-<note important>​ +Scriețun script bash script_user.sh care automatizează procesul ​de creare a unui utilizator nou în sistem, incluzând configurarea directorului home și logging-ul datelor. 
- ​Task-urile 2 ș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.+ 
 +<​note>​ 
 +Apelul scriptului trebuie ​să arate în felul următor: 
 +<code bash> 
 +sudo ./​script_user.sh username password cale_director_copiat 
 +</​code>​
 </​note>​ </​note>​
-  * Î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 (15p====+=== a) Validarea argumentelor ​(3p) ===
  
-  * În interiorul arhivei se află un fișier, ''​wordlist.txt'',​ și ''​arhiva2.zip'',​ pe care trebuie să o dezarhivați la rândul eiPentru aceasta, ​trebuie să vă folosiți ​de fișierul wordlist.txt,​ singura problemă este că parolele din el sunt criptate cu [[https://​en.wikipedia.org/​wiki/​XOR_cipher|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.  +Scriptul ​trebuie să verifice dacă argumentele primite sunt corecteScriptul ​trebuie să primescă 3 argumente la linia de comandă, parola trebuie să aiba minim 8 caractereiar folderul specificat ​în argumentul 3 trebuie ​să fie existent.
-  * Mai mult, după criptare, cifrurile au fost codificate în [[https://​en.wikipedia.org/​wiki/​Base64|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. +
-<note tip>​Hint:​ man base64.</​note>​ +
-<note tip>​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>''​.+Mesajele de eroare standard pentru neîntâlnirea uneia dintre cele 3 condiții:
  
-(<​code>​ $ wget https://​pastebin.com/​raw/​4mhCcJmv </​code>​) +1"​Eroare:​ Numar incorect de argumente"​
-</​note>​+
  
 +2. "​Eroare:​ Parola trebuie sa aiba minim 8 caractere"​
  
-==== Task 03 (15p) ====+3. "​Eroare:​ Folderul <​cale>​ nu exista"​
  
-  * 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 ​(fictivepentru 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. ​ +=== b) Crearea utilizatorului ​(5p=== 
-  * Verificați care hash-uri sunt corecte, pentru a vă reduce căutarea (unele fișiere au fost modificate și nu mai sunt integre). +Scriptul trebuie să se ocupe de crearea utilizatorului ​(cu home directory ​și shell) și cu setarea parolei utilizatorului.
-  * 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) ==== +=== c) Copierea folderului în home (2p) === 
-   +Scriptul trebuie să copieze corect în /​home/​username/​ directorul dat ca al treilea argument. 
-<​note>​ + 
-  ​Pentru acest task se va lucra exclusiv în directorul ​/home/student/tema3-task4 + 
-  ​Înainte de a vă apuca, intrațin directorul acesta.+=== d) Logging (5p) === 
 +Scriptul trebuie să extragă informații despre user din /etc/passwd și să pună datele pe câte o linie în fișierul user_info.log din /​home/​username 
 + 
 + 
 +<​note ​important
 +Scriptul trebuie rulat cu privilegii de root/sudo 
 + 
 +Fișierul de log: /home/username/user_info.log 
 + 
 +Formatul log-ului trebuie să conțină pe câte o linie: username, UID, GID, home directory, shell 
 + 
 +Scriptul trebuie să gestioneze corect erorile și să se oprească imediat dacă o verificare eșuează
 </​note>​ </​note>​
  
-  * În directorul curent se află ''​64based.txt''​. Acest fișier a fost codificat de 20 de ori cu ''​base64''​. +==== Task 02 (15p) ====
-  * Creați un script numit ''​unbase.sh''​ care să decodifice conținutul acestuia și să scrie noul conținut în ''​output/​64unbased.txt''​.+
  
-==== Task 05 (25p) ====+ 
 +==== Task 03 (15p) ====
  
 <​note>​ <​note>​
Line 112: Line 118:
  
   * Creați un script numit ''​my_menu.sh''​ care creează un meniu de bază pentru realizarea operațiilor pe fisiere si directoare într-un sistem cu Linux, conform diagramei:   * Creați un script numit ''​my_menu.sh''​ care creează un meniu de bază pentru realizarea operațiilor pe fisiere si directoare într-un sistem cu Linux, conform diagramei:
-  {{ :​uso:​teme:​tema3-task5-diagrama.png?​945x370 ​|}}+  {{ :​uso:​teme:​tema3-task5-diagrama.png?​756x296 ​|}}
  
   * Un exemplu de rulare a scriptului ar putea fi:   * Un exemplu de rulare a scriptului ar putea fi:
Line 120: Line 126:
   * Folosirea diacriticelor în cadrul scriptului nu este necesară și nici recomandată.   * Folosirea diacriticelor în cadrul scriptului nu este necesară și nici recomandată.
  
-==== Task 06 (20p) ==== +==== Task 04 (25p) ====
- +
-<​note>​ +
-  Pentru acest task se va lucra exclusiv în directorul /​home/​student/​tema3-task6 +
-  Înainte de a vă apuca, intrați in directorul acesta. +
-</​note>​ +
- +
-  * În directorul curent se află un fișier [[https://​en.wikipedia.org/​wiki/​JSON|JSON]],​ numit ''​inventory.json''​. +
-  * Acest fișier conține doi jucători de Minecraft și inventarele acestora.+
  
-  * [10p] 1. Creați un script numit ''​find_common.sh''​ care găsește toate itemele comune (bazat strict pe nume) ale celor doi jucători și le pune în ''​outputs/​common_items.txt''​. 
-  * [10p] 2. Creați un script numit ''​find_best.sh''​ care găsește toate itemele (de la ambii jucători) ce au câmp de durabilitate,​ le ordonează descrescător după aceasta și le pune în ''​outputs/​best_items.txt''​. 
  
-  * Pentru referință se vor folosi fișierele din directorul ''​ref''​. +==== Task 05 (30p) ====
-  * Pentru prelucrarea datelor din ''​.json''​ se recomandă folosirea utilitarului [[https://​stedolan.github.io/​jq/​manual/​|jq]].+
uso/teme/tema-3.1671708441.txt.gz · Last modified: 2022/12/22 13:27 by adelin_costin.popa
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