33 0 730KB
Laborator Wireshark: Introducere Laboratoare Wireshark Înţelegerea noastră asupra protocoalelor de reţea poate fi adesea aprofundată „observând protocoalele în acţiune” şi „experimentând cu protocoalele” – sau cu alte cuvinte observând secvenţa de mesaje schimbate între două entităţi de protocol, studiind detaliile funcţionării protocolului, determinând protocoalele să execute anumite acţiuni iar apoi observând aceste acţiuni precum şi consecinţele lor. Aceste lucruri se pot efectua întru-un mediu simulat (spre exemplu Omnet++) sau într-o reţea reală cum ar fi Internet-ul. Unele applet-uri Java din manual1 abordează prima variantă. În cadrul laboratoarelor Wireshark vom aborda cea dea doua variantă. Veţi rula diverse aplicaţii de reţea în diverse scenarii folosind calculatorul din laborator, de acasă sau de la birou. Veţi observa „în acţiune” protocoalele din calculatorul vostru, interacţionând şi schimbând mesaje cu entităţi de protocol care se execută în altă parte undeva în Internet.
Astfel voi şi
calculatorul vostru veţi fi o parte integrată a acestor laboratoare „live”. Veţi observa şi veţi învăţă făcând. Instrumentul de bază pentru observarea mesajelor schimbate între entităţile de protocol executante se numeşte interceptor de pachete (eng. packet sniffer). Aşa cum sugerează şi numele un interceptor de pachete copiază în mod pasiv mesajele care sunt trimise şi recepţionate de către calculator; de asemenea acesta în mod tipic va stoca şi/sau afişa conţinutul diverselor câmpuri de protocol din componenţa mesajelor capturate. Interceptorul de pachete este în sine pasiv. Acesta observă mesajele trimise şi recepţionate de aplicaţiile şi protocoalele ce rulează pe calculator, însă nu trimite niciodată pachete. Similar pachetele recepţionate nu sunt niciodată adresate în mod explicit interceptorului de pachete. În schimb un interceptor de pachete recepţionează o copie a pachetelor care sunt trimise/recepţionate de aplicaţia şi protocoalele care se execută pe acea gazdă. Figura 1 prezintă structura unui interceptor de pachete. În partea dreaptă a Figurii 1 se găsesc protocoalele (în acest caz protocoalele Internet) şi aplicaţiile (cum ar fi un navigator web sau client ftp) care rulează în mod normal pe acel calculator. Interceptorul de pachete figurat în dreptunghiul punctat din Figura 1 reprezintă un supliment la software-ul instalat pe calculator şi constă din două părţi. Biblioteca de interceptare a pachetelor recepţionează o copie a fiecărui cadru de nivel legătură de date care este trimisă sau recepţionată pe acel calculator. Reamintiţi-vă faptul că mesajele schimbate între protocoalele de nivel înalt cum ar fi HTTP, FTP, TCP, UDP, DNS sau IP sunt eventual încapsulate în cadre de nivel legătură de date ce sunt transmise pe mediul fizic cum ar fi cablul UTP de la Ethernet. În Figura 1 se presupune că mediul fizic aparţine tehnologiei Ethernet iar astfel toate protocoalele de nivel superior sunt încapsulate în cadre 1
Toate referinţele din acest laborator sunt relative la Computer Networking: A Top-down Approach, 5th edition.
1
Laborator Wireshark: Introducere Ethernet. Interceptarea tuturor cadrelor de nivel legătură de date furnizează toate mesajele trimise/recepţionate de toate protocoalele şi aplicaţiile care se execută pe acel calculator. Interceptor de pachete Analizor de pachete
interceptare pachete (pcap)
aplicaţie
Aplicaţie (ex: navigator www, client ftp)
sistem de operare
Transport (TCP/UDP)
Copie a cadrelor Eth. trimise/primite
Reţea (IP) Leg. de date (Eth.)
spre/de la reţea
Fizic spre/de la reţea
Figura1: Structura interceptorului de pachete Cea de a doua componentă a unui interceptor de pachete este analizorul de pachete, care afişează conţinutul tuturor câmpurilor dintr-un mesaj de protocol. Pentru a putea proceda astfel analizorul de pachete trebuie să „înţeleagă” structura tuturor mesajelor schimbate de protocoale. Spre exemplu să presupunem că am fi interesaţi de afişarea diverselor câmpuri din mesajele schimbate de protocolul HTTP din Figura 1. Analizorul de pachete înţelege formatul cadrelor Ethernet şi poate astfel să identifice datagrama IP dintr-un cadru Ethernet. De asemenea înţelege formatul datagramei IP şi astfel poate extrage segmentul TCP din datagrama IP. În final înţelege structura segmentului TCP şi poate extrage mesajul HTTP conţinut în acel segment. În cele din urmă analizorul înţelege protocolul HTTP şi astfel, de exemplu, ştie că primii octeţi dintr-un mesaj HTTP conţin şirul de caractere „GET” , „POST” sau „HEAD”, aşa cum este indicat în Figura 2.8 din text. Pentru
aceste
laboratoare
vom
utiliza
interceptorul
de
pachete
Wireshark
(http://www.wireshark.org) ce permite afişarea conţinutului mesajelor trimise/recepţionate de protocoalele aflate pe diverse niveluri ale stivei de protocoale. (Tehnic Wireshark este un analizor de pachete ce foloseşte o bibliotecă din calculator ce permite interceptarea pachetelor -- libpcap). Wireshark este un analizor liber de protocoale de reţea ce rulează pe sistemele de operare Windows, Linux/Unix şi Mac. Este un analizor de pachete ideal pentru laboratoarele noastre – este stabil, dispune de documentaţie detaliată (http://www.wireshark.org/docs/wsug_html_chunked/), pagini de manual (http://www.wireshark.org/docs/wsug_html_chunked/), precum şi o listă detaliată de întrebări frecvente (http://www.wireshark.org/faq.hrml), funcţionalitate bogată ce include capabilitatea de a analiza sute de protocoale precum şi o bună interfaţă utilizator. Funcţionează pe
2
Laborator Wireshark: Introducere calculatoare cu Ethernet, Token-Ring, FDDI, serială (PPP sau SLIP), WLAN 802.11 sau conexiuni ATM (cu condiţia ca sistemul de operare să permită).
Obţinerea Wireshark Pentru a putea rula Wireshark aveţi nevoie de acces la un calculator care dispune atât de Wireshark cât şi de biblioteca de captură libpcap sau WinPCap. Atunci când instalaţi Wireshark se va instala în mod automat şi biblioteca libpcap dacă aceasta nu este deja instalată. Pentru o listă a sistemelor de operare suportate precum şi o listă a site-urilor de unde se poate descărca Wireshark vizitaţi http://www.wireshark.org/download.html . Descărcaţi şi instalaţi programul Wireshark:
Accesaţi http://www.wireshark.org/download.html , descărcaţi şi instalaţi Wireshark
pe calculatorul vostru (Windows). Pe sistemele de operare de tip Linux puteţi instala Wireshark folosind managerul de pachete: yum install wireshark (Fedora) sau apt-get install wireshark (Ubuntu).
Descărcaţi ghidul de utilizare Wireshark
Lista de întrebări frecvente (FAQ) a Wireshark-ului pune la dispoziţie o serie de sugestii utile precum şi alte informaţii interesante mai ales dacă întâmpinaţi dificultăţi la instalarea sau rularea Wireshark.
Rularea Wireshark Atunci când rulaţi programul Wireshark se va afişa o interfaţa grafică utilizator similară cu cea din Figura 2. Iniţial în ferestre nu vor fi afişate nici un fel de date. Interfaţa grafică a Wireshark dispune de şase componente majore: Meniurile de comandă sunt meniuri standard de tip trage jos localizate în partea superioară a ferestrei. De interes pentru noi sunt meniurile File şi Capture. Meniul File permite salvarea pachetelor de date capturate sau deschiderea unui fişier ce conţine pachete de date capturate anterior precum şi părăsirea aplicaţiei Wireshark. Meniul Capture permite demararea procesului de capturare a pachetelor.
3
Laborator Wireshark: Introducere Meniuri de commandă Specificare filtru de afişare
Lista pachetelor capturate
Detaliile antetului pachetului selectat
Conţinutul pachetului în ASCII sau hexazecimal Bară de stare
Figura 2. Interfaţa grafică utilizator a programului Wireshark Fereastra cu listingul pachetelor afişează sumarul pe o linie pentru fiecare pachet capturat, incluzând numărul de ordine al pachetului (asignat de Wireshark; acesta nu este un număr de secevenţa conţinut în vreun antet de protocol), momentul de timp la care pachetul a fost capturat, adresa sursă şi destinaţie a pachetului, tipul de protocol precum şi informaţii specifice protocolului căruia îi aparţine pachetul respectiv. Tipul de informaţi afişate în linia de sumar poate fi modificat din meniul Edit->Preferences->User Interface->Columns (Pentru detalii consultaţi manualul). Lista pachetelor poate fi sortată în funcţie de oricare din criteriile enumerate făcând clic pe numele coloanei. Câmpul protocol indică protocolul de la cel mai înalt nivel din stivă care a trimis sau recepţionat pachetul, sau cu alte cuvinte protocolul care este sursa sau destinaţia finală pentru acel pachet (cu condiţia să poată fi interpretat de Wireshark). Fereastra cu detaliile antetelor pachetelor pune la dispoziţie detalii despre pachetul selectat în fereastra de listare a pachetelor. (Pentru a selecta un pachet în fereastra de listare a pachetelor plasaţi cursorul mausului deasupra liniei de sumar a pachetului din fereastra de listare şi efectuaţi clic cu butonul din stânga). Aceste detalii includ informaţii despre cadrul Ethernet (considerând că pachetul a fost trimis/recepţionat pe o interfaţa Ethernet) şi datagrama IP conţinută în acel pachet. Detaliile IP sau Ethernet afişate pot fi extinse sau restrânse făcând clic pe căsuţele plus sau minus din stânga cadrului Ethernet sau datagramei IP din fereastra de detalii. Dacă 4
Laborator Wireshark: Introducere pachetul conţine un segment TCP sau UDP vor fi afişate detaliile TCP sau UDP acestea putând fi extinse sau restrânse. În final sunt afişate detalii despre protocolul care a emis sau recepţionat pachetul, protocol aflat la cel mai înalt nivel. Fereastra cu conţinutul pachetului afişează întregul conţinut al cadrului capturat, atât în format hexazecimal (coloana din mijloc) cât şi în format ASCII (coloana din dreapta). In bara de stare aflata în extremitatea inferioară este afişat numele fişierului în care se salvează datele precum şi numărul de pachete capturate, afişate sau respinse . În partea superioară a interfeţei grafice utilizator se găseşte câmpul de specificare a filtrului de afişare, unde poate fi introdus un nume de protocol sau alte informaţii pentru a filtra pachetele afişate în fereastra de listare (precum şi în fereastra cu detalii sau conţinut). În exemplul de mai jos vom folosi filtrul de pachete pentru a ascunde pachetele ce nu conţin mesaje HTTP.
Efectuarea unei rulări de test cu Wireshark Cea mai buna metoda de a învăţa să utilizaţi un program nou este să experimentaţi cu el. Vom considera că dispuneţi de un calculator conectat la Internet printr-o interfaţa Ethernet cablată. Efectuaţi următorii paşi: Lansaţi navigatorul vostru Web preferat; acesta va afişa pagina de start configurată. Lansaţi programul Wireshark cu drepturi de administrator (root). Veţi vedea iniţial o fereastră similară cu cea din Figura 2, însă fără pachete în fereastra de listare, detalii sau conţinut întrucât Wireshark nu a demarat procesul de capturare a pachetelor. Pentru a începe capturarea pachetelor selectaţi meniul Capture apoi selectaţi Options. Se va afişa fereastra Wireshark: Capture Options aşa cum este indicat în Figura 3. Puteţi folosi valorile implicite din această fereastră, însă debifaţi Hide capture info dialog (rom. Ascunde dialogul informaţii captură) de la Display Options (rom. Opţiuni afişare). Interfeţele de reţea (conexiunile fizice) de care dispune calculatorul sunt afişate în meniul de tip trage-jos Interface aflat în extremitatea superioară a ferestrei Capture Options. În situaţia în care calculatorul dispune de mai multe interfeţe de reţea active (aveţi atât o interfaţa radio cât şi o interfaţă Ethernet cablată) este necesar să selectaţi interfaţa care va fi utilizată pentru interceptarea pachetelor trimise/recepţionate. După ce aţi selectat interfaţa de reţea (sau dacă folosiţi interfaţa implicită din Wireshark) apăsaţi Start. Din acest moment va începe interceptarea pachetelor – toate pachetele trimise/recepţionate de calculator folosind interfaţa selectată vor fi interceptate de Wireshark.
5
Laborator Wireshark: Introducere
Figura 3. Fereastra Wireshark cu opţiuni pentru capturare După demararea procesului de capturare a pachetelor se va afişa o fereastră cu sumarul pachetelor capturate aşa cum este arătat în Figura 4. În această fereastră este prezentată o statistică a numărului de pachete de diverse tipuri capturate şi de asemenea (foarte important) fereastra conţine butonul Stop ce permite oprirea procesului de capturare. Nu opriţi încă procesul de capturare!
Figura 4. Sumarul pachetelor capturate 6
Laborator Wireshark: Introducere În
timpul
în
care
Wireshark
rulează
introduceţi
următorul
URL:
http://gaia.cs.umass.edu/wireshark-labs/INTRO-wireshark-file1.html şi aşteptaţi ca pagina cerută să fie afişată în navigator. Pentru a afişa pagina navigatorul va contacta server-ul http gaia.cs.umass.edu cu care va efectua un schimb de mesaje HTTP pentru a descărca pagina, aşa cum s-a discutat în secţiunea 2.2. Cadrele Ethernet ce conţin aceste mesaje HTTP vor fi interceptate de Wireshark. După ce navigatorul a afişat pagina INTRO-wireshark-file1.html opriţi interceptarea pachetelor apăsând butonul Stop din fereastra de captură. Această acţiune va avea ca afect dispariţia ferestrei de captură iar Wireshark va afişa în fereastra principală toate pachetele interceptate de la începutul procesului de captură. Fereastra principală Wireshark va arată similar cu imaginea din Figura 2. În acest moment dispuneţi de pachetele de date ce conţin toate mesajele protocoalelor schimbate între calculatorul vostru şi celelalte entităţi de reţea. Mesajele HTTP schimbate cu serverul gaia.cs.umass.edu trebuie să apară undeva în listingul pachetelor. Vor exista afişate de asemenea şi alte tipuri de pachete (diverse tipuri de protocoale afişate în coloana Protocol din Figura 2). Deşi singura acţiune pe care aţi executat-o a fost descărcarea unei pagini web au existat în mod evident mai multe protocoale ce rulează pe calculator care nu sunt vizibile pentru utilizator. Veţi învăţa mai multe despre aceste protocoale pe măsură ce avansează cursul. Pentru moment este suficient să ştiţi că în fundal au loc mai multe acţiuni decât „ceea ce se vede cu ochiul liber”. Tastaţi „http” (fără ghilimele şi cu litere mici – în Wireshark toate numele de protocoale se scriu cu litere mici) în zona de specificare a filtrului de afişare din partea superioară a ferestrei Wireshark. Apoi apăsaţi Apply (în dreapta câmpului de dialog unde aţi scris „http”). Aceasta acţiune va avea ca efect afişarea în fereastra de listare doar a mesajelor HTTP. Selectaţi primul mesaj http care apare în fereastra de listare a pachetelor. Acesta ar trebui să fie un mesaj HTTP GET care a fost trimis de calculatorul vostru către serverul HTTP gaia.cs.umass.edu. Atunci când selectaţi mesajul HTTP GET se vor afişa în fereastra de detalii antete informaţii cu privire la cadrul Ethernet, datagrama IP, segmentul TCP şi antetul mesajului HTTP2. Făcând clic pe căsuţele minus din stânga ferestrei cu detaliile pachetului restrângeţi informaţia afişată despre cadru, Ethernet, Protocolul Internet şi TCP. Extindeţi informaţia afisată cu privire la protocolul HTTP. Imaginea obţinută ar trebui să arate similar cu Figura 5. (Observaţi informaţia restrânsă afişată pentru toate protocoalele cu excepţia HTTP, precum şi informaţia extinsă cu privire la protocol pentru HTTP afişată în fereastra cu antetele pachetului). Părăsiţi aplicaţia Wireshark.
2
Reamintiţi-vă că mesajul HTTP GET trimis către serverul web gaia.cs.umass.edu este conţinut într-un segment TCP, care este conţinut (încapsulat) într-o datagramă IP, care este încapsulată într-un cadrul Ethernet. Dacă procesul de încapsulare nu va este familiar recitiţi secţiunea 1.5 din manual.
7
Laborator Wireshark: Introducere Felicităti! Aţi parcurs primul laborator.
Ce trebuie să reţineţi Scopul acestui prim laborator a fost să vă iniţieze în utilizarea Wireshark. Abilitatea de a răspunde la următoarele întrebări va demonstra că sunteţi capabili să porniţi Wireshark, să demaraţi interceptarea şi că aşi explorat unele din capabilităţile programului. Pe baza experimentelor efectuate cu Wireshark răspundeţi la următoarele întrebări: 1. Enumeraţi diversele protocoale care apar în coloana protocol din lista de pachete nefiltrată obţinută de la pasul 7. 2. Care a fost durata de timp scursă din momentul trimiterii mesajului HTTP GET şi până la obţinerea răspunsului HTTP OK.? (în mod implicit valoarea din coloana Time a ferestrei de listare a pachetelor reprezintă timpul în secunde scurs din momentul demarării precesului de captură. Pentru a afişa câmpul timp în format ora, mergeţi în meniul View, alegeţi Time Display Format şi selectaţi Time of Day). 3. Care este adresa Internet a gaia.cs.umass.edu (cunoscut şi ca www-net.cs.umass.edu)? Care este adresa Internet a calculatorului pe care lucraţi? 4. Tipăriţi mesajele HTTP afişate la pasul 9. Pentru a face acest lucru, mergeţi in meniul File, selectaţi Print iar apoi alegeţi „Selected Packets Only” şi „Print as displayed” după care apăsaţi OK.
8
Laborator Wireshark: Introducere
Figura 5. Fereastra Wireshark după pasul 9 Adaptat
după
http://gaia.cs.umass.edu/wireshark-
labs/Wireshark_INTRO_Sept_15_2009.pdf
9