Я понимаю определение вредоносного ПО без файлов:
Вредоносный код, который не основан на файлах, но существует только в памяти ... В частности, вредоносный код без файлов ... присоединяется к активному процессу в памяти ...
Может кто-нибудь объяснить, как работает добавление себя к активному процессу в памяти?
Кроме того, что (ядро) защита / защита от таких атак?
process
linux-kernel
malware
Мартин Вегтер
источник
источник
Ответы:
Безфайловое вредоносное ПО атакует цель, используя уязвимость, например, в плагине Flash браузера или по сетевому протоколу.
Процесс Linux может быть изменен с помощью системного вызова
ptrace()
. Этот системный вызов обычно используется отладчиками для проверки и управления внутренним состоянием целевого процесса и полезен при разработке программного обеспечения.Например, давайте рассмотрим процесс с PID 1234. Все адресное пространство этого процесса можно просмотреть в псевдофайловой системе
/proc
в этом месте/proc/1234/mem
. Вы можете открыть этот псевдофайл, а затем присоединиться к этому процессу черезptrace()
; после этого вы можете использоватьpread()
иpwrite()
для записи в пространство процесса.(Код взят здесь . Еще одна статья о подвиге ptrace доступна здесь .)
Что касается ориентированной на ядро защиты от этих атак, единственным способом является установка исправлений вендора ядра и / или отключение определенного вектора атаки. Например, в случае ptrace вы можете загрузить модуль блокирования ptrace в ядро, которое отключит этот конкретный системный вызов; ясно, что это также делает вас неспособным использовать ptrace для отладки.
источник
/proc/PID/mem
. Я надеюсь, что вы менее устойчивы, чем другие, к обновлению и исправлению своего ответа, вместо того, чтобы увековечивать мифы и дезинформацию.Когда вам удается завершить процесс, вы можете заставить процесс вставить данные в память. Очень популярный способ сделать это - использовать переполнение буфера .
Как это работает ? Например, вы знаете, что процесс прослушивает порт x и имеет буфер для определенной функции, скажем, размером 15 байт. Вы вызываете эту функцию с 15 байтами данных + n байтов (ваш код должен быть выполнен). Если программа не проверяет данные должным образом, она перезапишет соседнюю память вашим кодом и, таким образом, код будет храниться в памяти. Если вы можете выполнить этот код, вы владеете системой. Существуют ограничения, например, процесс не может записывать в память за пределами своего выделенного пространства .
Во всех ОС существует длинный список уязвимостей, где переполнение буфера позволяет взломщикам вводить данные в память цели.
источник