Как внедрить вирус жертве

Обновлено: 25.04.2024


Что такое троянский вирус?

Как работает троянец (троянский вирус)

Как только у троянца появляется доступ к вашему компьютеру, он может делать что угодно, но большинство этих вредоносных программ стремятся получить полный контроль над вашим компьютером. Иными словами, все ваши действия на компьютере записываются и отправляются на сервер, указанный трояном. Это особенно опасно, если вы на своем компьютере выполняете финансовые транзакции, поскольку троянская программа отправляет информацию о вашей банковской карте или платежных реквизитах людям, которые могут использовать или продать ее. С помощью троянцев злоумышленники могут превратить ваш компьютер в зомби и использовать его для запуска кибератак по всему миру.


Как защититься от троянских программ

Троянцы названы так потому, что им требуется ваше разрешение на запуск на вашем компьютере - либо когда вы запускаете программу самостоятельно, либо когда вы открываете документ или изображение, которое затем запускает программу. Исходя из этого, первая и лучшая защита от троянов - никогда не открывать вложение электронной почты и не запускать программу, если вы не уверены на все 100% в источнике файлов, скачанных из одноранговых программ или с веб-сайтов. Но в сегодняшнем взаимосвязанном мире такое редко возможно, поэтому нужно принять несколько конкретных мер безопасности.

Всегда обновляйте программное обеспечение. Это вдвойне актуально для важных программ, таких как ваша операционная система и браузер. Хакеры используют известные бреши в системе защиты в этих типах программ, и через них засылают на ваш компьютер троянцев, которые делают так свою черную работу. Производитель ПО, как правило, выпускает исправления для этих уязвимостей, но они не принесут вам никакой пользы, если вы не будете поддерживать последнюю версию программного обеспечения на вашем устройстве. Чтобы ваше интернет-соединение было максимально безопасным, всегда должен быть включен сетевой экран. Как программные, так и аппаратные сетевые экраны отлично справляются с фильтрацией вредоносного трафика и часто могут предотвратить загрузку троянских программ на ваш компьютер.

Все это полезно, но чтобы полностью обезопасить себя, следует установить антивирусное программное обеспечение или утилиту для удаления троянских программ. Это ПО (при условии того, что оно регулярно обновляется) сканирует вашу систему на наличие троянцев и автоматически проверяет любую программу или файл, которые вы исполняете, чтобы обеспечить его безопасность. В Интернете есть бесплатные утилиты для удаления троянских программ, но мало какие из них регулярно обновляются, а некоторые даже сами являются троянцами. Чтобы лучше защитить ваш компьютер, используйте антивирусное ПО известных производителей с бесплатной пробной версией. Это позволит вам оценить преимущества той или иной программы, прежде чем покупать ее. Такие программы часто входят в общий пакет безопасности, но при этом предоставляют вам возможность указать нужные вам функции защиты, а ненужные отключить.

Защита вашего компьютера от троянских программ не должна быть неподъёмной задачей. Следуя нескольким простым правилам безопасного поведения в Интернете и используя надежное защитное решение, вы можете быть уверены, что ваш компьютер защищен от подавляющего большинства троянских и других вредоносных программ.

Другие статьи и ссылки по теме

Как не стать жертвой троянца? Держать шлюзы закрытыми

Троянец (троянский вирус) - это тип вредоносных программ, маскирующихся под легитимное ПО. Изучите риски и узнайте, как не стать их жертвой.

content/ru-ru/images/repository/isc/2017-images/malware-img-35.jpg

Киберпреступники часто эксплуатируют любые уязвимости, существующие в операционной системе (ОС) или в прикладном ПО, запущенном на компьютере-жертве.

Таким образом, сетевой червь или троянец может проникнуть на машину-жертву и запуститься.

Что такое уязвимость?

Уязвимость – это, по сути, брешь в коде или логике работы в ОС или прикладном ПО.

Современные ОС и приложения очень сложны и имеют широкий функционал, поэтому, разработчикам сложно создать ПО, который бы не содержал никаких ошибок.

Нет недостатка в вирусописателях и киберпреступниках, готовых посвятить значительные усилия исследованиям того, как они могут получить выгоду от

эксплуатации любой уязвимости до того, как она будет закрыта производителем, который выпустит соответствующее обновление.

Эксплуатация уязвимостей в интернет-браузерах

