Отримання списку облікових записів AD, створених за останні 24 години

Відділ інформаційної безпеки поставив завдання розробки найпростішої системи аудиту, яка повинна щодня вивантажувати статистику про облікові записи Active Directory, створених за останні 24 години, а також інформацію про те, хто створив ці облікові записи в домені.

зміст:

  • Powershell скрипт отримання списку недавно створених користувачів в Active Directory
  • Як дізнатися, хто створив обліковий запис в Active Directory

Powershell скрипт отримання списку недавно створених користувачів в Active Directory

Для отримання списку користувачів створених в Active Directory за останні 24 години, найпростіше скористатися Командлети PowerShell Get-ADUser.  Висновок командлет будемо фільтрувати по атрибуту користувача whencreated, в якому зберігається дата і час створення облікового запису. У мене вийде такий простенький PowerShell скрипт:

$ Lastday = ((Get-Date) .AddDays (-1))
$ Filename = Get-Date -Format yyyy.MM.dd
$ Exportcsv = "c: \ ps \ new_ad_users_" + $ filename + ".csv"
Get-ADUser -filter (whencreated -ge $ lastday) | Export-csv -path $ exportcsv

У цьому прикладі список облікових записів AD зберігається в файл з поточною датою в якості імені. За допомогою планувальника можна налаштувати щоденний запуску даного скрипта, в результаті чого в зазначеному каталозі будуть накопичуватися файли містять інформацію про дату створення тієї чи іншої облікового запису. У звіт можна додати будь-які інші атрибути користувача з Active Directory (див. Статтю про використання Get-ADUser).

Як дізнатися, хто створив обліковий запис в Active Directory

Крім факту створення облікового запису безпечники може бути цікава інформація про ім'я конкретного користувача, який завів у Active Directory певний аккаунт. Цю інформацію можна отримати з журналів безпеки контролерів домену Active Directory.

При закладі нового користувача в журналі безпеки контролера домену (тільки того DC, на якому створювалася обліковий запис) З'являється подія з кодом EvenId 4720 (На DC повинна бути включена політика аудиту Audit account management в політиці Default Domain Controller Policy).

В описі цієї події міститься рядок A user account was created, а потім вказано аккаунт, з-під якого була створена нова учетка користувача AD (виділено на скріншоті нижче).

Скрипт для вивантаження всіх подій створення акаунтів з журналу контролера домену за останні 24 години може виглядати наступним чином:

$ Time = (get-date) - (new-timespan -hour 24)
$ Filename = Get-Date -Format yyyy.MM.dd
$ Exportcsv = "c: \ ps \ ad_users_creators" + $ filename + ".csv"
Get-WinEvent -FilterHashtable @ LogName = "Security"; ID = 4720; StartTime = $ Time | Foreach
$ Event = [xml] $ _. ToXml ()
if ($ event)

$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ CreatorUser = $ event.Event.EventData.Data [4]. "# Text"
$ NewUser = $ event.Event.EventData.Data [0]. "# Text"
$ Dc = $ event.Event.System.computer
$ Dc + "|" + $ Time + "|" + $ NewUser + "|" + $ CreatorUser | out-file $ exportcsv -append

За аналогією зі статтею "Проста система аудиту видалення файлів і папок для Windows Server" можна налаштувати збереження інформації про знайдених події не в текстовий файл на кожному DC, а через MySQL .NET Connector для PowerShell єдину базу MySQL.