Отец работает — сено косит. Брат работает
— сено возит. Да и сам Мальчиш то отцу, то брату помогает или просто с другими мальчишами прыгает да балуется.
А.Гайдар. Сказка про военную тайну, Мальчиша-Кибальчиша и его твердое слово

Как ты думаешь, в результате чего несчастным админам при наличии огромного количества разбросанных по разным объектам серверов и пользовательских компьютеров удается весь рабочий день проводить практически не сходя с
места, предаваясь лени и поглощая огромные количества пива? Ответ один – использование удаленного администрирования. Вместо того, чтобы ходить ножками, гораздо проще возить мышкой по экрану и тыкать пальцами в клавиши – будь это PuTTY для *NIX и BSD-систем, DameWare или PC Anywhere для Windows или WEB-интерфейс интеллектуального коммутатора – все сводится к удаленному управлению.

Естественно, любые возможности программ, позволяющих заниматься удаленным администрированием, можно использовать двояко. Кто знает, возможно ежедневно помогающий тебе в управлении любимым сервантом станет орудием неизвестных прыщавых юнцов, интересующихся содержимым сверхсекретного файла hardcor.html, хранящегося на этом самом серванте (ведь они не знают, что ты хранишь там ссылки на свои любимые хардкор – ресурсы ;-). Одним из примеров реализации возможностей удаленного управления является программа Remote Administrator, достаточно широко распространенная среди системных администраторов. В данной статье рассмотрена версия программы Remote Administrator 2.1, однако все изложенное в основном может быть с успехом применено и для других версий. Не буду парить тебя сравнительными характеристиками и анализом возможностей этой проги, а сразу перейду к делу.

Архитектура

Не надо от пуль на пол ложиться, не надо от снарядов в погреба прятаться, не надо от пожаров в лес бежать. Нечего буржуинов бояться. Некому в пояс кланяться. Живи да работай
— хорошая жизнь!

Устанавливаем на свой компьютер Remote Administrator 2.1 (trial-версию можно взять на
http://www.famatech.com/download/radmin21.zip). Открываем Regedit, и пытаемся найти в нем строку RAdmin. Получаем несколько ключей, в которых программа хранит свои настройки. Это ключи:

HKLM\Software\Radmin\v2.0\Server с разделами iplist и Parameters
HKCU\Software\Radmin\v.2.0 с разделами Clients и Parameters
HKLM\Software\Radmin\v1.01 с разделами ViewType 

Напомню, что программа состоит из двух частей – клиентской и серверной, причем клиентская обычно запускается в контексте текущего пользователя как обычная прикладная программа, а серверная представляет собой службу Remote Administrator Service, и представляет собой службу, регистрирующуюся в операционной системе при первой инсталляции и выполняющуюся с привилегиями LocalSystem (операционные системы семейств Microsoft Windows 9x/ME рассматривать не будем). Нас, естественно, больше интересуют параметры, позволяющие менять поведение именно серверной части (гадить легче
:))

Как легко увидеть, наибольшее число настроек хранятся в первом ключе. Экспортируем ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\RAdmin, и сравним его с картинкой настроек программы

[HKEY_LOCAL_MACHINE\ SYSTEM\RAdmin]
[HKEY_LOCAL_MACHINE\ SYSTEM\RAdmin\v2.0]
[HKEY_LOCAL_MACHINE\ SYSTEM\RAdmin\v2.0\Server]
[HKEY_LOCAL_MACHINE\ SYSTEM\RAdmin\v2.0\Server\iplist]
«0»=hex:31,30,2e,34,2e,30,2e,30,00,00,00,00,
5f,3a,c7,77,08,f1,12,00,32,35,35,\ 2e,32,35,35,2e,32,35,35,2e,30,00,00,00,0d,00,
00,00,0a,04,00,00,ff,ff,ff,00
[HKEY_LOCAL_MACHINE\SYSTEM\ RAdmin\v2.0\Server\Parameters]
«NTAuthId»=hex:05,00,00,00
«NTAuthEnabled»=hex:00,00,00,00
«Port»=hex:23,13,00,00
«Timeout»=hex:0a,00,00,00
«EnableLogFile»=hex:01,00,00,00
«LogFilePath»=»c:\\logfile.txt»
«FilterIp»=hex:01,00,00,00
«DisableTrayIcon»=hex:00,00,00,00
«AutoAllow»=hex:00,00,00,00
«AskUser»=hex:00,00,00,00
«EnableEventLog»=hex:01,00,00,00
«Parameter»=hex:ee,6a,9f,bd,dd,3c,7c,12,ff,9d,20,92,a8,e7,f3,37

Окно настроек программы

Нетрудно понять, какие ключи регулируют определенные настройки программы. Попробуем, например, изменить параметр HideTrayIcon в окне настроек и вновь просмотреть содержимое ключа regedit’ом. Значение «DisableTrayIcon” изменилось с 00000000 на 01000000. Рассмотрим содержимое ключей более подробно. По умолчанию предполагаем, что все рассматриваемые ключи имеют тип
REG_BINARY. 

Параметр Hide Tray Icon – ключ реестра DisableTrayIcon
– отвечает за отображение иконки программы в трее Windows
00000000 – иконка присутствует в трее
01000000 – иконка отсутствует в трее

Параметр Ask User Permission — > ключ реестра AskUser – определяет, будет ли при попытке соединения отображаться окно с запросом «разрешить / запретить»,
при этом параметр Auto Allow After Timeout (ключ AutoAllow) разрешает соединение по истечению интервала времени, заданного в TimeOut (ключ TimeOut). Соответственно, если параметр AutoAllow установлен в 01000000, то соединение будет разрешено, в случае 00000000 – запрещено (по умолчанию выбирается значение 00000000 – запрещающее). 

Ключ TimeOut содержит значение времени ожидания реакции пользователя в секундах, в приведенном примере 0a,00,00,00 – 10 секунд (0a000000 – 10 секунд, 0b000000 – 11 секунд, e7030000 – 999 секунд, нетрудно разобраться). Кстати, значения параметра TimeOut при его вводе в окне настроек программы позволяет менять его только в пределах от 1 до 999 секунд (про граничные условия значений ключа мы еще поговорим).

Параметры Use Event Log (ключ EnableEventLog) и Use Logfile (UseLogFile) в секции Logging указывают на необходимость использования журналов операционной системы и журнала программы, хранящегося в обычном текстовом файле. Путь к файлу и его имя указывает ключ LogFilePath типа
REG_SZ.

Параметр Use Default Port (ключ Port со значением по умолчанию 4899 – 23130000) указывает номер порта, на котором служба Remote Administrator Service будет ожидать входящие подключения. Допускаются значения от 1 (01000000) до 65535 (ffff0000). 

Параметр Use IP Filter (ключ FilterIP) управляет использованием фильтрации входящих запросов на основе IP-адресов. Разрешенные к подключению адреса указываются в таблице ниже. При добавлении записей в таблицу разрешенных IP-адресов в ветви Parameters создаются ключи с именами, соответствующими номерам по порядку (т.е. «0», «1», «2» и так далее), и с длинными значениями типа REG_BINARY. Назначим, например, в список IP-адресов фильтра сеть с 0.0.0.0 с маской 255.255.255.255, а также сеть 0.0.0.0 с маской 255.255.255.254 (такой пример взят для простоты),
а потом экспортируем ветку реестра:

[HKEY_LOCAL_MACHINE\SYSTEM\ RAdmin\v2.0\Server\iplist]
«0»=hex:30,2e,30,2e,30,2e,30,00,78,eb,
12,00,cc,e8,12,00,74,33,34,77,32,35,35,\ 2e,32,35,35,2e,32,35,35,2e,32,35,34,00,
6c,ee,12,00,00,00,00,00,ff,ff,ff,fe
«1»=hex:30,2e,30,2e,30,2e,30,00,80,87,
5b,00,e0,5c,5b,00,00,00,00,00,32,35,35,\ 2e,32,35,35,2e,32,35,35,2e,32,35,35,
00,00,00,00,00,00,00,00,00,ff,ff,ff,ff 

Обратим внимание на то, что две последние записи длиной в 8 байт различаются только последними значениями – ff ff ff fe против ff ff ff ff. Используя функцию перевода десятичных значений в шестнадцатеричные убедимся, что ff – 255, fe – 254. Соответственно, последние 8 байт записи представляют собой маску подсети.

Предположим, что значения 00 00 00 00, располагающиеся перед номером сети, идентифицируют номер узла. Откроем ключ HKEY_LOCAL_MACHINE\SYSTEM \ RAdmin \ v2.0 \ Server \ iplist \ 0, выберем из контекстного меню пункт «Изменить двоичные данные»,
и в позиции 0028 изменим первые два байта на 10.
Посмотрим, как теперь выглядит IP-фильтр в настройках Remote Administrator.

Видим, что адрес узла в первой записи изменился на 16.0.0.0. Все правильно, ведь 10 в шестнадцатеричной системе счисления – это 16 в десятичной. Вывод – последние 16 байт значения ключа отвечают за адрес узла и маску подсети – по 8 байт каждый. 

Авторизация

День проходит, два проходит. Выйдет Мальчиш на крыльцо: нет… не видать еще Красной Армии.

Теперь попробуем разобраться с механизмами аутентификации. Remote Administrator поддерживает режимы аутентификации двух видов – средствами NT с использованием базы данных SAM локального компьютера или с обращением к Active Directory, и простую аутентификацию, базирующуюся на едином пароле, дающем доступ в систему. Пароль, кстати, шифруется с использованием алгоритма BlowFish с длиной ключа 128 бит и хранится в ключе Parameter (извини за тавтологию!). Несмотря на столь мощный механизм шифрования, если этот ключ удалить, то на целевой компьютер вообще можно попасть без пароля. А вообще пароль, например, «00000000» выглядит как «bc,af,fd,25,ad,78,ae,86,4f,
de,1d,35,81,37,36,c9».

Параметр Enable NT Security (ключ NTAuthEnable 01000000) управляет включением авторизации с использованием механизмов NT. Соответственно, если в значении присутствует единица, RAdmin тянется к базам пользователей SAM или AD, проверяя права пользователя на доступ к компьютеру в соответсвии со списком, заданном в Permissions, если нет – лезет расшифровывать BlowFish. А вот ключ NTAuthID, видимо, как раз и описывает, какие юзеры и с какими правами. 

Детально разбираться с этим параметром я не стал, однако путем недолгих раздумий пришел к выводу, что в реестре в том или ином виде должны храниться идентификаторы пользователей в NT (в виде имен пользователей, их SID-ов или еще как-то), а также их привилегии доступа к системе, коих насчитывается 5, ты их наверное, уже в Special Access видел. Больше – увы … разбирайтесь.

Кстати, при использовании системы аутентификации NT есть один интересный момент. Допустим, что в программе доменная аутентификация включена, однако на вкладке Permissions нет ни одной группы или пользователя. Как ты думаешь, что будет в этом случае ? Правильно – служба работать будет, однако никого в систему не пустит.

(Продолжение следует)

Оставить мнение

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…