This is an old revision of the document!


Laborator 10. Clienți de rețea

Cunoștințe și abilități ce vor fi dobândite

  • Identificarea porturilor deschise pe un sistem
  • Folosirea clienților de rețea în linia de comandă în Linux (netcat, wget, curl, mail)
  • Accesarea serviciilor de web, transfer de fișiere (FTP) și e-mail

Pregătire infrastructură de laborator

  • Vom rula o masină virtuală în cloud-ul facultății
  • Pentru a porni o astfel de masină urmăriți tutorialul de la această adresă
  • Pentru a pregăti configurația de laborator, pe mașina virtuală (stația host) folosiți comenzile următoare din contul utilizatorului root de pe stația host (puteți da copy/paste la comenzi în terminal):
    root@host:~# wget https://raw.github.com/RL-UPB/rl-lab-prepare/master/rl-lab-10-prepare
    root@host:~# chmod +x rl-lab-10-prepare
    root@host:~# ./rl-lab-10-prepare

    Comanda durează circa 20 de secunde. Lasați-o să ruleze complet.

  • Deschideți trei noi tab-uri în terminal (folosiți combinația de taste Ctrl+Shift+t), și conectați-vă, din nou, la mașina virtuală folosind comanda ssh de mai sus.
    • De pe cele trei noi tab-uri, conectați-vă la cele trei containere (red, green și blue).

Detalii rulare masina virtuala VMware local

Detalii rulare masina virtuala VMware local

  • Deschideți VMware și porniți mașina virtuală RL_lab.
  • Dorim să folosim terminalul sistemului fizic și să lucrăm peste SSH cu mașina virtuală VMware (denumită și host). În acest fel vom putea folosi copy-paste în terminal sau alte facilități. Pentru aceasta urmați pașii de mai jos:
    • Autentificați-vă în mașina virtuală folosind contul root cu parola student.
    • Aflați adresa IP a mașinii virtuale de pe interfața eth0:
      root@host:~# ifconfig eth0
    • De pe sistemul fizic, deschideți un terminal și realizați o sesiune SSH folosind:
      student@mjolnir:~$ ssh root@$ADRESA_IP_MV

      unde $ADRESA_IP_MV este adresa IP a mașinii virtuale așa cum ați obținut-o mai sus.

Pentru a vedea cum accesați stațiile red, green și blue (containere LXC configurate peste mașina virtuală VMware - stația host) urmăriți pașii de aici.

Conturile de acces la mașina virtuală (stația host) sunt (username:parola):

  • root:student
  • student:student

Topologie

Exerciții

În cadrul exercițiilor din laboratoarele de Linux vom folosi topologia de mai sus.

01. [10p] Aflare adresă IP publică

Pentru început, vrem să aflăm adresa IP publică cu ajutorul căreia ieșim în internet de pe mașina virtuală. Sistemul de pe care lucrați în cadrul acestui laborator se află în spatele unui rețele cloud private și poate accesa internetul datorită unei configurații NAT (Network Address Translation) și are un IP privat alocat de controller-ul de rețea cloud. Cum aflăm adresa noastră publică ?

Reamintiți-vă care sunt clasele de adrese IP private și care sunt cele pentru adrese IP publice.

02. [10p] Aflare informații despre adresa IP publică

Mai departe vrem să aflăm din ce subnet face parte adresa publică, cine se ocupă de aceasta, cărei organizații ii aparține și cărei țări a fost alocată.

Whois este un protocol cerere răspuns care este folosit pentru a interoga informații despre resurse din Internet precum: numele de domeniu, subnet-uri de adrese IP sau sistemul autonom (autonomous system) din care face parte. Vom folosi utilitarul whois pentru a afla acest informații despre adresa IP descoperită la exercițiul anterior:

root@host: whois <ip_ex_1>

Ce informații putem observa în output-ul obținut în urma rulării acestei comenzi ? Care este subnet-ul din care face parte adresa noastră publică ?

03. [10p] DNS Resolution

Scopul acestui exercițiu constă în aflarea unor informații de DNS despre un domeniu.

Tipurile de înregistrări de DNS pot oferi informații resursele înregistrate și legătura dintre ele:

  • A - înregistrare directă către IP-ul ce găzduiește aplicația
  • CNAME - un alias către altă înregistrare unde ar putea fi găzduită aplicația
  • MX - înregistrare către adresa serverului de e-mail

