Войти

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


ejik_off
31-08-2020, 10:55
Доброе время суток!!!
Нужна помощь ваша помощь в написании скрипта.
Задача: есть файл с учетными записями, у которых в AD одинаковые пароли. Нужно этим пользователям отправить письмо с просьбой изменить пароль на уникальный и где-то сохранить что этому пользователю было отправлено сообщение допустим в эксель добавить имя уч.записи и указать цифру 1, если письмо было отправлено первый раз. 2 - если это уже второе уведомление и тд.
есть также у пользователей спец. учетки с повышенными привилегиями. Они отличаются префиксом. например есть пользователь Василий Пупкин, его учетка - vpupkin, и у него есть с правами локального админа для работы на серверах admsrv_vpupkin. Естественно пароли для этих учеток должны быть разные, но человеческий фактор никто не отменял. По этому требуется проверять файл и на подобные случаи.
Вот как выглядит файл
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]

}
}

}

}
Такой результат я получаю
Найдены УЗ с одинаковыми паролями:
admdcs_ddmitriev
ddmitriev
Найдены УЗ с одинаковыми паролями:
admsrv_ddmitriev
ddmitriev
Найдены УЗ с одинаковыми паролями:
admwks_ddmitriev
ddmitriev
Найдены УЗ с одинаковыми паролями:
admsrv_lpavlov
lpavlov
Найдены УЗ с одинаковыми паролями:
admwks_lpavlov
lpavlov
Найдены УЗ с одинаковыми паролями:
admwks_gsergeev
gsergeev
Найдены УЗ с одинаковыми паролями:
admsrv_gsergeev
gsergeev
Не получается обработать все уч.з сразу, т.е если их больше 2х, как например в случае с ddmitriev. У него 4 уч.з, и на всех один пароль, хотел сделать что бы скрипт обработал их за раз, и в одном письме указал все уч.з.
и второе, скрипт пропустил группу 5, где указаны уч.з admdcs_vtitov, admsrv_vtitov

Iska
31-08-2020, 20:29
Нужно этим пользователям отправить письмо с просьбой изменить пароль на уникальный и где-то сохранить что этому пользователю было отправлено сообщение допустим в эксель добавить имя уч.записи и указать цифру 1, если письмо было отправлено первый раз. 2 - если это уже второе уведомление и тд. »
Вообще-то, необходимо и достаточно программно установить флажок «Требовать смены пароля при следующем входе в систему» в свойствах учётной записи. И всё.

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

ejik_off
01-09-2020, 07:51
Вообще-то, необходимо и достаточно программно установить флажок «Требовать смены пароля при следующем входе в систему» в свойствах учётной записи. И всё.
Естественно, должны быть заданы требования на неповторяемость N новых паролей пользователя на уровне домена. »
Все требования по парольной политике установлены, но это ни как не препятствует установке одинаковых паролей для нескольких уч.з

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

ejik_off
01-09-2020, 12:53
Elven, Это и не только делается с помощь модуля https://github.com/MichaelGrafnetter/DSInternals

Elven
01-09-2020, 15:12
Я Вам про Фому, Вы мне про Ерёму... но да ладно. Сравнивать все равно можно так, как я уже описал выше, правда я не припомню чтобы пароли из АД можно было выдирать в пригодном для сравнения виде, но если таковая возможность у Вас имеется - велкам.
function matchinarray ($array) {
for ($i=0; $i -lt $array.count;$i++) {
for ($j=0; $j -lt $array.count;$j++) {
if (($array[$i].TipaPassword -eq $array[$j].TipaPassword) -and ($i -gt $j)) {
Write-Host "Nehoroshi chelovek!"
Write-Host $array[$i].Name $array[$j].Name
}
}
}
}

$users = @(Get-ADUser -Filter *)

matchinarray $users
з.ы. как оно сработает - хз, тестировал на сравнении фамилий, теперь у меня есть список однофамильцев :)

А ну и да, не понимаю почему учетки берутся из какого-то текстового файла, а не из АД напрямую.

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

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
Гость


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

Iska
01-09-2020, 23:23
но это ни как не препятствует установке одинаковых паролей для нескольких уч.з »
А этого никогда и не требовалось.

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

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

ejik_off
02-09-2020, 07:12
И явно не «все…»: чтобы не было подбора по радужным таблицам — включают блокировку учётных записей после нескольких неправильных попыток. »
С этим все понятно. Речь не идет о переборе, но если сильно хочется можно выгрузить базу ад и подобрать пароль офлайн.
А этого никогда и не требовалось. »
То есть если пользователи все будут использовать один пароль ничего страшного в этом нет?
НО! остается открытым вопрос откуда брать пароль. »
Зачем пароль?

Busla
02-09-2020, 11:49
Get-Content 'c:\temp\AccSamePass-t.txt' `
| Where-Object { $_ -notmatch ':$' } `
| Group-Object -Property {$_ -replace 'adm[^_]*_', ''} `
| ForEach-Object {
$user = Get-AdUser $_.Name -Property Mail
$badPasswordLogins = $_.Group -join "`n`r"
$body = "Привет, $($user.Name)! `n`r Смени пароли у учётных записей:`n`r$badPasswordLogins"
Send-MailMessage -To $user.Mail -Subject 'смена пароля' -Body $body
Add-Content -Path 'c:\temp\рассылка.log' -Value "$(Get-Date -Format s)`t$badPasswordLogins"
}

из лога сделаете выборку и получите количество писем

чтобы не было подбора по радужным таблицам — включают блокировку учётных записей после нескольких неправильных попыток »
лучше не пишите умные слова, смысла которых не понимаете - не так смешно будет

радужные таблицы хранят (в алгоритмической форме) сопоставление пароля и хэша (или другое сопоставление)
соответственно по ним не долбятся в систему с неудачными попытками

Iska
02-09-2020, 12:31
Busla, не могу с Вами согласиться, коллега: если совсем не писать — то кто сможет развенчать мои искренние заблуждения, кто скажет, что я не понимаю смысла? А теперь — вот :).

Спасибо за разъяснение.

То есть если пользователи все будут использовать один пароль ничего страшного в этом нет? »
Нет. Если пользователи не делятся этим фактом друг с другом.

ejik_off
02-09-2020, 13:03
Busla, Спасибо за скрипт!!!!
Нет. Если пользователи не делятся этим фактом друг с другом. »
с обычными пользователями не сильно критично, больше волнует когда у админов или сотрудников хелпдеска пароли одинаковые от рабочей уч.з и от привилегированной. Есть большой шанс что они где-нибудь засветят пароль от рабочей уч.з. Мысль я думаю понятна.

Iska
02-09-2020, 13:52
Мысль я думаю понятна. »
Да.




© OSzone.net 2001-2012