Računalni crvi su računalni programi koji umnožavaju sami sebe. Pri tome koriste računalne mreže da bi se kopirali na druga računala, često bez sudjelovanja čovjeka. Za razliku od virusa, sa svojim djelovanjem ne moraju inficirati druge programe. Mogu stići i kao privitak u elektroničkoj pošti te im pristup računalu omogućuju propusti u operacijskim sustavima i aplikacijama. Crvi otežavaju rad mreže, a mogu oštetiti podatke i kompromitirati sigurnost računala.[1]
Code red crv je detektiran 15. srpnja 2001. godine.
Napadao je računala koja koriste Microsoft IIS web poslužitelj.
Napad je počeo 13. srpnja, a najveći broj zaraženih računala je bio 19. srpnja.
Broj zaraženih računala 19. srpnja je iznosio 359 000.[2]
Keywords: Crvi; Code Red
Računalni crvi su računalni programi koji umnožavaju sami sebe.
Pri tome koriste računalne mreže da bi se kopirali na druga računala, često bez sudjelovanja čovjeka.
Za razliku od virusa, sa svojim djelovanjem ne moraju inficirati druge programe.
Mogu stići i kao privitak u elektroničkoj pošti te im pristup računalu omogućuju propusti u operacijskim sustavima i aplikacijama.
Crvi otežavaju rad mreže, a mogu oštetiti podatke i kompromitirati sigurnost računala.
Ovisno o vrsti tereta (engl. payload) koju crv prenosi, crvi mogu uspostaviti daljinsku kontrolu, koristiti zaražena računala za slanje spam poruka, kao posrednike za preusmjeravanje podataka, mogu stvoriti mrežu zombi računala koji služe za DoS napad, mogu prikupljati podatke ili brisati podatke te prouzročiti fizičku štetu.[1]
Pojam 'crv' u kontekstu računalne tehnologije se prvi puta spominje 1975. godine u romanu 'The Shockwave Rider', spisatelja Johna Brunnera.
Protagonist romana, Nichlas Haflinger dizajnira računalnog crva koji skuplja podatke s ciljem postizanja osvete nad moćnicima koji vode nacionalnu elektroničku informacijsku mrežu koja uzrokuje masovni konformizam.
Prvi računalni crv je bio zamišljen da ima funkciju antivirusnog programa.
Zvan 'Reaper', stvorio ga je Ray Tomlinson s ciljem samoumnožavanja programa kroz ARPANET u svrhu brisanja eksperimentalnog Creeper programa.
Robert Tappan Morris, student na Sveučilištu 'Cornell University', je 1988. godine stvorio tzv. 'Morris Worm'.
Taj crv je zarazio desetinu svih računala tada spojenih na internet.
Morris je bio prva osoba u SAD-u osuđena pod federalnim zakonom 'Computer Fraud and Abuse Act'.
Također, jedna od indirektnih nuspojava te sudske parnice je bilo kasnije osnivanje CERT-a (computer emergency response team).[3]
Osnovna struktura crva je: bojna glava, pogon, mehanizam odabira mete, sustav za odabir mete, korisni teret.
Bojna Glava:
Dio koda koji iskorištava ranjivost sustava.
Radi se o ranjivostima poput Buffer Overflowa, nezaštićene razmjene datoteka, ranjivosti elektroničke pošte, pogrešaka u konfiguraciji (poput slabih lozinki).
Bojna glava otvara vrata napadaču.
Pogon:
Nakon iskorištavanja ranjivosti, potrebno je infiltrirati se u sustav.
Pogon su vrlo često protokoli za prijenos poput TFTP, FTP, SMB, HTTP.
Algoritam za odabir mete:
Služi za traženje nove žrtve.
Neki od mogućih načina traženja žrtve su pretraživanje adresa elektroničke pošte, /etc/hosts, pretraživanje računala u lokalnoj mreži, upiti putem DNS-a, slučajno generirane IP adrese…
Sustav za odabir mete:
Na popis pronađen algoritmom za odabir mete se šalju datagrami na različite portove te se skeniraju ranjivosti.
Cijeli postupak na novoj žrtvi se započinje iznova.
Korisni teret:
Otvara backdoor.
Pokreće glavnu svrhu crva npr. pokretanje distribuiranog napada uskraćivanjem usluge ili izvođenje složenog matematičkog zadatka.[4]
Code Red je bio računalni crv detektiran na internetu 15. srpnja 2001. godine.
Napadao je računala pogonjena Microsoftovim IIS web poslužiteljem.
Code Red je bio prvi uspješan napad velikog razmjera na enterprise mreže.
Crva su otkrili Marc Maiffret i Ryan Permeh, zaposlenici kompanije eEye Digital Security.
Nazvan je Code Red jer su u to vrijeme pili Code Red Mountain Dew piće.[2]
Prva verzija se naziva CRv1. Druga verzija, detektirana 19. srpnja, je dijelila gotovo sve karakteristike s prvom verzijom. Počela se širiti puno brže od originalne verzije.
Procjenjuje se da je unutar samo devet sati zaraženo više od četvrt milijuna računala diljem svijeta.
Ta verzija se naziva CRv2.[6]
Microsoft IIS (Internet Information Services) instalira nekoliko ISAPI (Internet Services Application Programming Interface) ekstenzija.
Te ekstenzije se sastoje od dinamički povezanih biblioteka (dll) koji omogućuju developerima da prošire mogućnosti IIS-a.
Jedan od tih dll-ova, idq.dll je odgovoran za ranjivost koju iskorištava Code Red.
Idq.dll ima dvije funkcionalnosti:
- Omogućuje podršku za .ida (Internet Data Administration) datoteke.
- Obrađuje .idq (Internet Data Query) datoteke, koje se koriste za implementaciju prilagođenih pretraživanja.
Ranjivost koja se iskorištava jest činjenica da idq.dll sadrži neprovjeravani međuspremnik u dijelu koda koji se bavi ulaznim URL-ovima.
Odnosno, idq.dll ne obavlja prikladnu validaciju ulaznih vrijednosti i upisuje sve podatke poslane od korisnika u međuspremnik. Ako je veličina podatka veća nego što program očekuje (odnosno, veća od veličine spremnika), to može izazvati preljev u susjedne spremnike i prepisati ili oštetiti podatke koje se tamo nalaze.
Podaci sadržani u tome preljevu mogu sadržavati kod dizajniran od strane napadača da izazove neželjene radnje poput izvršavanja instrukcija na računalu žrtve.
Važno je za nadodati da se preljev dešava prije nego se koristi funkcionalnost idq.dll-a, odnosno, sam servis (idq.dll) ne treba biti pokrenut da bi napadač mogao iskoristiti ovu ranjivost.
Postoji mala razlika između prve dvije verzije napada:
Code Red Version 1 (CRv1):
Nakon uspješne infekcije sustava, crv bi provjerio datum na računalu.
Ako je datum bio između 1. i 20. srpnja, crv bi generirao nasumičnu listu IP adresa i probao izvršiti napad na ta računala.
Međutim, ako je datum bio između 20. i 28. srpnja, crv bi pokrenuo DoS napad na stranicu www.whitehouse.gov
Doduše, ovaj crv je imao mali nedostatak.
Naime, statičan seed je korišten za generiranje liste nasumičnih IP adresa.
To je sprječavalo crva od naglog širenja.
Code Red Version 2 (CRv2):
Verzija 2 je bila gotovo jednaka verziji 1.
Jedina razlika je bila činjenica da u ovoj verziji nije korišten statičan seed za generiranje liste IP adresa.
Stoga je propagacija crva kroz mrežu bila mnogo brža. Unutar prvih 14 sati je bilo zaraženo 359 000 računala.
CRv2 je također imao neželjeni učinak i na druge dijelove mreže (osim računala) poput usmjerivača, mrežnih preklopnika i printera.
Iako ti uređaji nisu bili zaraženi, crv ih je tjerao na ponovno pokretanje.
Zbog toga što su obje verzije bile spremljene u radnoj memoriji, mogli su biti uklonjeni gašenjem računala.
No, postojala je vrlo velika šansa nove zaraze pošto početna ranjivost i dalje nije riješena.[7]
Ovdje su prikazane neke informacije o širenju crva 19.7.2001.
Ranjivost se može iskoristiti i ručno.
Napadač uspostavi TCP/IP vezu s poslužiteljem na portu 80.
Unošenjem HTTP GET zahtjeva koji izaziva isti preljev kao i Code Red može se postići isti efekt.
Takav zahtjev bi mogao biti npr. ovakav (telnet napad):
C:\ telnet www.targetsystem.com 80 GET/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucb d3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u 9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0
From kernel32.dll: GetSystemTime CreateThread CreateFileA Sleep GetSystemDefaultLangID VirtualProtect From infocomm.dll: TcpSockSend From WS2_32.dll: socket connect send recv closesocket
Crv prvo saznaje je li jezik sustava engleski (US).
Ako jest, crv nagrđuje web stranicu ispisivajući:
Hacked by chinese !
Ako jezik sustava nije engleski (US), crv izvodi korake napad prateći korake 6. na dalje.
Nakon toga crv spava 2 sata. Razlog za dvosatno spavanje nije potpuno jasan. Spekulira se da je razlog tome omogućavanje širenja zaraze prije nego se detektira prisutnost crva na sustavima pomoću ispisa poruke o hakiranju.
Nakon dvosatnog spavanja, crv mijenja kod u memoriji. Ta se tehnika naziva 'hooking'.
Modificira se w3svc.dll da omogućuje crvu promjenu podataka koji se šalju klijentima.
Crv tada spava 10 sati nakon. Nakon spavanja 10 sati, w3svc.dll se vraća u početno stanje.
Ponovo se izvodi korak 6.
Svaka dretva napada www.whitehouse.gov na portu 80 stvarajući konekciju te slanjem 100 kilobajta podataka.
Ako je konekcija bila uspješna, crv stvara petlju koja traje 18 000 sati i šalje po jedan bajt podataka na www.whitehouse.gov.
Nakon toga, crv spava četiri sata.
Identifikacija logovima.
Ako je poslužitelj napadnut Code Red crvom, postoji zapis u logovima poslužitelja.
Bitno je za napomenuti da će zapis postojati neovisno o tome je li sustav zaražen ili nije.
Stoga je nemoguće odrediti je li sustav zaražen samo na temelju logova.
Međutim, ako postoji zapis i zna se da sustav nije osiguran od ove specifične ranjivosti, postoji vrlo velika šansa da je sustav zaražen.
Primjer zapisa koji bi se mogao nalaziti u logu je:
"GET default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u909 0%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0" 404 10100 "-" "-"
Drugi načini detekcije.
Administratori poslužitelja mogu uočiti da poslužitelji rade sporije ili drugačije.
Crv može koristiti veliki broj CPU ciklusa, što može rezultirati smanjenim performansama.
Za otkrivanje crva administrator može provjeriti procese koje se izvode na računalu s ciljem ustanovljavanja postoje li neželjeni procesi na poslužitelju.
Također, korištenjem netstat instrukcije, može se dobiti popis TCP i UDP konekcija. Pomoću toga se može ustanoviti postoji li neočekivano veliki broj konekcija.
Ako je konfiguriran vatrozid, može se provjeriti aktivnost na vatrozidu i ustanoviti postoji li sumnjiva komunikacija.
Imajući na umu potencijalne zlonamjerne mogućnosti, potrebno je bilo pronaći efektivne načine zaštite.
Vatrozidovi nisu bili adekvatna zaštita zato jer crv putuje mrežom koristeći port 80 te je zbog toga takav promet vrlo teško filtrirati.
Jedini način da se u potpunosti spriječi ovakva vrsta napada jest osiguravanje da su na svim sustavima instalirane adekvatne zakrpe.
Pošto se radi o staroj ranjivosti, pojedinačne zakrpe više nije moguće instalirati pošto je ranjivost uklonjena u svim novijim (manje od petnaestak godina starosti) verzijama Microsoft servisa.
Također, općenito gledano, dobra praksa je provoditi tzv. 'OS hardening', odnosno, onemogućiti sve servise i mogućnosti koje nisu potrebne za izvođenje osnovnih funkcionalnosti poslužitelja.[7]
Ova ranjivost i napad je star gotovo 20 godina.
Međutim, slični napadi i prijetnje se mogu desiti i danas.
Vrlo je važno da su svi sustavi ažurirani s najnovijim zakrpama i da se poštuju pravila sigurnosti informacijskih sustava u cilju ublažavanja mogućih budućih prijetnji i napada.
Važno je uvidjeti da prijetnje uvijek postoje. Uvijek će postojati utrka između sigurnosti informacijskih sustava i potencijalnih ranjivosti koje su sigurnost mogu ugroziti.
[1] https://hr.wikipedia.org/wiki/Ra%C4%8Dunalni_crvi
[2] https://en.wikipedia.org/wiki/Code_Red_(computer_worm)
[3] https://en.wikipedia.org/wiki/Computer_worm
[4] Sigurnost i ranjivost operacijskog sustava, Zlonamjerni softver. Virusi, crvi, trojanci. Primjeri iz okruženja Windows i Unix. | Fakultet Elektrotehnike i Računarstva, kolegij 'Sigurnost u Internetu', 2020.
[5] https://www.scientificamerican.com/article/code-red-worm-assault-on/
[6] https://www.giac.org/paper/gsec/1162/code-red-worm/102232
[7] https://www.sans.org/security-resources/malwarefaq/code-red
[8] https://www.caida.org/research/security/code-red/coderedv2_analysis.xml