Инструментальные средства обеспечения безопасности

Черный ход и средства удаленного доступа

Разбить на страницы
Показывать лекцию целиком

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

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

Поскольку некоторые пакеты программного обеспечения удаленного доступа обычно используются с добрыми намерениями, их обычно не относят к средствам взлома. Поэтому большинство детекторов вирусов и систем IDS не обращают внимания на проявления активности таких программ, если они специально на это не настроены. Сообразительный взломщик может использовать средства, разработанные для благих целей, чтобы уклонится от обнаружения. Одна из утилит удаленного контроля/входа через черный ход в этом разделе, предназначенная для работы с "добрыми намерениями" - Virtual Network Computing (VNC).

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

Тем не менее, средства этого типа быстро обнаруживаются детекторами вирусов и IDS-системами с установленными файлами наиболее распространенных сигнатур. Поэтому эти средства используются взломщиками в том случае, когда жертва не отличается хоть каким-то здравым смыслом. Эта лекция охватывает такие средства взлома как Back Orifice, Netbus и SubSeven.

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

Хотя эти программы обычно не определяются детекторами вирусов, они обнаруживаются системами IDS. Однако если эти программы будут использоваться с пониманием, то даже обнаружение деятельности программы не добавит жертве информации. Из программ, обсуждаемых в настоящей лекции, к этой категории относятся Loki, stcpshell и Knark.

VNC

Программа /.

У VNC есть клиентская и серверная части. Сервер размещается на машине, которой вы хотите управлять. Клиент устанавливается на управляющей машине. Следовательно, вы можете установить клиентскую программу на вашей "атакующей" машине, а сервер должен быть установлен на машине "жертве". В отдельных случаях, можно обойтись без клиентской части программы, поскольку VNC также работает, как Web-сервер. Это означает, что сервер может управляться с помощью обычного Web-броузера.

Реализация

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

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

Предположим, что вы взломщик. После того, как VNC будет установлена, вы можете запустить VNC -сервер, чтобы прошло его первоначальное конфигурирование. В диалоговом окне Current User Properties, доступном в программе VNC "app mode", которая находится в папке Start/Programs/VNC, задайте параметры конфигурации, как это показано на следующем рисунке.

Вам важно знать, что VNC запускается по аналогии с X Window, когда для него инициализируется displays. В данном случае, дисплей номер 0 (ноль) позволяет VNC прослушивать порт 5800 для Web-сервера и порт 5900 для VNC -сервера. Значения этих портов становится понятным из следующего рисунка, на котором взломщик, используя FreeBSD, соединяется с машиной, на которой установлен VNC. Взломщик использует Web-броузер для соединения с портом 5800 по IP-адресу VNC -машины. При этом открывается Web-страница, которая запрашивает у пользователя пароль для входа в систему.

После того как был введен правильный пароль, рабочий стол доступен для взломщика через Web-броузер. Ниже приведена копия экрана DOS-сессии, отображаемой в окне VNC -сессии. Обратите внимание на то, что вы видите то же самое, как если бы вы сидели перед консолью машины. На этом изображении Web-броузер удален с рисунка.

Пока видно, что рабочий стол машины-жертвы отображается у вас на экране в окне Web-броузера. Собственные средства просмотра VNC дают возможность отобразить рабочий стол атакуемой машины и вне окна Web-броузера. Средство просмотра использует вместо порта 5800, как показано на предыдущем рисунке, порт 5900.

Наиболее осторожным администраторам следует заблокировать TCP-порт 5900 для входа в свою сеть. Поскольку 80 порт хуже всего контролируется многими администраторами, это может стать преимуществом для взломщика, использующего этот порт вместо порта 5900. Используя некоторые навыки из высшей математики, любой взломщик может усовершенствовать этот вид атаки. Обратимся вновь к диалоговому окну Current User Properties, в котором осуществляется настройка VNC -сервера и запрашивается номер дисплея для прослушивания. По умолчанию это дисплей номер 0 по порту 5900. Мы знаем, что для протокола TCP доступно 65535 портов. Следовательно, порт номер 65536 - это то же самое, что и TCP-порт 0, поскольку это значение выходит за допустимый интервал. Следовательно, если мы вычтем из числа 65536 число 5900, то получим 59636. Если мы прибавим число 80 к полученному результату, получим 59716. Затем мы можем ввести число 59716 в качестве номера дисплея для программы настройки сервера VNC в диалоговом окне Current User Properties, чтобы заставить VNC прослушивать порт 80 на машине-жертве.

После запуска netstat -an, команды, которая отображает открытые порты, мы увидим, что открыт 80 порт.

В этой ситуации нет проблемы. Если мы соединимся с машиной-жертвой через дисплей 59716, программа отображения VNC вернет ошибку. Это также произойдет, когда мы сделаем то же самое с Web-сервером VNC на порте 59616. Следовательно, мы должны использовать редиректор данных на нашей локальной машине, который прослушивает 5900 порт и перенаправляет трафик на 80 TCP-порт машины-жертвы. Этого можно достичь, используя программу datapipe. (Подробное описание ее использования см. в лекции "Перенаправление портов".) После того как datapipe выполнится с указанными параметрами, приложение vncviewer сможет работать на нашей машине. В результате трафик будет перенаправляться от нашей локальной машины на 80 порт машины жертвы, обходя, таким образом, брандмауэр.

Ниже приведена копия экрана с окном DOS, отображаемая через средства просмотра VNC. Обратите внимание, что выглядит это так, как если бы вы сидели перед консолью машины. На этом изображении Web-броузер удален с рисунка.

Теперь обсудим некоторые предупреждения против использования VNC в качестве черного хода в сеть. Первое касается того, как VNC сохраняет информацию о сессии, такую как пароль, в системном реестре. Если мы переместим сервер, который мы создали на атакующей машине, на машину-жертву, то нам потребуется, чтобы эта информация была на атакуемой машине. Следовательно, мы должны будем скопировать значения из реестра нашей машины на машину-жертву, чтобы сделать их доступными для нее. В Windows этого можно добиться с помощью утилиты regedit VNC, выбрав операцию File/Export для экспорта значений в текстовый файл. Далее показан результат.

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

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

Использовать VNC на машине под управлением Unix не сложнее, чем работа с Windows. Эта программа может быть запущена кем угодно, а не только пользователем с полномочиями root. Исходный код программы можно загрузить и скомпилировать для Unix-подобной операционной системы. После компиляции по команде vncserver можно запустить сервер. Конечно, чтобы это сделать, у взломщика должен быть доступ к командной строке атакуемой машины. Как только vncserver будет запущен, взломщик получит запрос на ввод пароля и затем увидит у себя на экране рабочий стол атакуемой машины. Окно VNC используется под Unix примерно так же, как и под Windows.

Во-первых, как и под Windows, взломщик может получить доступ к атакуемой машине через Web-броузер. Помните, что когда вы запускаете vncserver, вы должны ввести номер дисплея "display number". Вспомните номер дисплея и прибавьте к нему число 5800. Затем, используйте получившиеся число и соединитесь с атакуемой машиной примерно тем же способом, как мы это проделали для Windows-системы. Когда авторы запускали vncserver на атакуемой машине, мы упоминали о том, что использовали номер дисплея 3. Мы соединялись с портом 5803 на атакуемой машине.

Рабочий стол атакуемой машины, которым мы управляли с помощью VNC, выглядит несколько отлично от того, как это было для Windows, поскольку под управлением vncserver стартует псевдо-X-сервер. Пример атакуемой машины приведен на следующей иллюстрации.

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

Netbus

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

Вы можете найти , http://www.tlsecurity.com или http://www.securityfocus.com

Реализация

Netbus версии 2 (бета) доступен для всех и содержит большинство необходимых взломщику функций. Сначала Netbus должен быть установлен на машине взломщика, чтобы его можно было сконфигурировать перед заражением жертвы. Инсталляция программы похожа на установку большинства приложений для Windows-систем, и ее можно выполнить, выбрав меню Start/Programs и щелкнув на имени приложения Netbus.

