Представление о "черном ходе" и средствах удаленного доступа важны для любого профессионала в области безопасности. Для аудитора безопасности, осуществляющего атаку и попытку проникновения, такие средства важны, поскольку они могут быть использованы взломщиками для первого проникновения в безопасную на первый взгляд сеть. Для администраторов систем безопасности знание средств получения данных о системе и потенциальных точек входа в сеть - постоянная задача. Для исследователя инцидентов с нарушением безопасности получение сведений о системе и процесс восстановления должны быть абсолютно понятны, чтобы предпринять законные методы предотвращения попыток вторжения в сеть. Эта лекция посвящена возможностям и средствам, предназначенным для аудиторов безопасности, администраторов и исследователей инцидентов вторжения.
Такие средства лучше всего использовать как вспомогательные инструменты при оценке систем обеспечения безопасности. Некоторые из инструментов, обсуждаемых в этой лекции, могут быть определены системами IDS и средствами выявления вирусов. Поскольку черные ходы и средства удаленного доступа могут распространяться пользователями по невнимательности при входе в сеть, средства, обсуждаемые в этой лекции, помогут проверить, выполняют ли ваши IDS-системы и антивирусные программы свои функции должным образом.
Поскольку некоторые пакеты программного обеспечения удаленного доступа обычно используются с добрыми намерениями, их обычно не относят к средствам взлома. Поэтому большинство детекторов вирусов и систем IDS не обращают внимания на проявления активности таких программ, если они специально на это не настроены. Сообразительный взломщик может использовать средства, разработанные для благих целей, чтобы уклонится от обнаружения. Одна из утилит удаленного контроля/входа через черный ход в этом разделе, предназначенная для работы с "добрыми намерениями" - Virtual .
Другие инструменты были разработаны специально для неправедных целей. Эти программы разработаны и поддерживаются теми, кто относит себя к "подполью". Эти разновидности программ обычно определяются сканерами вирусов, сетевыми и персональными IDS-системами, и, следовательно, зачастую пользуются более изощренными приемами - такими, как изменение механизма, приемы шифрования и изменение параметров - чтобы ввести в заблуждение доминирующие, основанные на определении сигнатур, средства противодействия взломам.
Тем не менее, средства этого типа быстро обнаруживаются детекторами вирусов и IDS-системами с установленными файлами наиболее распространенных сигнатур. Поэтому эти средства используются взломщиками в том случае, когда жертва не отличается хоть каким-то здравым смыслом. Эта лекция охватывает такие средства взлома как Back Orifice, Netbus и SubSeven.
Есть еще средства проникновения через черный ход, которые не относятся ни к одной из этих двух категорий. Эта разновидность программ сложна для определения настолько, что иногда даже невозможно определить политику защиты на будущее. Внимательное изучение того, как работают такие программы, позволит вам понять, как действовали разработчики этих программных средств при преодолении типичных проблем безопасности большого количества систем в интернете. Эти программы могут использоваться любым аудитором с высокой степенью комфорта в области безопасности систем.
Хотя эти программы обычно не определяются детекторами вирусов, они обнаруживаются системами IDS. Однако если эти программы будут использоваться с пониманием, то даже обнаружение деятельности программы не добавит жертве информации. Из программ, обсуждаемых в настоящей лекции, к этой категории относятся Loki, stcpshell и Knark.
Программа /.
У 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. Следовательно, мы должны использовать 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 несколько отличается от VNC ; хотя Netbus позволяет лучше контролировать атакуемую машину, у программы нет такого развитого графического интерфейса, как у VNC, и разработана она для не слишком праведных целей. К тому же, большинство детекторов вирусов обнаруживают Netbus, что определяет использование программы только против незащищенных машин. В противном случае эффективно использовать программу трудно.
Вы можете найти , http://www.tlsecurity.com или http://www.securityfocus.com
Netbus версии 2 (бета) доступен для всех и содержит большинство необходимых взломщику функций. Сначала Netbus должен быть установлен на машине взломщика, чтобы его можно было сконфигурировать перед заражением жертвы. Инсталляция программы похожа на установку большинства приложений для Windows-систем, и ее можно выполнить, выбрав меню Start/Programs и щелкнув на имени приложения Netbus.
Netbus, также как и VNC, поставляется в комплекте клиент/сервер. Обычно сервер передается на машину жертву с использованием электронной почты, компакт-диска, или аналогичного устройства. Как только сервер запускается, машина оказывается захваченной, какая бы мощная система сетевой безопасности не работала между машиной и клиентом, размещенным на машине взломщика.
Чтобы сконфигурировать Netbus для установки на атакуемой машине, первый раз клиент запускается для модификации исполняемого модуля сервера. Процесс конфигурирования показан ниже.



Netbus для ожидания соединения. В данном примере выбран порт 4375, но может быть выбран и любой другой порт из тех, что не заняты на атакуемой машине. Этот порт должен быть доступен любым способом на протяжении всей сети от клиента до сервера.visibility. Обсуждаемая программа создана для неправедных целей, поэтому по умолчанию в ней стоит значение Invisible .Netbus будет запускаться заново всякий раз, когда машина будет перезагружаться. Обычно этот параметр активизирован.Сконфигурировав исполняемый модуль сервера, вы можете переименовать его и переслать на атакуемую машину любым доступным способом. Как только исполняемый модуль будет установлен на атакуемой машине, просто запустите его. Сервер Netbus запустится и будет ожидать соединения с клиентом. Ниже приведена иллюстрация, которая показывает атакованную машину с адресом 192.168.1.100, прослушивающую порт 4375.

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

После того как Netbus установлен, вы можете выполнять две задачи: исследовать файловую систему и перенаправлять TCP-порты через систему безопасности. Обе задачи можно выполнять с использованием возможностей, предоставляемых клиентом. Как использовать Netbus после его установки - решать взломщику или аудитору.
Программа , http://www.tlsecurity.com и http://www.securityfocus.com. Поскольку разработали эту программу авторы - члены группы "Cult of the Dead
Программа BO2k обеспечивает большинство функций, поддерживаемых Netbus. Чтобы сделать BO2k -сервер подходящим для использования в качестве сервера черного хода на атакуемой машине, вы должны сконфигурировать его с использованием утилиты конфигурирования на атакуемой машине. Следующая последовательность действий позволяет подготовить сервер BO2k с использованием мастера конфигурирования, запускающегося при первом запуске BO2k.
BO2k - один из немногих пакетов программ, обеспечивающих доступ через черный ход, которые могут работать поверх TCP- и UDP-протоколов. Протокол TCP выбирается обычно, если устойчивость соединения не вызывает сомнений. UDP-протокол выбирается в том случае, если есть трудности в преодолении системы безопасности (например, системный администратор может случайно оставить один из UDP-портов открытым).BO2k, то в следующем окне представлен запрос на номер порта, который будет использоваться. Поскольку 80 порт обычно более доступен, чем любой другой, выберите его.

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

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

BO2k, который вы только что открыли. Откроется диалоговое окно Server Command Client.
После того как вы соединитесь с сервером, клиент предоставит вам возможность выполнить много различных действий. Проще всего запросить номер версии сервера и протестировать его, чтобы проверить, поддерживает ли сервер ICMP-трафик.

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

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

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


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

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

Возможно, цель состоит в том, чтобы проинспектировать содержимое файловой системы. Простой поиск *.mdb-файлов может вознаградить взломщика найденными базами данных с информацией о кредитных картах или других интересных вещах. В папке File/Directory вы можете искать, передавать, создавать файлы, которые вам могут понадобиться на атакованной машине.
После BO2k в сообществе специалистов по безопасности появилась программа SubSeven (Sub7). На сегодняшний день это лучшее, что можно пожелать. Sub7 совершенно смертельна, поскольку ее последние версии могут изменять свои параметры и, тем самым, обманывать средства поиска вирусов, которые обычно перехватывают утилиты, подобные Netbus и BO2k. С точки зрения средств удаленного управления, Sub7 - практически то же, что и Netbus и BO2k.
, http://www.tlsecurity.com и http://www.securityfocus.com (Web-сайт авторов программы не был доступен на момент написания этой книги).
Так же как Netbus и BO2k, Sub7 требует, чтобы перед использованием был сконфигурирован сервер. Во-первых, взломщику потребуется открыть утилиту редактирования сервера, которая поставляется вместе с программой и размещается в папке Sub7. Когда программа будет запущена, вы увидите следующее окно.

Sub7, по умолчанию - Server.exe.Лучше всего использовать пароль для доступа к Sub7. Кроме того, Sub7 пытается самостоятельно сделать себя более незаметным, чем другие программы, и, как это видно в правом верхнем углу окна, в его распоряжении есть несколько способов сделаться незаметным после установки на атакованной машине.
Sub7 может не только выполнять работу по управлению захваченной машиной, но также информировать вас о новых машинах, которые он смог захватить, используя одну из нескольких возможностей:
В результате, взломщик получает дополнительные преимущества, связанные с тем, что нет необходимости искать машины, которые могут быть заражены его сервером.
Для этой атаки сервер прослушивает TCP-порт 62875. Этот порт не является специальным портом, он выбран случайно. Если есть желание, то мы можем присоединить к серверу специальный файл, например, электронную поздравительную открытку, для отсылки ничего не подозревающему владельцу захваченной машины.
Последнюю возможность мы можем выбрать в зависимости от того, хотим мы или нет, чтобы при доступе к серверу работала парольная защита. Для взломщика полезно об этом подумать и предохранить утилиту от доступа посторонних. С точки зрения аудитора, это не слишком хорошо. Вы можете захотеть снова войти на сервер позднее для изменения конфигурации, или вам может понадобиться найти информацию о том, как настроен этот сервер.
Теперь в вашем распоряжении есть сервер, который может работать на атакованной машине. Для его запуска на захваченной машине вы можете использовать любой из методов, о которых мы постоянно говорим в этой лекции: пересылка по электронной почте и т.д. После запуска Sub7 на машине будет открыт порт (TCP 62875). Результат можно увидеть, запустив на захваченной машине netstat.

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

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

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

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

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


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

После всего этого вы можете воскликнуть: "Есть ли аналогичные программы для Unix?" Конечно! Первая и наиболее древняя программа для удаленного управления под Unix называется Loki. Известный некоторым как "Божество зла", он подарил название этой программе.
Когда Loki была создана, каждый поддерживал ICMP-трафик и пропускал его через системы безопасности, поскольку этот протокол был разработан для взаимодействия одной машины с другой. Loki была создана для взлома этого уязвимого места и для удаленного управления атакованной машиной без необходимости для взломщика осуществлять вход на машину.
. Программа была написана и приспособлена для работы на большинстве Unix-систем, таких как Linux, Solaris и FreeBSD. Короче, Loki работает, помещая команды внутрь ICMP Ping-трафика, передаваемого между клиентом и сервером. Инкапсуляция выполняется в процессе передачи ICMP Ping-запроса и получения ответа, и при использовании стандартной версии программы передается нешифрованный текст.
Следовательно, ICMP Ping-трафик имеет марку, по которой можно идентифицировать присутствие программы в сети. Важно отметить, что более поздние версии Loki, чтобы скрыть свое присутствие, включают в себя средства шифрования, такие как XOR или 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, если вы собираетесь загрузить сервер на машину, на которой нет возможностей компиляции, или с другими версиями динамических библиотек (т.е. вы не сможете скомпилировать программу на захваченном сервере).Утилита 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 представляет собой весьма опасную программу создания черного хода. Технически, это не только утилита удаленного доступа и управления. Она может нанести серьезный ущерб любой 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 нет возможности удаленного доступа. Любой взломщик это знает, а Knark предлагает решение для этой задачи. Вместо того чтобы создавать обычного пользователя, расширяя его полномочия для взлома машины, Knark предлагает утилиту, которая называется rootme (естественно, вам следует изменить это имя после инсталляции). После запуска программа rootme превращает обычного пользователя (это любой пользователь, ID которого не равно нулю) в пользователя root, не обладающего для этого должными полномочиями. Более того, эта акция не регистрируется ни в одном журнале, как это происходит с командой su.
victim$ ./rootme /bin/bash victim#
Естественно, каждому взломщику необходимо скрывать свой инструментарий таким образом, чтобы системный администратор не мог бы его найти. Knark предлагает утилиту, которая называется hidef, и может
victim# ./hidef <filename>
Если взломщик хочет, чтобы его файлы вновь отображались командой ls, он может набрать следующую команду.
victim# ./unhidef <filename>
Обычно, когда взломщик захватывает машину, он запускает на ней другие утилиты, чтобы упрочить свое положение в сети. Одной из этих утилит может быть (см. лекцию "Анализаторы сетевых потоков"), используемый для перехвата паролей, передаваемых по сети. Поскольку должен оставаться в памяти еще долгое время после того, как взломщик покинул машину, здравомыслящий системный администратор может легко обнаружить его, набрав команду 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 располагает утилитой, которая называется , которая может переадресовывать одну команду в другую. Представьте, что произойдет, если команду cat переадресовать команде rm. Каждый раз, когда пользователь набирает cat <filename>, вместо этого будет выполняться команда rm. Для переадресации одной команды в другую, наберите следующую команду:
victim# ./ered <from command> <to command>
В случае, когда системный администратор запускает утилиту вроде Tripwire для проверки наиболее важных двоичных системных файлов, команда может запускать утилиту 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 загружен в качестве загружаемого 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 на что-то разрешенное из диапазона портов TCP. Хакер меняет этот порт на порт TCP 80, связывает его с безобидной программой и помещает перед администратором в привлекательном виде в надежде, что администратор запустит троянскую программу. После того как администратор запустит эту программу, которая устанавливает VNC и добавляет соответствующие значения регистра, хакер сможет соединить свое автоматизированное рабочее место Windows через неправильно сконфигурированный брандмауэр.
С помощью BO2k атакующий может открыть этот черный ход опять через порт TCP 80. Атакующий может получить доступ к рабочему месту Windows администратора, если администратор запустит программу на машине-жертве. Таким способом атакующий хочет поместить эту программу, прикрепленную к привлекательной безобидной программе, перед администратором в надежде, что она будет запущена. Как только она будет запущена, атакующий получает доступ к этой сети.
Используя Netbus, атакующий может поменять порт сервера на 80, так как мы это наблюдали в случае с VNC. Если атакующий сможет заставить администратора инсталлировать его на его машине с помощью прикрепления к привлекательной безобидной программе, то будет достигнут простой доступ в эту сеть. После инсталляции Netbus атакующий может захватить клавиатуру администратора и, возможно, получить дополнительные пароли к серверу Linux. По этому сценарию, поскольку большинство программ, сканирующих на вирусы, может определить Netbus, атакующий должен надеяться, что эта система не располагает обновленной версией программы, сканирующей на вирусы.
Используя Sub7, атакующий может изменить порт, на котором черный ход будет ожидать соединения. В этом случае атакующий сможет обмануть брандмауэр, если он сможет инсталлировать Sub7 на автоматизированном рабочем месте администратора. После получения атакующим доступа к автоматизированному рабочему месту администратора, он получает доступ к серверу Linux.
После того как хакер инсталлировал черный ход на машину Windows, оставленную администратором открытой, он может разнюхать пароли, вводимые администратором, просто читая ввод с клавиатуры, когда тот входит на сервер Linux. Кроме того, хакер также может подключиться к серверу Linux, активизировав средство изменения направления данных, встроенное в Sub7, на машине с Windows. Затем атакующий может использовать этот черный ход, чтобы соединиться с блоком Linux через порт изменения направления TCP-машины Windows, использовав полномочия администратора. В этом примере порт TCP 22 используется как входной порт к машине с Windows и направляющий к серверу Linux, таким образом, ускользая от архитектуры безопасности на месте.
Как только хакер оказался на сервере Linux, он получает прямой (корневой) доступ (при помощи клавиатуры администратора) и может успешно инсталлировать Knark. Дистанционное исполнение команды будет успешным, потому что команда rexec использует порт UDP 53 для связи с сервером. У хакера теперь есть черный ход к обеим машинам-жертвам, и он владеет всей сетью.
Представление о "черном ходе" и средствах удаленного доступа важны для любого профессионала в области безопасности. Для аудитора безопасности, осуществляющего атаку и попытку проникновения, такие средства важны, поскольку они могут быть использованы взломщиками для первого проникновения в безопасную на первый взгляд сеть. Для администраторов систем безопасности знание средств получения данных о системе и потенциальных точек входа в сеть - постоянная задача. Для исследователя инцидентов с нарушением безопасности получение сведений о системе и процесс восстановления должны быть абсолютно понятны, чтобы предпринять законные методы предотвращения попыток вторжения в сеть. Эта лекция посвящена возможностям и средствам, предназначенным для аудиторов безопасности, администраторов и исследователей инцидентов вторжения.
Такие средства лучше всего использовать как вспомогательные инструменты при оценке систем обеспечения безопасности. Некоторые из инструментов, обсуждаемых в этой лекции, могут быть определены системами IDS и средствами выявления вирусов. Поскольку черные ходы и средства удаленного доступа могут распространяться пользователями по невнимательности при входе в сеть, средства, обсуждаемые в этой лекции, помогут проверить, выполняют ли ваши IDS-системы и антивирусные программы свои функции должным образом.
Поскольку некоторые пакеты программного обеспечения удаленного доступа обычно используются с добрыми намерениями, их обычно не относят к средствам взлома. Поэтому большинство детекторов вирусов и систем IDS не обращают внимания на проявления активности таких программ, если они специально на это не настроены. Сообразительный взломщик может использовать средства, разработанные для благих целей, чтобы уклонится от обнаружения. Одна из утилит удаленного контроля/входа через черный ход в этом разделе, предназначенная для работы с "добрыми намерениями" - Virtual .
Другие инструменты были разработаны специально для неправедных целей. Эти программы разработаны и поддерживаются теми, кто относит себя к "подполью". Эти разновидности программ обычно определяются сканерами вирусов, сетевыми и персональными IDS-системами, и, следовательно, зачастую пользуются более изощренными приемами - такими, как изменение механизма, приемы шифрования и изменение параметров - чтобы ввести в заблуждение доминирующие, основанные на определении сигнатур, средства противодействия взломам.
Тем не менее, средства этого типа быстро обнаруживаются детекторами вирусов и IDS-системами с установленными файлами наиболее распространенных сигнатур. Поэтому эти средства используются взломщиками в том случае, когда жертва не отличается хоть каким-то здравым смыслом. Эта лекция охватывает такие средства взлома как Back Orifice, Netbus и SubSeven.
Есть еще средства проникновения через черный ход, которые не относятся ни к одной из этих двух категорий. Эта разновидность программ сложна для определения настолько, что иногда даже невозможно определить политику защиты на будущее. Внимательное изучение того, как работают такие программы, позволит вам понять, как действовали разработчики этих программных средств при преодолении типичных проблем безопасности большого количества систем в интернете. Эти программы могут использоваться любым аудитором с высокой степенью комфорта в области безопасности систем.
Хотя эти программы обычно не определяются детекторами вирусов, они обнаруживаются системами IDS. Однако если эти программы будут использоваться с пониманием, то даже обнаружение деятельности программы не добавит жертве информации. Из программ, обсуждаемых в настоящей лекции, к этой категории относятся Loki, stcpshell и Knark.
Программа /.
У 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. Следовательно, мы должны использовать 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 несколько отличается от VNC ; хотя Netbus позволяет лучше контролировать атакуемую машину, у программы нет такого развитого графического интерфейса, как у VNC, и разработана она для не слишком праведных целей. К тому же, большинство детекторов вирусов обнаруживают Netbus, что определяет использование программы только против незащищенных машин. В противном случае эффективно использовать программу трудно.
Вы можете найти , http://www.tlsecurity.com или http://www.securityfocus.com
Netbus версии 2 (бета) доступен для всех и содержит большинство необходимых взломщику функций. Сначала Netbus должен быть установлен на машине взломщика, чтобы его можно было сконфигурировать перед заражением жертвы. Инсталляция программы похожа на установку большинства приложений для Windows-систем, и ее можно выполнить, выбрав меню Start/Programs и щелкнув на имени приложения Netbus.
Netbus, также как и VNC, поставляется в комплекте клиент/сервер. Обычно сервер передается на машину жертву с использованием электронной почты, компакт-диска, или аналогичного устройства. Как только сервер запускается, машина оказывается захваченной, какая бы мощная система сетевой безопасности не работала между машиной и клиентом, размещенным на машине взломщика.
Чтобы сконфигурировать Netbus для установки на атакуемой машине, первый раз клиент запускается для модификации исполняемого модуля сервера. Процесс конфигурирования показан ниже.



