MBR: Herşey orda başlar…
MBR (Master Boot Record) harddiskte sector1 de bulunur. İçinde partition table ve boot esnasında lazım olan kodlar vardır. Bilgisayar hdd ten boot edildiğinde, program counter ilk olarak MBR ye işaret eder. MBR de bulunan partition table yardımıyla hangi partition dan boot edeceğine karar verir. Daha sonra da o partition üzerindeki systemroot dizininden geçerli işletim sistemini çalıştırır.
Windows ve Linux sistemlerin ikili olarak kurulu olduğu disklerde (FAT), Windows MBR yi bozabilmektedir. Linux ta MBR yi yedeklemek için dd komutu kullanılır. Aşağıdaki komutu kullanarak MBR yi diskete yedeklemek mümkündür.
$ su
# dd if=/dev/hda of=/dev/fd0 bs=512 count=1
Bu komut Standard disk IO komutudur ve parametreden de anlaşılacağı gibi sektor 1 i yani ilk 512 byte ı kaynak sürücüden okur ve hedef sürücüye yazar. if(input file) of(output file). Disket yoksa of parametresine yerel diskte bir adres de verebilirsiniz.
# dd if=/dev/hda of=/home/boot.mbr bs=512 count=1
Acil durumda bilgisayarı bu disket ile boot ettiğimizde karşımıza eski boot menüsü gelecektir. MBR yi yeniden yerine koymak için ise yine aynı komutu şu şekilde kullanırız
$ su
# dd if=/dev/fd0 of=/dev/hda bs=512 count=1
Linux Windows ikilisinin kurulu olduğu bir diskten (Linux u yalnız başına kuran kaç kişi vardır zaten) Linux kurulumunu kaldırmak için şu yolu takip edebilirsiniz. Windows CD sinden boot edip R (repair) seçilir. Adımlar takip edilip recovery console açıldıktan sonra
FIXMBR
Komutu geçilir. Böylece Windows MBR yi tekrar yapılandırır. Boot viruslerinin yaptığı şey de tam olarak MBR ye zarar vermektir.
MBR nin yapısı şu şekildedir:
İlk 446 byte MBR kodunu oluşturur. Sonraki 64 byte ta partition table vardır. Son iki byte ise her zaman 0x55AA dır.
Physical Sector: Cyl 0, Side 0, Sector 1
000000000 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3AZ??.|uP.P.u?.|
000000010 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ?..PW?a.o¤E??.±.
000000020 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B 8,|.u.??.aoI.‹.‹
000000030 EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC i??.It.8,to?..N¬
000000040 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 <.tu»..?.I.eo‰F%
000000050 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 –SF.?.<.t.?.<.t.
000000060 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 :Au+@?F%.u$»?UP?
000000070 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 AI.Xr.?uU?u.oA.t
000000080 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF .Sa?V$C.?.e.?f.?
000000090 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E ..?..‹U3E?y..‹N
0000000A0 25 03 4E 02 CD 13 72 29 BE 46 07 81 3E FE 7D 55 %.N.I.r)?F.?>?}U
0000000B0 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 27 07 EB ?tZ?i.U…ou??'.e
0000000C0 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB S?‘R™.F..V.e..Ze
0000000D0 D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 00 00 00 00 OOta3AI.e?......
0000000E0 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 V3oVVRP.SQ?..V‹o
0000000F0 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 PR?.BSV$I.ZX?d.r
000000100 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 49 .@u.B€C.a?o^AetI
000000110 6E 76 61 6C 69 64 20 70 61 72 74 69 74 69 6F 6E nvalid partition
000000120 20 74 61 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 table.Error loa
000000130 64 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 ding operating s
000000140 79 73 74 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 ystem.Missing op
000000150 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 00 00 erating system..
000000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000180 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 ...‹u.W‹oE......
000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000001B0 00 00 00 00 00 00 00 00 A6 34 1F BA 00 00 80 01 ........¦4.?..€.
0000001C0 01 00 07 FE 7F 3E 3F 00 00 00 40 32 4E 00 00 00 ...?>?...@2N...
0000001D0 41 3F 06 FE 7F 64 7F 32 4E 00 A6 50 09 00 00 00 A?.?d2N.¦P....
0000001E0 41 65 0F FE BF 4A 25 83 57 00 66 61 38 00 00 00 Ae.??J%?W.fa8...
0000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U?
Bir boot virüsü MBR ye kendi kodunu enjekte eder. Bu tip virüsler genelde disketlerden bulaşır (bootable olsun ya da olmasın).
Afacan virüsümüz ilk 16 byte a 0 yazsın diyelim ki…
000000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000010 BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 ?..PW?a.o¤E??.±.
Bu durumda boot ettiğimizde siyah bir ekran görürüz ve hata mesajları almayız. Disketten boot ettiğimizde ise diskteki dosyalara ulaşabilir veya program çalıştırabiliriz. Çünkü partition table ımız zarar görmemiştir. Engellenen şey yalnızca sitemin boot edilmesidir.
Şimdi virüsümüzün yeni hedefi son iki byte teki sektör imzası olsun.
Physical Sector: Cyl 0, Side 0, Sector 1
0000001E0 41 65 0F FE BF 4A 25 83 57 00 66 61 38 00 00 00 Ae.??J%?W.fa8...
0000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Boot ettiğimizde “operating system not found” mesajını alırız. Bu mesajı alırsak disk viewer le diskin ilk sektörüne bakıp MBR nin genel özelliklerini taşıyıp taşımadığını kontrol edebiliriz.
Bu gibi durumlarda FIXMBR imdadımıza yetişecektir ancak eğer disk viewer ile ilk sektörü görüntülemeye çalıştığımızda “sector is unreadable” gibi bir mesajla karşılaşırsak bu demektir ki sektörün tamamı bozulmuştur ve recovery artık nafile bir uğraştır. O durumda çeşitli disk kurtarma araçlarıyla dosyaların kurtarılması yoluna gitmek gerekir.