вторник, 14 августа 2018 г.

Сенсор в prtg для детекта брутфорса аккаунта/ов ActiveDirectory

#by me ;)

#анализ делаем на выборке из 2000 событий из security журнала.
#из этих 2000 отбираем те у кторых ID = 4768 (auth event) и если в поле message есть код отлупа 0x6
#то получаем сколько за минуту пришло подобных отказов. Если их больше чем ТРИ в минуту, то высока вероятность подбора (бывает и 20 в минуту)

$domaincontrollers = ("my-DC01","my-DC02", "my-DC03")
$script = { 
$rawevents = Get-WinEvent -LogName 'Security' -MaxEvents 2000
$events = $rawevents | where{$_.id -eq 4768} | where{$_.message -like '*Код результата:*0x6*'} | sort-object TimeCreated
if($events -eq $null){
 return 0}
$minutes = ($events[-1].TimeCreated - $events[0].TimeCreated).Minutes
return [float]$events.Count/$minutes
}

$maxcount = 0
foreach($domaincontroller in $domaincontrollers){
  $result = [float](Invoke-Command -Computername $($domaincontroller) -ScriptBlock $script)
  if($maxcount -lt $result){
   $maxcount = $result
  }
}

$prtg = '<?xml version="1.0" encoding="Windows-1252" ?> 
<prtg>'

$prtg+="
<result> 
   <channel>Bruteforce AD channel</channel>
   <unit>Custom</unit>
   <customUnit>per minute</customUnit> 
   <float>0</float>
   <value>"+$([int]$maxcount)+"</value> 
   <warning>0</warning>
   <showChart>1</showChart> 
   <showTable>1</showTable>
   <LimitMode>1</LimitMode>
   <LimitMaxError>3</LimitMaxError>
   <LimitErrorMsg>Bruteforce AD account? On average blocks $([int]$maxcount) per minute</LimitErrorMsg>
</result>
</prtg>"

$prtg

Комментариев нет:

Отправить комментарий