This shows you the differences between two versions of the page.
|
uso:laboratoare:laborator-08:exercitii [2020/12/07 23:04] alexandru.dima1609 [Nice to Know] |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Exercitii ===== | ||
| - | | ||
| - | ==== 1. Hash me ==== | ||
| - | | ||
| - | **[1a]** Realizați un md5 pe string-ul ''whoareyou'' folosind md5sum. | ||
| - | | ||
| - | Hash-ul obținut trebuie să fie ''a46601d9f660704eb28d1ce17ac1fae4''. Asigurați-vă că obțineți același rezultat. | ||
| - | | ||
| - | **[1b]** Intrați pe [[https://crackstation.net/|CrackStation]] și introduceți hash-ul vostru. Veți observa că el a fost deja spart. | ||
| - | | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:found_hash.png?nolink&700|}} | ||
| - | | ||
| - | **[1c]** Generați un string de 10 caractere random ca în exemplul de mai jos: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ head /dev/urandom | tr -dc A-Za-z0-9 | head -c 10 ; echo '' | ||
| - | oargwZRgEv | ||
| - | </code> | ||
| - | | ||
| - | **[1d]** Folosiți string-ul generat mai devreme ca **Salt** pentru mesajul ''whoareyou''. În cazul din exemplu, s-ar fi realizat md5-ul pe ''oargwZRgEvwhoareyou'' | ||
| - | | ||
| - | **[1e]** Încercați pe [[https://crackstation.net/|CrackStation]] să spargeți acest nou md5. Observați că un **Salt** întărește securitatea unui hash. | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:image_crack_2.png?nolink&700|}} | ||
| - | | ||
| - | | ||
| - | ==== 2. Generare de parole ==== | ||
| - | | ||
| - | Pe Linux, putem genera parole folosind utilitarul ''pwgen'': | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ pwgen | ||
| - | ceigie4E phie3fuG ooQua8ch Quochu7A Wi2iesha fiena3Qu xohWah7w nahte9Ao | ||
| - | Caem6Eis Jeiquo2f phahM1je oLou6ohb aishae2O bo1Eishu PhugeS1z Tang6oox | ||
| - | Gaif4aij xoh1Evoa Eipoax7A ADi5Hohx ahJ8aida Aef0och4 iuD7oa3y Tatoo8po | ||
| - | Aephuit2 Segh9gah usaif4Ah Oex5quoo Thei9kae aoyuPh0F iu2vi3Ph aipai3Ow | ||
| - | Oof4Tei9 Naing5Ru nee9geiN noosh7Fo aF7ae8va zoo0IT7w uoj2Sie8 Zooghee0 | ||
| - | ........ | ||
| - | </code> | ||
| - | | ||
| - | **[2a]** În modul default, **pwgen** generează parole ușor de memorat. Generați o parolă greu de memorat, sigură. ''Hint: man pwgen'' | ||
| - | | ||
| - | **[3a]** Folosind pwgen, generați o parolă de **80 de caractere**, **singură pe linie**, **fără vocale**, cu **cel puțin o majusculă** și fără să conțină **numere**. ''Hint: man pwgen'' | ||
| - | | ||
| - | ==== 3. Site-uri considerate sigure ==== | ||
| - | | ||
| - | Putem folosi [[https://www.ssllabs.com/ssltest/|ssllabs]] pentru a verifica [[https://www.techopedia.com/definition/29743/website-security-certificate|certificatul]] unui site HTTPS. | ||
| - | | ||
| - | Introduceți **Hostname-ul** ''youtube.com'' și observați ce notă primește: | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:ssllabs_youtube.png?nolink&700|}} | ||
| - | | ||
| - | Introduceți apoi **Hostname-ul** ''expired.badssl.com'' ce are certificatul expirat: | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:ssllabs_expired.png?nolink&700|}} | ||
| - | | ||
| - | [[https://www.ssllabs.com/ssltest/|ssllabs]] este un bun utilitar pentru a verifica dacă un site este sigur sau nu. | ||
| - | |||
| - | <note> | ||
| - | Pentru exercițiile urmatoare, mergeți în directorul ''/home/student/uso-lab/10-sec/support/nice-to-know''. | ||
| - | </note> | ||
| - | | ||
| - | ==== Spargerea parolei prin brute-force ==== | ||
| - | | ||
| - | Tehnica de **brute-force** presupune încercarea oricăror combinării posibile de caractere în încercarea de a sparge o parolă. În cazul nostru, vom lucra cu un **zip**. | ||
| - | | ||
| - | Dacă parola este suficient de lungă (peste 10-12 caractere) atunci ea este considerată relativ sigură pentru un atac de acest tip întrucât va dura mult prea mult găsirea parolei corecte, chiar cu cele mai puternice CPU-uri din prezent. | ||
| - | | ||
| - | Vom încerca să spargem parola arhive zip ''secret_brute_force.zip''. Pentru a face acest lucru, vom instala utilitarul **fcrackzip**: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ sudo apt-get install fcrackzip | ||
| - | </code> | ||
| - | | ||
| - | Știm faptul că arhiva are o parolă de maxim 4 caractere, deci este fezabil să rulăm un atac de tip brute-force: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~/.../10-sec/support/nice-to-know$ fcrackzip -v -l 1-4 -u secret_brute_force.zip | ||
| - | found file 'flag.txt', (size cp/uc 34/ 22, flags 1, chk 6543) | ||
| - | | ||
| - | | ||
| - | PASSWORD FOUND!!!!: pw == fd7 | ||
| - | student@uso:~/.../10-sec/support/nice-to-know$ unzip -P fd7 secret_brute_force.zip | ||
| - | Archive: secret_brute_force.zip | ||
| - | extracting: flag.txt | ||
| - | student@uso:~/.../10-sec/support/nice-to-know$ cat flag.txt | ||
| - | USO{viața_pe_internet} | ||
| - | | ||
| - | </code> | ||
| - | | ||
| - | Argumentele comenzii **fcrackzip** sunt următoarele: | ||
| - | * ''-v'' -> verbose | ||
| - | * ''-l 1-4'' -> atac de tip brute-force cu lungimea parolei între 1 și 4 caractere | ||
| - | * ''-u'' -> verifică parola prin încercarea de a dezarhiva arhiva | ||
| - | | ||
| - | ==== Spargerea parolei cu wordlist ==== | ||
| - | | ||
| - | Asemănător exemplului de mai sus, avem în același director arhiva zip ''secret_wordlist.zip''. Deoarece parola este suficient de lungă, ea nu poate fi spartă folosind un atac de tip brute-force. | ||
| - | | ||
| - | Poate fi însă spartă folosind un dicționar de cuvinte. **fcrackzip** are opțiunea de a încerca parole dintr-o listă (numite wordlist). Dacă parola arhivei se află în lista de cuvinte, atunci ea va putea fi spartă. | ||
| - | <note> | ||
| - | Deși sună greu de realizat în practică (Ce wordlist va avea în ea parola mea ''5gangmoduavion??'' ??), multe persoane folosesc parole simple pentru a-și proteja datele personale. | ||
| - | </note> | ||
| - | | ||
| - | **[2a]** Spargeți parola arhivei ''secret_wordlist.zip'' folosind dicționarul ''wordlists.txt''. (HINT: ''man fcrackzip'' sau ''Google'') | ||
| - | |||
| - | ==== Capturi de rețea ==== | ||
| - | | ||
| - | Atacatorul Trudy a reușit să obțină acces la calculatorului studentului ''Vladimir''. Trudy a capturat tot traficul pe care Vladimir l-a făcut în rețea în captura de rețea ''capture.pcapng'' și va încerca să găsească date care l-ar putea interesa. Pentru acest lucru, el instalează **Wireshark** rulând comenzile următoare: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ sudo add-apt-repository ppa:wireshark-dev/stable | ||
| - | student@uso:~$ sudo apt-get update | ||
| - | student@uso:~$ sudo apt-get install wireshark | ||
| - | </code> | ||
| - | | ||
| - | După ce s-a instalat, el pornește **Wireshark**: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ wireshark | ||
| - | </code> | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_start.png?nolink&750|}} | ||
| - | | ||
| - | Deschide apoi captura de rețea ''capture.pcapng'' în Wireshark folosind ''File -> Open'': | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_2.png?nolink&700|}} | ||
| - | | ||
| - | Vladimir a navigat mult pe internet și deci a generat mult trafic. Trudy știe că el a intrat pe 2 site-uri care îi pot fi de interes **aavtrain.com** și **acs.curs.pub.ro**. | ||
| - | | ||
| - | Pentru început, Trudy află adresa ip a site-ului **aavtrain.com**: | ||
| - | | ||
| - | <code bash> | ||
| - | student@uso:~$ ping aavtrain.com | ||
| - | PING aavtrain.com (192.185.11.183) 56(84) bytes of data. | ||
| - | 64 bytes from pss24.win.hostgator.com (192.185.11.183): icmp_seq=1 ttl=128 time=148 ms | ||
| - | ...... | ||
| - | </code> | ||
| - | | ||
| - | Acum că știe adresa IP a site-ului, dorește să vadă în Wireshark doar pachetele schimbate cu această adresă IP. Pentru a face asta, el aplică un filtru în Wireshark, ''ip.addr == 192.185.11.183'' și apasă ''Enter'': | ||
| - | | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_3.png?nolink&900|}} | ||
| - | | ||
| - | Acum că vede doar informațiile legate de **aavtrain.com**, Trudy observă că Vladimir a făcut un request de **POST** pe acest site. Request-urile de POST se fac de multe ori în cazul unei pagini de **login**. Pentru a investiga, Trudy urmărește traficul HTTP astfel: * Click-dreapta pe request-ul de POST -> Follow -> HTTP Stream'': | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_4.png?nolink&850|}} | ||
| - | | ||
| - | Trudy vede în clar informațiile trimise de Vladimir la Login: | ||
| - | | ||
| - | **userul**: ''student_vladimir'' | ||
| - | **parola**: ''supersecretpasswordvladimir'' | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_5.png?nolink&800|}} | ||
| - | | ||
| - | Trudy dorește acum să afle și contul de **acs.curs.pub.ro**. Află adresa IP că mai sus: ''141.85.241.51'', filtrează după ea în Wireshark : ''ip.addr == 141.85.241.51'', găsește requestul de **POST** și urmărește traficul TCP similar ca mai sus: | ||
| - | | ||
| - | | ||
| - | {{:uso:laboratoare:new:10-sec:wireshark_6.png?nolink&800|}} | ||
| - | | ||
| - | De data aceasta, Trudy nu poate să extragă nicio informație. | ||
| - | | ||
| - | Motivul este că **acs.curs.pub.ro** folosește **HTTPS**, deci întreg traficul este criptat. **aavtrain.com** folosește HTTP, fapt ce îl face vulnerabil la atacuri de tip [[https://en.wikipedia.org/wiki/Man-in-the-middle_attack|Man-in-the-middle]], adică exact ce a făcut Trudy. | ||
| - | | ||
| - | | ||