Win.Tentacle.1958
Неопасный нерезидентный вирус, заражающий NewExe *.EXE-файлы в текущем
каталоге и в каталоге C:\WINDOWS. При нахождении NewExe файла вирус
создает файл C:\TENTACLE.$$$, в который записывает инфицированную копию
NewExe-файла. После чего исходный файл удаляется, а файлу TENTACLE.$$$
присваивается его имя. Иногда вирус может заместить текущую иконку,
находящуюся в теле заражаемого файла на свою. На вирусной пиктограмме
изображено щупальце осьминога и надпись "TENTACLE".
Win.Tentacle.10634
Неопасный нерезидентный вирус, заражающий NewExe *.EXE-файлы в текущем
каталоге и в каталогах C:\WIN,C:\WINDOWS,C:\WIN31, C:\WIN311, C:\WIN95.
Процедура заражения похожа на процедуру вируса Win.Tentacle.1958, но
Win.Tentacle.10634 при заражении не изменяет точку входа NE-файла.Вирус
создает новый кодовый сегмент, в который записывает свой код, и
соответствующую этому сегменту - сегментную секцию в заголовке NE. Для
того, чтобы получить управление вирус изменяет один элемент в таблице
перемещаемых элементов. Вирус ищет ссылку на процедуру KERNEL -INITTASK
или на процедуру VBRUN300 - THUNRTMAIN и заменяет ее на свой стартовый
код. Процедуры INITTASK и THUNRTMAIN вызываются практически сразу при
старте Windows-программ. В результате вместо вызова этих стандартных
процедур произойдет вызов вирусного кода. После поиска и заражения
файлов вирус отдает управление этим процедурам, которые в свою очередь
вернут управление инфицированной программе-носителю. При обнаружении
файла WINHELP.EXE вирус исправляет команду условного перехода (74 ??)
на безусловный переход (EB ??). При старте инфицированной программы с
часу до двух часов ночи, вирус создает файл C:\TENTACLE.GIF и
записывает в него изображение щупальца осьминога в GIF-формате. В поле
"Extensions" для просмотра *.GIF-файлов вирус записывает имя "своего"
GIF-файла - C:\TENTACLE.GIF. В результате при просмотре любого GIF-
файла система будет всегда показывать щупальце осьминога. Для этих
манипуляций вирус использует вызовы SHELL: REGSETVALUE и REGQUERYVALUE.
Win.Twitch (1,2)
Неопасные нерезидентные вирусы-спутники. Производят поиск NewExe *.EXE-
файлов, присваивают им расширение OVL и записывают свой код под
оригинальным именем файла. Содержат тексты:
BOOT SHELL SYSTEM.INI PATH TEMP OVL \ CHKLIST.CPS *.EXE
NETWARE FILEMAN SCRNSAVE WINPRINT WINDOWS
DeviceSelectedTimeout
LOAD .EXE \SYSTEM SYSEDIT.EXE NWPOPUP.EXE
Win.Vik (1-3)
Неопасные нерезидентные вирусы. Производят поиск и заражение NewExe
*.EXE и *.DLL - файлов в текущем каталоге. Win.Vik (2,3) содержат текст
"(C) 1994 American Eagle Publications Inc., All rights reserved.".
Win.Vir1.4
Неопасный нерезидентный вирус, заражающий файлы в формате NewExe.
Содержит текст "Virus_for_Windows v1.4".
Win.Winsurf.1171, 1432
Неопасные резидентные вирусы, заражающие файлы в формате NewExe (NE).
При запуске инфицированной программы, вирусы проверяют наличие DPMI и
присутствие своих копий в памяти компьютера. Если резидентные копии
вирусов не установлены и DPMI-интерфейс существует,то вирусы производят
поиск строки "windir=" в своем окружении (environment), открывают файл
SYSTEM.INI в каталоге, указанном в переменной "windir=", ищут в данном
файле строку "shell=" и производят заражение файла,следующего за данной
строкой. Обычно строка "shell=" для MS-Windows 3.xx указывает на файл
PROGMAN.EXE (Program Manager). Данная программа является резидентной в
течение всего сеанса работы MS-Windows. Т.о., вирус,внедренный в данную
программу, также будет являться резидентным. Вирусы с помощью DPMI
"перехватывают" INT 21h, "контролируют" запуск программ (Exec f.4bh
Int 21h) и заражают NewExe-файлы.
Win.Wintiny
Неопасный нерезидентный вирус. Содержит текст "WinTiny (C)Copyright
June, 1995 by Burglar in Taipei, Taiwan.".
Win32.Cabanas
Win32.Cabanas является первым из известных вирусов, поражающих файлы
семейства 32хразрядных операционных систем Microsoft Windows
(Win32s/Windows 95/Windows NT). Данный вирус умеет не только заражать
файлы в формате PortableExecutable, но оставаться резидентно на текущий
сеанс работы инфицированной программы в любой из перечисленных выше
операционных систем.
Все существовавшие до сих пор вирусы, написанные для Windows 95, не
умели корректно заражать файлы, предназначенные для работы в Windows
NT, т.к., хотя файлы для Windows 95 и Windows NT и имеют одинаковый
PE - формат, но все же некоторые поля в заголовке PE у них различаются.
Поэтому при заражении файлов Windows NT, вирусам необходимо
предпринимать дополнительные действия для корректной модификации PE-
заголовка. Иначе система Windows NT выдаст ошибку на этапе загрузки
данного файла. Также представляется определенной проблемой для вирусов-
это определение базовых адресов WIN32 KERNEL API в памяти,т.к., Windows
95 и Windows NT располагают модуль KERNEL32.DLL в разных адресах
памяти. Но Win32.Cabanas прекрасно справляется с данными проблемами.
При старте инфицированного файла вирус получает управление,
распаковывает и расшифровывает собственную таблицу WIN32 KERNEL API
имен процедур, необходимых ему для последующей работы и приступает к
определению базового адреса KERNEL32.DLL и адресов всех интересующих
его функций WIN32 KERNEL API.
Во время заражения файла вирус анализирует таблицу импортируемых
функций (Import Table) с целью нахождения имен функций
GetModuleHandleA, GetModuleHandleW и GetProcAddress. При нахождении
данных имен вирус запоминает в своем коде смещения адресов данных
процедур, находящихся в Import Table (как правило, в сегменте .idata).
Если имена перечисленных процедур вирусом не будут найдены, то
Win32.Cabanas в дальнейшем, при запуске инфицированного файла, будет
использовать другой недокументированный способ нахождения базового
адреса KERNEL32 и адресов WIN32 KERNEL API. Но этот недокументированный
способ содержит ошибки и работает некорректно в среде Windows NT. Итак,
если адреса импортируемых функций GetModuleHandleA или GetModuleHandleW
имеются в Import Table инфицированного файла, то вирус без проблем, с
помощью процедуры GetProcAddress, определяет все адреса WIN32 KERNEL
API. Если адресов интересующих его функций в Import Table нет, то вирус
с помощью некоторых ухищрений пытается определить адрес GetProcAddress
в таблице экспортируемых функций KERNEL32. Но, как уже отмечалось выше,
для Windows NT данный вирусный механизм не работает из-за ошибок, и,
как следствие, нормальная "жизнедеятельность" вируса окажется
невозможной. Это единственная серьезная ошибка Win32.Cabanas, из-за
которой у него возникают проблемы при распространении в среде Windows
NT. Зато в Windows 95 чувствует себя, "как рыба в воде" и безо всяких
трудностей (в случае отсутствия адресов функций GetModuleHandleA или
GetModuleHandleW) определяет базовый адрес KERNEL32.DLL и функции
GetProcAddress другим недокументированным способом.
При помощи функции GetProcAddress вирус может получить адрес любой
интересующей его процедуры WIN32 KERNEL API. Что он и делает: получает
адреса и запоминает их.
Далее вирус запускает свою процедуру заражения PE-файлов, имеющих
расширения EXE и SCR в каталогах \WINDOWS, \WINDOWS\SYSTEM и в текущем
директории. При заражении файлов вирус проверяет наличие в них
собственной копии по некоторым полям в заголовке PE и по длине файла,
которая при заражении вирусом Win32.Cabanas должна быть кратна 101. Как
уже отмечалось выше вирус производит поиск имен функций
GetModuleHandleA, GetModuleHandleW или GetProcAddress в таблице
импортируемых функций (Import Table) и запоминание ссылок на их адреса.
Затем вирус записывает свой код в конец файла, в область последней
сегментной секции (обычно .reloc), изменив характеристики и длину
данной секции. После того, как тело вируса записано в конец файла,
вирус изменяет пять начальных байт оригинальной точки входа кодовой
секции (обычно .text или CODE) на команду передачи управления на
вирусный код, находящийся в последней сегментной секции (.reloc). Для
этих целей вирус производит анализ таблицы перемещаемых элементов
(.reloc) с целью возможного нахождения какого-нибудь элемента в области
измененных вирусом байт. Если такая ссылка будет найдена, то вирус
"выключает" ее и запоминает ее адрес и значение для того, чтобы
впоследствии при передаче управления программе-вирусоносителю не забыть
восстановить исходные байты точки входа и, если необходимо, то
соответствующим образом настроить перемещаемый элемент (relocation).
После того, как вирус заразит все "пригодные" для этой цели файлы в
указанных выше каталогах, он приступает к установке в систему своей
резидентной копии и "перехвату" интересующих его системных функций. С
помощью функции VirtualAlloc вирус выделяет себе область памяти длиной
12232 байт и перемещает свой код в данную область. Далее вирус пытается
"перехватить" следующие функции WIN32 KERNEL API: GetProcAddress,
GetFileAttributesA,GetFileAttributesW, MoveFileExA,MoveFileExW,_loopen,
CopyFileA, CopyFileW, OpenFile, MoveFileA, MoveFileW, CreateProcessA,
CreateProcessW, CreateFileA, CreateFileW, FindClose, FindFirstFileA,
FindFirstFileW,FindNextFileA, FindNextFileW, SetFileAttrA,SetFileAttrW.
Адреса этих функций вирус "забирает" из Import Table, а в поля Import
Table подставляет адреса собственных обработчиков. Если некоторые
интересующие его функции вирусу "перехватить" не удалось, то в
дальнейшем при вызове программой функции GetProcAddress, вирус
проверяет нужен ли ему адрес данной функции и при необходимости
возвращает программе адрес собственной процедуры. При вызове
программами некоторых "перехваченных" вирусом функций запускается
процедура заражения файлов и\или процедуру стелс-режима для
инфицированных файлов. Так при вызове функций FindFirstFileA,
FindFirstFileW, FindNextFileA или FindNextFileW вирус может заразить
файл, поиск которого производится, после чего сразу же скрыть
приращение длины в данном файле.
Таким образом, Win32.Cabanas нельзя назвать "полностью резидентным"
вирусом, т.к., "перехват" системных функций и установка вирусной копии
в выделенный системой участок памяти производится только на текущий
сеанс работы инфицированной программы. Но, что произойдет если
пользователь запустит, например, инфицированный Norton Commander for