Netbus, также как и VNC, поставляется в комплекте клиент/сервер. Обычно сервер передается на машину жертву с использованием электронной почты, компакт-диска, или аналогичного устройства. Как только сервер запускается, машина оказывается захваченной, какая бы мощная система сетевой безопасности не работала между машиной и клиентом, размещенным на машине взломщика.

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

  • В клиентской программе выберите File/Server Setup, как показано на следующей иллюстрации.
  • В диалоговом окне Server Setup выберите Server Executable. Исполняемый модуль будет сконфигурирован, чтобы быть установленным на атакуемой машине.
  • Найдите исполняемый модуль сервера, который вы хотели бы сконфигурировать. В большинстве случаев вам потребуется конфигурировать исполняемый модуль NBsvr.exe, который поставляется в инсталляционном комплекте
  • После того как вы нашли исполняемый модуль сервера, который вы хотите сконфигурировать (обычно он располагается в установочной директории), вам необходимо закончить выбор параметров в диалоговом окне Server Setup, как это показано далее. Убедитесь, что вы отметили параметр Accept Connections.
  • В поле Run On Port укажите TCP-порт, который может использовать Netbus для ожидания соединения. В данном примере выбран порт 4375, но может быть выбран и любой другой порт из тех, что не заняты на атакуемой машине. Этот порт должен быть доступен любым способом на протяжении всей сети от клиента до сервера.
  • Затем выберите параметр visibility. Обсуждаемая программа создана для неправедных целей, поэтому по умолчанию в ней стоит значение Invisible.
  • Отметьте Full Access в поле Access Mode. Другие режимы доступа позволяют использовать метод шпионского доступа (Spy Access), который не обеспечивает такого полного контроля, как метод полного доступа (Full Access). Поскольку программа может использоваться для захвата машины в сети с целью аудита, выберите Full Access.
  • Наконец, отметьте, что Netbus будет запускаться заново всякий раз, когда машина будет перезагружаться. Обычно этот параметр активизирован.
  • Сконфигурировав исполняемый модуль сервера, вы можете переименовать его и переслать на атакуемую машину любым доступным способом. Как только исполняемый модуль будет установлен на атакуемой машине, просто запустите его. Сервер Netbus запустится и будет ожидать соединения с клиентом. Ниже приведена иллюстрация, которая показывает атакованную машину с адресом 192.168.1.100, прослушивающую порт 4375.

    Конфигурирование клиента также несложно.

  • Вновь запустите клиент
  • Введите здесь атакуемый IP-адрес и TCP-порт, который на нем прослушивается. В нижней части окна конфигурации подставьте пароль, который первоначально был введен в исполняемый модуль сервера.
  • Выберите OK, чтобы добавить атакуемый хост в список доступных серверов.
  • Это простой способ сделать хост видимым в списке серверов, но вы можете добавить в список сотни серверов, выбрав Host/Find на первом шаге. Эта команда конфигурирует клиент для работы в режиме сканирования, когда проверяется список IP-адресов для заданного порта, и определяются любые работающие серверы Netbus. Этот параметр может быть использован системным администратором для попыток определения таких серверов в своей сети.

    Следующие шаги выполняются для установки соединения клиента Netbus с атакуемой машиной, на которой установлен сервер.

  • В основном окне клиента Netbus выберите требуемый IP-адрес.
  • Выберите Host/Connect.
  • Если установленный вами пароль правильный, и сервер доступен, то вы увидите сообщение о соединении, которое выглядит так.
  • После того как вы установили соединение с сервером, на атакованной машине может выполняться весь спектр команд. Из меню Control вы можете получить доступ к некоторым доступным параметрам.
  • После того как Netbus установлен, вы можете выполнять две задачи: исследовать файловую систему и перенаправлять TCP-порты через систему безопасности. Обе задачи можно выполнять с использованием возможностей, предоставляемых клиентом. Как использовать Netbus после его установки - решать взломщику или аудитору.

    Back Orifice

    Программа , http://www.tlsecurity.com и http://www.securityfocus.com. Поскольку разработали эту программу авторы - члены группы "Cult of the Dead Cow" (Культ мертвой коровы), то вы также можете найти эту программу на сайте http://www.cultdeadcow.com/, который переадресует вас к наиболее популярному репозиторию файлов.

    Реализация

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

  • Когда появится заставка мастера конфигурирования, щелкните на кнопке Next.
  • Мастер потребует у вас ввести название исполняемого модуля сервера, который будет редактироваться. Поскольку может быть доступно множество копий исполняемого модуля (по одному для каждой атакуемой машины), на этой странице должен быть выбран один из них.
  • BO2k - один из немногих пакетов программ, обеспечивающих доступ через черный ход, которые могут работать поверх TCP- и UDP-протоколов. Протокол TCP выбирается обычно, если устойчивость соединения не вызывает сомнений. UDP-протокол выбирается в том случае, если есть трудности в преодолении системы безопасности (например, системный администратор может случайно оставить один из UDP-портов открытым).
  • Поскольку большинство взломщиков хотели бы использовать протокол TCP для управления сервером BO2k, то в следующем окне представлен запрос на номер порта, который будет использоваться. Поскольку 80 порт обычно более доступен, чем любой другой, выберите его.
  • На следующем экране введите пароль, который используется для доступа к серверу. Пароль для доступа с черного хода - отличная вещь для взломщика/аудитора, но если слово будет использоваться без подтверждения полномочий, то обычно это плохо.
  • Как только мастер закончит работу, будет загружена утилита настройки сервера.
  • Посмотрите, как проверить различные параметры настройки сервера, которые мастер заполнил на основании информации, полученной от вас.
  • Теперь убедитесь, что сервер загружен в директорию автозапуска. Это позволит серверу запускаться всякий раз после перезагрузки машины. Чтобы это сделать, выберите папку Startup на панели Option Variables слева внизу. Этот параметр обеспечит помещение исполняемого модуля сервера в директорию автозапуска.
  • Щелкните на кнопке Save Server после того, как завершите все изменения.
  • Сконфигурированный сервер готов к установке на атакуемую машину. На атакуемой машине может выполняться только файл bo2k.exe. Если этот файл будет запущен, он откроет сконфигурированный вами порт. На следующей иллюстрации обратите внимание, что на атакуемой машине 80 порт открыт.

    Теперь соединимся с атакуемой машиной.

  • Запустите программу bo2kgui.exe.
  • В открытом окне следует выбрать File/Add Server, если созданного вами сервера нет в списке. Откроется диалоговое окно Edit Server Settings, и вы сможете ввести информацию для атакуемого сервера.
  • Как только вы закончите конфигурирование соединения, щелкните на кнопке OK.
  • Дважды щелкните на сервере BO2k, который вы только что открыли. Откроется диалоговое окно Server Command Client.
  • Щелкните на кнопке Connect to. Как только вы соединитесь, кнопка изменится на Disconnect, как это показано на следующем рисунке, и вы увидите версию сервера, напечатанную поверх результирующего диалогового окна.
  • После того как вы соединитесь с сервером, клиент предоставит вам возможность выполнить много различных действий. Проще всего запросить номер версии сервера и протестировать его, чтобы проверить, поддерживает ли сервер ICMP-трафик.

    BO2k также позволяет выполнять множество "системных действий". Сюда входит возможность перезагружать атакованную машину, заблокировать машину или запросить системную информацию.

    Несмотря на то, что многие думают, что они защищены от взломщиков, если используют протокол SSH, они всегда могут ошибиться, если кто-то подсмотрит их пароль. Проще всего получить пароль - это подглядывать за активностью клавиатуры. Следовательно, если пользователь входит, как kjones, и набирает logged in, взломщик может переслать этот поток символов с помощью BO2k.

    Зачастую взломщик может перехватить управление системой, замаскировав свой IP-адрес в процессе взлома или посещения других систем в интернете. В лекции "Перенаправление портов" мы обсудим средства перенаправления данных. У . Теперь любые соединения, которые мы устанавливаем с атакованным сервером по TCP-порту 2222, будут перенаправляться на 80 порт машины http://www.foundstone.com, и в ее системном журнале будет отмечен IP-адрес атакованной машины.

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

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

    Если же ваша цель состоит в просмотре отображаемого на мониторе атакованной машины, то BO2k предоставляет вам такую возможность с помощью папки Multimedia.

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

    SubSeven

    После BO2k в сообществе специалистов по безопасности появилась программа SubSeven (Sub7). На сегодняшний день это лучшее, что можно пожелать. Sub7 совершенно смертельна, поскольку ее последние версии могут изменять свои параметры и, тем самым, обманывать средства поиска вирусов, которые обычно перехватывают утилиты, подобные Netbus и BO2k. С точки зрения средств удаленного управления, Sub7 - практически то же, что и Netbus и BO2k.

    , http://www.tlsecurity.com и http://www.securityfocus.com (Web-сайт авторов программы не был доступен на момент написания этой книги).

    Реализация

    Так же как Netbus и BO2k, Sub7 требует, чтобы перед использованием был сконфигурирован сервер. Во-первых, взломщику потребуется открыть утилиту редактирования сервера, которая поставляется вместе с программой и размещается в папке Sub7. Когда программа будет запущена, вы увидите следующее окно.

  • Выберите сервер, который вы собираетесь конфигурировать, щелкнув на кнопке Browse в левом верхнем углу окна.
  • Выберите сервер Sub7, по умолчанию - Server.exe.
  • Измените некоторые параметры, содержащиеся в этом окне. Важные для понимания параметры будут обсуждаться далее.
  • Лучше всего использовать пароль для доступа к Sub7. Кроме того, Sub7 пытается самостоятельно сделать себя более незаметным, чем другие программы, и, как это видно в правом верхнем углу окна, в его распоряжении есть несколько способов сделаться незаметным после установки на атакованной машине.

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

  • персональный коммуникатор ICQ;
  • сеть IRC;
  • уведомление по электронной почте.
  • В результате, взломщик получает дополнительные преимущества, связанные с тем, что нет необходимости искать машины, которые могут быть заражены его сервером.

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

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

    Теперь в вашем распоряжении есть сервер, который может работать на атакованной машине. Для его запуска на захваченной машине вы можете использовать любой из методов, о которых мы постоянно говорим в этой лекции: пересылка по электронной почте и т.д. После запуска Sub7 на машине будет открыт порт (TCP 62875). Результат можно увидеть, запустив на захваченной машине netstat.

    После того как сервер запущен на атакованной машине (и, возможно, взломщик/аудитор получили автоматическое оповещение об этом), взломщик/аудитор может осуществлять соединение с машиной, используя Sub7 -клиента, как это показано на следующей иллюстрации.

    .

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

    Для перехвата вводимых паролей и другой интересной информации, которую пользователь может вводить с консоли, Sub7 предоставляет взломщику функции, сосредоточенные в разделе Keys/Messages, что и показано на следующей иллюстрации.

    Взломщик может захотеть переадресовать порт на захваченной машине с целью спрятать свой IP-адрес, или чтобы обойти средства обеспечения безопасности, или для каких-либо других целей. Функции для переадресации портов можно найти в папке Advanced.

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

    Папки Fun Manager и Extra Fun содержат множество полезных для взломщика функций. Если на атакованной машине есть камера, он может включить ее и просматривать видео. Или, если взломщик захочет досадить, он может просто схлопнуть экран на атакованной машине.

    Loki

    После всего этого вы можете воскликнуть: "Есть ли аналогичные программы для Unix?" Конечно! Первая и наиболее древняя программа для удаленного управления под Unix называется Loki. Известный некоторым как "Божество зла", он подарил название этой программе.

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

    . Программа была написана и приспособлена для работы на большинстве Unix-систем, таких как Linux, Solaris и FreeBSD. Короче, Loki работает, помещая команды внутрь ICMP Ping-трафика, передаваемого между клиентом и сервером. Инкапсуляция выполняется в процессе передачи ICMP Ping-запроса и получения ответа, и при использовании стандартной версии программы передается нешифрованный текст.

    Следовательно, ICMP Ping-трафик имеет марку, по которой можно идентифицировать присутствие программы в сети. Важно отметить, что более поздние версии Loki, чтобы скрыть свое присутствие, включают в себя средства шифрования, такие как XOR или Blowfish. Более того, канал взаимодействия всегда уникален, поскольку номер ICMP последовательности всегда статичен и представляет собой номер канала TAG. Номер TAG - это созданный взломщиком номер, который выбирается в процессе компиляции программы. Следовательно, вторым признаком присутствия в сети Loki является ответ ICMP Ping, который передается до того, как упаковывается ICMP Ping-запрос, и, следовательно, не соответствует спецификации ICMP Ping запрос/ответ. В зависимости от выполняемых взломщиком команд может оказаться, что в сети циркулирует значительно больше ICMP-запросов, чем ответов. При обычном использовании Ping на каждый запрос посылается ответ.

    Реализация

    Программа Loki должна быть скомпилирована с помощью команды make. Кроме этого, если вы загрузили версию 2 и хотите запускать ее не под RedHat Linux, следует использовать следующую заплатку.

    diff Loki.orig/Makefile Loki/Makefile
    37c37
    < DEBUG     =   -DDEBUG
    ---
    > DEBUG     =   #-DDEBUG
    
    diff Loki.orig/loki.h Loki/loki.h
    36c36,38
    < #include <linux/icmp.h>
    ---
    > #define ICMP_ECHO 8
    > #define ICMP_ECHOREPLY    0
    > //#include <linux/icmp.h>
    38c40
    < #include <linux/signal.h>
    ---
    > #include <signal.h>

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

    attacker# ./loki -d <victim's IP address>

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

    Достойны упоминания несколько предупреждений, касающихся использования Loki.

  • Демон Loki по умолчанию блокирует вас внутри директории /tmp. Есть возможность изменить директорию, но только изменив исходный код программы.
  • Хорошей идеей будет осуществлять статическую компиляцию Loki, если вы собираетесь загрузить сервер на машину, на которой нет возможностей компиляции, или с другими версиями динамических библиотек (т.е. вы не сможете скомпилировать программу на захваченном сервере).
  • Как показано на следующей иллюстрации, трафик захватывается при помощи программы Ethereal (Ethereal подробно обсуждается в лекции "Анализаторы сетевых потоков"), ICMP-пакеты передают информацию между сервером и клиентом. По умолчанию, эта информация не шифруется. Тем не менее, если вам это необходимо, в
  • Stcpshell

    Утилита stcpshell применяет те же принципы скрытого коммуникационного канала, заимствованные у Loki, к протоколу TCP. Эта программа использует поддельные TCP-пакеты для передачи информации между клиентом и сервером и создания виртуальной командной оболочки на захваченной машине. Аналогично программе Loki, утилита поставляется в исходных кодах и должна быть скомпилирована.

    Утилита .

    Реализация

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

    attacker# gcc -o stcpshell stcpshell.c

    Сервер запускается так.

    victim# ./stcpshell

    Затем вы можете установить соединение между клиентом и сервером.

    attacker# ./stcpshell -c <server IP address> <client IP address>

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

    Сессию, установленную между клиентом и сервером, можно увидеть на следующей иллюстрации, которая представляет обмен трафиком, перехваченным программой Ethereal. Обратите внимание, как трафик между клиентом и сервером передается с использованием сфабрикованного IP-адреса 207.46.131.137. Более того, для соединения выбраны порты 1234 и 4321 (определяемые, как работа программы rwhois, которая по умолчанию работает с портом 4321). Порты и сфабрикованный адрес можно изменить в исходном коде утилиты, который может быть найден в следующих строках в модуле stcpshell.c.

    /* from www.microsoft.com .. you BETTER change this */
    
    pkt.ip.ip_src.s_addr=inet_addr("207.46.131.137");

    Knark

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

    . Существует две версии программы. Одна запускается с ядром Linux 2.2, другая работает с ядром 2.4. Версия Knark, которая изучается в данном разделе - самая новая, разработанная для ядра Linux 2.4, но все команды такие же, как и у второй версии.

    Реализация

    Knark поставляется в исходных кодах и должна быть скомпилирована. Чтобы скомпилировать Knark, необходимо иметь доступ к исходным кодам ядра Linux, размещенным в директории /usr/src/Linux, где находятся коды текущего ядра. Чтобы скомпилировать утилиту, следует распаковать архив, скорректировать тексты и набрать следующую команду.

    victim# make clean
    victim# make

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

    victim# insmod knark.o

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

    Превращение в пользователя Root

    Обычно у пользователя root нет возможности удаленного доступа. Любой взломщик это знает, а Knark предлагает решение для этой задачи. Вместо того чтобы создавать обычного пользователя, расширяя его полномочия для взлома машины, Knark предлагает утилиту, которая называется rootme (естественно, вам следует изменить это имя после инсталляции). После запуска программа rootme превращает обычного пользователя (это любой пользователь, ID которого не равно нулю) в пользователя root, не обладающего для этого должными полномочиями. Более того, эта акция не регистрируется ни в одном журнале, как это происходит с командой su.

    victim$ ./rootme /bin/bash
    victim#

    Сокрытие файла или директории

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

    victim# ./hidef <filename>

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

    victim# ./unhidef <filename>

    Сокрытие процесса

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

    С установленной программой Knark можно скрыть любой процесс, послав сигнал с номером 31.

    victim# kill -31 <Process ID>

    Когда взломщик решит, что ему необходимо вернуть процесс в список процессов, он посылает сигнал номер 32.

    victim# kill -32 <Process ID>

    Сокрытие сетевого соединения

    Когда взломщик устанавливает соединение с машиной через telnet или SSH, это соединение может быть обнаружено в списке команды netstat, запущенной системным администратором. Для взломщика это может быть весьма неприятно. У Knark есть утилита, которая называется nethide, и которая может спрятать соединение, содержащее соответствующую строку. Например, если взломщик хочет спрятать IP-адрес 192.168.1.100 на атакованной машине, следует набрать:

    victim# ./nethide "192.168.1.100"

    Если взломщик хочет скрыть в списке TCP- или UDP-порты, то, чтобы скрыть порт 2222, следует просто набрать следующую команду:

    victim# ./nethide ":2222"

    Если взломщик хочет вновь разрешить отображение строки, то следует набрать команду:

    victim# ./nethide -c

    Переадресация исполняемых файлов

    Одно из наиболее употребляемых сегодня выражений: "Я использую Tripwire, следовательно, я обезопасил себя от взломщиков" не соответствует действительности, если на атакованной машине установлен Knark. Knark располагает утилитой, которая называется ered, которая может переадресовывать одну команду в другую. Представьте, что произойдет, если команду cat переадресовать команде rm. Каждый раз, когда пользователь набирает cat <filename>, вместо этого будет выполняться команда rm. Для переадресации одной команды в другую, наберите следующую команду:

    victim# ./ered <from command> <to command>

    В случае, когда системный администратор запускает утилиту вроде Tripwire для проверки наиболее важных двоичных системных файлов, команда ered может запускать утилиту useless . Это происходит потому, что Knark перехватывает системные вызовы на уровне ядра, и если система вызывает исполняемый файл, он запускает вместо этого специальный исполняемый файл. Обратите внимание, что при этом исходный двоичный файл не изменяется и, следовательно, у него не изменяется контрольная сумма. Следовательно, Tripwire не может зафиксировать посторонней активности.

    В качестве примера ошибки Tripwire представьте следующую переадресацию, когда взломщик подставляет свою версию программы md5sum вместо системной версии.

    victim# ./ered /usr/bin/md5sum /tmp/hackers.md5sum

    Чтобы снять все переадресации, следует набрать:

    victim# ./ered -c

    Выполнение удаленных команд

    После того как Knark установлен, взломщик может удаленно выполнять команды с помощью утилиты rexec. Эта утилита запускается следующей командой:

    attacker# ./rexec <Spoofed IP Address> <Victim IP Address> <Command>

    Rexec фабрикует пакеты от заданного IP-адреса, используя UDP с исходящим и входящим портами 53 (DNS). Следовательно, эти типы пакетов обычно пропускаются через систему безопасности, и команды выполняются на захваченной машине.

    Сокрытие модуля Knark.o в списке загружаемых модулей

    Последней темой в списке методов сокрытия информации является сокрытие факта, что Knark загружен в качестве загружаемого модуля ядра. Поскольку все загружаемые модули ядра отображаются в списке по команде lsmod, то Knark может оказаться в этом списке. Конечно, мы можем переименовать knark.o во что-нибудь другое, например someobscuredriver.o, но Knark предлагает лучшее решение. Решение состоит в наличии модуля modhide.o. Он может спрятать последний загруженный модуль. После установки Knark вы должны набрать следующую команду:

    victim# insmod modhide.o

    Эта команда возвратит ожидаемую ошибку. Теперь, наберите команду lsmod, которая не покажет в списке модулей Knark, но он по-прежнему будет работать в ядре. После загрузки модуля modhide Knark может быть дезинсталлирован только после перезагрузки захваченной машины.

    Пример из жизни. Хорошие, плохие и безобразные

    В этом конкретном случае проверяются средства дистанционного контроля, разделенные на три разных уровня, каждый с различными степенями сложности использования, определения и удаления. "Хорошим" средством является VNC, "плохими" являются Back Orifice, Netbus и SubSeven, "безобразные" средства это - Loki, stcpshell и Knark.

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

    В следующей таблице представлена эта конфигурация.

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

    VNC

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

    Back Orifice

    С помощью BO2k атакующий может открыть этот черный ход опять через порт TCP 80. Атакующий может получить доступ к рабочему месту Windows администратора, если администратор запустит программу на машине-жертве. Таким способом атакующий хочет поместить эту программу, прикрепленную к привлекательной безобидной программе, перед администратором в надежде, что она будет запущена. Как только она будет запущена, атакующий получает доступ к этой сети.

    Netbus

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

    SubSeven

    Используя Sub7, атакующий может изменить порт, на котором черный ход будет ожидать соединения. В этом случае атакующий сможет обмануть брандмауэр, если он сможет инсталлировать Sub7 на автоматизированном рабочем месте администратора. После получения атакующим доступа к автоматизированному рабочему месту администратора, он получает доступ к серверу Linux.

    После того как хакер инсталлировал черный ход на машину Windows, оставленную администратором открытой, он может разнюхать пароли, вводимые администратором, просто читая ввод с клавиатуры, когда тот входит на сервер Linux. Кроме того, хакер также может подключиться к серверу Linux, активизировав средство изменения направления данных, встроенное в Sub7, на машине с Windows. Затем атакующий может использовать этот черный ход, чтобы соединиться с блоком Linux через порт изменения направления TCP-машины Windows, использовав полномочия администратора. В этом примере порт TCP 22 используется как входной порт к машине с Windows и направляющий к серверу Linux, таким образом, ускользая от архитектуры безопасности на месте.

    Knark

    Как только хакер оказался на сервере Linux, он получает прямой (корневой) доступ (при помощи клавиатуры администратора) и может успешно инсталлировать Knark. Дистанционное исполнение команды будет успешным, потому что команда rexec использует порт UDP 53 для связи с сервером. У хакера теперь есть черный ход к обеим машинам-жертвам, и он владеет всей сетью.

    Страницы:

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

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

    Поскольку некоторые пакеты программного обеспечения удаленного доступа обычно используются с добрыми намерениями, их обычно не относят к средствам взлома. Поэтому большинство детекторов вирусов и систем IDS не обращают внимания на проявления активности таких программ, если они специально на это не настроены. Сообразительный взломщик может использовать средства, разработанные для благих целей, чтобы уклонится от обнаружения. Одна из утилит удаленного контроля/входа через черный ход в этом разделе, предназначенная для работы с "добрыми намерениями" - Virtual Network Computing (VNC).

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

    Тем не менее, средства этого типа быстро обнаруживаются детекторами вирусов и IDS-системами с установленными файлами наиболее распространенных сигнатур. Поэтому эти средства используются взломщиками в том случае, когда жертва не отличается хоть каким-то здравым смыслом. Эта лекция охватывает такие средства взлома как Back Orifice, Netbus и SubSeven.

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

    Хотя эти программы обычно не определяются детекторами вирусов, они обнаруживаются системами IDS. Однако если эти программы будут использоваться с пониманием, то даже обнаружение деятельности программы не добавит жертве информации. Из программ, обсуждаемых в настоящей лекции, к этой категории относятся Loki, stcpshell и Knark.

    VNC

    Программа /.

    У VNC есть клиентская и серверная части. Сервер размещается на машине, которой вы хотите управлять. Клиент устанавливается на управляющей машине. Следовательно, вы можете установить клиентскую программу на вашей "атакующей" машине, а сервер должен быть установлен на машине "жертве". В отдельных случаях, можно обойтись без клиентской части программы, поскольку VNC также работает, как Web-сервер. Это означает, что сервер может управляться с помощью обычного Web-броузера.

    Реализация

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

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

    Предположим, что вы взломщик. После того, как VNC будет установлена, вы можете запустить VNC -сервер, чтобы прошло его первоначальное конфигурирование. В диалоговом окне Current User Properties, доступном в программе VNC "app mode", которая находится в папке Start/Programs/VNC, задайте параметры конфигурации, как это показано на следующем рисунке.

    Вам важно знать, что VNC запускается по аналогии с X Window, когда для него инициализируется displays. В данном случае, дисплей номер 0 (ноль) позволяет VNC прослушивать порт 5800 для Web-сервера и порт 5900 для VNC -сервера. Значения этих портов становится понятным из следующего рисунка, на котором взломщик, используя FreeBSD, соединяется с машиной, на которой установлен VNC. Взломщик использует Web-броузер для соединения с портом 5800 по IP-адресу VNC -машины. При этом открывается Web-страница, которая запрашивает у пользователя пароль для входа в систему.

    После того как был введен правильный пароль, рабочий стол доступен для взломщика через Web-броузер. Ниже приведена копия экрана DOS-сессии, отображаемой в окне VNC -сессии. Обратите внимание на то, что вы видите то же самое, как если бы вы сидели перед консолью машины. На этом изображении Web-броузер удален с рисунка.

    Пока видно, что рабочий стол машины-жертвы отображается у вас на экране в окне Web-броузера. Собственные средства просмотра VNC дают возможность отобразить рабочий стол атакуемой машины и вне окна Web-броузера. Средство просмотра использует вместо порта 5800, как показано на предыдущем рисунке, порт 5900.

    Наиболее осторожным администраторам следует заблокировать TCP-порт 5900 для входа в свою сеть. Поскольку 80 порт хуже всего контролируется многими администраторами, это может стать преимуществом для взломщика, использующего этот порт вместо порта 5900. Используя некоторые навыки из высшей математики, любой взломщик может усовершенствовать этот вид атаки. Обратимся вновь к диалоговому окну Current User Properties, в котором осуществляется настройка VNC -сервера и запрашивается номер дисплея для прослушивания. По умолчанию это дисплей номер 0 по порту 5900. Мы знаем, что для протокола TCP доступно 65535 портов. Следовательно, порт номер 65536 - это то же самое, что и TCP-порт 0, поскольку это значение выходит за допустимый интервал. Следовательно, если мы вычтем из числа 65536 число 5900, то получим 59636. Если мы прибавим число 80 к полученному результату, получим 59716. Затем мы можем ввести число 59716 в качестве номера дисплея для программы настройки сервера VNC в диалоговом окне Current User Properties, чтобы заставить VNC прослушивать порт 80 на машине-жертве.

    После запуска netstat -an, команды, которая отображает открытые порты, мы увидим, что открыт 80 порт.

    В этой ситуации нет проблемы. Если мы соединимся с машиной-жертвой через дисплей 59716, программа отображения VNC вернет ошибку. Это также произойдет, когда мы сделаем то же самое с Web-сервером VNC на порте 59616. Следовательно, мы должны использовать редиректор данных на нашей локальной машине, который прослушивает 5900 порт и перенаправляет трафик на 80 TCP-порт машины-жертвы. Этого можно достичь, используя программу datapipe. (Подробное описание ее использования см. в лекции "Перенаправление портов".) После того как datapipe выполнится с указанными параметрами, приложение vncviewer сможет работать на нашей машине. В результате трафик будет перенаправляться от нашей локальной машины на 80 порт машины жертвы, обходя, таким образом, брандмауэр.

    Ниже приведена копия экрана с окном DOS, отображаемая через средства просмотра VNC. Обратите внимание, что выглядит это так, как если бы вы сидели перед консолью машины. На этом изображении Web-броузер удален с рисунка.

    Теперь обсудим некоторые предупреждения против использования VNC в качестве черного хода в сеть. Первое касается того, как VNC сохраняет информацию о сессии, такую как пароль, в системном реестре. Если мы переместим сервер, который мы создали на атакующей машине, на машину-жертву, то нам потребуется, чтобы эта информация была на атакуемой машине. Следовательно, мы должны будем скопировать значения из реестра нашей машины на машину-жертву, чтобы сделать их доступными для нее. В Windows этого можно добиться с помощью утилиты regedit VNC, выбрав операцию File/Export для экспорта значений в текстовый файл. Далее показан результат.

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

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

    Использовать VNC на машине под управлением Unix не сложнее, чем работа с Windows. Эта программа может быть запущена кем угодно, а не только пользователем с полномочиями root. Исходный код программы можно загрузить и скомпилировать для Unix-подобной операционной системы. После компиляции по команде vncserver можно запустить сервер. Конечно, чтобы это сделать, у взломщика должен быть доступ к командной строке атакуемой машины. Как только vncserver будет запущен, взломщик получит запрос на ввод пароля и затем увидит у себя на экране рабочий стол атакуемой машины. Окно VNC используется под Unix примерно так же, как и под Windows.

    Во-первых, как и под Windows, взломщик может получить доступ к атакуемой машине через Web-броузер. Помните, что когда вы запускаете vncserver, вы должны ввести номер дисплея "display number". Вспомните номер дисплея и прибавьте к нему число 5800. Затем, используйте получившиеся число и соединитесь с атакуемой машиной примерно тем же способом, как мы это проделали для Windows-системы. Когда авторы запускали vncserver на атакуемой машине, мы упоминали о том, что использовали номер дисплея 3. Мы соединялись с портом 5803 на атакуемой машине.

    Рабочий стол атакуемой машины, которым мы управляли с помощью VNC, выглядит несколько отлично от того, как это было для Windows, поскольку под управлением vncserver стартует псевдо-X-сервер. Пример атакуемой машины приведен на следующей иллюстрации.

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

    Netbus

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

    Вы можете найти , http://www.tlsecurity.com или http://www.securityfocus.com

    Реализация

    Netbus версии 2 (бета) доступен для всех и содержит большинство необходимых взломщику функций. Сначала Netbus должен быть установлен на машине взломщика, чтобы его можно было сконфигурировать перед заражением жертвы. Инсталляция программы похожа на установку большинства приложений для Windows-систем, и ее можно выполнить, выбрав меню Start/Programs и щелкнув на имени приложения Netbus.

    Netbus, также как и VNC, поставляется в комплекте клиент/сервер. Обычно сервер передается на машину жертву с использованием электронной почты, компакт-диска, или аналогичного устройства. Как только сервер запускается, машина оказывается захваченной, какая бы мощная система сетевой безопасности не работала между машиной и клиентом, размещенным на машине взломщика.

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

  • В клиентской программе выберите File/Server Setup, как показано на следующей иллюстрации.
  • В диалоговом окне Server Setup выберите Server Executable. Исполняемый модуль будет сконфигурирован, чтобы быть установленным на атакуемой машине.
  • Найдите исполняемый модуль сервера, который вы хотели бы сконфигурировать. В большинстве случаев вам потребуется конфигурировать исполняемый модуль NBsvr.exe, который поставляется в инсталляционном комплекте
  • После того как вы нашли исполняемый модуль сервера, который вы хотите сконфигурировать (обычно он располагается в установочной директории), вам необходимо закончить выбор параметров в диалоговом окне Server Setup, как это показано далее. Убедитесь, что вы отметили параметр Accept Connections.
  • В поле Run On Port укажите TCP-порт, который может использовать Netbus для ожидания соединения. В данном примере выбран порт 4375, но может быть выбран и любой другой порт из тех, что не заняты на атакуемой машине. Этот порт должен быть доступен любым способом на протяжении всей сети от клиента до сервера.
  • Затем выберите параметр visibility. Обсуждаемая программа создана для неправедных целей, поэтому по умолчанию в ней стоит значение Invisible.
  • Отметьте Full Access в поле Access Mode. Другие режимы доступа позволяют использовать метод шпионского доступа (Spy Access), который не обеспечивает такого полного контроля, как метод полного доступа (Full Access). Поскольку программа может использоваться для захвата машины в сети с целью аудита, выберите Full Access.
  • Наконец, отметьте, что Netbus будет запускаться заново всякий раз, когда машина будет перезагружаться. Обычно этот параметр активизирован.
  • Сконфигурировав исполняемый модуль сервера, вы можете переименовать его и переслать на атакуемую машину любым доступным способом. Как только исполняемый модуль будет установлен на атакуемой машине, просто запустите его. Сервер Netbus запустится и будет ожидать соединения с клиентом. Ниже приведена иллюстрация, которая показывает атакованную машину с адресом 192.168.1.100, прослушивающую порт 4375.

    Конфигурирование клиента также несложно.

  • Вновь запустите клиент
  • Введите здесь атакуемый IP-адрес и TCP-порт, который на нем прослушивается. В нижней части окна конфигурации подставьте пароль, который первоначально был введен в исполняемый модуль сервера.
  • Выберите OK, чтобы добавить атакуемый хост в список доступных серверов.
  • Это простой способ сделать хост видимым в списке серверов, но вы можете добавить в список сотни серверов, выбрав Host/Find на первом шаге. Эта команда конфигурирует клиент для работы в режиме сканирования, когда проверяется список IP-адресов для заданного порта, и определяются любые работающие серверы Netbus. Этот параметр может быть использован системным администратором для попыток определения таких серверов в своей сети.

    Следующие шаги выполняются для установки соединения клиента Netbus с атакуемой машиной, на которой установлен сервер.

  • В основном окне клиента Netbus выберите требуемый IP-адрес.
  • Выберите Host/Connect.
  • Если установленный вами пароль правильный, и сервер доступен, то вы увидите сообщение о соединении, которое выглядит так.
  • После того как вы установили соединение с сервером, на атакованной машине может выполняться весь спектр команд. Из меню Control вы можете получить доступ к некоторым доступным параметрам.
  • После того как Netbus установлен, вы можете выполнять две задачи: исследовать файловую систему и перенаправлять TCP-порты через систему безопасности. Обе задачи можно выполнять с использованием возможностей, предоставляемых клиентом. Как использовать Netbus после его установки - решать взломщику или аудитору.

    Back Orifice

    Программа , http://www.tlsecurity.com и http://www.securityfocus.com. Поскольку разработали эту программу авторы - члены группы "Cult of the Dead Cow" (Культ мертвой коровы), то вы также можете найти эту программу на сайте http://www.cultdeadcow.com/, который переадресует вас к наиболее популярному репозиторию файлов.

    Реализация

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

  • Когда появится заставка мастера конфигурирования, щелкните на кнопке Next.
  • Мастер потребует у вас ввести название исполняемого модуля сервера, который будет редактироваться. Поскольку может быть доступно множество копий исполняемого модуля (по одному для каждой атакуемой машины), на этой странице должен быть выбран один из них.
  • BO2k - один из немногих пакетов программ, обеспечивающих доступ через черный ход, которые могут работать поверх TCP- и UDP-протоколов. Протокол TCP выбирается обычно, если устойчивость соединения не вызывает сомнений. UDP-протокол выбирается в том случае, если есть трудности в преодолении системы безопасности (например, системный администратор может случайно оставить один из UDP-портов открытым).
  • Поскольку большинство взломщиков хотели бы использовать протокол TCP для управления сервером BO2k, то в следующем окне представлен запрос на номер порта, который будет использоваться. Поскольку 80 порт обычно более доступен, чем любой другой, выберите его.
  • На следующем экране введите пароль, который используется для доступа к серверу. Пароль для доступа с черного хода - отличная вещь для взломщика/аудитора, но если слово будет использоваться без подтверждения полномочий, то обычно это плохо.
  • Как только мастер закончит работу, будет загружена утилита настройки сервера.
  • Посмотрите, как проверить различные параметры настройки сервера, которые мастер заполнил на основании информации, полученной от вас.
  • Теперь убедитесь, что сервер загружен в директорию автозапуска. Это позволит серверу запускаться всякий раз после перезагрузки машины. Чтобы это сделать, выберите папку Startup на панели Option Variables слева внизу. Этот параметр обеспечит помещение исполняемого модуля сервера в директорию автозапуска.
  • Щелкните на кнопке Save Server после того, как завершите все изменения.
  • Сконфигурированный сервер готов к установке на атакуемую машину. На атакуемой машине может выполняться только файл bo2k.exe. Если этот файл будет запущен, он откроет сконфигурированный вами порт. На следующей иллюстрации обратите внимание, что на атакуемой машине 80 порт открыт.

    Теперь соединимся с атакуемой машиной.

  • Запустите программу bo2kgui.exe.
  • В открытом окне следует выбрать File/Add Server, если созданного вами сервера нет в списке. Откроется диалоговое окно Edit Server Settings, и вы сможете ввести информацию для атакуемого сервера.
  • Как только вы закончите конфигурирование соединения, щелкните на кнопке OK.
  • Дважды щелкните на сервере BO2k, который вы только что открыли. Откроется диалоговое окно Server Command Client.
  • Щелкните на кнопке Connect to. Как только вы соединитесь, кнопка изменится на Disconnect, как это показано на следующем рисунке, и вы увидите версию сервера, напечатанную поверх результирующего диалогового окна.
  • После того как вы соединитесь с сервером, клиент предоставит вам возможность выполнить много различных действий. Проще всего запросить номер версии сервера и протестировать его, чтобы проверить, поддерживает ли сервер ICMP-трафик.

    BO2k также позволяет выполнять множество "системных действий". Сюда входит возможность перезагружать атакованную машину, заблокировать машину или запросить системную информацию.

    Несмотря на то, что многие думают, что они защищены от взломщиков, если используют протокол SSH, они всегда могут ошибиться, если кто-то подсмотрит их пароль. Проще всего получить пароль - это подглядывать за активностью клавиатуры. Следовательно, если пользователь входит, как kjones, и набирает logged in, взломщик может переслать этот поток символов с помощью BO2k.

    Зачастую взломщик может перехватить управление системой, замаскировав свой IP-адрес в процессе взлома или посещения других систем в интернете. В лекции "Перенаправление портов" мы обсудим средства перенаправления данных. У . Теперь любые соединения, которые мы устанавливаем с атакованным сервером по TCP-порту 2222, будут перенаправляться на 80 порт машины http://www.foundstone.com, и в ее системном журнале будет отмечен IP-адрес атакованной машины.

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

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

    Если же ваша цель состоит в просмотре отображаемого на мониторе атакованной машины, то BO2k предоставляет вам такую возможность с помощью папки Multimedia.

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

    SubSeven

    После BO2k в сообществе специалистов по безопасности появилась программа SubSeven (Sub7). На сегодняшний день это лучшее, что можно пожелать. Sub7 совершенно смертельна, поскольку ее последние версии могут изменять свои параметры и, тем самым, обманывать средства поиска вирусов, которые обычно перехватывают утилиты, подобные Netbus и BO2k. С точки зрения средств удаленного управления, Sub7 - практически то же, что и Netbus и BO2k.

    , http://www.tlsecurity.com и http://www.securityfocus.com (Web-сайт авторов программы не был доступен на момент написания этой книги).

    Реализация

    Так же как Netbus и BO2k, Sub7 требует, чтобы перед использованием был сконфигурирован сервер. Во-первых, взломщику потребуется открыть утилиту редактирования сервера, которая поставляется вместе с программой и размещается в папке Sub7. Когда программа будет запущена, вы увидите следующее окно.

  • Выберите сервер, который вы собираетесь конфигурировать, щелкнув на кнопке Browse в левом верхнем углу окна.
  • Выберите сервер Sub7, по умолчанию - Server.exe.
  • Измените некоторые параметры, содержащиеся в этом окне. Важные для понимания параметры будут обсуждаться далее.
  • Лучше всего использовать пароль для доступа к Sub7. Кроме того, Sub7 пытается самостоятельно сделать себя более незаметным, чем другие программы, и, как это видно в правом верхнем углу окна, в его распоряжении есть несколько способов сделаться незаметным после установки на атакованной машине.

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

  • персональный коммуникатор ICQ;
  • сеть IRC;
  • уведомление по электронной почте.
  • В результате, взломщик получает дополнительные преимущества, связанные с тем, что нет необходимости искать машины, которые могут быть заражены его сервером.

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

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

    Теперь в вашем распоряжении есть сервер, который может работать на атакованной машине. Для его запуска на захваченной машине вы можете использовать любой из методов, о которых мы постоянно говорим в этой лекции: пересылка по электронной почте и т.д. После запуска Sub7 на машине будет открыт порт (TCP 62875). Результат можно увидеть, запустив на захваченной машине netstat.

    После того как сервер запущен на атакованной машине (и, возможно, взломщик/аудитор получили автоматическое оповещение об этом), взломщик/аудитор может осуществлять соединение с машиной, используя Sub7 -клиента, как это показано на следующей иллюстрации.

    .

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

    Для перехвата вводимых паролей и другой интересной информации, которую пользователь может вводить с консоли, Sub7 предоставляет взломщику функции, сосредоточенные в разделе Keys/Messages, что и показано на следующей иллюстрации.

    Взломщик может захотеть переадресовать порт на захваченной машине с целью спрятать свой IP-адрес, или чтобы обойти средства обеспечения безопасности, или для каких-либо других целей. Функции для переадресации портов можно найти в папке Advanced.

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

    Папки Fun Manager и Extra Fun содержат множество полезных для взломщика функций. Если на атакованной машине есть камера, он может включить ее и просматривать видео. Или, если взломщик захочет досадить, он может просто схлопнуть экран на атакованной машине.

    Loki

    После всего этого вы можете воскликнуть: "Есть ли аналогичные программы для Unix?" Конечно! Первая и наиболее древняя программа для удаленного управления под Unix называется Loki. Известный некоторым как "Божество зла", он подарил название этой программе.

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

    . Программа была написана и приспособлена для работы на большинстве Unix-систем, таких как Linux, Solaris и FreeBSD. Короче, Loki работает, помещая команды внутрь ICMP Ping-трафика, передаваемого между клиентом и сервером. Инкапсуляция выполняется в процессе передачи ICMP Ping-запроса и получения ответа, и при использовании стандартной версии программы передается нешифрованный текст.

    Следовательно, ICMP Ping-трафик имеет марку, по которой можно идентифицировать присутствие программы в сети. Важно отметить, что более поздние версии Loki, чтобы скрыть свое присутствие, включают в себя средства шифрования, такие как XOR или Blowfish. Более того, канал взаимодействия всегда уникален, поскольку номер ICMP последовательности всегда статичен и представляет собой номер канала TAG. Номер TAG - это созданный взломщиком номер, который выбирается в процессе компиляции программы. Следовательно, вторым признаком присутствия в сети Loki является ответ ICMP Ping, который передается до того, как упаковывается ICMP Ping-запрос, и, следовательно, не соответствует спецификации ICMP Ping запрос/ответ. В зависимости от выполняемых взломщиком команд может оказаться, что в сети циркулирует значительно больше ICMP-запросов, чем ответов. При обычном использовании Ping на каждый запрос посылается ответ.

    Реализация

    Программа Loki должна быть скомпилирована с помощью команды make. Кроме этого, если вы загрузили версию 2 и хотите запускать ее не под RedHat Linux, следует использовать следующую заплатку.

    diff Loki.orig/Makefile Loki/Makefile
    37c37
    < DEBUG     =   -DDEBUG
    ---
    > DEBUG     =   #-DDEBUG
    
    diff Loki.orig/loki.h Loki/loki.h
    36c36,38
    < #include <linux/icmp.h>
    ---
    > #define ICMP_ECHO 8
    > #define ICMP_ECHOREPLY    0
    > //#include <linux/icmp.h>
    38c40
    < #include <linux/signal.h>
    ---
    > #include <signal.h>

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

    attacker# ./loki -d <victim's IP address>

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

    Достойны упоминания несколько предупреждений, касающихся использования Loki.

  • Демон Loki по умолчанию блокирует вас внутри директории /tmp. Есть возможность изменить директорию, но только изменив исходный код программы.
  • Хорошей идеей будет осуществлять статическую компиляцию Loki, если вы собираетесь загрузить сервер на машину, на которой нет возможностей компиляции, или с другими версиями динамических библиотек (т.е. вы не сможете скомпилировать программу на захваченном сервере).
  • Как показано на следующей иллюстрации, трафик захватывается при помощи программы Ethereal (Ethereal подробно обсуждается в лекции "Анализаторы сетевых потоков"), ICMP-пакеты передают информацию между сервером и клиентом. По умолчанию, эта информация не шифруется. Тем не менее, если вам это необходимо, в
  • Stcpshell

    Утилита stcpshell применяет те же принципы скрытого коммуникационного канала, заимствованные у Loki, к протоколу TCP. Эта программа использует поддельные TCP-пакеты для передачи информации между клиентом и сервером и создания виртуальной командной оболочки на захваченной машине. Аналогично программе Loki, утилита поставляется в исходных кодах и должна быть скомпилирована.

    Утилита .

    Реализация

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

    attacker# gcc -o stcpshell stcpshell.c

    Сервер запускается так.

    victim# ./stcpshell

    Затем вы можете установить соединение между клиентом и сервером.

    attacker# ./stcpshell -c <server IP address> <client IP address>

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

    Сессию, установленную между клиентом и сервером, можно увидеть на следующей иллюстрации, которая представляет обмен трафиком, перехваченным программой Ethereal. Обратите внимание, как трафик между клиентом и сервером передается с использованием сфабрикованного IP-адреса 207.46.131.137. Более того, для соединения выбраны порты 1234 и 4321 (определяемые, как работа программы rwhois, которая по умолчанию работает с портом 4321). Порты и сфабрикованный адрес можно изменить в исходном коде утилиты, который может быть найден в следующих строках в модуле stcpshell.c.

    /* from www.microsoft.com .. you BETTER change this */
    
    pkt.ip.ip_src.s_addr=inet_addr("207.46.131.137");

    Knark

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

    . Существует две версии программы. Одна запускается с ядром Linux 2.2, другая работает с ядром 2.4. Версия Knark, которая изучается в данном разделе - самая новая, разработанная для ядра Linux 2.4, но все команды такие же, как и у второй версии.

    Реализация

    Knark поставляется в исходных кодах и должна быть скомпилирована. Чтобы скомпилировать Knark, необходимо иметь доступ к исходным кодам ядра Linux, размещенным в директории /usr/src/Linux, где находятся коды текущего ядра. Чтобы скомпилировать утилиту, следует распаковать архив, скорректировать тексты и набрать следующую команду.

    victim# make clean
    victim# make

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

    victim# insmod knark.o

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

    Превращение в пользователя Root

    Обычно у пользователя root нет возможности удаленного доступа. Любой взломщик это знает, а Knark предлагает решение для этой задачи. Вместо того чтобы создавать обычного пользователя, расширяя его полномочия для взлома машины, Knark предлагает утилиту, которая называется rootme (естественно, вам следует изменить это имя после инсталляции). После запуска программа rootme превращает обычного пользователя (это любой пользователь, ID которого не равно нулю) в пользователя root, не обладающего для этого должными полномочиями. Более того, эта акция не регистрируется ни в одном журнале, как это происходит с командой su.

    victim$ ./rootme /bin/bash
    victim#

    Сокрытие файла или директории

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

    victim# ./hidef <filename>

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

    victim# ./unhidef <filename>

    Сокрытие процесса

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

    С установленной программой Knark можно скрыть любой процесс, послав сигнал с номером 31.

    victim# kill -31 <Process ID>

    Когда взломщик решит, что ему необходимо вернуть процесс в список процессов, он посылает сигнал номер 32.

    victim# kill -32 <Process ID>

    Сокрытие сетевого соединения

    Когда взломщик устанавливает соединение с машиной через telnet или SSH, это соединение может быть обнаружено в списке команды netstat, запущенной системным администратором. Для взломщика это может быть весьма неприятно. У Knark есть утилита, которая называется nethide, и которая может спрятать соединение, содержащее соответствующую строку. Например, если взломщик хочет спрятать IP-адрес 192.168.1.100 на атакованной машине, следует набрать:

    victim# ./nethide "192.168.1.100"

    Если взломщик хочет скрыть в списке TCP- или UDP-порты, то, чтобы скрыть порт 2222, следует просто набрать следующую команду:

    victim# ./nethide ":2222"

    Если взломщик хочет вновь разрешить отображение строки, то следует набрать команду:

    victim# ./nethide -c

    Переадресация исполняемых файлов

    Одно из наиболее употребляемых сегодня выражений: "Я использую Tripwire, следовательно, я обезопасил себя от взломщиков" не соответствует действительности, если на атакованной машине установлен Knark. Knark располагает утилитой, которая называется ered, которая может переадресовывать одну команду в другую. Представьте, что произойдет, если команду cat переадресовать команде rm. Каждый раз, когда пользователь набирает cat <filename>, вместо этого будет выполняться команда rm. Для переадресации одной команды в другую, наберите следующую команду:

    victim# ./ered <from command> <to command>

    В случае, когда системный администратор запускает утилиту вроде Tripwire для проверки наиболее важных двоичных системных файлов, команда ered может запускать утилиту useless . Это происходит потому, что Knark перехватывает системные вызовы на уровне ядра, и если система вызывает исполняемый файл, он запускает вместо этого специальный исполняемый файл. Обратите внимание, что при этом исходный двоичный файл не изменяется и, следовательно, у него не изменяется контрольная сумма. Следовательно, Tripwire не может зафиксировать посторонней активности.

    В качестве примера ошибки Tripwire представьте следующую переадресацию, когда взломщик подставляет свою версию программы md5sum вместо системной версии.

    victim# ./ered /usr/bin/md5sum /tmp/hackers.md5sum

    Чтобы снять все переадресации, следует набрать:

    victim# ./ered -c

    Выполнение удаленных команд

    После того как Knark установлен, взломщик может удаленно выполнять команды с помощью утилиты rexec. Эта утилита запускается следующей командой:

    attacker# ./rexec <Spoofed IP Address> <Victim IP Address> <Command>

    Rexec фабрикует пакеты от заданного IP-адреса, используя UDP с исходящим и входящим портами 53 (DNS). Следовательно, эти типы пакетов обычно пропускаются через систему безопасности, и команды выполняются на захваченной машине.

    Сокрытие модуля Knark.o в списке загружаемых модулей

    Последней темой в списке методов сокрытия информации является сокрытие факта, что Knark загружен в качестве загружаемого модуля ядра. Поскольку все загружаемые модули ядра отображаются в списке по команде lsmod, то Knark может оказаться в этом списке. Конечно, мы можем переименовать knark.o во что-нибудь другое, например someobscuredriver.o, но Knark предлагает лучшее решение. Решение состоит в наличии модуля modhide.o. Он может спрятать последний загруженный модуль. После установки Knark вы должны набрать следующую команду:

    victim# insmod modhide.o

    Эта команда возвратит ожидаемую ошибку. Теперь, наберите команду lsmod, которая не покажет в списке модулей Knark, но он по-прежнему будет работать в ядре. После загрузки модуля modhide Knark может быть дезинсталлирован только после перезагрузки захваченной машины.

    Пример из жизни. Хорошие, плохие и безобразные

    В этом конкретном случае проверяются средства дистанционного контроля, разделенные на три разных уровня, каждый с различными степенями сложности использования, определения и удаления. "Хорошим" средством является VNC, "плохими" являются Back Orifice, Netbus и SubSeven, "безобразные" средства это - Loki, stcpshell и Knark.

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

    В следующей таблице представлена эта конфигурация.

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

    VNC

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

    Back Orifice

    С помощью BO2k атакующий может открыть этот черный ход опять через порт TCP 80. Атакующий может получить доступ к рабочему месту Windows администратора, если администратор запустит программу на машине-жертве. Таким способом атакующий хочет поместить эту программу, прикрепленную к привлекательной безобидной программе, перед администратором в надежде, что она будет запущена. Как только она будет запущена, атакующий получает доступ к этой сети.

    Netbus

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

    SubSeven

    Используя Sub7, атакующий может изменить порт, на котором черный ход будет ожидать соединения. В этом случае атакующий сможет обмануть брандмауэр, если он сможет инсталлировать Sub7 на автоматизированном рабочем месте администратора. После получения атакующим доступа к автоматизированному рабочему месту администратора, он получает доступ к серверу Linux.

    После того как хакер инсталлировал черный ход на машину Windows, оставленную администратором открытой, он может разнюхать пароли, вводимые администратором, просто читая ввод с клавиатуры, когда тот входит на сервер Linux. Кроме того, хакер также может подключиться к серверу Linux, активизировав средство изменения направления данных, встроенное в Sub7, на машине с Windows. Затем атакующий может использовать этот черный ход, чтобы соединиться с блоком Linux через порт изменения направления TCP-машины Windows, использовав полномочия администратора. В этом примере порт TCP 22 используется как входной порт к машине с Windows и направляющий к серверу Linux, таким образом, ускользая от архитектуры безопасности на месте.

    Knark

    Как только хакер оказался на сервере Linux, он получает прямой (корневой) доступ (при помощи клавиатуры администратора) и может успешно инсталлировать Knark. Дистанционное исполнение команды будет успешным, потому что команда rexec использует порт UDP 53 для связи с сервером. У хакера теперь есть черный ход к обеим машинам-жертвам, и он владеет всей сетью.

    Вернуться к учебному плану