Одним из самых популярных методов внедрения вредоносного ПО стало распространение вредоносного кода через веб-страницы. На веб-страницу помещаются зараженный файл и скриптовая программа, эксплуатирующая браузерную уязвимость. Когда на эту страницу заходит пользователь, скриптовая программа скачивает зараженный файл на компьютер пользователя, используя уязвимость в браузере, и затем запускает этот файл.

Чтобы заразить как можно больше машин, создатели вредоносное программы используют целый набор методов привлечения пользователей на веб-страницу:

Подготовка заражения троянцами

Киберпреступники также используют небольшие троянцы, которые загружают и запускают более крупные троянцы. Маленький троянец проникает на компьютер пользователя – например, через уязвимость, а затем загружает из интернета и устанавливает другие вредоносные компоненты.

Многие троянцы изменяют настройки браузера на наименее безопасные из возможных, чтобы облегчить скачивание других троянцев.

Разработчики ПО и антивирусных решений отвечают на вызов

К сожалению, период между появлением новой уязвимости и началом его эксплуатации червями и троянцами становится все короче и короче. Это создает проблемы как для разработчиков ПО, так и для антивирусных компаний:

Статьи и ссылки по теме:

Продукты:

Эксплуатация уязвимостей и методы внедрения вредоносного ПО

Киберпреступники часто используют уязвимости операционной системы (ОС) или программных приложений, которые выполняются на компьютере пользователя, чтобы сетевые черви или троянские программы смогли проникнуть на компьютер и запустить себя.

Избранные статьи

content/ru-ru/images/repository/isc/2021/security-and-privacy-risks-of-ar-and-vr-1.jpg

Риски безопасности и конфиденциальности в виртуальной и дополненной реальности

content/ru-ru/images/repository/isc/2021/trickbot_image1_710x400px_300dpi.jpg

TrickBot – многоцелевой ботнет

content/ru-ru/images/repository/isc/2021/top_ransomware_attacks_1.jpg

Основные атаки программ-вымогателей

content/ru-ru/images/repository/isc/2020/deep-web-cover.jpg

Что такое глубокий и теневой интернет?

content/ru-ru/images/repository/isc/2020/keepkidssafecovid1.jpg

Как защитить детей в интернете во время коронавируса

Продукты для дома

Наши передовые решения помогают защитить то, что для вас ценно. Узнайте больше о нашей удостоенной наград защите.

Бесплатные утилиты

Наши бесплатные утилиты помогают обеспечить защиту ваших устройств на базе Windows, Mac и Android.

Связаться с нами

Наша главная цель - обеспечить вашу безопасность. Мы всегда готовы ответить на ваши вопросы и оказать техническую поддержку.

О компании

Узнайте больше о том, кто мы, как мы работаем и почему наша главная цель - сделать цифровой мир безопасным для всех.

Пробные версии

Попробуйте наши решения. Всего за несколько кликов вы можете скачать бесплатные пробные версии нашего продукта и проверить их в действии.

Сувенирный портал Lab Shop

Необходимой для вирусописателей и кибер-преступников задачей является внедрение вируса, червя или троянской программы в компьютер-жертву или мобильный телефон. Достигается эта цель различными способами, которые делятся на две основные категории:

Часто эти способы используются одновременно. При этом так же часто используются специальные меры по противодействию антивирусным программам.

Социальная инженерия

Методы социальной инженерии тем или иным способом заставляют пользователя запустить заражённый файл или открыть ссылку на заражённый веб-сайт. Эти методы применяются не только многочисленными почтовыми червями, но и другими видами вредоносного программного обеспечения.


Случаются и казусы, один из которых произошел в ноябре 2005. В одной из версий червя Sober сообщалось, что немецкая криминальная полиция расследует случаи посещения нелегальных веб-сайтов. Это письмо попало к любителю детской порнографии, который принял его за официальное письмо, — и послушно сдался властям.

  • AIM & AOL Password Hacker.exe
  • Microsoft CD Key Generator.exe
  • PornStar3D.exe
  • play station emulator crack.exe

В поиске новых программ пользователи P2P-сетей натыкаются на эти имена, скачивают файлы и запускают их на выполнение.

Технологии внедрения

Эти технологии используются злоумышленниками для внедрения в систему вредоносного кода скрытно, не привлекая внимания владельца компьютера. Осуществляется это через уязвимости в системе безопасности операционных систем и в программном обеспечении. Наличие уязвимостей позволяет изготовленному злоумышленником сетевому червю или троянской программе проникнуть в компьютер-жертву и самостоятельно запустить себя на исполнение.

