Skeniranje i iskorištavanje eksploita

Pronalaženje sigurnosnog propusta sigurno je najvažniji zadatak napadača nakon određivanja mete. Najčešće se koristi metoda koja se naziva skeniranje, a koja, zapravo, znači testiranje sistema na poznate propuste, koji se još nazivaju i eksploiti
Izvor: Goran Milić
E-mail: redakcija@asadria.com
Termin skener se u kontekstu mrežne sigurnosti odnosi na softver koji koriste hakeri kako bi sa udaljene lokacije odredili TCP ili UDP portove koji su otvoreni na sistemu i samim tim podložni napadima. Nakon saznanja koji su portovi otvoreni, počinje druga faza napada, u kojoj se oni testiraju na poznate slabosti koje mogu omogućiti upad u sistem. Zanimljivo je uočiti da i administratori sistema koriste skenere kako bi detektovali, a zatim i popravili slabosti u sopstvenom sistemu prije nego što ih otkriju hakeri. Jedan od najstarijih i najpoznatijih skenerskih softvera je Security Administrator’s Tool for Analyzing Networks (skraćeno SATAN) za UNIX operativne sisteme, ali danas postoje i mnogi drugi, mnogo napredniji alati. Dobar skenerski program može locirati metu na internetu, odrediti TCP/IP servise koji su aktivni i testirati sistem na poznate slabosti. S obzirom na to da se slabosti otkrivaju svakodnevno, jasno je da se i skenerski softveri svakodnevno unapređuju, pa i hakeri i administratori moraju konstantno pratiti nove sigurnosne prijetnje i razvoj softverskih alata koje koriste.
Vrste skeniranja
Skeniranje portova je metoda kojom se “osluškivanjem” TCP ili UDP portova na kompjuteru ili routeru pokušava doći do što više informacija o uređaju koji je meta napada. TCP ili UDP portovi su najčešće vezani za određenu aplikaciju, pa se tako osluškivanjem portova može doći do vrste, naziva i verzije aplikacije koju sistem koristi. Ovo je jedna od ključnih informacija koja se dalje koristi u iskorištavanju poznatih slabosti aplikacije koju sistem koristi.
Naprimjer, ako je aktivan port 23, na sistemu je aktivan Telnet server, koji važi kao vrlo nesiguran. Kada haker dođe do takve informacije, pokušat će da iskoristi slabosti Telnet protokola i njegovih implementacija kako bi došao do pristupa sistemu ili nekih dragocjenih informacija koje bi mu olakšale dolazak do cilja. Primjera radi, Telnet implementacije su ranjive na takozvane Brute Force napade, kojim napadač pokušava da pogodi korisničko ime i šifru. Zbog toga se danas Telnet protokol praktično više ne koristi, osim u nekim vrlo specifičnim situacijama. Half scan je vrsta skeniranja portova koja umjesto uspostavljanja konekcije šalje samo inicijalne ili finalne mrežne pakete. Ovo se radi kako bi napad ostao prikriven. Softveri koji koriste ovu vrstu napada se nazivaju stealth skeneri.
IP Spoofing je metoda koja uključuje promjenu mrežnih paketa, tačnije njihovih zaglavlja, kako bi se zamijenila izvorišna IP adresa. Na ovaj način se mrežni servis može prevariti tako da smatra da učestvuje u legitimnoj komunikaciji sa poznatim klijentom, a zapravo se radi o zlonamjernoj komunikaciji. Moderni firewall sistemi uspješno detektuju ovu vrstu napada, ali se ona premjestila na više mrežne nivoe, pa se umjesto mrežnih uređaja varaju korisnici. Riječ je phishing napadima, o kojima smo govorili u prethodnim tekstovima. Source Routing skeniranja preusmjeravaju mrežne pakete putem specifičnih tačaka na mreži. Na ovaj način se zaobilaze pravila koja koriste mrežni routeri. Takva skeniranja se najčešće vrše u svrhu mapiranja mrežne topologije, ali i za rješavanje problema u komunikaciji. Međutim, hakeri mogu iskoristiti ta skeniranja za otkrivanje internih mrežnih adresa, što je dragocjen podatak za dalje napade. Sve vrste napada koje smo do sada opisali koriste slabosti u TCP/IP protokolu. Međutim, hakeri mogu iskoristiti slabosti i u drugim čestim protokolima kao što su HyperText Transfer protokol (HTTP), Domain Name System (DNS), Common Gateway Interface (CGI) i drugi.
Active-X kontrole, Java script i Vbscript se danas vrlo često koriste za poboljšavanje izgleda i funkcija web-stranica, ali hakeri mogu iskoristiti i njihove slabosti. U posljednje vrijeme su vrlo česti napadi koji iskorištavaju slabosti u Java i Flash tehnologijama, a najgore od svega je to što korisnici mogu mjesecima ne primjećivati da su žrtve napada, odnosno njihovi kompjuteri mogu biti alati za druge napade.
Sistemski i softverski eksploiti
Sistemski i softverski eksploiti su slabosti koje postoje u određenom operativnom sistemu ili aplikaciji, a ponekad se nazivaju i bagovi (engl. bug – buba, kukac; asocijacija na prvi zabilježeni kompjuterski problem uzrokovan ulaskom moljca u osjetljivu elektroniku jednog od prvih elektronskih kompjutera). Eksploiti se najčešće koriste tako da napadaču omoguće neautorizovani pristup sistemu ili da bi onemogućili rad sistema. Postoje tri osnovne kategorije eksloita: Buffer overflows, Unexpected input i System configuration bugs.
Buffer overflows nastaju kada količina podataka na ulazu pređe određenu granicu, pa sistem počne da se ponaša izvan uobičajenih parametara. Ova greška je najčešće posljedica lošeg programskog koda koji ne testira količinu podataka na ulazu. Unexpected input eksploit je sličan, ali se umjesto velike količine podataka na ulaz šalju tačno određene kombinacije simbola, u koje su, zapravo, zamaskirane komande sistemu. I ovi problemi nastaju zbog lošeg programskog koda. Na kraju, System configuration bugs su, zapravo, loše podešeni parametri sistema, zbog čega je on podložan napadima. Neiskusni ili mladi mrežni ili sistemski administratori mogu pogrešno konfigurisati neku od komponenti sistema, otvarajući ga za hakerske napade. Proizvođači softvera nastoje za sve otkrivene eksploite izdati odgovarajuće popravke, a iskusni administratori mogu otkriti i popraviti greške u konfiguraciji sistema. Međutim, uvijek postoji određeni period između otkrivanja i popravljanja greške, i to je ono što napadaču može biti dovoljno za izvođenje napada.
Najpoznatiji TCP/UDP portovi
S obzirom na to da je TCP/IP protokol osnova interneta, svaki mrežni ili sistemski administrator ga mora detaljno poznavati. Jedna od stvari koja spada u abecedu TCP/IP protokola su brojevi portova koje koriste mrežni protokoli. Zvanična lista najpoznatijih TCP/UDP portova može se pronaći u dokumentu RFC1700, koji je besplatno raspoloživ na internetu. Brojeve portova dodjeljuje Internet Assigned Numbers Authority (IANA). Iako je nemoguće zapamtiti sve portove, svaki administrator mora poznavati bar one osnovne pošto će mu to značajno olakšati posao. Ovo je lista najpoznatijih TCP/UDP portova koje koristi gotovo svaka mreža: 7: ECHO, 20: FTP (data), 21: FTP (control), 22: SSH, 23: Telnet, 25: SMTP, 42: Nameserv, 53: DNS, 67: BOOTP server, 68: BOOTP client, 69: TFTP, 80: HTTP, 88: Kerberos, 103: X.400, 110: POP3, 137: NetBIOS name service, 138: NetBIOS datagram service, 139: NetBIOS session service, 220: IMAPv3, 389: LDAP, 443: HTTPS, 546: DHCP client, 547: DHCP server, 1080: Socks i dr.