Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


IPRO - PC Magazine Romania, Noiembrie 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB

Securitatea Rețelei

Alexandru Ioan Lazăr

Instrumente (1) - Scanere

Pe vremea când autostrada informațională era doar un grup de ulițe la 300 bps, nu se auzise încă de HTTP. De fapt, nici nu se inventase e-mail-ul așa cum îl știm noi. La acel moment, vulnerabilitățile erau foarte puține, și cele mai multe doar pentru atacuri DoS (Denial of Service). De fapt, problema esențială era cea a parolei, din moment ce singura metodă de comunicare era asemănătoare cu telnet-ul actual.

Timpul a trecut, protocoalele s-au înmulțit, și odată cu ele, au apărut și o serie de vulnerabilități. Au apărut Linux, Solaris, Windows (că tot veni vorba de breșe …), Linus Torvalds, Kevin Mitnick, Wietse Wenema, Dan Farmer și toți cei care le-au călcat pe urme. Dar nici măcar mintea acestora din urmă nu poate ține minte toate setările posibile, nici toate posibilitățile de a sparge un sistem. Așa că au apărut scannerele.

Scannere și protocoale

Un scanner este un program care interoghează porturile unui calculator-țintă și întoarce informații despre acel calculator. Luna trecută amintisem în treacăt despre protocoalele de la nivelul Aplicație, și mai ales de câteva mai cunoscute: ftp, http, smtp, telnet și finger. Un scanner se bazează pe informațiile care se "scurg" prin porturi datorită acestor protocoale - mai precis, datorită demonilor lor.

Înainte de a discuta pe larg despre scannere, haideți să vedem mai întâi cum funcționează aceste protocoale și "demonii" lor. Demonii (daemons) sunt programe care ascultă anumite porturi. Atunci când tu scrii www.pcmagazine.ro și apeși <ENTER>, lansezi o cerere spre portul 80 al țintei, pe care rulează demonul httpd. Acesta "aude" cererea, și acționează în consecință.

Probabil că deja te întrebi câți demoni există. Mulți, într-adevăr...câte protocoale la nivel Aplicație, atâția demoni. Nu-i așa că e ceva în neregulă? De câtă memorie este nevoie pentru asta? Demonii aceștia nu pot sta tot timpul în memoria calculatorului pentru că ar încetini prea mult celalalte procese. În plus de asta, ce folos ar fi ca demonul ftpd (FTP) să fie activ tot timpul, în condițiile în care e folosit foarte rar? Soluția este inetd, "mama tuturor demonilor", un demon care pornește la bootarea unui sistem Linux sau UNIX (platformele Microsoft folosesc - normal - programe proprietare Microsoft, care se bazează însă pe aceleași principii). Inetd ascultă de toate porturile, și atunci când apare o cerere pe unul din ele, cedează controlul demonului corespunzător.

Demonii știu să facă multe lucruri. În afară de unul singur: nu prea știu să se apere de intruși. Inevitabil, unele informații se pot scurge prin porturi, sau pot fi obținute prin diverse cereri. Evident că unui om i-ar lua ceva timp să interogheze toate porturile… aici intervine un scanner.

Dar cum…?

Cum funcționează, deci, un scanner? Mai precis, cum poate un scanner să afle informații despre o țintă? Și în plus, de când este un administrator atât de "deștept" încât să lase informații vitale să "scape" prin porturi?

Și totuși, fiecare demon trebuie să trimită unele informații către client. Dacă știi sa programezi în Perl, vei putea face un script care să afle ce demoni ascultă porturile unei ținte, fătă cunoștiințe despre TCP/IP. De exemplu, să zicem că vreau să aflu ce serviciu rulează pe portul 22 al unei mașini. Pentru asta, ar fi destul să lansez o conexiune telnet spre acel port…

telnet 192.168.141.129 22
Trying 192.168.141.129...
Connected to 192.168.141.129.
Escape character is ´^]´.
220 alex FTP server (Version wu-2.6.1(1)
Wed Aug 9 05:54:50 EDT 2000) ready. 530 Please login with USER and PASS.

…și iată cum penultima linie mă lămurește că portul 22 este "monopolizat" de serviciul FTP (de dragul didacticii, am folosit portul 22. De obicei, ftpd ascultă portul 21). Mai departe, aș putea încerca să văd dacă mi se oferă ftp anonim, și aș vrea să aflu dacă nu cumva există directoare în care utilizatorii anonimi ar putea scrie. Acolo aș pune un script Perl… și cred că îți dai seama ce pot scrie în acel script J.

Evident însă, un scanner face mai mult decât să lanseze conexiuni telnet. Mai ales că aceste conexiuni lasă urme în fișierele-jurnal (fișiere care înregistrează tot ce "mișcă" prin porturi). Ele obțin informațiile prin lansarea unor cereri specifice. Dacă îți place C, poți arunca o privire peste sursele programului SATAN (vezi mai jos…), o bijuterie în materie de programare.

Gama informațiilor pe care un scanner le poate furniza este imensă. Totuși, un scanner nu va putea da două informații: nu va dezvălui un cracker vreo metodă clară de spargere, și nici nu-i va putea spune ce urme a lăsat scanarea în fișierele jurnal.

Și…merge?

Primul (și probabil unul din cele mai folositoare) scannere pe care l-am încercat a fost IdentTCPScan. Iată ce a întors scanner-ul când am scanat o mașină din rețea (am omis unele înregistrări):

Port:21|Service:(?)|Userid:root
Port:22|Service:(?)|Userid:root
Port:25|Service:(?)|Userid:root
Port:37|Service:(?)|Userid:root
Port:79|Service:(?)|Userid:root
Port:80|Service;(?)|Userid:root
Port:6000|Service:(?)|Userid:root

IdentTCPScan identifică, deci, procesele care rulează pe un anume port și uid-ul acestora.

Am mai amintit despre această greșeală de configurare în articolul trecut, dar acum o vedem pe viu. Portul 80 este ascultat de HTTPD. Folosind IdentTCPScan, am aflat că uid-ul este root. Dacă aș găsi un program CGI vulnerabil la un atac, aș putea să rulez orice procese ca root și aș putea să "fur" fișierul /etc/passwd și sa-l sparg.

Nici portul 6000 nu e de neglijat, deoarece este portul serverului X. Atacând ținta prin acest port, eu aș putea intercepta - dacă portul e neprotejat - ceea ce introduc utilizatorii, aș putea captura ferestre sau le-aș putea schimba comportamentul (la drept vorbind, dacă aș avea intenții rele, aș putea scrie un script Perl care să ucidă într-una serverul X…dar asta e ceva ce numai un cracker ar face). Un rezultat asemănător este întors și de STROBE, care este însă mai rapid și nedetectabil pentru unele firewall-uri.

SATAN (System Administrator´s Tool for Auditing Networks) este unul din cele mai "tari" instrumente de securitate. Scris de doi hackeri de mare valoare, Dan Farmer și Wietse Wenema, SATAN este și extrem de ușor de folosit (deși începătorii vor avea probleme la compilare) pentru că beneficiază de un "panou de comanda" accesibil simplu prin intermediul unui browser web. Nici nu știu exact dacă să-l calific drept scanner datorită multitudinii de instrumente pe care le include, dar voi vorbi despre modulul de scanare.

Majoritatea scannerelor returnează informații care trebuie sintetizate pentru descoperirea unei vulnerabilități (dacă n-ai încercat niciodată să-ți spargi propria rețea, să vezi ce bine e când iei deoparte 600 de pagini de arhive USENET căutând un "ceva"…). Dar SATAN va spune utilizatorului de-a dreptul care este problema. El poate găsi o gamă foarte largă de breșe, și este extrem de folositor, chiar dacă ultima versiune este veche de aproape opt ani - unele vulnerabilități sunt încă de actualitate.

O suită de instrumente de securitate la fel de utilă ca și SATAN (mai ales că este disponibilă și pentru platformele Microsoft) este ISS SAFEsuite, care poate testa vulnerabilitățile dintr-o rețea. Cu toate acestea, ISS SAFEsuite nu mi se pare la fel de complet ca și SATAN, nereușind să vadă unele vulnerabilități din rețeaua mea.

Scanarea propriei mele mașini cu SATAN (Linux) a găsit o grămadă de breșe, pe când ISS (Windows) a vrut, cred, să mă facă să mă simt mai bine. Chiar așa însă, versiunile noi ale ISS sunt aproape indispensabile unui administrator, detectând o mulțime de probleme.

Și dacă nu vreau să fiu scanat?

Evident, se pune problema unei protecții. Unora nu le place să fie… "scanați". Singura soluție este să folosești un firewall de calitate. Unele scannere pot să scaneze nedetectate folosind cereri de conexiune incomplete, pe care unele firewall-uri nu le detectează.

Dacă rețeaua ta a fost scanată (vei descoperi asta în fișierele jurnal) atunci așteaptă-te la ce e mai rău - chiar dacă în 99% din cazuri nu se va mai întâmpla nimi. Cei mai mulți crackeri nu acționează imediat după scanare, așa că fii gata să respingi un atac chiar peste două, trei săptămâni.

Înregistrează imediat IP-ul eventualului atacator, și dacă scanările persistă (și în plus apar interogări finger sau host, conexiuni telnet care încearcă obtinerea accesului prin "forță brută" sau încercări de a obține acces prin FTP) ar trebui să contactezi rapid ISP-ul celui care te spionează.

Un ultim cuvânt despre scannere: cele mai puțin cunoscute se obțin destul de greu și numai sub formă de sursă.

Sunt necesare cunoștințe de C pentru a putea interveni în sursă în caz de erori. Cea mai bună metodă de a le găsi este folosirea unui serviciu de căutare FTP (www.alltheweb.com are un asemenea serviciu).

Mult noroc…


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro