Найди врага в своем доме! Deeoni$ Спецвыпуск: Хакер, номер #048, стр. 048-074-5 Некоторые фирмы предлагают высокопроизводительные аппаратные сканеры, построенные на программируемых логических устройствах (PLD - ProgrammableLogicDevices), но их цена настолько высока, что запросто может превзойти ущерб от атаки. Кардинальной мерой является создание бэкапов всей системы с установленными приложениями и важных данных, чтобы в случае сбоя оперативно оживить машину. В NT это легко делается с помощью планировщика задач и встроенного софта. Однако в любом случае угроза от червей достаточно велика, и они запросто могут уронить всю сеть. Его величество вирус Вирус – это программа, которая размножается без ведома пользователя. Конечно, я дал своеобразную, неточную формулировку, но нам этого достаточно. Существует множество методов инфицирования, однако все их можно разделить на два основных класса: HLL-методы и низкоуровневые методы. HLL означает «языки высокого уровня» (у нас их называют «ЯВУ»). Из ныне действующих видов этой заразы остались HLLC и HLLP. Первые являются вирусами-компаньонами, о чем свидетельствует латинская буква «C», а вторые – паразитами (латинская «P»). Были когда-то и HLLO-вирусы, или оверврайтеры, но из-за своего алгоритма размножения они стали музейными экспонатами. Пару слов о HLLC-вирусах. Размножаются они очень просто: находят файл-жертву, переименовывают ее, копируют себя в тот же каталог под именем жертвы и при получении управления делают все вышеперечисленное плюс запускают своего носителя. Например, если у нас был файл calc.exe, компаньон переименовывает его в vir_calc.exe, а сам становится calc.exe. Теперь, когда юзер кликает по ярлычку калькулятора в главном меню, сначала грузится вирус, заражает новый файл и передает управление реальной программе, чтобы не вызывать подозрений. Поставить диагноз очень просто – в папке будет в два раза больше exe’шников. Но зверек может искусно маскироваться, делая жертвы скрытые и присваивая им другие расширения, чтобы отсрочить свое обнаружение. В любом случае, понять, что система атакована, не составит большого труда. Тогда следует удалить всех компаньонов и восстановить оригинальные имена. HLLP-вирусы действуют не так прямолинейно. Паразит находит себе жертву, копирует первые ее N байт в конец (N равно размеру вируса), а затем пишет в начало свое тело. Получая управление, вирус лечит «зараженный» файл, то есть копирует оригинальное начало поверх своего носителя и урезает файл до положенной ему длины. Затем он его запускает, после завершения опять делая его «больным». Для усложнения анализа и лечения оригинальные части кода жертвы могут перетасовываться, как карты, и шифроваться. Однако криптование бессмысленно, так как ключ можно легко определить, зная, что первые две буквы начала файла - MZ, а по адресу 3Ch находится аббревиатура PE-заголовка. Поэтому эти и другие сигнатуры изменяются и только при временном лечении восстанавливаются. Обнаружение также не составляет труда: размер файла в большинстве случаев заметно возрастает, иконка может исчезнуть или измениться. Для пущей верности рекомендуется проанализировать поля заголовка и сравнить их с реальными значениями. Для анализа заголовков я использую чудесную утилиту под названием PE Tools (www.uinc.ru). Она выводит в удобном для восприятия формате информацию из PE-полей и может сравнивать заголовки двух файлов, выводя их в виде таблицы. На скриншоте видно, что виртуальный размер всего загружаемого образа (Size of Image) равен 22400h байт. Это нормальное значение для программы объемом около сотни килобайт (обычно это значение всегда превышает физический размер файла), но если Size of Image становится меньше веса проги, то это, скорее всего, инфицированный файл. Другой способ основывается также на несовпадении значений в заголовке с реальными размерами. Просуммировав физическую длину (Raw Size) всех секций и добавив к этому количество байт, занимаемых PE-заголовком, мы получим объем, который есть на самом деле. Кстати, не забудь учесть смещения секций (Raw Offset) и возможное наличие оверлея в конце - эту величину тоже надо приплюсовать к ранее полученной цифре. Если ты найдешь два заголовка в файле, то это тоже ничего хорошего не предвещает. Здесь подойдет hiew или любой другой полюбившийся тебе HEX-редактор. |