Уязвимости являются, по сути, ошибками в коде или в логике работы различных программ. Современные операционные системы и приложения имеют сложную структуру и обширный функционал, и избежать ошибок при их проектировании и разработке просто невозможно. Этим и пользуются вирусописатели и компьютерные злоумышленники.

Уязвимостями в почтовых клиентах Outlook пользовались почтовые черви Nimda и Aliz. Для того чтобы запустить файл червя, достаточно было открыть заражённое письмо или просто навести на него курсор в окне предварительного просмотра.

Также вредоносные программы активно использовали уязвимости в сетевых компонентах операционных систем. Для своего распространения такими уязвимостями пользовались черви CodeRed, Sasser, Slammer, Lovesan (Blaster) и многие другие черви, работающие под ОС Windows. Под удар попали и Linux-системы — черви Ramen и Slapper проникали на компьютеры через уязвимости в этой операционной среде и приложениях для неё.

Одновременное использование технологий внедрения и методов социальной инженерии

Достаточно часто компьютерными злоумышленниками используются сразу оба метода. Метод социальной инженерии — для привлечения внимания потенциальной жертвы, а технический — для увеличения вероятности проникновения заражённого объекта в систему.

Например, почтовый червь Mimail распространялся как вложение в электронное письмо. Для того чтобы пользователь обратил внимание на письмо, в него вставлялся специально оформленный текст, а для запуска копии червя из вложенного в письмо ZIP-архива — уязвимость в браузере Internet Explorer. В результате при открытии файла из архива червь создавал на диске свою копию и запускал её на исполнение без каких либо системных предупреждений или дополнительных действий пользователя. Кстати, этот червь был одним из первых, предназначенных для воровства персональной информации пользователей интернет-кошельков системы e-gold.

Противодействие антивирусным программам

Поскольку цель компьютерных злоумышленников — внедрить вредоносный код в компьютеры-жертвы, то для этого им необходимо не только вынудить пользователя запустить заражённый файл или проникнуть в систему через какую-либо уязвимость, но и незаметно проскочить мимо установленного антивирусного фильтра. Поэтому не удивительно, что злоумышленники целенаправленно борются с антивирусными программами. Используемые ими технические приёмы весьма разнообразны, но чаще всего встречаются следующие:

Упаковка и шифрование кода. Значительная часть (если не большинство) современных компьютерных червей и троянских программ упакованы или зашифрованы тем или иным способом. Более того, компьютерным андеграундом создаются специально для этого предназначенные утилиты упаковки и шифровки. Например, вредоносными оказались абсолютно все встретившиеся в интернете файлы, обработанные утилитами CryptExe, Exeref, PolyCrypt и некоторыми другими.

Для детектирования подобных червей и троянцев антивирусным программам приходится либо добавлять новые методы распаковки и расшифровки, либо добавлять сигнатуры на каждый образец вредоносной программы, что снижает качество детектирования, поскольку не всегда все возможные образцы модифицированного кода оказываются в руках антивирусной компании.

Остановка работы антивируса и системы получения обновлений антивирусных баз (апдейтов). Многие троянские программы и сетевые черви предпринимают специальные действия против антивирусных программ — ищут их в списке активных приложений и пытаются остановить их работу, портят антивирусные базы данных, блокируют получение обновлений и т.п. Антивирусным программам приходится защищать себя адекватными способами — следить за целостностью баз данных, прятать от троянцев свои процессы и т.п.

Скрытие своего кода на веб-сайтах. Адреса веб-страниц, на которых присутствуют троянские файлы, рано или поздно становятся известны антивирусным компаниям. Естественно, что подобные страницы попадают под пристальное внимание антивирусных аналитиков — содержимое страницы периодически скачивается, новые версии троянских программ заносятся в антивирусные обновления. Для противодействия этому веб-страница модифицируется специальным образом — если запрос идёт с адреса антивирусной компании, то скачивается какой-нибудь нетроянский файл вместо троянского.


Что представляют собой программы-вымогатели?

Программа-вымогатель — это вредоносная программа, которая шифрует данные жертвы. После чего злоумышленник просит жертву заплатить выкуп за ключ для расшифровки ее файлов.
Первая такая программа появилась в 1989 году, распространялась на дискетах и требовала оплату в размере 189 долларов.
В 2019 году от атаки вируса-вымогателя пострадал город Балтимор. Ликвидация ущерба обошлась примерно в 18 млн долларов.
Но как именно работает это вредоносное ПО?

Как работает программа-вымогатель?


Программа-вымогатель — это многоэтапная атака, которую злоумышленники осуществляют разными способами. Но ключевые этапы одинаковые — проникнуть в сеть жертвы, зашифровать как можно больше данных и вымогать плату за расшифровку.

1. Инфицирование

Во-первых, злоумышленникам необходимо внедрить вредоносное ПО в выбранную сеть. Чаще всего это простая фишинговая атака с использованием вредоносных программ во вложенных файлах. После этого программа-вымогатель либо работает локально, либо пытается реплицироваться на другие компьютеры в сети.

2. Получение ключей безопасности

Затем вредоносная программа сообщает злоумышленникам о заражении жертвы и получает криптографические ключи, необходимые для шифрования данных.

3. Шифрование

На этом этапе программа-вымогатель выполняет шифрование файлов жертвы. Он начинает с локального диска, а затем пытается проверить сеть на наличие подключенных дисков или открытых дисков для атаки. Например, CryptoWall удалил файлы теневой копии (Volume Shadow Copy), чтобы затруднить восстановление из резервной копии, а также искал возможность похитить кошельки BitCoin. WannaCry использовал уязвимость EternalBlue для распространения на другие компьютеры и последующего шифрования.

4. Вымогательство

5. Разблокировка и восстановление

Теперь важно, платит ли жертва выкуп и надеется ли, что преступник честно пришлет ключи дешифрования. Или она удаляет вредоносное ПО и пытается восстановить зашифрованные данные вручную.
Злоумышленники обычно не предоставляют ключи даже после получения денег. Да, хоть это может и шокировать. Вот почему инцидент с вымогательством в городе Балтимор стоил так дорого, а восстановление заняло так много времени. В Балтиморе злоумышленникам не платили, поэтому ИТ-персоналу приходилось восстанавливать данные, когда это было под силу, и заново настраивать устройства, на которых они этого сделать не могли.
План восстановления также должен учитывать угрозу разглашения данных. Но как помешать злоумышленнику раскрыть украденные данные? Никак. В связи с этим защита систем и предотвращение проникновения вымогателей гораздо важнее, чем создание резервных копий данных.
Подробнее о принципе действия программ-вымогателей вы можете узнать из видео ниже — оно входит в наш бесплатный вводный курс Троя Ханта по вирусам-вымогателям:

Как защититься от программ-вымогателей: основные советы


Выстраивание защиты от атак программ-вымогателей включает действия как отдельных лиц, так и всего предприятия для предотвращения заражения.

Не нажимайте на ссылки!

Обеспечьте защиту электронной почты и конечных точек

Храните резервные копии

Храните актуальные резервные копии для защиты важных данных — как корпоративных, так и личных. Лучший и самый быстрый способ борьбы с вымогателями — сразу же повторно создать образ диска, а затем восстановить данные из последней надежной резервной копии. Конечно, если в результате атаки данные не были удалены — это уже другая проблема.

Защищайте конфиденциальную информацию

Люди генетически предрасположены к доверию. Это одна из эволюционных причин огромного распространения нашего вида. Присущее нам доверие помогает экстрасенсам убедить нас, что мы сами сделали определенный выбор, а злоумышленникам — заставить сообщать им свои пароли или девичьи фамилии матери.
Когда кто-либо просит у вас конфиденциальную информацию, будьте скептичны и выполняйте установленные правила. Здесь та же проблема, что и со ссылками, но это может быть и реальное личное общение.

Кто находится в группе риска?

Теоретически от программ-вымогателей может пострадать каждый. Из экономических соображений самые изощренные атаки обычно нацелены на крупные платежеспособные организации. Но не всегда атаки программ-вымогателей имеют какую-то конкретную цель. Некоторые злоумышленники используют методы ковровой бомбардировки и пытаются заразить как можно больше пользователей одновременно.

7 типов программ-вымогателей, которые необходимо знать каждому

Злоумышленники постоянно разрабатывают новые виды программ-вымогателей, которые используют различные векторы атаки, такие как вредоносная реклама, черви-вымогатели и программы одноранговой передачи файлов.

Атаки программ-вымогателей не обязательно должны быть хитроумными, чтобы приносить результат. Для распространения WannaCry и NotPetya использовалась широко известная уязвимость, и они оказались сверхэффективными.

Шифровальщики

Первая и наиболее распространенная категория этих программ — это вымогатели-шифровальщики. CryptoLocker и CryptoWall получили репутацию надежных вирусов-вымогателей для шифрования. Шифрование — это процесс кодирования данных, поэтому их невозможно прочитать без соответствующего ключа.

Взлом шифровальщиков

Как открытые, так и симметричные ключи теоретически могут быть взломаны методом подбора. Но рассчитывать на это не стоит. Современное шифрование — слишком сложный процесс даже для самых быстродействующих компьютеров.
Если конкретней, шансы расшифровать файлы, пораженные шифровальщиком, используя брутфорс, находятся где-то между мизерными и нулевыми (причем значительно ближе к нулю).

Программы-вымогатели, удаляющие данные

Блокировщики

Программы-вымогатели для мобильных устройств

Правила реагирования на атаку программы-вымогателя


1. Изоляция

Первым шагом в борьбе c программой-вымогателем является изоляция зараженных систем от остальной сети. Остановите работу этих систем и отсоедините сетевой кабель. Выключите WI-FI. Зараженные системы необходимо полностью изолировать от других компьютеров и запоминающих устройств этой сети.

2. Идентификация

Затем выясните, какое именно вредоносное ПО привело к заражению компьютеров. Специалисты отдела реагирования на инциденты, ИТ-персонал или сторонние консультанты должны определить тип программы-вымогателя и составить план наиболее эффективной борьбы с заражением.

3. Оповещение регулирующих органов об угрозе

В зависимости от наступивших последствий инцидента и применимых положений законодательства, об инциденте следует сообщить регуляторам.

4. Удаление вредоносного ПО

Удалите вредоносное ПО из зараженных систем, чтобы предотвратить дальнейшее их повреждение и распространение вируса.

5. Восстановление данных

После подавления атаки переходите к процессу восстановления. Оплата выкупа — один из вариантов. Возможно, злоумышленники — благородные воры и отдадут вам ключи, необходимые для дешифрования данных. Оптимальный вариант — восстановление из самой последней доступной резервной копии. При ее наличии.

Стоит ли платить выкуп?

Нет. В большинстве случаев этого не стоит делать. В приоритете должна быть защита от программ-вымогателей, а также доступные варианты резервного копирования. Регулярно создавайте резервные копии, чтобы предотвратить подобные атаки и защитить данные, и тогда в оплате выкупа никогда не возникнет необходимости. Тем не менее, на практике всё может быть гораздо сложнее.
Предоставляется ли киберстрахование для защиты от атак вирусов-вымогателей? Можно ли купить биткойны, чтобы вовремя заплатить выкуп? Имеются ли резервные копии для зараженных систем? Имеют ли данные критическую важность? При принятии решения о внесении выкупа вам, скорее всего, нужно будет ответить на эти вопросы.

Перед рассмотрением вопроса о переводе средств

Поиск инструмента для дешифрования

В каких случаях стоит задуматься о переводе средств

Отказ от оплаты: в каких случаях не стоит идти на поводу


Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…

В общем, для статьи вполне достаточно лирики, перейдем к делу. Я хочу рассказать о классическом вирусе, его структуре, основных понятиях, методах детектирования и алгоритмах, которые используются обеими сторонами для победы.

Мы будем говорить о вирусах, живущих в исполняемых файлах форматов PE и ELF, то есть о вирусах, тело которых представляет собой исполняемый код для платформы x86. Кроме того, пусть наш вирус не будет уничтожать исходный файл, полностью сохраняя его работоспособность и корректно инфицируя любой подходящий исполняемый файл. Да, ломать гораздо проще, но мы же договорились говорить о правильных вирусах, да? Чтобы материал был актуальным, я не буду тратить время на рассмотрение инфекторов старого формата COM, хотя именно на нем были обкатаны первые продвинутые техники работы с исполняемым кодом.

Начнём со свойств кода вируса. Чтобы код удобней было внедрять, разделять код и данные не хочется, поэтому обычно используется интеграция данных прямо в исполняемый код. Ну, например, так:


Все эти варианты кода при определенных условиях можно просто скопировать в память и сделать JMP на первую инструкцию. Правильно написав такой код, позаботившись о правильных смещениях, системных вызовах, чистоте стека до и после исполнения, и т.д., его можно внедрять внутрь буфера с чужим кодом.

  • Куда положить вирус? Необходимо найти достаточно места, чтобы вирус туда поместился, записать его туда, по возможности не разломав файл и так, чтобы в области, в которой вирус окажется, было разрешено исполнение кода.
  • Как передать управление на вирус? Просто положить вирус в файл недостаточно, надо еще совершить переход на его тело, а после завершения его работы вернуть управление программе-жертве. Или в другом порядке, но, в любом случае, мы же договорились не ломать ничего, да?

Исполняемый файл (PE или ELF) состоит из заголовка и набора секций. Секции – это выровненные (см. ниже) буферы с кодом или данными. При запуске файла секции копируются в память и под них выделяется память, причем совсем необязательно того объёма, который они занимали на диске. Заголовок содержит разметку секций, и сообщает загрузчику, как расположены секции в файле, когда он лежит на диске, и каким образом необходимо расположить их в памяти перед тем, как передать управление коду внутри файла. Для нас интересны три ключевых параметра для каждой секции, это psize, vsize, и flags. Psize (physical size) представляет собой размер секции на диске. Vsize (virtual size) – размер секции в памяти после загрузки файла. Flags – атрибуты секции (rwx). Psize и Vsize могут существенно различаться, например, если программист объявил в программе массив в миллион элементов, но собирается заполнять его в процессе исполнения, компилятор не увеличит psize (на диске содержимое массива хранить до запуска не нужно), а вот vsize увеличит на миллион чего-то там (в runtime для массива должно быть выделено достаточно памяти).

Флаги (атрибуты доступа) будут присвоены страницам памяти, в которые секция будет отображена. Например, секция с исполняемым кодом будет иметь атрибуты r_x (read, execute), а секция данных атрибуты rw_ (read,write). Процессор, попытавшись исполнить код на странице без флага исполнения, сгенерирует исключение, то же касается попытки записи на страницу без атрибута w, поэтому, размещая код вируса, вирмейкер должен учитывать атрибуты страниц памяти, в которых будет располагаться код вируса. Стандартные секции неинициализированных данных (например, область стека программы) до недавнего времени имели атрибуты rwx (read, write, execute), что позволяло копировать код прямо в стек и исполнять его там. Сейчас это считается немодным и небезопасным, и в последних операционных системах область стека предназначена только для данных. Разумеется, программа может и сама изменить атрибуты страницы памяти в runtime, но это усложняет реализацию.

Также, в заголовке лежит Entry Point — адрес первой инструкции, с которой начинается исполнение файла.

Необходимо упомянуть и о таком важном для вирмейкеров свойстве исполняемых файлов, как выравнивание. Для того чтобы файл оптимально читался с диска и отображался в память, секции в исполняемых файлах выровнены по границам, кратным степеням двойки, а свободное место, оставшееся от выравнивания (padding) заполнено чем-нибудь на усмотрение компилятора. Например, логично выравнивать секции по размеру страницы памяти – тогда ее удобно целиком копировать в память и назначать атрибуты. Даже вспоминать не буду про все эти выравнивания, везде, где лежит мало-мальски стандартный кусок данных или кода, его выравнивают (любой программист знает, что в километре ровно 1024 метра). Ну а описание стандартов Portable Executable (PE) и Executable Linux Format (ELF) для работающего с методами защиты исполняемого кода – это настольные книжки.

  • поставить указатель точно на начало какой-нибудь инструкции (просто так взять рандомное место в исполняемой секции и начать дизассемблирование с него нельзя, один и тот же байт может быть и опкодом инструкции, и данными)
  • определить длину инструкции (для архитектуры x86 инструкции имеют разные длины)
  • переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
  • повторять, пока не решим остановиться
  1. Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
  2. Читаем свой код (код тела вируса).
  3. Берем несколько первых инструкций из файла-жертвы.
  4. Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
  5. Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
  6. Создаем новую секцию, записываем туда код вируса и правим заголовок.
  7. На место этих первых инструкций кладем переход на код вируса.

Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.

Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:

  • сокрытие кода самого вируса;
  • сокрытие его точки входа.

Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.

Гораздо более подробно некоторые алгоритмы таких движков и детектора мы посмотрим во второй статье, которую я планирую написать в ближайшее время.

Рассмотренный в статье детектор легко детектирует неполиморфные (мономорфными их назвать, что ли) вирусы. Ну а переход к полиморфным вирусам является отличным поводом, наконец, завершить эту статью, пообещав вернуться к более интересным методам сокрытия исполняемого кода во второй части.

Читайте также: