Иллюстрированный самоучитель по защите в Интернет

Программы типа "троянский конь"

Группа программистов и специалистов по вопросам безопасности Teso разработала еще один вариант ятра под названием Adore, который можно найти по адресу http://teso.scene.at/releases/adore-0.14 .tar.gz. По возможностям эта программа не уступает пакету knark. Ниже представлены некоторые параметры командной строки.

[shadow]$ ava

Использование:

./ava {h,u,r,i,v,0}[имя-файла, PID или dummy (для параметра 'U')]
  • h – скрыть файл
  • u – отобразить файл
  • r – выполнить с привилегиями root
  • U – удалить adore
  • i – сделать PID скрытым
  • v – сделать PID видимым

Если приведенных выше сведений оказалось недостаточно, то прочитайте статью Сильвио Чезаре (Silvio Cesare), в которой рассматриваются аналогичные средства, позволяющие "на лету" модифицировать выполняющееся в оперативной памяти ядро в системах с "потайным ходом", в которых отсутствует поддержка модулей LK.M. Эту статью и описываемые в ней средства можно найти по адресу http://www.big.-net.au/~silvio/runtime-kernel-kmem-patching.txt. И наконец, Джоб Де Хаас (Job De Haas) выполнил огромную работу по исследованию методов взлома ядра системы Solaris. Часть написанного им кода можно найти по адресу http://www.itsx.com/kernmod-0.2.tar.gz.

Контрмеры: защита от средств модификации ядра

Как следует из приведенных сведений, "наборы отмычек" для модификации ядра могут оказаться чрезвычайно разрушительными и трудными для выявления. При этом в процессе обнаружения таких средств нельзя доверять ни одной программе и даже самому ядру. В случае взлома ядра окажутся бесполезными и утилиты подсчета контрольных сумм, такие как Tripwire. Одним из возможных способов обнаружения пакета knark заключается в использовании самого пакета. Поскольку с его помощью взломщик может скрыть любой процесс, воспользовавшись командой kill – 31 и указав его идентификатор PID, ничто не мешает сделать любой процесс снова видимым. Для этого можно воспользоваться командой kill – 32. Вот простой сценарий оболочки, который передает этот сигнал каждому процессу.

#! /bin/sh rm pid S=l
while [ $S – It 10000 j do
if kill – 32 $S; then echo "$S" " pid
fi S=expr $3+1'
Done

He забывайте о том, что kill – 31 и kill – 32 являются настраиваемыми командами пакета knark. Так что опытный взломщик может изменить эти параметры, чтобы избежать обнаружения своей деятельности. Однако вместе с тем вполне возможно, что другие злоумышленники воспользуются параметрами, заданными по умолчанию.

В качестве самой лучшей контрмеры мы всегда рекомендуем предупреждение подобных нападений. Использование такой программы, как LIDS (Linux Intrusion Detection System – система выявления вторжений Linux), является наилучшей превентивной мерой в системе Linux. Ее можно получить по адресу www.lids.org. Программа LIDS предоставляет следующие возможности.

  • Предотвращение модификации ядра.
  • Предотвращение загрузки и выгрузки модулей ядра из оперативной памяти.
  • Возможность использования расширенных атрибутов файлов immutable (постоянный) и append-only ("только для добавления").
  • Блокирование совместно используемых сегментов памяти.
  • Защита от манипулирования идентификаторами процессов (PID).
  • Защита важных файлов в каталоге /dev/.
  • Обнаружение попыток сканирования портов.

Программа LIDS представляет собой модуль обновления ядра. Ее необходимо применять к существующему исходному коду ядра, который затем должен быть перестроен. После установки LIDS воспользуйтесь командой lidsadm, чтобы защитить ядро от возможных манипуляций с загружаемыми модулями. Вот что произойдет после установки программы LIDS, если попытаться запустить утилиту knark.

[shadow]# insmod knark.о
Command terminated on signal 1.

После анализа файла журнала /var/log/messages становится очевидным, что программа LIDS позволяет не только выявить попытку загрузки модуля, но и практически их предотвращает.

Jul 9 13:32:02 shadow kernel: LIDS:
insmod (3 1 inode 58956) pid 700
user (0/0)
on ptsO: CAP_SYSjyiODULE violation:
try to create module knark

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.