Удаленное управление и потайные ходы
Мы не раз отмечали, что в системе 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.