Могу ли я получить все пароли активной директории открытым текстом, используя обратимое шифрование?
РЕДАКТИРОВАТЬ: Кто-нибудь может на самом деле ответить на вопрос? Спасибо, мне не нужен контрольный журнал, я буду знать все пароли, и пользователи не смогут их изменить, и я буду продолжать это делать.
Это не для взлома!
Недавно мы мигрировали из старого и ржавого домена Linux/Samba в активный каталог. У нас был небольшой интерфейс для управления учетными записями. Он всегда сохранял пароли всех пользователей и всех учетных записей служб в открытом тексте в безопасном месте (конечно, многие из вас наверняка не будут думать об этом как о безопасном, но без реальных подвигов никто не сможет это прочитать) и отключил смену пароля на контроллер домена samba. Кроме того, ни один пользователь не может выбирать свои собственные пароли, мы создаем их с помощью pwgen. Мы не меняем их каждые 40 дней или около того, а только каждые 2 года, чтобы вознаграждать сотрудников за то, что они действительно изучили их, а НЕ записали.
Нам нужны пароли, например, для входа в учетные записи пользователей и изменения настроек, которые слишком сложны для групповых политик или помогают пользователям.
Это, безусловно, могут быть противоречивые политики, но я хочу продолжить их на AD. Теперь я сохраняю новые учетные записи и их сгенерированные PWGEN (pwgen создает красиво звучащие случайные слова с большим количеством гласных, согласных и цифр) вручную в старом текстовом файле, который автоматически поддерживали старые сценарии.
Как я могу вернуть эту функциональность обратно в AD?
Я вижу, что в учетных записях AD существует "обратимое шифрование", вероятно, для систем проверки подлинности с ответом на вызов, для которых требуется пароль в виде открытого текста, хранящийся на сервере.
Есть ли скрипт, который отображает все эти пароли? Это было бы прекрасно. (Опять же: я надеюсь, что мой округ Колумбия не будет скомпрометирован.)
Или я могу иметь плагин для пользователей и компьютеров AD, который получает уведомление о каждом новом пароле и сохраняет его в файл?
На клиентах, которые возможны с GINA-dlls, они могут получать уведомления о паролях и получать открытый текст.
13 ответов
Чтобы ответить на вопрос, прочитайте это: http://blog.teusink.net/2009/08/passwords-stored-using-reversible.html
В нижней части статьи описано, как получить сохраненный обратимый пароль. Не пробовал, поэтому не знаю точно, как это сделать, как описано, но это должно сработать.
Помимо этого, я согласен с остальными людьми, которые плачут волка на предложение использовать обратимое шифрование. Это просто не безопасно.
Мне кажется, что вы оказываете поддержку пользователям, входя в систему с их учетными записями - зная их пароли? Как вы сказали, это очень плохая идея по многим причинам.
Я знаю, что некоторым пользователям старой школы это нравится, они просто пожимают плечами и просят вас исправить это удаленно и дают вам свой пароль. Но просто скажи нет. Никто не должен знать их пароль, кроме них самих - основной принцип.
Большинство вещей можно исправить из другого пользовательского контекста, вашего собственного. Те, кто действительно не могут и должны сделать это, когда пользователь вошел в систему в интерактивном режиме, требуют, чтобы пользователь сделал это и оставался и наблюдал, как персонал исправляет вещи через учетную запись этого пользователя.
Удаленно есть RDP Shadow, Remote Help и аналогичные интерактивные решения, в которых пользователь находится под контролем, и никому не нужно знать его или ее пароль для решения некоторых проблем, связанных с рабочим столом. В случае с групповыми политиками это поведение в принципе не требуется, так как большинство вещей легко настраиваются администратором.
Если вы предоставляете другим людям доступ к учетным записям других людей - вы также теряете контрольный журнал и ответственность за действия, совершаемые пользователями в системе - которые могут легко выйти за пределы авторизованной группы администраторов.
То, что ты делаешь, действительно очень плохая идея. Если вы не хотите, чтобы пользователям приходилось управлять паролями, вы можете инвестировать в систему токенов запросов / ответов для AD, которая обойдется вам в минимальные деньги.
Я не был бы настолько уверен, что мой DC в безопасности. Если бы я был злоумышленником или тестировщиком пера, я все равно не пойду за вашим округом Колумбия. Я иду за вашими рабочими станциями и серверами. Основной вектор атаки:
- Обнаружение слабого имени пользователя / пароля в домене или какой-либо службе (скажем, в учетной записи на SQL Server) или уязвимость, которую я могу использовать, которая позволяет мне получить права администратора (исправлять ваши системы, ребята).
- Найдите систему, в которой эта учетная запись имеет права администратора.
- Дамп LSA Secrets, чтобы найти имя пользователя / пароль для всех учетных записей служб.
- Используйте CacheDump для сброса кэшированных имен пользователей и паролей.
- Посмотрите, есть ли у кого-нибудь из них права администратора.
- Повторите 1-5, пока я не получу учетную запись администратора домена.
- Используйте учетную запись администратора домена для доступа к контроллеру домена.
- Дамп SAM контроллера домена.
- Используйте радужные таблицы, чтобы взломать больше паролей, или перебор, если необходимо, в автономном режиме.
Если вы не все Vista / Windows Server 2008 / Windows 7, это основной шаблон атаки, используемый большинством пентестеров. Причина, по которой эти 3 ОС нарушают шаблон, заключается в том, что атака DLL-инъекцией на LSA Secrets не предназначена для работы с этими ОС.
Учитывая все вышесказанное, вы не должны использовать обратимое шифрование и вам следует отключить LM-хэши. Вы хотите хэш NTLM. И вы не хотите хранить эти пароли в открытом виде.
Честно говоря, я не думаю, что ваши аргументы о желании сделать это действительны. Как администратор я получаю большую дозу хиби-джиби от мысли узнать пароль пользователя. Это их личная территория, и вы просите их ОГРОМНО доверять вам. Несмотря на это, в случае утечки конфиденциальной информации у вас сразу возникнут подозрения, как если бы вы знали пароли пользователя. Отсутствие проверяемого контрольного журнала - это колоссальный красный флаг безопасности. Правило 1 - "защити себя", и если это означает необходимость принять какое-то неудобство, пусть будет так.
Я думаю, что есть альтернативные решения, которые будут выполнять то, что вы хотите, без необходимости заходить в такую крайность, как знание паролей. Вы смотрели на предпочтения групповой политики? Каковы ваши навыки сценариев? Использование методов грубой силы обычно является четким признаком того, что стандартный подход используется неоптимально, поэтому я думаю, что вам будет гораздо лучше отказаться от пересмотра и переосмысления того, что вы делаете.
Ответственность, регистрация и отслеживание.
Мы боролись с руководством в течение нескольких лет. Генеральный директор и президент годами отказывались менять свой пароль, и каждый, кто приходил и уходил за семь с лишним лет, знал свои пароли. Даже если вы "доверяете" всем, многим людям, которые больше не являются сотрудниками, очень небезопасно иметь доступ к мощным учетным записям. Не говоря уже о том, что все они знают, что другие знают пароли, и было бы безопасно их использовать.
Мы снова и снова проповедуем пользователям, чтобы они никогда не передавали свои пароли, даже нам. Это начало для предотвращения "социального взлома". Сколько ваших пользователей передадут свой пароль кому-то, кто звонит и говорит, что он один из новых ИТ-парней?
Если нам абсолютно необходимо быть в учетной записи пользователя, чтобы сделать что-то, мы должны войти в систему и покататься на дробовике, или мы изменим их пароль. Как только мы меняем их пароль, мы несем ответственность за их учетную запись, и они больше не несут ответственности, пока мы не дадим им новый пароль, а учетная запись будет помечена, что пользователь должен сменить пароль при следующем входе в систему. Это сохраняет логирование и отслеживание. Со всем плохим, незаконным и неэтичным, что пользователи могут делать в Интернете. Если они могут обвинить многих других, кто знает их пароли, это может вызвать много проблем.
Сейчас мы работаем над устранением всех учетных записей общих учетных записей, например, для общих компьютеров. Если у нас должен быть тот, у этой учетной записи есть очень ограниченные права, и нет доступа в интернет.
Есть причина, почему пароли так важны. Они предназначены не только для защиты ваших данных, они для защиты вас и ваших пользователей и т. Д. Не сложно найти примеры для мозгового штурма. Играйте разговоры в своей голове. "Они все знали мой пароль, и один из них вошел в мой компьютер, прочитал письмо от моей любовницы и сказал моей жене:" Существует много, много возможных соображений конфиденциальности помимо безопасности.
Брайан
PS очень стараюсь не спорить. Хотя я не ответил на вопрос, но сделал редакционную статью против выполнения того, что предлагается. Я бы также рекомендовал не произносить подобные вещи, цитата из вопроса - "РЕДАКТИРОВАТЬ: Кто-нибудь может ответить на вопрос? Спасибо, мне не нужен контрольный журнал, я буду знать все пароли, и пользователи не смогут их изменить, и я будет продолжать делать это. Это не для взлома!"
- Это избавит вас от работы системным администратором во многих компаниях.
- Такое отношение может также повлиять на любые будущие возможности трудоустройства для вас. Я бы немедленно исключил любого, кто подал заявку на работу администратора Sys в нашей компании, если бы я гуглил их и обнаружил, что они задали этот вопрос.
- Я очень стараюсь представить, какой сценарий потребуется, и поддержать это. Может быть, в офисе только на 3-4 человека. Я мог видеть, что это отношение преобладает в религиозном сценарии, но даже тогда никто не совершенен и не может ошибаться.
- Если это чрезмерно спорный или уничижительный, пожалуйста, не стесняйтесь редактировать или удалять PS
Я думаю, что вопросы аудита, подотчетности и общей безопасности были должным образом рассмотрены, поэтому я попробую другой ответ:)
Существует служба уведомления об изменении пароля, которая может быть установлена на всех контроллерах домена, которая будет безопасно пересылать все изменения пароля принимающей службе.
Это было разработано для Identity Integration Server (теперь Identity Lifecycle Manager) в качестве цели, но должна быть возможность написать свою собственную цель или даже использовать MIIS/MILM для получения пароля и перенаправления его через другой соединитель в вашу собственную систему.
Существует множество способов сделать это, которые я видел у людей, которые проникли на наши серверы. Самый популярный метод - сбросить хэши паролей в файл, используя что-то вроде pwdump4, и затем запустить полученные хеши через Rainbow Table. Существуют некоторые ограничения по длине паролей, которые усложняют этот подход, поэтому все наши административные пароли имеют длину не более 16 символов.
После того, как вы вложили деньги в хороший набор радужных столов (их можно найти за хорошие деньги во многих местах в Интернете, и если для вас это действительно бизнес, стоимость не должна быть проблемой), -декрипт процесс может быть сделан менее чем за 30 минут для большинства пользователей.
Мы сделали это один раз, чтобы понять, насколько легко угадывались пароли наших пользователей. Примерно 30% паролей были взломаны в течение 5 минут после начала простой атаки по словарю, и около 80% были взломаны с помощью самостоятельно сгенерированной таблицы Rainbow менее чем за день. Это было.... 3 года назад, так что все стало быстрее. Результаты были представлены высшему руководству, которое быстро согласилось усилить (ну, собственно, создать) политику паролей.
Вам нужно будет получить хэши (LM или NTLM) и выполнить атаку по ним. Любой человек с достаточно сложным паролем будет почти невозможно обнаружить. Не включайте "обратимое шифрование" - вам нужно изменить способ управления паролями.
Как уже говорили другие, ваша политика и практика в лучшем случае неортодоксальны. Ранее упомянутый Unlock Administrator выглядит как достойный компромисс (без каламбура). Ваша заявленная цель - знать ваши пароли пользователей, чтобы обеспечить поддержку в их профиле пользователя Windows. Хорошо. Когда ваши пользователи нуждаются в поддержке и должны быть где-то еще, попросите их заблокировать свою рабочую станцию. Затем с помощью Unlock Administrator вы можете разблокировать станцию и остаться в их профиле пользователя.
Вы теряете возможность подойти к любой рабочей станции, но вам больше не нужно знать их пароль. Это похоже на достойный компромисс между безопасностью и простотой поддержки.
Разблокировка Администратор может решить часть вашей проблемы без необходимости знать пароль.
У Microsoft есть свой продукт ILM, который может копировать пароли, возможно, в зарубежный магазин LDAP.
Получить L0phtcrack и запустить его против DC. Может занять ЧАСЫ, но должно быть в состоянии получить большинство паролей.
Я действительно наткнулся на это, потому что я искал то же самое, но мои мотивы для того, чтобы знать пароли пользователей, совсем другие.
Я переношу бывшее решение сетевых администраторов, использующее IIS для клиентского FTP-хостинга, недавно мы обнаружили, что наш IIS ftp был взломан и размещал шпионское ПО. Пароли пользователей не были задокументированы, просто сбросьте, если кто-то забыл, поэтому я перехожу к другому решению (FileZilla), которое не использует AD. Мне нужно заново создать все эти учетные записи AD с одинаковыми паролями (исключая скомпрометированные учетные записи), чтобы сделать перенос прозрачным для конечных пользователей. Поскольку для FileZilla нет утилиты миграции IIS, я надеюсь только взломать пароли пользователей.
Я открыт для любых предложений о том, как сделать это, не взламывая пароли пользователей.