Netbus для ожидания соединения. В данном примере выбран порт 4375, но может быть выбран и любой другой порт из тех, что не заняты на атакуемой машине. Этот порт должен быть доступен любым способом на протяжении всей сети от клиента до сервера.visibility. Обсуждаемая программа создана для неправедных целей, поэтому по умолчанию в ней стоит значение Invisible .Netbus будет запускаться заново всякий раз, когда машина будет перезагружаться. Обычно этот параметр активизирован.Сконфигурировав исполняемый модуль сервера, вы можете переименовать его и переслать на атакуемую машину любым доступным способом. Как только исполняемый модуль будет установлен на атакуемой машине, просто запустите его. Сервер Netbus запустится и будет ожидать соединения с клиентом. Ниже приведена иллюстрация, которая показывает атакованную машину с адресом 192.168.1.100, прослушивающую порт 4375.

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

После того как Netbus установлен, вы можете выполнять две задачи: исследовать файловую систему и перенаправлять TCP-порты через систему безопасности. Обе задачи можно выполнять с использованием возможностей, предоставляемых клиентом. Как использовать Netbus после его установки - решать взломщику или аудитору.
Программа , http://www.tlsecurity.com и http://www.securityfocus.com. Поскольку разработали эту программу авторы - члены группы "Cult of the Dead
Программа BO2k обеспечивает большинство функций, поддерживаемых Netbus. Чтобы сделать BO2k -сервер подходящим для использования в качестве сервера черного хода на атакуемой машине, вы должны сконфигурировать его с использованием утилиты конфигурирования на атакуемой машине. Следующая последовательность действий позволяет подготовить сервер BO2k с использованием мастера конфигурирования, запускающегося при первом запуске BO2k.
BO2k - один из немногих пакетов программ, обеспечивающих доступ через черный ход, которые могут работать поверх TCP- и UDP-протоколов. Протокол TCP выбирается обычно, если устойчивость соединения не вызывает сомнений. UDP-протокол выбирается в том случае, если есть трудности в преодолении системы безопасности (например, системный администратор может случайно оставить один из UDP-портов открытым).BO2k, то в следующем окне представлен запрос на номер порта, который будет использоваться. Поскольку 80 порт обычно более доступен, чем любой другой, выберите его.

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

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

BO2k, который вы только что открыли. Откроется диалоговое окно Server Command Client.
После того как вы соединитесь с сервером, клиент предоставит вам возможность выполнить много различных действий. Проще всего запросить номер версии сервера и протестировать его, чтобы проверить, поддерживает ли сервер ICMP-трафик.

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

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

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


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

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

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

Возможно, цель состоит в том, чтобы проинспектировать содержимое файловой системы. Простой поиск *.mdb-файлов может вознаградить взломщика найденными базами данных с информацией о кредитных картах или других интересных вещах. В папке File/Directory вы можете искать, передавать, создавать файлы, которые вам могут понадобиться на атакованной машине.
После BO2k в сообществе специалистов по безопасности появилась программа SubSeven (Sub7). На сегодняшний день это лучшее, что можно пожелать. Sub7 совершенно смертельна, поскольку ее последние версии могут изменять свои параметры и, тем самым, обманывать средства поиска вирусов, которые обычно перехватывают утилиты, подобные Netbus и BO2k. С точки зрения средств удаленного управления, Sub7 - практически то же, что и Netbus и BO2k.
, http://www.tlsecurity.com и http://www.securityfocus.com (Web-сайт авторов программы не был доступен на момент написания этой книги).
Так же как Netbus и BO2k, Sub7 требует, чтобы перед использованием был сконфигурирован сервер. Во-первых, взломщику потребуется открыть утилиту редактирования сервера, которая поставляется вместе с программой и размещается в папке Sub7. Когда программа будет запущена, вы увидите следующее окно.

