На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Использование хакером каналов, портов и прав доступа

ДЛЯ взаимодействия между программами используются различные методы. Ино­гда для проведения атак может использоваться сама среда передачи данных. Точно так же, как и ресурсы, принадлежащие другим программам, с которыми осуществля­ется взаимодействие.
Локальные сокеты
Программа может открывать сокеты для взаимодействия с другими процессами. Эти сокеты не предназначены для использования самими пользователями. Во мно­гих случаях использование локальных сокетов приводит к ситуации, когда уже по­лучивший к системе доступ злоумышленник может подключиться к локальному со-кету и выполнить определенные команды. Серверная программа может (ошибочно!) предполагать, что к сокету может подключаться только другая программа. Таким образом, хакеру достаточно "выдать себя" за другую программу.
Чтобы проверить систему на предмет наличия локальных сокетов, используем следующий запрос.
netstat -an
Для определения того, какие процессы являются владельцами сокета, можно воспользоваться следующими командами.
1. Команда lsof
# lsof -i tcp:135  -i udp:135 COVMrWD   PID USER   FD   TYPE      DEVICE SIZE/OFF NODE NAME deed     22615 root    lOu inet 0xf5ea41d8 OtO TCP *:135 (LISTEN)
deed     22615 root    llu inet 0xf6238ce8  OtO UDP *:135 (Idle)
2. Команда netstat
C:\netstat -ano
Active Connections
Proto Local Address Foreign Address      State PID
Взлом базы данных Oracle 9i с помощью атаки на сокет
В Oracle 9i поддерживается использование хранимых процедур. Одной из воз­можностей хранимых процедур является возможность загрузки библиотек DLL или модулей кода и применения вызовов функций. Это позволяет разработчику, напри­мер, создавать зашифрованные библиотеки с помощью C++ и предоставлять доступ к этим библиотекам как к хранимым процедурам. Хранимые процедуры вообще ши­роко используются при разработке больших программных проектов.
В сервере Oracle 9i предусмотрено получение запросов на соединение на порт 1530, т.е. ожидается подключение базы данных Oracle, которая запросит загрузить библиотеку. Для этого соединения не предусмотрено никакой аутентификации, зна­чит, чтобы подключиться к программе, ожидающей запроса (listener), пользователю достаточно выдать себя за программу базы данных Oracle. Таким образом, хакер мо­жет просто отправить запросы, похожие на запросы базы данных Oracle. В результа­те анонимный пользователь способен сделать любой системный вызов на удаленной системе. Это уязвимое место открыл в 2002 году Дэвид Литчфилд (David Litchfield), после того, как компания Oracle начала свою рекламной) компанию о невозможности взлома ее продуктов.
Ветвление процессов и наследование дескрипторов
Серверный демон может порождать (осуществлять ветвление) новый процесс для каждого подключающегося пользователя. Если сервер запущен с правами су­перпользователя или администратора, предоставляемые новому процессу привиле­гии должны быть снижены до уровня учетной записи обычного пользователя. Ино­гда дескрипторы для открытых ресурсов наследуются порожденными (дочерними) процессами. Если защищенный ресурс уже открыт, то дочерний процесс получает бесконтрольный доступ к этому ресурсу, иногда даже случайно (10).
Этот тип атаки наиболее подходит для решения задачи расширения привилегий. Для проведения атаки требуется наличие существующей учетной записи и опреде­ленные знания об открытом канале. В некоторых случаях для внесения кода в ата­куемый процесс используется "троянская" библиотека, выполняется внедрение уда­ленного потока или организовывается переполнение буфера. Благодаря этому хакер получает доступ к отрытым дескрипторам , используя собственные команды.
Наследование прав доступа и списки контроля доступа
Списки контроля доступа (ACL) широко используются в качестве механизма обеспечения безопасности. Проблема в том, что этими списками чрезвычайно слож­но управлять. Ведь для создания непротиворечивых списков доступа нужно четко представлять, выполнение каких действий с данным ресурсом можно разрешить ка­ждому отдельному пользователю или группе. Иногда это совсем непросто.
Из-за этой сложности использование списков контроля доступа часто приводит к ошибкам на практике. Будем считать, что списками контроля доступа нельзя управ­лять безошибочно, т.е. неминуемо возникают проблемы с обеспечением безопасно­сти. Для правильного управления списками ACL и сохранения настроек требуются сложные средства аудита. Практически неизбежно, что права доступа для того или иного файла будут установлены неправильно, что приведет к возможности успеш­ной атаки на этот файл.
Дескриптор безопасности процесса позволяет операционной системе определять, когда процесс может иметь доступ к запрошенному ресурсу. Объекты дескриптора безопасности сравниваются со списками контроля доступа для интересующего ре­сурса. При создании дочернего процесса некоторые записи в дескрипторе безопасно­сти наследуются, а другие — нет. Для управления этим наследованием существует несколько способов. Однако из-за возникающей сложности, привилегии могут быть предоставлены дочернему процессу случайно.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика