Как обнаружить и удалить трояна Linux?

16

Я недавно (повторно) наткнулся на это:

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

Как можно обнаружить и удалить троянского коня или мошенническое приложение / скрипт?

iamsid
источник
Я задавал тот же вопрос (через 3 минуты после того, как задал вопрос здесь) по адресу: askubuntu.com/questions/13265/… Дайте мне знать, если это нарушение, я удалю один из них.
iamsid

Ответы:

20

Там нет общего рецепта. Если ваша система была заражена неизвестным трояном, все, что вы можете сделать, это переустановить.

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

Многие системы имеют безопасный канал распределения на месте. Например, когда вы устанавливаете пакет из репозиториев Ubuntu с помощью инструментов на основе apt (apt-get, aptitude, synaptic, software center,…), инструмент проверяет, что пакет подписан (проверен) кем-то, кому Ubuntu доверяет. (Большинство дистрибутивов имеют похожий механизм.) Когда вы устанавливаете пакет из PPA, все, что вы можете знать, это то, что владелец PPA проверял пакет, что не поможет, если у вас нет оснований доверять владельцу PPA.

О троянах и бэкдорах я настоятельно рекомендую прочитать лекцию Кюра Томпсона « Размышления о доверии» . Подводя итог, он изменил компилятор так, чтобы при компиляции программы входа в систему добавлялся код, позволяющий ему входить в систему с секретным паролем; затем он изменил компилятор так, чтобы при его компиляции он вставлял код для добавления бэкдора; затем он перекомпилировал всю систему (в частности, программу входа в систему и компилятор); наконец он восстановил исходный код компилятора в исходный, неоспоримый источник. Снова, прочитайте статью Кена Томпсона ; тогда вы также можете прочитать контраргумент Дэвида Уилера , возможно, лучше всего воспринятый в статье в блоге Брюса Шнайера .

Жиль "ТАК - перестань быть злым"
источник
+1 за описательный ответ и за рекомендацию этих статей: они расширили мои знания. Спасибо.
iamsid
7

Если я правильно понимаю, «троян», описанный в этой статье, не может быть обнаружен «нормальным» способом как «нормальное» вредоносное ПО. Этот IRCd вел себя нормально до тех пор, пока его не использовали, поэтому администратор мог найти эту дыру в безопасности только тогда, когда: 1) он использовался, и действие, выполненное этой дырой, вызывало запись в журналах или было видно каким-либо другим способом, 2) чтение исходного кода.

«Настоящее» вредоносное ПО для Linux также должно обнаруживаться программным обеспечением AV для Linux или AV LiveCD Rescue Disks, чтобы вы могли сканировать компьютер с помощью этого программного обеспечения. Как видно из списка SecureList, в списке 1941 запись с именем Linux, и это программное обеспечение должно быть обнаружено программным обеспечением Kaspersky. Быстрый просмотр этого списка показывает, что многие записи о некоторых инструментах DDoS и эксплойтах или инструментах, которые не могут распространяться автоматически и могут использоваться только как инструменты для атаки (поэтому не являются вредоносными).

Для проверки бэкдоров / руткитов, установленных взломщиком, вы можете использовать инструмент, который проверяет контрольные суммы файлов (вы должны создать список файлов и контрольных сумм в чистой системе и обновить его после обновления программного обеспечения сервера). Каждый новый файл или файл с неправильной контрольной суммой является подозрительным. Список контрольной суммы и инструмент, генерирующий ее, должны быть на носителе только для чтения (взломщик также может изменить, например, md5sum для своей собственной версии, которая показывает неправильные контрольные суммы). Этот способ обнаружения вредоносного ПО можно использовать в «стабильных» системах, где программное обеспечение обновляется не каждый день.

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

постоянный репер
источник
4

SELinux и AppArmor существуют для предотвращения троянов / руткитов и других инфекций. Я рассказываю о случае с SELinux, который я знаю лучше. С включенным SELinux вы предоставляете контекст всему процессу (включая демон), который вы устанавливаете на машине. Вы также помечаете файловую систему для работы с контекстом, сопоставляя их. Когда процесс пытается что-то сделать не в своем контексте, вы получаете сообщение, и, если SELinux находится в принудительном режиме, действие не может быть завершено.
Таким образом, если ваш троян ircd был готов перезаписать команду ps или что-то еще (общая стратегия для троянов / руткитов / червей, чтобы избежать обнаружения), мне не разрешили бы это сделать. И вы будете в курсе.
Я знаю, что это сложно настроить, но мои машины сейчас работают с SELinux, и мои (два) ноутбука Fedora могут выполнять все, что нужно настольному компьютеру, без особых хлопот.
Даже мой домашний сервер теперь находится в принудительном режиме.
Другой стратегией является регулярный запуск детекторов руткитов, которые вычисляют контрольную сумму для круговых команд и информируют вас об изменениях в основных командах.
Я работаю как с включенным SELinux, так и с включенным rkhunter (плюс антивирус clamav).

С уважением

lucabotti
источник
2

В другом ответе утверждалось, что «скрыватели» (скрытые вредоносные программы) имеют внутреннее преимущество перед «детекторами». Я не согласен. Это верно, если вы ограничиваете себя подходами к обнаружению, которые используют сигнатуры или эвристику для обнаружения вредоносных программ. Но есть и другой способ обнаружения вредоносных программ: проверить известные товары. Tripwire, AIDE и т. Д. Могут проверять файлы на диске. Second Look может проверить работающее ядро ​​и процессы. Second Look использует криминалистику памяти для непосредственной проверки операционной системы, активных служб и приложений. Он сравнивает код в памяти с тем, что было выпущено поставщиком дистрибутива Linux. Таким образом, он может немедленно определить вредоносные изменения, сделанные руткитами и бэкдорами, а также неавторизованными программами (трояны и т. Д.).

(Раскрытие информации: я ведущий разработчик Second Look.)

Эндрю Тапперт
источник