Sub7, по умолчанию - Server.exe.Лучше всего использовать пароль для доступа к Sub7. Кроме того, Sub7 пытается самостоятельно сделать себя более незаметным, чем другие программы, и, как это видно в правом верхнем углу окна, в его распоряжении есть несколько способов сделаться незаметным после установки на атакованной машине.
Sub7 может не только выполнять работу по управлению захваченной машиной, но также информировать вас о новых машинах, которые он смог захватить, используя одну из нескольких возможностей:
В результате, взломщик получает дополнительные преимущества, связанные с тем, что нет необходимости искать машины, которые могут быть заражены его сервером.
Для этой атаки сервер прослушивает TCP-порт 62875. Этот порт не является специальным портом, он выбран случайно. Если есть желание, то мы можем присоединить к серверу специальный файл, например, электронную поздравительную открытку, для отсылки ничего не подозревающему владельцу захваченной машины.
Последнюю возможность мы можем выбрать в зависимости от того, хотим мы или нет, чтобы при доступе к серверу работала парольная защита. Для взломщика полезно об этом подумать и предохранить утилиту от доступа посторонних. С точки зрения аудитора, это не слишком хорошо. Вы можете захотеть снова войти на сервер позднее для изменения конфигурации, или вам может понадобиться найти информацию о том, как настроен этот сервер.
Теперь в вашем распоряжении есть сервер, который может работать на атакованной машине. Для его запуска на захваченной машине вы можете использовать любой из методов, о которых мы постоянно говорим в этой лекции: пересылка по электронной почте и т.д. После запуска Sub7 на машине будет открыт порт (TCP 62875). Результат можно увидеть, запустив на захваченной машине netstat.

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

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

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

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

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


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

