Эволюция технологий самозащиты вредоносных программ - Выбор домашних средств защиты - Форумы Anti-Malware.ru Перейти к содержанию
Иван

Эволюция технологий самозащиты вредоносных программ

Recommended Posts

Иван

Алиса Шевченко из Касперского написала статью

Эволюция технологий самозащиты вредоносных программ

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

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

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

http://www.viruslist.ru/analysis?pubid=204007553

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vaber

Интересная статья, достаточно обширная.

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

Основной уклон делается в сторону поведенческого анализа, с чем лично я, собственно, согласен.

Была затронута тема бестелесых вирусов - в частности который хранит свой бинарник в параметре реестре. Вероятно имелся ввиду 0x48k Registry Backdoor от Cr4sh (hellknights.void.ru/releases.php).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EP_X0FF

Интересная статья, ничего нового в ней нет. Это скорее констатация собственной беспомощности.

Вопрос к автору, когда это Gromozon стал использовать DKOM, для чего отрастил драйвер и загрузился в ядро?

По поводу "Заключения".

Посмеялся от души минуты две.

"Фи какие вы противные, безответственные и ам0ральные".

А кого, извините, е*?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Иван

жестокий циничный вы человек :D

надо верить в светлое и прекраное, атор обращается к этим чувствам читателя :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
A.

Вадим Богданов, Алексей Де-Мондерик, Евгений Касперский

Сентябрь 1992

Несколько советов авторам вирусов

Успокойтесь! Не надо готовить ругательства или, наоборот, потирать руки. Мы не хотим делиться своими идеями с авторами компьютерных вирусов. Все значительно проще - через наши руки прошло несколько сотен образцов компьютерных животных, и слишком часто в них встречались одни и те же ошибки. С одной стороны, это хорошо - такие вирусы часто оказываются "маложивущими", но с другой стороны, малозаметная ошибка может привести к несовместимости вируса и используемого на компьютере программного обеспечения. В результате вирус "вешает" систему, компьютер отдыхает, а пользователи мечутся в панике с криками: "Пусть хоть 100 вирусов, лишь бы компьютер работал!!!" (завтра сдавать заказ, не запускается самая любимая игрушка, компилятор виснет при выходе в DOS и т.п.). И все это происходит при заражении довольно безобидным вирусом.

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

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

(Ст.98 УК РСФСР)

Правило 0. Не надо писать вирусы - на свете так много интересного! Если нечего делать, то перепишите что-нибудь с DOS на Windows, если хочется прославиться - сделайте то же самое, но потом раздайте свою программу всем желающим и нежелающим.

Правило 1. При запуске вирус должен сохранять все регистры, которые передает DOS загружаемой программе (то есть не только AX, DS и ES, но и остальные), а при переходе на программу восстанавливать их (за исключением корректировки SS:SP, если это нужно). Почему? Объясняем.

Существуют (и обязательно появятся еще) программы, которые используют для своих нужд значения регистров, передаваемых из DOS'а при загрузке. Например, довольно популярный архиватор COM- и EXE-файлов DIET (версия 1.10а) при распаковке запускаемых COM-файлов предполагает, что значение регистра ВХ обязательно должно быть равно 0000h. Если подобная программа будет заражена вирусом, который не восстанавливает регистры при передаче управления на тело программы, то она скорее всего "умрет" при загрузке.

При загрузке регистры принимают значения (верно для MS-DOS 3.30 - 5.0): AX = BX - корректность имени диска в командной строке (0 или 00FF); CX, BP - не определены; DX=DS; SI=IP; DI=SP.

Правило 2. Если вы используете или корректируете системные области DOS (буферы, стек, фрагменты обработки прерываний), вы обязательно должны проверять, в какой системе находитесь. Почему? Объясняем.

Как правило, каждая следующая версия DOS своей внутренней организацией не похожа на предыдущую. Это касается и буферов, и стека, и многого другого. Поэтому, если вы полностью дизассемблировали и разобрали по косточкам версию MS-DOS 3.30, это вовсе не значит, что вы постигли все тайны фирмы Microsoft и вам можно ставить памятник. Нет! Вам следует перекурить и приниматься за версию 4.0х, потом 5.00 а в минуты отдыха и по ночам потрошить DR-DOS.

