Аналитика журналов Azure: мониторинг успешных входов после повторяющихся сбоев входа

Я хотел бы использовать Azure Log Analytics для создания оповещения о возможных попытках перебора учетных записей моих пользователей. То есть я хотел бы получить уведомление от Azure (или, по крайней мере, иметь возможность вручную запустить сценарий для получения данных), когда учетная запись пользователя успешно аутентифицирована в O365 после ряда неудачных попыток.

Я знаю, как анализировать журналы, чтобы, например, получить количество неудачных попыток входа всех пользователей в течение определенного периода (см. Пример ниже):

SigninLogs
| where TimeGenerated between(datetime("2018-11-19 00:00:00") .. datetime("2018-11-19 23:59:59")) 
| where ResultType == "50074"
| summarize FailedSigninCount = count() by UserDisplayName 
| sort by FailedSigninCount desc

Но я не знаю, как написать следующее:

  • Пользователь создал 9 неудачных попыток входа (тип 50074) и создал успешную попытку входа.
  • В течение 60-секундного периода.

Любая помощь будет принята с благодарностью.


person hailnolly    schedule 04.01.2019    source источник
comment
Вы рассматривали возможность использования Центра безопасности Azure? Он многое сделает за вас.   -  person Sam Cogan    schedule 04.01.2019
comment
Да, у меня есть, но у моего работодателя нет на это лицензии   -  person hailnolly    schedule 04.01.2019
comment
Содержит ли сообщение о неудачном / успешном входе в SinginLogs информацию о пользователе (или у вас есть способ связать правильного пользователя с сообщением)? и что вы имеете в виду в течение 60-х годов?   -  person Ivan Yang    schedule 07.01.2019
comment
@IvanYang - да, сообщение об ошибке / успехе содержит информацию о пользователе (то есть имя), и я могу запросить, используя UserPrimaryName (то есть личность). Ссылка на 60 секунд - это произвольный промежуток времени между определенным количеством неудачных попыток, за которыми следует успешная попытка.   -  person hailnolly    schedule 07.01.2019


Ответы (1)


Посетите сообщество Azure Sentinel на GitHub и посмотрите, помогут ли там запросы. В частности, я добавил https://github.com/Azure/Azure-Sentinel/blob/master/Detections/SigninLogs/SigninBruteForce-AzurePortal.txt, который, я думаю, в большей или меньшей степени делает то, что вам нужно, - также представлен ниже. Надеюсь, это поможет.

// Evidence of Azure Portal brute force attack in SigninLogs:
// This query returns results if there are more than 5 authentication failures and a successful authentication 
// within a 20-minute window.
let failureCountThreshold = 5;
let successCountThreshold = 1;
let timeRange = ago(1d);
let authenticationWindow = 20m;
SigninLogs
| where TimeGenerated >= timeRange 
| extend OS = DeviceDetail.operatingSystem, Browser = DeviceDetail.browser
| extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails)
| extend State = tostring(LocationDetails.state), City = tostring(LocationDetails.city)
| where AppDisplayName contains "Azure Portal"
// Split out failure versus non-failure types
| extend FailureOrSuccess = iff(ResultType in ("0", "50125", "50140"), "Success", "Failure")
| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated), 
makeset(IPAddress), makeset(OS), makeset(Browser), makeset(City), makeset(ResultType),
FailureCount=countif(FailureOrSuccess=="Failure"),
SuccessCount = countif(FailureOrSuccess=="Success") 
by bin(TimeGenerated, authenticationWindow), UserDisplayName, UserPrincipalName, AppDisplayName
| where FailureCount>=failureCountThreshold and SuccessCount>=successCountThreshold
person Tim Burrell    schedule 03.04.2019