Vom instala utilitarul necesar pentru interogările de DNS

student@aldebaran:~$ apt install dnsutils

Folosim utilitarul pentru a afla informații despre înregistrări de DNS specifice

student@aldebaran:~$ nslookup -querytype=CNAME erp.codacloud.net
student@aldebaran:~$ nslookup -querytype=NS cs.pub.ro
student@aldebaran:~$ nslookup -querytype=MX cs.pub.ro
student@aldebaran:~$ nslookup -querytype=A erp.codacloud.net

04. [15p] Descoperirea porturilor TCP deschise

Mai departe, ne propunem să aflăm ce porturi sunt deschise pe anumite servere pentru a vedea serviciile ce rulează și versiunile acestora ce pot avea vulnerabilități.

În cadrul acestui exercitiu (precum si a exercitiilor urmatoare), vom folosi urmatoarele host-uri:

  • hermes.codacloud.net
  • midgard.codacloud.net

Folosiți comanda nmap pentru a scana aceste adrese doar pe conexiuni TCP, utilizând porturile următoare: 21, 22, 23, 25, 53, 80, 138, 443, 8000 și 8080 (am ales aceste porturi întrucât sunt cele mai uzuale porturi pentru expunerea serviciilor/aplicațiilor în rețea).

Veți observa porturi ce se află în starea open, closed, filtered (port filtrat de un firewall) și alte tipuri pe care le puteți găsi descrise aici.

05. [10p] Determinare versiuni aplicații descoperite

Pe lângă porturile expuse, descoperite anterior, am dori să aflăm și versiunile aplicațiilor și serviciilor ce rulează pe acele porturi.

Acestea sunt foarte importante când vine vorba de securitate, pentru că anumite vulnerabilități se găsesc doar pe unele versiuni.

Folosiți comanda nmap pentru a determina versiunile serviciilor ce rulează peste protocolul TCP, întâlnite la exercițiul anterior.

Căutați în manual după Version detection.

Procesul de detectare de versiuni îngreunează scanarea. Astfel, recomandăm folosirea parametrului de timing template cu valoarea maximă 5 (-T5). Acesta ne spune ca scanarea va fi foarte agresivă cu ținta (default-ul este -T3 normal mode).

Folosind această valoarea (insane mode), se pot depista mult mai ușor sistemele de securitate implementate în infrastructura țintă. Tot pentru a economisi timp, putem folosi parametrul -n pentru a nu face rezolvare de DNS.

Pentru a fi mai greu detectabili de către sistemele de securitate, este recomandat să se evite trimiterea pachetelor de ICMP (fără ping) folosind opțiunea -Pn

Pentru ca utilitarul nmap să ofere mai multe informații despre ceea ce a scanat, puteți utiliza noțiunea de verbosity.

Mai exact, puteți crește nivelul de informații afișate prin adăugarea parametrului -v. Puteți, de asemenea, crește nivelul de abundență a informației prin utilizarea unui număr mai mare de v-uri.

06. [10p] Analizarea securității rețelei prin intermediul browser-ului

Așa cum a fost menționat anterior, livrarea atacului poate consta într-un atac de tip phising prin care un utilizator ar putea descărca un executabil malițios. Următorul serviciu verifică din perspectiva utilizatorului, securitatea browser-ului folosit, de la încercarea de descărcare a unui virus până la metodele de criptare folosite de browser.

First Name: student

Last Name: rl

E-mail: student.rl@codaintelligence.com

Company website: laboratorrl.codaintelligence.com

Utilizați serviciul de mai jos, folosind credențiale oferite mai sus, pentru a verifica securitatea browser-ului folosit: CODA Intelligence | Fingerprint (codacloud.net)

07. [10p] Utilizarea serviciilor de detectare a vulnerabilităților

Culegerea informațiilor despre ținta aleasă poate fi realizată manual, așa cum am observat în cadrul exercițiilor 1-5 sau se pot utiliza servicii existente.