Правило 3. При заражении программ сначала записывайте вирус, а затем модифицируйте начало файла (в случае, если вирус пишется в начало или середину файла - сначала сохраните стираемую часть, а затем записывайте вирус). Почему? Объясняем.

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

Правило 4. Если вы заражаете COM- и ЕХЕ- файлы, сохраняйте первые два байта заражаемой программы и проверки "COM или ЕХЕ" проводите только по ним (напомню - в начале ЕХЕ-файлов должна быть сигнатура - 4D5Ah или 5A4Dh). Говорим об этом только потому, что участились случаи появления вирусов, которые проверяют "COM или ЕХЕ" по способу: равен регистр CS регистру DS (ES) или нет (некоторые даже умудряются проверять по регистру IР, - равен он 100h или нет). Это в корне неверно, так как при запуске ЕХЕ-файла регистр CS может быть равен регистру DS (если в ЕХЕ-заголовке по смещению 16h стоит слово FFF0h), а регистр IР- 100h (слово по смещению 14h - 100h). Мы, например, при работе с вирусами иногда используем именно такие файлы.

Кстати, до сих пор попадаются вирусы, которые определяют формат файла по расширению его имени (.COM или .EXE). О том, что это является грубой ошибкой, знают даже в детских садах!

Правило 5. При заражении ЕХЕ-файлов обязательно сравнивайте длину файла с длиной загружаемого модуля. Если они не совпадают, то такой файл лучше не трогать, так как вы либо уничтожите оверлей, либо программа перестанет загружаться в память. Для ЕХЕ-файлов также следует проверять значения стековых регистров, иначе в некоторых случаях вирус будет уничтожен стеком. Так же проверяйте длину СОМ-файлов: не следует их делать больше, чем 64 Кбайта.

Правило 6. Учтите, чем дальше, тем больше вашим вирусам придется сталкиваться с защищенным режимом процессоров 80х86, в котором, как известно, перехват прерывания 21h является довольно тонким вопросом. Если вы перехватываете int 21h "по-старинке", то многие новые продукты (например, Borland С++ 3.0) будут зависать, а Windows при нескольких DOS-задачах в фоновом режиме может выдать "unrecoverable application error".

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

* непосредственно перед вызовом OLD 21 нужно запретить аппаратные прерывания (cli);

* для всех функций, которые не обрабатывает ваш резидент, OLD 21 нужно выполнять через JMP, а не через CALL.

Правило 7. Теперь насчет порчи программ и дисков. Сравните вирусы зарубежного и отечественного производства. Вам сразу бросится в глаза, что почти каждый советский вирус, в отличие от зарубежных (не считая тайваньских: "Восток - дело тонкое"), что-нибудь, да испортит. Даже большая группа болгарских вирусов не идет ни в какое сравнение с нашими вирусами по части пакостей. Что это - особенности русской (точнее - советской) души или наследие сталинизма?

Короче, если вы пишете вирус, старайтесь воздерживаться от вставки пакостей - это может вам же выйти боком. Несмотря на отсутствие в нашем уголовном законодательстве статьи о написании вирусов, там есть другая статья - "причинение материального ущерба". Вот по этой статье вас и посадят, тем более, что такой случай уже был (по сообщению Н. Н. Безрукова). Ну, а если и не посадят, то пострадавшие могут найти и, извините, морду набить. И такие случаи тоже бывали.

Ну а уж если вы все-таки вставили какую-то гнусность, то запускайте свой вирус на своем компьютере и - наслаждайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Михаил Кондрашин

A.

Как все было славно в начале славных дел...

Что можно было бы написать авторам современных угроз? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Ильин

Я бы назвал этот документ "Памяткой вирусописателя" :-)

A., спасибо! Я думаю многим было очень интересно с ним ознакомиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • demkd
      ИИ — полезная штука, но, к сожалению, бесплатные версии, как тот же Google Gemini Flash, тупенькие на уровне 12b моделей, делают колоссальное число ошибок по мелочам. Яблочко от яблони... Мало того, "новое" у них обычно старое с отставанием на год, и это в лучшем случае. Я сейчас как раз занимаюсь новой, уже 3-й версией своего "Клавиатурного помощника". В нём будет поддержка локального ИИ, горячих ИИ-клавиш, голосовых команд, голосового ввода и вспомогательной LLM для переводов, правки текста и т.п. Именно локального ИИ без необходимости обращения в сеть и сопутствующих утечек данных И это не для старого железа — нужно как минимум много памяти и современный процессор, в идеале хотя бы RTX 5060 Ti 16 ГБ в качестве ускорителя. А результат, ну, такой себе. ИИ слишком склонен ошибаться, и доверять ему что-то серьёзное пока не стоит, даже код пишет, который как-то работает, но в нём масса мелких и незаметных ошибок и уязвимостей. 
      Текст исправлен с помощью Google Gemma 4 E4B. 
    • PR55.RP55
      Вы сказали: "Найди все новые ключи которые появились 2026 г. и ранее не использовались... Можешь ?"
      *Да, я могу помочь* составить список новых ключей реестра и путей
      автозагрузки, которые вредоносное ПО использует в текущих кампаниях
      (включая модификации 2026 года), маскируясь под легальные системные
      компоненты. ( скопирую частично) :   * *|HKLM\SOFTWARE\Classes\Protocols\Filter|* и *|\Handler|* — новые
          модификации Adware перехватывают протоколы edge:// или msproedg://
          для подмены поисковой выдачи.   * *|HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss|* —
          использование подсистемы WSL для скрытого автозапуска
          Linux-ориентированных рекламных модулей, незаметных для стандартных
          триггеров автозагрузки Windows. Современные зловреды (особенно Adware и майнеры) научились прописываться
      в тихий автозапуск без создания классических ключей |Run| или
      |Services|. Они используют встроенный механизм Windows 10/11 —
      *псевдонимы выполнения приложений*.   * *Суть*: В реестре создается связь в ветке
          |HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths| или через
          механизм |AppXPackage|. Зловред подменяет вызов легальной команды
          (например, при наборе пользователем |notepad| или |calc| в строке
          «Выполнить») и запускает свое тело.
        * *Что добавить в памятку*: Обращать внимание на появление кастомных
          записей в блоке «Псевдонимы приложений» и проверять, куда
          перенаправляются стандартные системные вызовы. 2. Подмена через каталоги |Lxss| (WSL — Windows Subsystem for Linux)
      Это одна из самых опасных современных тенденций, так как многие
      антивирусы до сих пор слабо сканируют Linux-среду внутри Windows.   * *Суть*: Майнеры и стилеры прописывают свой запуск внутри
          дистрибутива WSL (ключ реестра
          |HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss|). При старте
          Windows запускается скрытая фоновая сессия WSL, которая активирует
          ELF-бинарник (Linux-вирус). В логах автозапуска Windows это выглядит
          как легальный старт службы |wsl.exe|, но с хитрыми аргументами.
        * *Что добавить в памятку*: Формула «А+В+С»: если |wsl.exe|
          запускается автоматически с флагами |-d| (конкретный дистрибутив)
          или скрытыми bash-скриптами — это 100% повод для изоляции и проверки
          содержимого виртуального диска VHDX. 3. Продвинутый Timestomping с подделкой под апдейты ОС
      Раньше вирусописатели просто копировали даты у соседних файлов
      (|kernel32.dll| и т.д.). Теперь они действуют умнее:   * *Суть*: Дата создания файла выставляется ровно на день/час крупного
          официального обновления Windows (например, подстраиваются под график
          Patch Tuesday от Microsoft). Аналитик смотрит на лог uVS, видит дату
          (например, |14.10.2025|) и думает: «А, ну это тогда накопительный
          апдейт прилетел, файл чистый».
        * *Что добавить в памятку*: Правило проверки контрольных сумм. Не
          верить датам, даже если они идеально совпадают со временем
          системного обновления. Если у файла из папки |System32| с
          «правильной» датой обновления отсутствует валидная ЭЦП (или статус
          |Цифр. подпись: НЕТ|) — это критический триггер. 4. Атаки типа Living off the Land (LotL) через новые системные утилиты
      Вместо использования заезженных |powershell.exe| или |cmd.exe|, которые
      сейчас жестко блокируются любым EDR/антивирусом, малварь перешла на
      легальные, но редкие утилиты Windows (LOLBins).   * *Суть*: Для скачивания и запуска вредоносного кода используются
          системные компоненты:
            o |curl.exe| (теперь встроен в Windows) — для скрытой загрузки
              полезной нагрузки.
            o |tar.exe| — для распаковки зашифрованных архивов со стилерами
              прямо «на лету».
            o |winget.exe| (Windows Package Manager) — для скачивания
              вредоносных утилит из легальных репозиториев.
        * *Что добавить в памятку*: В uVS нужно тщательно анализировать
          параметры запуска командной строки в Планировщике задач (|TASKS|),
          если там фигурируют |curl|, |tar| или |bitsadmin|, качающие что-то с
          внешних IP-адресов. 6. Скрытые модификации через COM-объекты (COM Hijacking без изменения
      файлов)
      Вместо перезаписи файлов в |System32| или создания явных ключей |Run|,
      малварь перехватывает легальные системные интерфейсы через реестр.   * *Суть*: Зловред прописывает путь к своей вредоносной DLL в ветку
          *|HKCU\Software\Classes\CLSID\{GUID}\InprocServer32|*. При этом
          берется GUID легального и часто используемого компонента Windows
          (например, Проводника, контекстного меню или планировщика). Как
          только система или пользователь совершает обычное действие
          (открывает папку, кликает правой кнопкой мыши), Windows
          автоматически подгружает вредоносную DLL.
        * *Что добавить в памятку*: В uVS такие объекты часто попадают в
          категорию «Подозрительные CLSID» или скрытые расширения оболочки.
          Если в ветке |HKCU| (пользовательский уровень) переопределяется
          системный GUID, который по умолчанию должен жить только в |HKLM|
          (уровень системы) — это явный признак перехвата. 7. Спуфинг цифровой подписи через уязвимости каталогов (Catalog Signing
      Spoofing)
      Малварь научилась обходить базовую проверку подписей, из-за чего в логах
      некоторых утилит файл может ошибочно помечаться как «Подписан Microsoft».   * *Суть*: Используются уязвимости в механизме проверки файлов через
          каталоги безопасности Windows (|.cat| файлы). Вредоносный бинарник
          модифицируется таким образом, что его хэш совпадает с хэшем
          легального файла в базе данных каталогов (используются коллизии или
          специфические уязвимости парсинга).
        * *Что добавить в памятку*: Правило двойной проверки. Если файл
          находится в нетипичном месте (например,
          |C:\Users\...\Temp\svchost.exe|), но uVS или ОС рапортует, что у
          него «Валидная подпись Microsoft» — необходимо принудительно
          отправлять хэш файла на VirusTotal через встроенную функцию uVS или
          проверять подпись сторонними утилитами (например, |Sigcheck| от
          Sysinternals) с проверкой отзывов сертификатов. 8. Эксплуатация механизма «Служб доставки обновлений» браузеров
      (Edge/Chrome Maintenance)
      Рекламное ПО (Adware) и кликеры ушли от создания собственных явных служб
      и теперь паразитируют на легальных планировщиках браузеров.   * *Суть*: Вредоносный скрипт не создает новую задачу в Планировщике.
          Вместо этого он модифицирует параметры /уже существующей/ легальной
          задачи, например, |MicrosoftEdgeUpdateTaskMachineCore|. В
          оригинальную команду дописывается скрытый аргумент
          (аргумент-паразит), который раз в сутки скачивает или запускает
          рекламный модуль. Аналитик видит знакомое имя задачи Edge, видит
          легальный путь к апдейтеру и пропускает её.
        * *Что добавить в памятку*: При анализе задач Планировщика (|TASKS|) в
          uVS нужно смотреть не только на имя файла, но и *полностью
          разворачивать строку аргументов*. Любые добавленные URL-адреса,
          вызовы |cmd /c|, или сторонние пути в параметрах легальных служб
          обновления — это стопроцентный признак компрометации. 10. Фейковые системные переменные в путях автозапуска
      Обман визуального восприятия аналитика через манипуляцию переменными среды.   * *Суть*: В реестре или планировщике путь к файлу прописывается как
          |%SystemRoot%\System32\drivers\malware.sys|. Но перед этим на уровне
          пользователя (|HKCU\Environment|) создается кастомная переменная
          |%SystemRoot%|, которая указывает вовсе не на |C:\Windows|, а на
          |C:\Users\Public\Documents|. В итоге аналитик глазами видит
          «безопасный» системный путь, а система при загрузке идет в скрытую
          пользовательскую папку.
        * *Что добавить в памятку*: Всегда проверять блок «Переменные
          окружения» в начале лога uVS. Любые попытки переопределить
          стандартные переменные вроде |%SystemRoot%|, |%WinDir%| или
          |%ProgramFiles%| на уровне текущего пользователя — это критическая
          угроза.
    • PR55.RP55
      Сейчас дал ИИ задание напиши скрипт и... Вот:  ( взял Инфо. из одного из старых образов) Скрипт лечения для uVS Чтобы полностью удалить эту службу, связанные с ней файлы и очистить ссылки в реестре, выполните следующий скрипт: text ; uVS v4.15.1 [Script] ; Target OS: Windows ; Удаление вредоносной службы и основного файла апдейтера delref %Network%\C:\PROGRAM FILES (X86)\YONTOO\Y2DESKTOP.UPDATER.EXE ; Удаление исполняемого файла в AppData, вызываемого через параметры службы delref %AppData%\YONTOO\YONTOODESKTOP.EXE ; Принудительное удаление самой службы из реестра delsrv Yontoo Desktop Updater ; Очистка остаточных путей и каталогов Yontoo deldir C:\Program Files (x86)\Yontoo deldir C:\Users\cappu44ino\AppData\Roaming\Yontoo ; Перезагрузка для применения изменений restart --------- Я сильно не увлекался - так для примера.  
    • PR55.RP55
      santy Модели ИИ ( я делал запрос к google ) - есть возможность задать вопрос ( дать задание ) по заранее выбранным настройкам: настройки: yaml [SYSTEM_OVERRIDE] ---------- Код он сам себе напишет :)  Главное задать нужные вопросы и потом попросить\ сохранить настройки в виде кода ) Единственно - не все ИХ модели нормально работают. Результаты тоже нужно проверять... Например:  получить Резюме... По записи - ( как в моём примере в Новые функции ) С заранее заданными параметрами - что нам нужно.  Это и для обучения и для экономии времени и когда оператор устал, для написания отчёта - по работе на семинар, при обсуждении на форуме, анализ новых угроз или появился новый ключ автозапуска; там где есть сомнение - что это... Построить цепочку - чтобы увидеть механику процесса\заражения. Увидеть аномалии - как то, что браузер "подписан" но это ЭЦП не головного офиса - а ЭЦП - пусть и "легитимное" - но смежников.  Аномалии пути; размера; схожесть имени и т.д. Никакие настройки uVS этого не дадут.  Можно увидеть никогда ранее неиспользуемый ключ запуска ( или его нестандартное применение ).  Если железо современное - то возможно? - локальные модели ИИ. Можно попробовать например дать задание: Найди все новые ключи которые появились 2026 г. и ранее не использовались...  
    • santy
      Как гипотетические варианты действий: ---------------------- - получить детальную расшифровку выбранного антивирусного детекта по результату проверки файла на VT из экрана ИНФО. Здесь я бы обратил внимание на три основных детекта: у Kaspersky, DrWeb, ESET, возможно + Microsoft. - получить расшифровку по цифровой подписи файла, насколько известна, и надежна. -  может стоит продумать свою классификацию детектов, и потом уже на основании данной классификации находить другие примеры/способы запуска и т.п.
×