Нарушения прав доступа к файлу создают благоприятные условия для начала атаки. Используя нарушения прав доступа к файлу и методы, описанные в секции «Утечка информации», злоумышленник может добраться до секретной информации типа имен пользователей или их паролей в системе, получить доступ к другим файлам при помощи, например, смены владельца файла или атаки символических ссылок (symboliclink attack).

Права

Один из самых простых способов обеспечить безопасность файла состоит в обеспечении прав работы с ним. Часто это один из наиболее освещаемых аспектов безопасности системы. Некоторые однопользовательские системы типа Microsoft Windows

3.1/95/98/МЕ не поддерживают права доступа к файлам. В то же время многопользовательские системы имеют, по крайней мере, одно, а обычно несколько возможностей управления доступом к файлам.

Например, Unix-подобные системы и некоторые Windows-системы поддерживают пользователей и группы пользователей, позволяют задавать атрибуты файлов для указания прав пользователя и группы пользователей на выполнение тех или иных действий с файлом. Пользователь или владелец файла может быть наделен правами полного управления файлом, включая операции чтения, записи и выполнения других разрешенных действий с файлом. В то же время пользователь группы, назначенной этому файлу, может иметь права на чтение и выполнение файла, а пользователи, не являющиеся владельцами файла или членами группы, могут обладать другим набором прав или вообще не иметь никаких разрешений на работу с файлом.

В дополнение к стандартному набору прав владельца файла группы пользователей и многие Unix-подобные системы поддерживают более изощренные методы разрешения доступа к файлу. Их реализация разнообразна: от простого - типа предоставления возможности определить, какие пользователи имеют доступ к файлу, - до более сложного -назначения ролевого имени для открытия пользователям доступа к набору утилит. В составе операционной системы Solaris имеется два таких примера: ролевое управление доступом (Role-Based Access Control - RBAC) и списки управления доступом (ACL - Access Control Lists).

Списки управления доступом ACL позволяют пользователю определить доступ к файлу для отдельных пользователей системы. Список доступа связан с владельцем и членством в группе.

Ролевое управление доступом RBAC - сложный инструментарий, предусматривающий различные слои прав. Инструментарий можно настраивать, предоставляя пользователям обширные общие роли для выполнения таких функций, как добавление пользователей, изменение некоторых настроек системы и т. п. Также можно ограничить права пользователей, разрешив им выполнять только отдельные функции.

Примечание

Дополнительные сведения о RBAC и ACL можно найти в книге издательства Syngress Hack Proofing Sun Solaris 8 (ISBN 1-928994-44-X).

Атаки символических связей Атаки символических связей - это проблема, которая обычно используется злоумышленником для реализации своих замыслов. Цель подобных атак состоит в изменении полномочий работы с файлом, разрушении файла в результате добавления в конец новых данных или перезаписи файла с уничтожением ранее содержащейся в нем информации.

Атаки символических связей часто начинаются из директорий для хранения временных данных. Обычно проблема возникает из-за ошибки программирования. Когда запускается уязвимая программа, она создает файл с параметрами, делающими его уязвимым для нападения. Таких параметров два.

Первый - права работы с файлами. Второй - создание небезопасных временных файлов, то есть уязвимых для нападения злоумышленника. Если файл был создан с опасными с точки зрения безопасности системы правами работы, то он может быть изменен злоумышленником. В зависимости от алгоритма работы программы возможна ситуация, когда измененные злоумышленником данные временного файла могут быть переданы сессии пользователя.

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

/* lameprogram.с - Hal Flynn <mrhal@mrhal.com> */ /* does not perform sufficient checks for a */

/* file before opening it and storing data */
#include <stdio.h>
#include <unistd.h> int main()
{
char a[] = “This is my own special junk data storage.\n”;
char junkpath[] = “/tmp/junktmp”;
FILE *fp;
fp = fopen(junkpath, “w”);
fputs(a, fp);
fclose(fp);
unlink(junkpath);
return(O);
}

Эта программа создает файл /tmp/junktmp без первоначальной проверки его существования. Пусть во время выполнения программы, создающей небезопасный временный файл, создаваемый файл уже существует. Тогда файл, указанный в символической связи, будет или перезаписан, или в конец этого файла будут добавлены новые данные при условии, если пользователь, выполняющий потенциально опасную программу, имеет право на запись в файл. Рисунки 3.5 и 3.6 демонстрируют пример использования подобной программы пользователем haxor для перезаписи файла пользователя ellipse.

Пользователь haxor создает злонамеренную символическую ссылку

Рис. 3.5. Пользователь haxor создает злонамеренную символическую ссылку

В результате выполнения программы Lameprogram пользователем Ellipse осуществляется перезапись данных файла Lamedata

Рис. 3.6. В результате выполнения программы Lameprogram пользователем Ellipse осуществляется перезапись данных файла Lamedata

Дезинформация

Поясним суть дезинформации на примере из военной области. Предположим, что часовые выставлены на посты для наблюдения за обстановкой. Один из них обнаружил разведчиков неприятеля. Часовой сообщает командованию о вражеской разведке, а командование отправляет собственную группу разведки для точного выяснения, кто шпионит за ними.