Două astfel de platforme pe care le vom folosi sunt dnsdumpster si shodan.

  • Dnsdumpster este o platformă care ne permite sa descoperim hosturi într-un domeniu și informații suplimentare despre acestea.
  • Shodan este o platformă ce stochează date despre sisteme conectate la internet și pe care o putem interoga pentru a obține informatii precum tehnologiile folosite, vulnerabilitățile și porturile deschise ale hosturilor.
  1. Utilizați dnsdumpster pentru a scana hermes.codacloud.net în vederea obținerii de informații despre serverele ce sunt legate de domeniu precum și despre adresa sau adresele IP ale acestuia.
  1. Utilizați shodan pentru a descoperi vulnerabilitățile hostului pe baza adresei IP obținute la subpunctul 1.

08. [15p] Rulare Denial of Service pe un server Web

La acest exercițiu ne propunem să provocăm un comportament distructiv pe un anumit serviciu. Astfel vom realiza un Denial of Service asupra unui server web. Pe red există un server web (apache2) deja instalat. Verificați dacă acesta este pornit.

root@red:~# /etc/init.d/apache2 status  # Verificați că serverul web este pornit

Pe sisteme aveți instalat un text web browser. Dați comanda elinks și accesați adresa http://192.168.1.2/. Ar trebui să obțineți pagina default a serverului web Apache2 Ubuntu.

În continuare vom folosit un utilitar de Denial of Service numit slowloris pe care il avem deja instalat pe green. Urmăriți README-ul de la această adresă.

Porniți un nou terminal pe sistemul host. Rulati tcpdump pe interfața de rețea veth-red urmărind pachetele primite. Acum puteți porni tool-ul asupra webserver-ului de pe red. Încercați să accesați din nou serverul web. Mai funcționează ?

root@student:~# tcpdump -i veth-red -n

  • Dacă server-ul web tot vă răspunde, folosiți combinatia de taste CTRL+R pentru a da refresh la pagina din elinks.
  • Dacă încă funcționează serverul, încercați să rulați tool-ul din mai multe terminale până nu mai răspunde.

9. [Bonus - 20p] Rulare Man in The Middle

În cadrul acestui exercițiu ne propunem să simulăm un atac de timp Man-in-the-middle. Pentru aceasta, vom considera statia red ca fiind sistemul de pe care se inițiază atacul și stația green sistemul victimă. Vom încerca să capturăm traficul către https://curs.upb.ro/ și să îl redirecționăm către un server web malițios aflat pe stația red. Într-un scenariu real, un atacator ar putea să creeze o replică a unui site web cu scopul de a captura comportamentul victimei sau informații cu caracter personal (parole, adrese, opțiuni etc.)

Folosind ARP spoofing, DNS spoofing, vom crea un scenariu de MiTM (Man in The Middle).

În primă instanță vom porni arpspoof:

root@red:~# arpspoof -i <interfață (red-eth0)> -t <ip_victimă 192.168.2.2> <ip_gateway 192.168.0.100> -r # apoi, în alt terminal:
root@red:~# ip a s    # pentru a vedea adresa MAC
root@green:~# arp -n    # comparați adresa MAC a statiei ''red'' cu cea înregistrată pentru gateway. Se poate observa pe mașina victimei faptul că adresa MAC a gateway-ului corespunde cu adresa MAC a adresei IP aferente atacatorului

Deoarece am pornit mai sus ARP spoofing, pachetele victimei trec pe la atacator, inclusiv cererile de tip DNS. Astfel sistemul atacator (MiTM) va răspunde la aceste cereri în locul serverelor dedicate și vor trimite drept rezoluție de nume pentru domeniul curs.upb.ro adresa IP scrisă într-un fișier hosts pe care va trebui sa il cream. În cazul de față aceasta adresa este adresa IP a atacatorului unde rulează o copie malițioasă a site-ului http://curs.upb.ro/.

root@red:~# cat hosts             
<adresa_mea_ip>    curs.upb.ro   
(folosiți TAB!)
root@red:~# dnsspoof -f hosts

Pentru a valida succesul atacului, de pe stația green rulați browser-ul text elinks si accesați pagina curs.upb.ro. Veți observa faptul că, în locul paginii clasice, vă va apărea o pagină web diferită (pagina default Apache).

Resurse:

rl/labs/10.1418890406.txt.gz · Last modified: 2014/12/18 10:13 by mihai.carabas
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