среда, 14 апреля 2010 г.

Бэкдор в active directory своими руками

Итак, мы все знаем про подлых пользователей c UID=0 в unix, которых может быть больше одного.

Посмотрим, как такое же (а на самом деле, даже более страшное) организовывается в инфраструктуре Windows. Разумеется, мы говорить будем не про локальные виндовые учётные записи, а про Active Directory, т.е. говорить будем об администраторе домена. Или, даже, хуже, об enterprise administrator.

Итак, истина номер один: у объектов в active directory есть атрибуты и права доступа.
Истина номер два: эти атрибуты можно менять.

Как легко понять, мы МОЖЕМ сделать учётную запись с фантастическими правами, к которой не будет доступа НИ У КОГО. Однако, он сможет логиниться, блокировать, разблокировать, менять свои атрибуты и атрибуты чужих людей.

В самом страшном случае, это будет пользователь с волшебным SID-*500, которого не позволяет удалить уже сама винда. (Для этого нужно переименовать, а на его место положить другого пользователя с ником Administrator и с полными правами).

Таким образом, мы получим формально чистенький беленький пушистенький домен, внутри которого живёт большой, жирный… м… даже не знаю кто. Ну, пусть он будет называться северным пушным зверем.

Шаги для выполнения:
1) Создайте учётную запись или переименуйте администратора. Назовите её очень… странно. Например, ExchangeLegacyReciver. В обычном эксчейнже есть ExchangeLegacyInterop, так что понять о чём тут речь будет очень и очень сложно.
2) Задайте ей соотвествующее имя. Типа, Exchange Legacy Connection Reciver. 
3) Задайте ей пароль, укажите «пароль никогда не истекает» и т.д.
4) Включите её в все нужные группы. Реально, для контроля над доменом достаточно вхождения в Remote Desktop Users (или другую группу, указанную в свойствах tcp-RDP) и Enterprise Administrator. Чем меньше

Дальше начинается магия:

1) Логинимся под этой учёткой.
2) Запускаем ads* (если не знаете, что там на месте звёздочки, вам это не нужно. Тем кто знает и понял о чём речь, просьба не отвечать на вопросы школьных хэккеров про пропущенную часть)
3) Ищем себя в нужном OU. Первым делом идём в свойства и меняем владельца на некую другую учётную запись с достаточными правами (чтобы, если ошибёмся, могли поменять или удалить)
4) Снимаем галку наследования, копируем атрибуты.
И… Ну вы поняли. Удаляем всё лишнее. Удаление SYSTEM из тех, кто имеет право, приведёт к странной ситуации: даже учётная запись не сможет изменить свои атрибуты через оснастки, однако, может их редактировать через ads*; добавляем себе полные права на себя.
5) Создайте в ou=Program data новый контейнер System
5) Переместите объект (правой кнопкой, move) в, например, Program Data. Это место никому и никогда НЕ видно. Т.е. ваш объект будет существовать «где-то», где его видно будет только через ads* или подобные утилиты. Альтернативно, переместите просто в корень домена.
6) Проверьте права после перемещения (их любят дописывать)
7) проделайте трюк с правами с контейнером. Это не позволит посторонним людям не только менять атрибуты или их читать, но и видеть сам факт существования.

Учтите, во время всего этого — одна ошибка — и вы больше не владелец самого себя без права восстановления.

Собственно, можно сказать, почти всё. Можете (проверив, что логин и т.д. хорошо), менять владельца пользователя на самого себя. Точка, цепочка замкнулась. Дальше только восстановление из бэкапа. Самое что смешное, другие пользователи с полными правами вас даже не будут видеть в active directory. Даже в ads*.

Дальше остаётся только секьюритизировать главное — это членство в группах (один неверный шаг — и вы труп, восстанавливать из бэкапа). 

Итак:

1) Переименовываем группу (через ads) в что-то своё. Например, Builtin Security Principial.
2) Создаём Enterprise Administrator. Включаем его в Builtin Security Principial.
3) Перемещаем Builtin Security Principial в program data\system
4) делаем ему аналогичную «магию» с правами.
5) PROFIT???

ВИДНО это будет. Увы. Спрятать до конца членство мне не удалось (хотя можно создать цепочку...) Однако, при попытке удалить вас из членов группы, будет появляться ошибка there is no such object on server.

При этом:

1) энтерпрайзнутые и доменные админы по-прежнему имеют право на существование. Группа есть, права её правильные, домен работает как положено (не проверял установку эксчейнжа, правда).
2) Есть учётная запись, которую НЕВОЗМОЖНО увидеть. Никак. Ни из ads* ни из чего-либо другого (можно увидеть странный контейнер, но не более).
3) Членство в группах у этой учётки не заметно.

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

P.S. Прошу прощения, писал сумбурно по мере поиска решения проблем. Завтра если будет время, подниму виртуалку с 2008, проверю это там в полном объёме.


(перепост с habrahabr.ru/blogs/infosecurity/90990/)
Отправить комментарий