Можно предположить, что генерал неприятеля уже думал над возможными вариантами своих действий при подобном развитии обстановки. Например, он может решить скрывать свои силы, пока не убедится, что перед ним никого нет. «Но что, если кто-то увидит мои наступающие силы, - может быть его следующей мыслью. - И если противостоящий мне неприятель пошлет разведчиков для разведки моих сил и занимаемых ими позиций, которые найдут мою армию сильнее, чем свою, то неприятель, вероятно, или укрепит свои позиции, или отойдет на другие позиции, где на них труднее напасть или где их нельзя обнаружить».

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

Способы и инструментарий дезинформации Как правило, после компрометации системы злоумышленник прилагает максимум усилий для скрытия своего присутствия и распространения дезинформации. Злоумышленники добиваются этого при помощи ряда способов.

Например, в системе Sun Solaris была обнаружена уязвимость, предоставляющая злоумышленнику дополнительные возможности для распространения дезинформации. Речь идет об обработке списков контроля доступа ACL (access control list) на псевдотерминалах, подсоединенных к системе. После получения доступа к терминалу злоумышленник может установить элемент списка контроля доступа и завершить работу. Во время обращения другого пользователя к системе с того же самого терминала предыдущий владелец терминала (в данном случае злоумышленник) сохраняет за собой право записи на терминал, что позволит ему записать дезинформацию на терминал нового владельца.

В следующих разделах рассмотрены некоторые из приметаемых на практике способов дезинформации и соответствующего инструментария.

Редактирование журналов регистрации Редактирование журналов регистрации -один из способов распространения дезинформации злоумышленником. Замечено, что когда действия злоумышленника становятся опасными для системы, у него появляется желание как можно дольше оставаться незамеченным. Для него будет даже лучше, если он сможет еще кого-нибудь увлечь в атаку или наделать достаточно шума, для того чтобы на этом фоне скрыть свое вторжение.

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

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

Некоторые инструментальные средства предусматривают возможность генерации случайных данных или случайного потока информации, который называется шумом. Обычно они используются злоумышленником для того, чтобы отвлечь внимание или запутать суть дела. Генерируемый инструментальными средствами шум может использоваться для обмана администратора, отвлечения его внимания от атаки или внушения ему мысли о том, что на систему начал атаку кто угодно, но только не этот человек.

Редактирующий журналы регистрации злоумышленник преследует ряд целей. Одна из них заключается в создании видимости нормальной работы системы, как будто ничего не произошло. Другая - в создании обстановки полной неразберихи, когда противоречивые записи в журнале регистрации подталкивают администратора к мысли о выходе системы из-под контроля или, как было сказано ранее, наличия шума в системе. Некоторые средства, например типа Nmap, исследуя сеть, представляют дело таким образом, как если бы запросы на сканирование пришли из разных источников, создавая обстановку неразберихи и пряча злоумышленника за ложными целями.

Программы типа rootkit К средствам дезинформации можно отнести программы rootkit, предназначенные для скрытия деятельности злоумышленника в системе. Известно несколько вариантов этих программ с собственными возможностями и недостатками. Программа rootkit - первое, что выбирает злоумышленник для обеспечения длительного доступа к системе.

Rootkit работает, подменяя в UNIX-системах ключевые системные программы типа Is,

df, du, ps, sshd и netstat, а в Windows - драйверы и записи системного реестра. Rootkit заменяет эти программы, а возможно, и еще какие-нибудь, на другие, которые настроены таким образом, чтобы не предоставлять администраторам достоверной информации о работе системы. Вне всякого сомнения, программы типа rootkit используются для скрытия злоумышленника и его деятельности в системе и предназначены для дезинформации. Они подталкивают администратора к мысли о нормальной работе системы в то время, когда злоумышленник контролирует ее, атакует новые хосты или занимается другими нехорошими делами.

Модули ядра Модули ядра - часть кода, который может быть загружен в память и выгружен из памяти ядром операционной системы. Модуль ядра предоставляет ядру дополнительные функциональные возможности по мере необходимости. Ядро выгружает ненужный в данный момент модуль из памяти, чтобы освободить память для других программ. Модули ядра могут быть загружены для того, чтобы обеспечить поддержку, например, файловой системы другой операционной системой, управления устройством или чего-то еще.

Злонамеренные модули ядра преследуют те же цели, что и программы типа rootkit. Они предназначены для дезинформации администраторов системы, заставляя их поверить в нормальную работу хоста. Тем самым они защищают злоумышленника от обнаружения, позволяя ему выполнить задуманное.

Принципы работы модуля ядра и программы типа rootkit отличаются принципиально. Программы rootkit работают как фильтр, защищающий нужные данные от вездесущих администраторов. А модуль ядра работает на более низком уровне, перехватывая информационные запросы на уровне системных вызовов и не доводя до администратора любые данные, которые могут выдать присутствие несанкционированных гостей. Тем временем защищенный злонамеренным модулем ядра гость может найти скрытую лазейку в системе защиты системы и скомпрометировать систему, не подвергая себя опасности быть обнаруженным вследствие модификации системных утилит.

Модули ядра становятся стандартом скрытия вторжения. После проникновения в систему злоумышленник должен просто загрузить модуль и удостовериться в том, что модуль загружен и в дальнейшем будет подгружаться системой. С этого момента и до перевода дисковода в автономный режим и монтировки другой копии операционной системы нельзя обнаружить ни злонамеренного модуля ядра, ни маскирующего с его помощью злоумышленника.

Локальная dos-атака | Защита от хакеров корпоративных сетей | Доступ к специальным файлам / базам данных


Защита от хакеров корпоративных сетей



Новости за месяц

  • Июнь
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс