Бесфайловое вредоносное ПО атакует цель, используя уязвимость, например. во Flash-плагине браузера или в сетевом протоколе.
Процесс Linux можно изменить с помощью системного вызоваptrace()
. Этот системный вызов обычно используется отладчиками для проверки и управления внутренним состоянием целевого процесса и полезен при разработке программного обеспечения.
Например, давайте рассмотрим процесс с PID 1234. Все адресное пространство этого процесса можно просмотреть в псевдофайловой системе /proc
по адресу /proc/1234/mem
. Вы можете открыть этот псевдофайл, а затем подключиться к этому процессу через ptrace()
; после этого вы можете использовать pread()
и pwrite()
для записи в пространство процесса.
char file[64];
pid = 1234;
sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);
waitpid(pid, NULL, 0);
off_t addr =...; // target process address
pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);
ptrace(PTRACE_DETACH, pid, 0, 0);
close(fd);
(Код взят из здесь . Другая статья об эксплойте ptrace доступна здесь .)
Что касается защиты от этих атак, ориентированной на ядро -, единственным способом является установка исправлений поставщика ядра и/или отключение определенного вектора атаки. Например, в случае ptrace вы можете загрузить блокирующий модуль ptrace -в ядро, которое отключит этот конкретный системный вызов; ясно, что это также делает вас неспособным использовать ptrace для отладки.
Ответ состоял в том, чтобы дважды проверить правильный шлюз и сетевую маску, а затем убедиться, что вы назначаете IP-адрес, который является частью той же подсети.
address 10.0.1.60
netmask 255.255.255.0
gateway 10.0.1.1