PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Аватара пользователя
ejik_off

PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение ejik_off »

Доброе время суток!!!

Нужна помощь ваша помощь в написании скрипта.

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

есть также у пользователей спец. учетки с повышенными привилегиями. Они отличаются префиксом. например есть пользователь Василий Пупкин, его учетка - vpupkin, и у него есть с правами локального админа для работы на серверах admsrv_vpupkin. Естественно пароли для этих учеток должны быть разные, но человеческий фактор никто не отменял. По этому требуется проверять файл и на подобные случаи.

Вот как выглядит файл


Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Group 1:
iivanov
ppetrov
ssidorov
ttimofeev
Group 2:
rsemenov
mmironov
Group 3:
admdcs_ddmitriev
admsrv_ddmitriev
admwks_ddmitriev
ddmitriev
Group 4:
admsrv_lpavlov
admwks_lpavlov
lpavlov
Group 5:
admdcs_vtitov
admsrv_vtitov
Group 6:
admwks_gsergeev
admsrv_gsergeev
gsergeev







Вот такой код я накидал



Код:

Код: Выделить всё

$filetxt = gc "C:\Temp\AccSamePass-t.txt"
for ($a=1;$a -le $filetxt.Count; $a++) {
    if($filetxt[$a] -like "Group*" -or $filetxt[$a] -like '') { continue }
    for ($i=$a+1; $i -le $filetxt.Count; $i++) {      
       if($filetxt[$i] -like "Group*" -or $filetxt[$i] -like '') { continue }
        if ($filetxt[$a].Contains($filetxt[$i])) {
                Write-host "Найдены УЗ с одинаковыми паролями:"
                $filetxt[$a]
                $filetxt[$i]
                }
        if ($filetxt[$a] -like "adm[a-z]_*") {
            $item = $filetxt[$a].Substring(2)
            if ($filetxt[$i].Contains($item)) {
                Write-host "Найдены УЗ с одинаковыми паролями_1:"
                $filetxt[$a]
                $filetxt[$i]
                }
        }
    }
}

Такой результат я получаю



Скрытый текст

[spoiler]Найдены УЗ с одинаковыми паролями:

admdcs_ddmitriev

ddmitriev

Найдены УЗ с одинаковыми паролями:

admsrv_ddmitriev

ddmitriev

Найдены УЗ с одинаковыми паролями:

admwks_ddmitriev

ddmitriev

Найдены УЗ с одинаковыми паролями:

admsrv_lpavlov

lpavlov

Найдены УЗ с одинаковыми паролями:

admwks_lpavlov

lpavlov

Найдены УЗ с одинаковыми паролями:

admwks_gsergeev

gsergeev

Найдены УЗ с одинаковыми паролями:

admsrv_gsergeev

gsergeev[/spoiler]




Не получается обработать все уч.з сразу, т.е если их больше 2х, как например в случае с ddmitriev. У него 4 уч.з, и на всех один пароль, хотел сделать что бы скрипт обработал их за раз, и в одном письме указал все уч.з.

и второе, скрипт пропустил группу 5, где указаны уч.з admdcs_vtitov, admsrv_vtitov
Аватара пользователя
Iska

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Iska »

Цитата ejik_off:



Нужно этим пользователям отправить письмо с просьбой изменить пароль на уникальный и где-то сохранить что этому пользователю было отправлено сообщение допустим в эксель добавить имя уч.записи и указать цифру 1, если письмо было отправлено первый раз. 2 - если это уже второе уведомление и тд.
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




Вообще-то, необходимо и достаточно программно установить флажок «Требовать смены пароля при следующем входе в систему» в свойствах учётной записи. И всё.



Естественно, должны быть заданы требования на неповторяемость N новых паролей пользователя на уровне домена.
Аватара пользователя
Busla

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Busla »

Цитата Iska:



Вообще-то, необходимо и достаточно программно установить флажок «Требовать смены пароля при следующем входе в систему» в свойствах учётной записи. И всё.

Естественно, должны быть заданы требования на неповторяемость N новых паролей пользователя на уровне домена.
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




Все требования по парольной политике установлены, но это ни как не препятствует установке одинаковых паролей для нескольких уч.з
Аватара пользователя
ejik_off

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение ejik_off »

Iska, я так понимаю проблема не с установкой одинаковых паролей для одной учетки (это действительно легко разруливается политиками), а одинаковыми паролями на разные учетки одного пользователя (например рабочая учетка, уетка с правами локального админа на компах домена, учетка с правами доменного админа и т.д.). К сожалению здесь мы ограничены человеческим фактором, насколько мне известно. МС любит замороченные политики, но не на столько чтобы позволять объединять учетки в своеобразный массив, каждый из членов которого не может иметь пароля, который уже используется у другого члена массива.