После всего этого вы можете воскликнуть: "Есть ли аналогичные программы для Unix?" Конечно! Первая и наиболее древняя программа для удаленного управления под Unix называется Loki. Известный некоторым как "Божество зла", он подарил название этой программе.
Когда Loki была создана, каждый поддерживал ICMP-трафик и пропускал его через системы безопасности, поскольку этот протокол был разработан для взаимодействия одной машины с другой. Loki была создана для взлома этого уязвимого места и для удаленного управления атакованной машиной без необходимости для взломщика осуществлять вход на машину.
. Программа была написана и приспособлена для работы на большинстве Unix-систем, таких как Linux, Solaris и FreeBSD. Короче, Loki работает, помещая команды внутрь ICMP Ping-трафика, передаваемого между клиентом и сервером. Инкапсуляция выполняется в процессе передачи ICMP Ping-запроса и получения ответа, и при использовании стандартной версии программы передается нешифрованный текст.
Следовательно, ICMP Ping-трафик имеет марку, по которой можно идентифицировать присутствие программы в сети. Важно отметить, что более поздние версии Loki, чтобы скрыть свое присутствие, включают в себя средства шифрования, такие как XOR или 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, если вы собираетесь загрузить сервер на машину, на которой нет возможностей компиляции, или с другими версиями динамических библиотек (т.е. вы не сможете скомпилировать программу на захваченном сервере).Утилита 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 представляет собой весьма опасную программу создания черного хода. Технически, это не только утилита удаленного доступа и управления. Она может нанести серьезный ущерб любой 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 нет возможности удаленного доступа. Любой взломщик это знает, а Knark предлагает решение для этой задачи. Вместо того чтобы создавать обычного пользователя, расширяя его полномочия для взлома машины, Knark предлагает утилиту, которая называется rootme (естественно, вам следует изменить это имя после инсталляции). После запуска программа rootme превращает обычного пользователя (это любой пользователь, ID которого не равно нулю) в пользователя root, не обладающего для этого должными полномочиями. Более того, эта акция не регистрируется ни в одном журнале, как это происходит с командой su.
victim$ ./rootme /bin/bash victim#
Естественно, каждому взломщику необходимо скрывать свой инструментарий таким образом, чтобы системный администратор не мог бы его найти. Knark предлагает утилиту, которая называется hidef, и может
victim# ./hidef <filename>
Если взломщик хочет, чтобы его файлы вновь отображались командой ls, он может набрать следующую команду.
victim# ./unhidef <filename>
Обычно, когда взломщик захватывает машину, он запускает на ней другие утилиты, чтобы упрочить свое положение в сети. Одной из этих утилит может быть (см. лекцию "Анализаторы сетевых потоков"), используемый для перехвата паролей, передаваемых по сети. Поскольку должен оставаться в памяти еще долгое время после того, как взломщик покинул машину, здравомыслящий системный администратор может легко обнаружить его, набрав команду 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 располагает утилитой, которая называется , которая может переадресовывать одну команду в другую. Представьте, что произойдет, если команду cat переадресовать команде rm. Каждый раз, когда пользователь набирает cat <filename>, вместо этого будет выполняться команда rm. Для переадресации одной команды в другую, наберите следующую команду:
victim# ./ered <from command> <to command>
В случае, когда системный администратор запускает утилиту вроде Tripwire для проверки наиболее важных двоичных системных файлов, команда может запускать утилиту 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 загружен в качестве загружаемого 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 на что-то разрешенное из диапазона портов TCP. Хакер меняет этот порт на порт TCP 80, связывает его с безобидной программой и помещает перед администратором в привлекательном виде в надежде, что администратор запустит троянскую программу. После того как администратор запустит эту программу, которая устанавливает VNC и добавляет соответствующие значения регистра, хакер сможет соединить свое автоматизированное рабочее место Windows через неправильно сконфигурированный брандмауэр.
С помощью BO2k атакующий может открыть этот черный ход опять через порт TCP 80. Атакующий может получить доступ к рабочему месту Windows администратора, если администратор запустит программу на машине-жертве. Таким способом атакующий хочет поместить эту программу, прикрепленную к привлекательной безобидной программе, перед администратором в надежде, что она будет запущена. Как только она будет запущена, атакующий получает доступ к этой сети.
Используя Netbus, атакующий может поменять порт сервера на 80, так как мы это наблюдали в случае с VNC. Если атакующий сможет заставить администратора инсталлировать его на его машине с помощью прикрепления к привлекательной безобидной программе, то будет достигнут простой доступ в эту сеть. После инсталляции Netbus атакующий может захватить клавиатуру администратора и, возможно, получить дополнительные пароли к серверу Linux. По этому сценарию, поскольку большинство программ, сканирующих на вирусы, может определить Netbus, атакующий должен надеяться, что эта система не располагает обновленной версией программы, сканирующей на вирусы.
Используя Sub7, атакующий может изменить порт, на котором черный ход будет ожидать соединения. В этом случае атакующий сможет обмануть брандмауэр, если он сможет инсталлировать Sub7 на автоматизированном рабочем месте администратора. После получения атакующим доступа к автоматизированному рабочему месту администратора, он получает доступ к серверу Linux.
После того как хакер инсталлировал черный ход на машину Windows, оставленную администратором открытой, он может разнюхать пароли, вводимые администратором, просто читая ввод с клавиатуры, когда тот входит на сервер Linux. Кроме того, хакер также может подключиться к серверу Linux, активизировав средство изменения направления данных, встроенное в Sub7, на машине с Windows. Затем атакующий может использовать этот черный ход, чтобы соединиться с блоком Linux через порт изменения направления TCP-машины Windows, использовав полномочия администратора. В этом примере порт TCP 22 используется как входной порт к машине с Windows и направляющий к серверу Linux, таким образом, ускользая от архитектуры безопасности на месте.
Как только хакер оказался на сервере Linux, он получает прямой (корневой) доступ (при помощи клавиатуры администратора) и может успешно инсталлировать Knark. Дистанционное исполнение команды будет успешным, потому что команда rexec использует порт UDP 53 для связи с сервером. У хакера теперь есть черный ход к обеим машинам-жертвам, и он владеет всей сетью.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.