Wireshark + GNS3 simulacija krađe lozinke preko HTTP ili Telnet kanala

Uvod

Krađa korisničkih podataka, lozinki i svaki vid neovlašćenog korišćenja informacija koje bi trebalo da budu naše i samo naše, postaje sve češći problem. Ono što često predstavlja nepoznanicu, jeste činjenica da na bezbednost mrežne privatnosti u najvećoj meri utiče izbor mrežnih protokola koje koristimo radi slanja i dobavljanja podataka.

U narednom tekstu sledi opis načina na koji funkcioniše mreža, upoznavanje sa pojmom i tipovima mrežnih protokola, demonstracija situacija u kojima loš izbor protokola može dovesti do problema bezbednosti, i uvođenje alternativa koje mogu pospešiti mrežnu sigurnost i rešiti postojeće probleme.

Kako funkcioniše mreža?

Najpogodniji način da se objasni kako funkcioniše mreža jeste kroz objašnjenje funkcionisanja Interneta, koji je moćan upravo zbog načina na koji prosleđuje podatke od jednog do drugog korisnika. Prilikom slanja bilo kakve informacije putem mreže, naš uređaj tu informaciju najpre pakuje u manje pakete, kojih može da bude i više, u zavisnosti od veličine poruke. Taj paket se zatim prosleđuje narednom uređaju koji ima znanje o odredištu i opštem smeru kretanja datog paketa. On zatim zatim prosleđuje paket nekom narednom ure]aju (ruteru), i sve tako dok paket ne stigne do svog cilja.

Ovaj način funkcionisanja možemo još da pojednostavimo. Zamislite da želite da pošaljete pismo osobi koja se nalazi na drugom kraju sobe, a unutar te prostorije se između vas nalazi gomila ljudi. Na koverti pisma je zapisana odredišna osoba, tako da će pismo da se prosleđuje od osobe do osobe dok ne stigne do odredišne osobe, na način gde svaka osoba najpre pročita ime ciljne osobe kojoj se koverta šalje, a zatim pismo prosleđuje osobi za koju misli da je bliža tom cilju. Slična analogija, s tim što računari imaju malo bolju ideju o tome kako efikasnije prosleđivati paket (pismo), kako bi on brže došao do svog odredišta.

U proseku, paket (koverta) prođe preko 17 uređaja (osoba) na putu do odredišta. Sadržina koverte je slobodna za čitanje osobama, ako oni tako izaberu da urade. Mnogi ljudi neće pročitati sadržaj, jer poštuju pravo privatnosti. Međutim, uvek postoji neko ko će to uraditi, što veoma narušava pitanje bezbednosti i privatnosti naših informacija.

Šta su to mrežni protokoli?

Iz dosadašnje priče nam je jasan način na koji se informacije šalju kroz mrežu. Međutim, slično kao i kod ljudi, uvek moraju da postoje određeni zakoni i pravila, pomoću kojih se sama komunikacija između računara odvija. Rešenje za ovaj problem predstavljaju mrežni protokoli – skupovi pravila i konvencija koji se koriste prilikom slanja podataka putem mreže.

Dakle, mrežni protokoli definišu način na koji će različiti uređaji, povezani mrežom, komunicirati u okviru nje. Kada računari komuniciraju u okviru neke mreže, moraju da se „dogovore“ oko zajedničkog jezika i skupa pravila korišćenja tog jezika, kako bi razumeli jedni druge.

Primeri standardnih mrežnih protokola su: TCP (Transmission Control Protocol), UDP (User Datagram Protocol), IP (Internet Protocol), ARP (Address Resolution Protocol), HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), Telnet itd.

Dva protokola na koje ćemo se fokusirati su HTTP i Telnet. Napravimo prvo proste razlike među njima:

  • Telnet protokol se koristi radi prijavljivanja na neki udaljeni remote računar. On omogućava korisniku da se prijavi na taj udaljeni računar poput standardnog korisnika i da tu ima sve privilegije specifične za tip uloge koji taj korisnik poseduje. Port zadužen za Telnet je port 23.
  • HTTP protokol podržava komunikaciju između veb pretraživača i veb servera. Na vebu nam HTTP protokol omogućava da zatražimo specifične fajlove sa udaljenih računara, ali pritom ne zahteva da prilikom postavljanja zahteva budemo prijavljeni na tom udaljenom uređaju. Radi u okviru TCP porta 80.

Telnet protokol

Bez zalaženja u detalje tehničkih pojedinosti, Telnet predstavlja veoma star i jednostavan protokol koji se najčešće koristi da osigura korisniku jednog računara sesiju za korišćenje komandne linije na drugom računaru.

Jednostavnost Telnet protokola predstavlja ujedno njegovu najveću vrlinu, ali i najozbiljniju manu. Jedan od najvećih problema sa Telnetom je taj što se sve što pošaljemo šalje preko mreže u neizmenjenom formatu. Ovo predstavlja problem primarno zbog toga što korisnici najpre treba da se prijave u okviru udaljenog računara kako bi ga koristili, a to dalje znači da su njihovo korisničko ime i lozinka poslati širom mreže u čistom tekstualnom obliku.

Ako se setimo kako Internet funkcioniše, ovo znači da je način na koji korisničko ime i lozinka dospevaju do odredišta identični onom slanju koverte i prosleđivanju te koverte kroz ne tako poverljivu masu ljudi. Razlog zašto je ovo loše je očigledan. Možda nemamo poverenja u sve ljude ili računare koji se nalaze na putu do cilja, a koji su deo lanca za prenošenje naših informacija. Ako bi ti ljudi ili računari poželeli da dođu u neovlašćen posed naših informacija, mogli bi to vrlo jednostavno da urade. Zatim bi mogli da se prijave na računar koji smo koristili, praveći se da su mi.

Pronalaženje alternativa – SSH

Deo problema kod korišćenja Telnet protokola je taj što mnogi ljudi ne znaju da postoje alternative koje su bolje za obavljanje istog posla. Naime, postoji protokol zvani SSH (Secure Shell), koji omogućava iste osnovne funkcionalnosti poput Telneta – obezbeđuje interfejs komandne linije do udaljenog uređaja na naizgled identičan način, ali sa jednom bitnom razlikom: sve što se šalje i vraća nazad je kriptovano na takav način da samo dva računara koja su uključena u konverzaciju to razumeju. Na taj način, lozinke, korisnička imena, i druge osetljive informacije možemo bezbedno da pošaljemo na odredište, a da pritom nemamo strah od neovlašćenog čitanja i zloupotrebe.

SSH je zapravo bezbedna zamena Telnetu. SSH takođe ima dodatke koje Telnet ne poseduje – na primer, može da komprimuje saobraćaj između dva računara tako da zauzima manje prostora (ili protoka) nego što bi Telnetu bilo potrebno za istu operaciju, i to uz korišćenje čistog neizmenjenog teksta. SSH je takođe moguće koristiti i za bezbedan transfer fajlova i tunelovanje konekcije.

GNS3 + Wireshark primer presretanja osetljivih podataka korišćenjem Telnet protokola

Već smo objasnili koje su to loše strane korišćenja Telnet protokola, i kako korišćenje zamenskog SSH protokola može umnogome poboljšati bezbednost. Ono što sledi u nastavku jeste jednostavna realizacija presretanja osetljivih podataka, nezaštićenih od strane Telnet protokola, kao dokaz problema bezbednosti.

Podešavanje okruženja

Počećemo od osnovnih instalacija koje su potrebne za realizaciju ovog praktičnog primera. Najpre, biće nam potreban GNS3 – program za projektovanje i simulaciju računarskih mreža. Na Linux Ubuntu 20.04 moguće je instalirati GNS3 simulator na sledeći način:

  • Dodavanje GNS PPA foldera
    sudo add-apt-repository ppa:gns3/ppa
    Zatim će od vas biti zatražena lozinka. Nakon unosa lozinke, kliknuti ENTER za nastavak.
  • Instaliranje GNS3 GUI-ja i GNS3 servera
    sudo apt update
    sudo apt install gns3-server gns3-gui
    Brojni paketi će biti instalirani na vašem sistemu, potrebno je da unesete slovo y da biste prihvatili instalaciju.
  • Pokretanje GNS3 simulatora
    Nakon uspešne instalacije, GNS3 je moguće pokrenuti iz liste aplikacija, ili putem terminala, korišćenjem naredne komande:
    gns3

Prilikom prvog otvaranja simulatora, potrebno je sprovesti sitna podešavanja. Najpre će se otvoriti prozor u okviru koga ćemo izabrati da se sve GNS3 mrežne simulacije izvršavaju u lokalu.

Zatim je potrebno potvrditi konfiguraciju lokalnog servera. Preostaje nam još da potvrdimo da je konekcija uspešno obavljena, nakon čega možete kliknuti na Finish i završiti GNS3 setup.

Zarad simulacije ćemo koristiti Cisco rutere, a za to nam je potrebno da instaliramo dynamips paket. Na Linux-u je to moguće odraditi vrlo jednostavno:

sudo apt-get update
sudo apt-get install dynamips

Takođe, potrebno je preuzeti i softver rutera, kojih podrazumevano nema u okviru programa GNS3. Možete ih naći i preuzeti na linku.

Da bi dohvatanje i presretanje paketa bilo moguće, potrebno je instalirati i Wireshark – besplatan alat za analizu mreže, koji se koristi za ispitivanje podataka i paketa koji se kreću kroz mrežu, kao i njihovo dekodiranje, što nam omogućava njihovu analizu. Ukoliko koristite Windows ili Mac OS, Wireshark možete preuzeti sa zvaničnog sajta. Što se Linux sistema tiče, moguće je naći Wireshark u okviru podrazumevanog sistemskog paketa, ili ga instalirati preko terminala na sledeći način:

sudo apt update
sudo apt upgrade
sudo apt install wireshark

Simulacija

Kada je okruženje podešeno, možemo preći na realizaciju simulacije. Najpre je potrebno napraviti sledeću jednostavnu šemu:

Na slici možemo videti dva Cisco7200 rutera koji su povezani jednostavnom Ethernet vezom. Ideja je da R1 pokuša da se pomoću Telnet protokola uloguje na R2, pritom dostavljajući šifru. Pomoću Wireshark-a, imamo mogućnost praćenja paketa koji se šalju vezom između njih, a kako Telnet protokol podatke šalje u čistom, neizmenjenom tekstualnom formatu, to znači da ćemo moći vrlo jednostavno da presretnemo šifru za prijavljivanje na udaljeni uređaj, u svom originalnom obliku.

Pokrećemo simulaciju, i konfigurišemo rutere:

R1
R1#enable
R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 10.0.0.1 255.0.0.0
R1(config-if)#no shut
R1(config-if)#end

R2
R2#enable
R2#conf t
R2(config)#int f0/0
R2(config-if)#ip add 10.0.0.2 255.0.0.0
R2(config-if)#no shut
R2(config-if)#end

Testiramo konekciju koristeći ping:

R1
R1#ping 10.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms

R2
R2#ping 10.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms

Sada kada su ruteri povezani, želimo da dodamo telnet na ruter R2:

R2
R2#conf t
R2(config)#line vty 0 9
R2(config-line)#password cisco
R2(config-line)#login
R2(config-line)#exit
R2(config)#end

Pokrenemo simulaciju, i kliknemo na opciju Start Capture u okviru veze između rutera. Otvoriće se Wireshark. Sada želimo da se preko Telnet protokola prijavimo u okviru R2 sa uređaja R1.

R1
R1#telnet 10.0.0.2
Trying 10.0.0.2 ... Open

User Access Verification

Password:

Kao password unosimo lozinku cisco koju smo postavili u okviru R2 rutera. Sada možemo da se vratimo na Wireshark, koji će izgledati ovako:

Desnim klikom na poslednju 10.0.0.1 – 10.0.0.2 stavku, izaberemo opcije Follow > TCP Stream, i dobijamo šifru korišćenu za prijavljivanje na R2, u čisto tekstualnom formatu:

HTTP

HTTP (Hypertext Transfer Protocol) je protokol koji služi za prenos hiperteksta na Internetu, odnosno, definiše pravila po kojima se podaci prenose između veb servera i veb klijenta. Ovakav prenos podataka funkcioniše po principu zahtev/odgovor.

Prenos podataka putem HTTP protokola može se objasniti na sledeći način: HTTP klijent (najčešće veb preglednik) inicira prenos podataka tako što uspostavlja TCP/IP vezu sa nekim udaljenim veb serverom koji se nalazi na određenom portu. HTTP server, sa druge strane, konstantno osluškuje zahteve na tom portu (za HTTP je to uglavnom port 80), i čeka da klijent pošalje svoj zahtev. Nakon pristizanja zahteva, HTTP server vraća odgovor klijentu, i konekcija među njima se prekida do narednog zahteva.

Iako sve deluje jednostavno realizovano i pouzdano, ipak postoji jedan problem sličan onom sa kojim se susrećemo kod Telnet protokola: HTTP podaci koji se razmenjuju između veb servera i klijenta nisu šifrovani, tako da je jasno da se time bezbednost naših podataka i te kako dovodi u pitanje. Naročito je bitno na ovo obratiti pažnju prilikom korišćenja sajtova koji koriste osetljive podatke poput brojeva platnih kartica, ili sajtova sa delom za prijavljivanje putem korisničkog imena i lozinke.

Pronalaženje alternativa – HTTPS

Radi povećanja bezbednosti osetljivih podataka, najbolja praksa je korišćenje HTTPS-a, gde poslednje slovo S označava Security, odnosno bezbednost. HTTPS predstavlja bezbednu verziju HTTP protokola, koja uključuje korišćenje SSL (Secure Socket Layer) sertifikata, koji kreira bezbednu šifrovanu konekciju između veb servera i veb pretraživača.

Wireshark presretanje lozinke prosleđene nebezbednim HTTP protokolom

Opet ćemo iskoristiti Wireshark kako bismo dohvatili osetljive podatke koji se u nešifrovanom formatu prenose putem HTTP protokola, i na taj način dokazali prethodno tvrđenje o ugroženoj bezbednosti na sajtovima koji koriste čist HTTP protokol.

Najpre ćemo otvoriti Wireshark i izabrati opciju za praćenje celokupnog saobraćaja, kako bismo se kasnije vratili na presretnute podatke o prijavljivanju.

Za početak je potrebno pristupiti bilo kom HTTP sajtu, koji će često u veb pretraživačima biti naznačen kao nebezbedan (unsecure). Za potrebe realizacije krađe lozinke, izabraćemo sajt za testiranje koji poseduje samo običnu formu za prijavljivanje. U okviru polja za unos, unećemo korisničko ime: test i lozinku: test.

Nakon klika na Login, vraćamo se na Wireshark, u okviru koga možemo da zaustavimo praćenje saobraćaja. S obzirom na to da nas zanima saobraćaj koji se odnosi na HTTP zahteve, primenićemo filter kojim ćemo postići prikaz svih HTTP zahteva. To činimo tako što u polje za filterisanje unosimo “http”.

Ono što nas sada zanima jesu POST zahtevi, koje šaljemo prema serveru. Pronađemo zahtev takvog tipa i kliknemo na njega, nakon čega će se izlistati informacije o izabranom zahtevu.

Zanima nas deo u okviru polja HTML Form URL Encoded, gde možemo videti korisničko ime i šifru koju smo ukucali u neizmenjenom, nešifrovanom obliku.

Zaključak

Kroz demonstrirane primere presretanja osetljivih informacija, postaje jasno da je vrlo lako i jednostavno ugroziti bezbednost naših ličnih podataka. Korišćenje nebezbednih protokola znatno pojednostavljuje proces krađe, i dovodi u pitanje poverljivost informacija. Kako bismo uticali na to, potrebno je nebezbedne protokole zameniti onim koji se više angažuju po pitanju bezbednosti. Dakle, umesto Telnet protokola koristiti SSH i umesto HTTP protokola, koristiti HTTPS. Naravno, i u slučaju kada se koriste protokoli koji su bezbedni, može doći do narušavanja bezbednosti, ali će to biti dosta teže i mnogo ređe.

Osim toga, kroz date primere je bilo moguće i upoznati se bolje sa Wireshark-om, koji predstavlja zgodnu alatku za praćenje saobraćaja mreže i bolje razumevanje međumrežne komunikacije. Na način kako je demonstrirano presretanje paketa koji se šalju Telnet ili HTTP kanalima, moguće je realizovati presretanje podataka koji se šalju znatno bezbednijim protokolima, poput HTTPS-a.

Korisni linkovi

Autor: Marija Stanic

Student završne godine Prirodno-matematičkog fakulteta u Kragujevcu.

Marija Stanic

Student završne godine Prirodno-matematičkog fakulteta u Kragujevcu.