ejik_off, стесняюсь спросить, но всё же спрошу: как был выявлен факт использования одинаковых паролей? Если это был сигнал от безопасников с какого-то их хитрого софта (емнип работу назад кто-то из безопасников одного коллегу этим и напряг изрядно), то контроль за этим делом и стоит возложить на безопасников. В противном случае нужно будет рисовать какую-то функцию для сравнения элементов каждого с каждым, на входе давать массив из имен, на выходе, соответсвенно, true или false. Это, кмк, будет самым простым решением на posh, но даже за такой вариант браться не особенно хочется, если может быть вариант попроще.
Аватара пользователя
Elven

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Elven »

Iska, я так понимаю проблема не с установкой одинаковых паролей для одной учетки (это действительно легко разруливается политиками), а одинаковыми паролями на разные учетки одного пользователя (например рабочая учетка, уетка с правами локального админа на компах домена, учетка с правами доменного админа и т.д.). К сожалению здесь мы ограничены человеческим фактором, насколько мне известно. МС любит замороченные политики, но не на столько чтобы позволять объединять учетки в своеобразный массив, каждый из членов которого не может иметь пароля, который уже используется у другого члена массива.

ejik_off, стесняюсь спросить, но всё же спрошу: как был выявлен факт использования одинаковых паролей? Если это был сигнал от безопасников с какого-то их хитрого софта (емнип работу назад кто-то из безопасников одного коллегу этим и напряг изрядно), то контроль за этим делом и стоит возложить на безопасников. В противном случае нужно будет рисовать какую-то функцию для сравнения элементов каждого с каждым, на входе давать массив из имен, на выходе, соответсвенно, true или false. Это, кмк, будет самым простым решением на posh, но даже за такой вариант браться не особенно хочется, если может быть вариант попроще.
Аватара пользователя
Elven

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Elven »

Цитата Elven:



Я Вам про Фому, Вы мне про Ерёму...
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




Видимо Вы меня не поняли. DSInternals - это модуль PS с помощью которого можно проводить аудит паролей в ад. Что бы избежать использования шаблонных паролей (например: Сентябрь2020) по парольной политике такой пароль проходит, но с точки зрения безопасности он не подходит. Вот так выглядит отчет



Скрытый текст

[spoiler]Active Directory Password Quality Report

----------------------------------------



Passwords of these accounts are stored using reversible encryption:



LM hashes of passwords of these accounts are present:



These accounts have no password set:

DefaultAccount

Гость



Passwords of these accounts have been found in the dictionary:



Historical passwords of these accounts have been found in the dictionary:



These groups of accounts have the same passwords:

Group 1:

viktor

Администратор

Group 2:

iivanov

ppetrov

ssidorov

vpupkin



These computer accounts have default passwords:



Kerberos AES keys are missing from these accounts:



Kerberos pre-authentication is not required for these accounts:



Only DES encryption is allowed to be used with these accounts:



These administrative accounts are allowed to be delegated to a service:

krbtgt

viktor

Администратор



Passwords of these accounts will never expire:

DefaultAccount

iivanov

ppetrov

ssidorov

viktor

vpupkin

Гость



These accounts are not required to have a password:

DefaultAccount

Гость[/spoiler]




и уже с этим отчетом я дальше работаю. Поэтому я из файла беру пользователей. Тем пользователям, пароль которых был найден в словаре, отправляется уведомление о необходимости сменить пароль на более сложный. Теперь такое же уведомление нужно отправлять для тех пользователей у кого одинаковые пароли.
Аватара пользователя
ejik_off

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение ejik_off »

Цитата ejik_off:



но это ни как не препятствует установке одинаковых паролей для нескольких уч.з
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




А этого никогда и не требовалось.



И явно не «все…»: чтобы не было подбора по радужным таблицам — включают блокировку учётных записей после нескольких неправильных попыток.
Аватара пользователя
Iska

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Iska »

ejik_off, я то вас понял, а вот вы меня - явно нет. я знаю и за этот модуль, и как работает мимкатц, от которого вы хотите придумать затычку. Откуда вы будете учетки выгребать - дело ваше, точно так же как я брал их из АД в вышеприведенном примере, их можно цеплять из текстового файла, НО! остается открытым вопрос откуда брать пароль. Найдете - хорошо, переделать скрипт под свои нужды дело десяти минут.

dixi
Аватара пользователя
Elven

Re: PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу

Сообщение Elven »

Цитата Iska:



И явно не «все…»: чтобы не было подбора по радужным таблицам — включают блокировку учётных записей после нескольких неправильных попыток.
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




С этим все понятно. Речь не идет о переборе, но если сильно хочется можно выгрузить базу ад и подобрать пароль офлайн.


Цитата Iska:



А этого никогда и не требовалось.
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




То есть если пользователи все будут использовать один пароль ничего страшного в этом нет?


Цитата Elven:



НО! остается открытым вопрос откуда брать пароль.
PowerShell - [решено] Поиск уч.записей принадлежащих одному владельцу




Зачем пароль?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»