рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдбреЛрдореЗрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдХрд╛рдо рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╡рд╛рдпрд░рд╕ рд╕реЗ рд╕рдВрдХреНрд░рдорд┐рдд рдПрдХ рдкреАрд╕реА рд╣реИ - рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЧрддрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред Windows 2008 R2 рдкрд░ PowerShell 2 рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ Get-WinEvent cmdlet рд╣реИ рдЬреЛ рдЖрдкрдХреЛ 1-2 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реЗ рдбреЛрдореЗрди рдореЗрдВ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдиреЛрдЯ: рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ PowerShell> = 2.0 рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИрдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВред
рд╣рд╛рдВ, рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рд╕реБрд░рдХреНрд╖рд╛ рдСрдбрд┐рдЯ рдХреЗ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдирд┐рдореНрди рдСрдбрд┐рдЯ рдЙрдкрд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП:
рдСрдбрд┐рдЯ рд╢реНрд░реЗрдгреА | рдСрдбрд┐рдЯ рдЙрдкрд╢реНрд░реЗрдгреА | рдСрдбрд┐рдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ | рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдШрдЯрдирд╛ |
---|
рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рд╛ рдЦрд╛рддрд╛ рд▓реЙрдЧрдСрди рдИрд╡реЗрдВрдЯ | рдХреЗрд░реНрдмрд░реЛрд╕ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд┐рд╕ | рдЕрд╕рдлрд▓рддрд╛ | 4771 Kerberos рдкреВрд░реНрд╡-рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдлрд▓ред |
рдСрдбрд┐рдЯ рд▓реЛрдЧрди рдЗрд╡реЗрдВрдЯреНрд╕ (рдЗрди / рдЖрдЙрдЯ) | рд▓реЛрдЧрди (рд▓реЛрдЧрди рдСрдбрд┐рдЯ) | рдЕрд╕рдлрд▓рддрд╛ | 4625 рдПрдХ рдЦрд╛рддрд╛ рд▓реЙрдЧ рдСрди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ред |
рдСрдбрд┐рдЯ рд▓реЛрдЧрди рдЗрд╡реЗрдВрдЯреНрд╕ (рдЗрди / рдЖрдЙрдЯ) | рдЦрд╛рддрд╛ рд▓реЙрдХрдЖрдЙрдЯ | рд╕рдлрд▓рддрд╛ | 4740 рдЦрд╛рддрд╛ рдмрдВрдж |
рд▓реЙрдХ рд╕реЛрд░реНрд╕ рд╕рд░реНрдЪ рдПрд▓рдЧреЛрд░рд┐рджрдо
- рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдирд┐рдпрдВрддреНрд░рдХ рдкреАрдбреАрд╕реА рдПрдореБрд▓реЗрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ
- рдЯрд╛рд░рдЧреЗрдЯрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ PDC рдПрдореНрдпреВрд▓реЗрдЯрд░ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдб 4740 рдХреЗ рд╕рд╛рде рдИрд╡реЗрдВрдЯ рдвреВрдВрдвреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
- рдПрдХ рд╣реА рдШрдЯрдирд╛ рдХреЗ "TargetDomainName" рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдЙрд╕ рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдирд╛рдо рдвреВрдВрдвреЗрдВ, рдЬрд┐рд╕рдиреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд╕реЗрд╡рд╛ рджреА рдереА
- рдХреЛрдб 4625 (рдЕрд╕рдлрд▓ NTLM рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдпрд╛ 4771 (рдЕрд╕рдлрд▓ kerberos рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдХреЛрдб рдХреЗ рд╕рд╛рде рдИрд╡реЗрдВрдЯ рдЦреЛрдЬреЗрдВ рдЙрд╕ рд╕реБрд░рдХреНрд╖рд╛ рд▓реЙрдЧ рдореЗрдВ рдЬреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд╕реЗрд╡рд╛ рджреЗрддрд╛ рд╣реИ
- рдорд┐рд▓реА рдШрдЯрдирд╛ рд╕реЗ "IpAddress" рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ - рдЙрд╕ рдкреАрд╕реА рдХрд╛ рдкрддрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдпреЗ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдБ рдЬрд▓реНрджреА рд╕реЗ рдЙрди рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреА, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддреЗрдЬрд╝ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЧрдВрддрд╡реНрдп рдкреАрд╕реА рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред
PowerShell Cmdlets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
- Get-ADDomainController - рдПрдХ рдкреАрдбреАрд╕реА рдПрдореБрд▓реЗрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдорд╛рд▓рд┐рдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- Get-WinEvent - рдПрдХ "рдЬрд╛рджреВ" cmdlet, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рд╕рдВрднрд╡ рд╣реЛ рдЧрдИ
Get-WinEvent рдХрд╛ рдЬрд╛рджреВ рдХреНрдпрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЕрдВрдд рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ -MaxEvents рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреА рдШрдЯрдирд╛ рдпрд╛ рдХреБрдЫ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ -FilterHashtable, рдЬреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрдЪ рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХреАред
рдЗрдирдкреБрдЯ рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╛ рдЕрдВрддрд┐рдо рдЕрд╡рд░реБрджреНрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ - 1)ред
param ( $User, $Count = 1 ) $result = New-Object system.Data.DataTable "Locks" $col1 = New-Object system.Data.DataColumn Username,([string]) $col2 = New-Object system.Data.DataColumn DCFrom,([string]) $col3 = New-Object system.Data.DataColumn LockTime,([string]) $col4 = New-Object system.Data.DataColumn eventID,([string]) $col5 = New-Object system.Data.DataColumn SourceHost,([string]) $col6 = New-Object system.Data.DataColumn LogonType,([string]) $col7 = New-Object system.Data.DataColumn LogonProcessName,([string]) $col8 = New-Object system.Data.DataColumn FalureTime,([string]) $result.columns.add($col1) $result.columns.add($col2) $result.columns.add($col3) $result.columns.add($col4) $result.columns.add($col5) $result.columns.add($col6) $result.columns.add($col7) $result.columns.add($col8) $PDC = [string](Get-ADDomainController -Discover -Service PrimaryDC).Hostname $FilterHash = @{} $FilterHash.LogName = "Security" $FilterHash.ID = "4740" if ($User) { $FilterHash.data =$User $Count = 1 } $FilterHash2 = @{} $FilterHash2.LogName = "Security" $FilterHash2.ID = @("4625", "4771") Get-WinEvent -Computername $PDC -FilterHashtable $FilterHash -MaxEvents $Count | foreach { $Row = $result.NewRow() $Username = ([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq тАЬTargetUserNameтАЭ} | %{$_."#text"} $DCFrom = ([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq тАЬTargetDomainNameтАЭ} | %{$_."#text"} $LockTime = $_.TimeCreated $FilterHash2.data = $username Get-WinEvent -Computername $dcfrom -FilterHashtable $FilterHash2 -MaxEvents 3 | foreach { $Row = $result.NewRow() $Row.Username = $Username $Row.DCFrom = $DCFrom $Row.LockTime = $LockTime $Row.eventID = $_.ID $Row.SourceHost = ([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq тАЬIpAddressтАЭ} | %{$_."#text"} $Row.LogonType = ([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq тАЬLogonTypeтАЭ} | %{$_."#text"} switch ($Row.LogonType) { "2" {$Row.LogonType = "Interactive"} "3" {$Row.LogonType = "Network"} "4" {$Row.LogonType = "Batch"} "5" {$Row.LogonType = "Service"} "7" {$Row.LogonType = "Unlock"} "8" {$Row.LogonType = "NetworkCleartext"} "9" {$Row.LogonType = "NewCredentials"} "10" {$Row.LogonType = "RemoteInteractive"} "11" {$Row.LogonType = "CachedInteractive"} } $Row.LogonProcessName = ([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq тАЬLogonProcessNameтАЭ} | %{$_."#text"} $Row.FalureTime = $_.TimeCreated $result.Rows.Add($Row) } } $result | Format-Table -AutoSize
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
PS> Find-Locker.ps1 -User iiinanov PS> Find-Locker.ps1 -Count 10
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреА.рдПрд╕.
рд╣рд╛рдВ, рдЙрддреНрдХреГрд╖реНрдЯ LockoutStatus.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде
рдЦрд╛рддрд╛ рд▓реЙрдХрдЖрдЙрдЯ рдФрд░ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рднреА рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдорддрджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ LockoutStatus.exe рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рдЙрдирдХреЗ рдкрд╛рд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ)ред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдирдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ Google рдбреНрд░рд╛рдЗрд╡:
Find-Locker.ps1 рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