6 Сентября, 2013

Cт(а)ра(да)ние админов в недрах sysvol

Dmitriy Evteev

Когда компания Microsoft реализовала централизованную систему авторизации и явила всему миру Active Directory, каждый уважающий себя системный администратор принялся выдумывать способы максимально простого управления всей инфраструктурой на базе этой балалайки. Одна из задач, которую ставил перед собой админ - сохранить власть над всеми компутерами домена и иметь возможность демонстрировать эту власть не покидая своего отдаленного уютного логова заваленного пивом и снеками. Продвинутым пользователям в свою очередь это очень не нравилось. Ведь не бритый и всегда злой программист, обладая правами администратора к их системам, мог получить доступ к самой ценной информации, которая только может обрабатываться на корпоративном компьютере - к переписке в icq! Поэтому продвинутые пользователи всячески препятствовали сохранению админом высоких привилегий на своих системах.
прим. В то время (начало 2000 года) для многих админов была целая проблема запустить все необходимые программулины с правами непривилегированного юзверя. Потому каждый первый юзверь был локальным администратором на своем компьютере.
Сопротивление удаленному контролю со стороны продвинутых пользователей на своих рабочих станциях в корне не устраивало властелинов сети. Почесав слегка затылок в каталоге sysvol появляются файлы с расширением "bat" приблизительно следующего содержимого:

net localgroup administrators "domaindomain admins" /add
, которые будучи помещенные в автозагрузку компьютеров через gpo ненадолго выравнивали силы противодействующих сторон.

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

Но задвинуть надолго эту проблему в компаниях, где навязывалась "информационная безопасность" с регулярной сменой паролей или наблюдалась текучесть кадров в ит-отделе, не удавалось. А если к этому еще вспомнить насущие проблемы в виде нескольких версий unattended-инсталляций с различными паролями, выявленные случаи смены паролей корпоративными юзверями и несколько версий дефолтов в голове админа.....

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

net user administrator password1 

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

В то же самое время ребята из компании Microsoft хрустя попкорном с интересом наблюдали за всей этой движухой со стороны. Все понимали, что админы очень охотноактивно используют logon/logoff сценарии в домене. Однако, функций командной строки явно не хватало для реализации всех многочисленных идей, которые рождались в светлых головах системных администраторов. Так, мир увидел WSH, который тут же был окучен сисадминами.

Каталог sysvol запестрил расширениями vbs и js вперемешку с уже историческими костылями командной строки. Новые технологии позволили администраторам "по новому" заняться старыми проблемами, в т.ч. и с пресловутым локальным администратором...

strComputer = "."
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator, user")
objUser.SetPassword "password1"
objUser.SetInfo

На сцене появляются суровые админы, которые считают подобные методы ротации пароля администратора небезопасными. Но шутники корпорации добра предлагают иллюзию безопасности кода сценариев и релизят тулень под названием Script Encoder , которая "шифрует" содержимое сценариев vbs/js. Администраторы успокаиваются и все счастливы. Особенно счастливы зохеры, которые декодируют содержимое скриптов на раз .

Но шутникам из MS этого показалось мало. А потому в windows server 2008 появляется возможность "безопасной" ротации паролей локальных пользователей домена, прям из интерфейса управления групповыми политиками:


Админы пользуют, а зохеры тырят group.xml из каталога sysvol и пользуют локальных админов :) Как-то так и живем.


Эпилог


В данном рассказе я не хотел кого-то обидеть! И в первую очередь, не хотел обидеть системных администраторов, многие из которых действительно хорошо делают свою работу. Цель публикации в очередной раз обратить внимание администраторов и специалистов по ИБ на то, что хранение пароля в открытом виде опасно! И этим не брезгают пользоваться атакующие. А предлагаемые пути сокрытия пароля от ms при его хранении лишь вызывают широкую улыбку.

Что же касается локального администратора в доменной инфраструктуре, то в очередной раз хочу обратить внимание уважаемого читателя на следующую публикацию: http://support.microsoft.com/kb/814777 Отключите локального администратора на компьютерах домена и безопасность вашей сети немного повысится.
или введите имя

CAPTCHA
Anonymous
6 Сентября, 2013
Дмитрий, а если всем пользователям компов урезать роли до "Пользователь" и для админов оставить учетку локального администратора со стойким паролем (без полного отключения локального администратора) - насколько это будет эффективно?
0 |
Dmitry Evteev
6 Сентября, 2013
Появится очередная дырка т.к. после повышения привилегий (а при физическом не контроллируемом доступе к компьютеру это сделать довольно просто) с использованием этой учетной записи становится возможным прошерстить остальную сеть.
0 |
Anonymous
6 Сентября, 2013
А разве при физическом не контроллируемом доступе к компьютеру злоумышленник не сможет снова включить админскую учетку через безопасный режим и проделать всё тоже самое?
0 |
Roman Sorokin
6 Сентября, 2013
К сожалению, просто отключение лок.админа не всегда помогает от хитрых юзеров, которые знают про разблокировку этой учетки в безопасном режиме. Поэтому приходится совместно использовать и пароль на учетке, правда устанавливаемый удаленно, а не локальным батничком
0 |
Dmitry Evteev
6 Сентября, 2013
В отношении своего компьютера и в отношении компьютеров, к которым притопает ногами сможет. А вот лишь удаленно уже нет.
0 |
Dmitry Evteev
6 Сентября, 2013
А локальный батничек видимо болтается где-то на вашем компьютере с вписанным в него паролем, нет?
0 |
Roman Sorokin
6 Сентября, 2013
Скриптик запускается 1 раз с машины админа, и проходит локальную сеть, устанавливая пароль удаленно (периодичность такой процедуры - на усмотрение). Пароль задается только при запуске и собственно в скрипте его не нужно хранить.
0 |
Anonymous
6 Сентября, 2013
Я понял, что вы имели ввиду. Спасибо.
0 |
Anonymous
6 Сентября, 2013
Дмитрий, не подскажите, пароль сохранится, если я задам его админской учетке, а затем отключу?
0 |
Dmitry Evteev
6 Сентября, 2013
Разумеется сохранится.
0 |
Vlad Styran
9 Сентября, 2013
С другой стороны, всегда есть с чего начать внутренний пентест
0 |