Differences

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

Link to this comparison view

uso:teme:tema-3 [2023/12/05 00:54]
constantin.croicia
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: **23 Decembrie, ora 23:55**\\ +Deadline: **19 Decembrie, ora 23:59**\\
-Punctaj: **1.0 puncte** din nota finală\\+
 </​note>​ </​note>​
  
Line 44: 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 64: 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"​ 
 + 
 +=== b) Crearea utilizatorului ​(5p) === 
 +Scriptul trebuie să se ocupe de crearea utilizatorului (cu home directory și shell) și cu setarea parolei utilizatorului.
  
-  * 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.  +=== cCopierea folderului ​în home (2p=== 
-  * 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ă copieze corect ​în /home/usernamedirectorul dat ca al treilea argument.
-  * 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 (10p==== + 
-   +=== d) Logging ​(5p) === 
-<​note>​ +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 
-  ​Pentru acest task se va lucra exclusiv în directorul ​/home/student/tema3-task4 + 
-  ​Înainte de a vă apuca, intrațin directorul acesta.+ 
 +<​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 ''​64unbased.txt''​.+
  
-==== Task 05 (20p) ====+ 
 +==== Task 03 (15p) ====
  
 <​note>​ <​note>​
Line 111: 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 119: 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 (30p) ====+==== 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. 
- 
-  Pentru cerințele a și b veți reține output-ul în log_fixed.txt. 
-  Celelalte linii le veți afișa exact așa cum apar în fișierul log.txt. 
- 
-  Toate scrierile către fișiere vor fi făcute direct din scripturi, ci nu la momentul execuției. 
-  Exemplu: `./​fix_requests.sh > log_fixed.txt` nu va fi acceptat ca soluție. 
-</​note>​ 
- 
-<note important>​ 
-  De fiecare dată când veți rula `sudo uso start 3` se va genera un nou log.txt. 
-</​note>​ 
  
-  * [5p] a. Creați un script numit ''​fix_requests.sh''​ care afișează în ''​log_fixed.txt''​ conținutul din ''​log.txt'',​ dar modificând liniie care au ca tip de cerere HEAD, astfel încât să fie afișate invers. +==== Task 05 (30p====
-  * **Exemplu: <color green>​)46x ;46niW ;0.01 TN swodniW( 17.2964.0.79/​emorhC :tnegA-resU 1.1/PTTH tuoba/ DAEH</​color>​** +
-  * [5p] b. Modificați scriptul ''​fix_requests.sh''​ astfel încat toate liniile care au ca tip de cerere OPTIONS să fie afișate cu majuscule. +
-  * **Exemplu: <color green>​OPTIONS /​SOME_OTHER_PATH HTTP/1.1 USER-AGENT: CHROME/​97.0.4692.71 (WINDOWS NT 6.1; WOW64)</​color>​** +
-  * [10p] c. Creați un script numit ''​get_users.sh''​. În cadrul acestuia, cu ajutorul cererilor de tip POST (din fișierul ''​log.txt''​) făcute către ''/​login'',​ rețineți în fișierul ''​users_db.txt''​ toți utilizatorii și parola lor respectivă (ca hash de tipul sha256), sortați alfabetic după utilizatori. +
-  * **Exemplu: <color green>​adelin:​1bc9414dc185b89669dba035340c4684a6733bbf1cdac568dadcfd2eef731054</​color>​** +
-  * [10p] d. Creați un script numit ''​get_browsers.sh''​ în care identificați ce browsere folosesc utilizatorii de iPhone ​(din fișierul ''​log.txt''​și le rețineți în fișierul ''​iphone_users_browsers.txt''​ alături de numărul de apariții, sortate de la cel mai folosit browser pana la cel mai puțin folosit. +
-  * **Exemplu: <color green>​Safari - 120</​color>​**+
uso/teme/tema-3.1701730487.txt.gz · Last modified: 2023/12/05 00:54 by constantin.croicia
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