====== Code Red Crv ======
=====0. Sažetak =====
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
===== 1. Uvod =====
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]
==== 1.1. Povijest Crva ====
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]
==== 1.2. Struktura Crva====
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]
===== 2. Code Red =====
//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]
==== 2.2. Ranjivost ====
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.
\\ \\
{{:racfor_wiki:malware:cumulative-ts.gif?nolink|}}
{{:racfor_wiki:malware:rate-ts.gif?nolink|}}
{{:racfor_wiki:malware:code-red-large.png?nolink&600|}}
==== 2.3. Iskorištavanje Ranjivosti ====
=== 2.3.1. Ručni napad ===
\\ 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
\\
=== 2.3.2. Korak po korak ===
\\
- Infekcija se desi kada IIS web poslužitelj, koji ima ranjivost na indexing međuspremniku, primi HTTP GET zahtjev koji sadrži Code Red vrstu napada. Pokazivač instrukcije (EIP), koji pokazuje na sljedeću instrukciju, je prepisan adresom koja pokazuje na instrukciju unutar msvcrt.dll. To uzrokuje da se program vrati na stog i skoči u kod koji se nalazi u početnom HTTP zahtjevu.
- Kod iz napadačkog zahtjeva se počinje izvršavati. Crv stvara novi stog za vlastite potrebe te pripadnu tablicu skokova.
- Izvršavaju se sljedeće instrukcije: From kernel32.dll:
GetSystemTime
CreateThread
CreateFileA
Sleep
GetSystemDefaultLangID
VirtualProtect
From infocomm.dll:
TcpSockSend
From WS2_32.dll:
socket
connect
send
recv
closesocket
- Crv izvodi akciju //WriteClient// (sadržana u //ISAPI//), koja šalje GET natrag crvu napadaču obaviještavajuči ga o novoj infekciji.
- Crv broji trenutno pokrenute dretve. Ako je broj pokrenutih dretvi manji od 100, crv ponovno pokreće osnovni kod u novoj dretvi, stvarajući do 100 kopija koje koriste isti kod. Ako je broj dretvi veći od 100, crv stvara novu dretvu koja može izmijeniti funkcionalnost web stranice (ako su zadovoljeni određeni uvjeti).
- Crv ima ugrađeni 'deficit lizina'. To je provjera koja sprječava maliciozni kod da se širi bez kontrole. Izvodi se provjera na 'c:\notworm' da se ustanovi je li trenutni sistem već bio zaražen. Ako jest, crv prelazi u mirovanje, a inače nastavlja s infekcijom.
- Crv saznaje lokalno vrijeme sustava (UTC). Ako je vrijeme veće od 20:00 UTC, crv izvodi DoS napad na //www.whitehouse.gov//. Ako je vrijeme manje od 20.00 UTC, crv pokušava zaraziti dodatne sustave.
- Crv pokušava širi svoju infekciju šaljući maliciozni kod na svaku IP adresu kojoj se može spojiti na port 80. Nakon uspješnog slanja, ponavljaju se koraci od koraka 6.
\\
== 2.3.2.1 Hakiranje Web Stranice ==
\\
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.
\\
== 2.3.2.2 DoS Napad ==
\\
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.
==== 2.4. Identifikacija Napada i Zaštita ====
=== 2.4.1. Identifikacija ===
\\ **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.
\\ \\
=== 2.4.1. Zaštita ===
\\
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]
=====3. Zaključak =====
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.
=====4. Literatura =====
[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]]