- Вопрос или проблема
- Не все эксплойты требуют изменений файлов
- Время изменения файлов в Linux странное
- Ответ или решение
- Основные причины, почему использование find для сканирования может быть неэффективным
- 1. Не все угрозы требуют изменений файлов
- 2. Неоднозначности временных штампов файлов в Linux
- 3. Возможность манипуляции временными метками
- Заключение
Вопрос или проблема
Мне нужно просканировать системы Linux на вирусы/вредоносные программы, просто весь файловый союз. Есть несколько вариантов.
- Один из них — это то, что обычно делают пользователи: использовать антивирус для сканирования системы раз в день.
- Второй вариант — найти файлы, изменённые за последний день, и передать этот список антивирусной программе.
Я протестировал следующую команду bash find
в директории с 5 миллионами пустых файлов, и она крайне эффективна.
date;find /test/ -type f -ctime -1 -type f 1>./find_ctime.out 2>./find.errors;date
Это занимает всего около 5 секунд.
Я использую опцию -ctime просто чтобы преодолеть некоторые программы, которые изменяют время модификации с помощью утилиты типа touch.
Большинство администраторов, когда говорят о сканировании системы, имеют в виду полное сканирование с помощью антивируса.
Есть ли причина, по которой не следует использовать find для получения списка изменённых файлов и их сканирования?
К слову: Этот вопрос опубликован как https://superuser.com/questions/1864184/is-there-a-reason-why-i-cant-use-find-to-scan-modified-files-for-viruses-and-ma. Я помещаю его здесь тоже, потому что не уверен, какой сайт лучший для этого.
Заранее спасибо,
Это, вероятно, не самая плохая идея, если вы также регулярно проводите полные сканирования системы наряду с вашими инкрементальными сканированиями, однако есть некоторые недостатки:
Не все эксплойты требуют изменений файлов
Некоторые эксплойты могут оставаться в дремлющем состоянии в старых файлах, которые просто не были обнаружены старыми сигнатурами антивируса. Так что, когда выходят новые сигнатуры, возможно, они найдут угрозы в старых файлах.
Время изменения файлов в Linux странное
Есть всевозможные особенности и несоответствия с временными метками изменения и модификации файлов в Linux.
- Не все файловые системы поддерживают ctime и mtime, а те, которые поддерживают, не всегда используют это.
- Вы можете произвольно изменять ctime так же, как и mtime, на что угодно.
- Если вы записываете напрямую на диск с помощью чего-то вроде
dd
, вы можете обойти mtime/ctimes. - Если файл отображается в памяти, его можно изменить, не обновляя mtime/ctime на диске.
- Файлы на сетевом хранилище — это просто дикий запад.
- Можно манипулировать временем изменения файлов с жёсткими ссылками.
- Вы можете изменить системное время при изменении файла, а затем вернуть его обратно, чтобы манипулировать временем изменения файла.
Так что, учитывая все это, если злоумышленник знает, что ваша политика сканирования антивирусом основана на времени изменения/изменения, он может очень легко обойти это одним из вышеперечисленных методов и, вероятно, дюжиной других.
Ответ или решение
Вопрос контроля за безопасностью систем, особенно в контексте вирусов и вредоносных программ, является поистине важным в современном мире. Ваше стремление использовать команду find
для сканирования измененных файлов на Linux-системах, тем не менее, требует более глубокого анализа.
Основные причины, почему использование find
для сканирования может быть неэффективным
1. Не все угрозы требуют изменений файлов
Первое, что следует учитывать, это то, что многие вирусы и вредоносные программы могут существовать в системе, не производя изменений в файлах. Например, существует множество вредоносных скриптов, которые могут эксплуатировать уязвимости программного обеспечения или системы, оставаясь незамеченными даже при анализе модификаций файлов. Это включает в себя задействование системных процессов или использование сторонних библиотек.
2. Неоднозначности временных штампов файлов в Linux
Файловые системы в Linux могут использовать разные механизмы отслеживания времени модификации, и не все из них поддерживают такие же временные метки, как ctime
и mtime
. Вот несколько факторов, которые следует учитывать:
- Изменение временных меток: В Linux можно программно изменять временные метки (например, с помощью команды
touch
), что может привести к тому, что фактические изменения файлов не будут отображены. - Некоторые файловые системы не поддерживают временные метки: Это может привести к тому, что вы не получите точную картину изменений на всех типах хранилищ.
- Прямое обращение к диску: Команда
dd
и другие низкоуровневые операции могут обойти обновление временных меток, оставляя файл неизмененным с точки зрения временных меток, но содержащим вредоносный код. - Изменения в памяти: Если файл замапирован в память, его изменения могут не обновить временные метки на диске.
- Сложности с сетевыми хранилищами: В случае работы с NAS решениями временные метки могут не синхронизироваться должным образом.
3. Возможность манипуляции временными метками
Наконец, если злоумышленник знает, что ваша политика проверки основана на временных метках, он может использовать различные техники, чтобы обойти это ограничение. Например:
- Изменение системного времени во время модификации файла.
- Создание жестких ссылок, которые могут выводить в заблуждение системы, основывающиеся на временных метках.
Заключение
Ваша идея использовать find
для оптимизации процесса сканирования с целью выявления измененных файлов имеет свои плюсы, такие как экономия времени и ресурсов. Тем не менее, существуют серьезные недостатки, которые могут поставить под угрозу безопасность вашей системы.
Рекомендуется рассматривать ‘find’ как вспомогательный инструмент, а не как основное средство для проверки. Оптимальным будет сочетание методов — регулярное полное сканирование системы с использованием проверенного антивирусного ПО и дополнение его целенаправленными проверками измененных файлов. Это поможет обеспечить комплексную защиту и повысит шансы на обнаружение скрытых угроз.
Если у вас есть вопросы или вам требуется дополнительная информация о методах обеспечения безопасности, пожалуйста, не стесняйтесь обращаться.