Лучший способ отследить перебор имени пользователя Brute-Force / неудачное имя пользователя

9

У нас есть Windows Server, на котором есть приложение, которое использует учетные данные домена при входе в приложение. Во время недавнего тестирования пера тестировщики смогли использовать приложение, чтобы перечислить действительные имена пользователей домена на основе ответа приложения (это дало другой ответ для неверного имени пользователя и неверного пароля).

Приложение исправлено, поэтому оно не раскрывает эту информацию, но я также чувствую, что мы должны были обнаружить эту атаку, поскольку за короткий промежуток времени было сделано более 2000 000 попыток ввода неверного имени пользователя. Мы этого не видели, даже когда наши администраторы внимательно следили за Active Directory. Очевидно, что сбои только когда-либо обнаруживались в локальном журнале событий сервера, на котором было установлено приложение.

Мой вопрос: 1) Есть ли способ заставить Active Directory регистрировать эти неудачные запросы имени пользователя в центральном месте, чтобы мы могли заметить их всплеск?

2) Если нет, каков наилучший способ отслеживать и активно обнаруживать этот тип атаки в будущем (надеюсь, без необходимости покупать слишком много нового оборудования).

Спасибо за вашу помощь.

Doug
источник

Ответы:

11

Отличный вопрос

Перво-наперво - я считаю, что большинство «тестеров на проникновение» - это сценаристы. Моя предвзятость может быть не честной или точной, но я вставляю этот отказ от ответственности, чтобы, если вы обнаружите какой-либо цинизм в моем тоне, вы знаете, откуда он исходит. Я не говорю, что нет опытных пентестеров, но это моя широкая общность.

(Синяя команда на всю жизнь!)

Мой вопрос: 1) Есть ли способ заставить Active Directory регистрировать эти неудачные запросы имени пользователя в центральном месте, чтобы мы могли заметить их всплеск?

Вы не предоставили достаточно информации, чтобы кто-либо мог ответить на этот вопрос тщательно и с уверенностью. Вы сказали, что в вашем приложении обнаружена ошибка, позволяющая злоумышленникам перечислять учетные записи пользователей. Я пытаюсь понять, каким образом вы чувствуете, что AD должен выполнять ведение журнала для вашего приложения.

Очевидно, что сбои только когда-либо обнаруживались в локальном журнале событий сервера, на котором было установлено приложение.

Видимо сбои обнаружились в журнале событий на сервере? Или неудачи действительно появляются в журнале событий на сервере? Если это так, что именно сказали события? Кто их зарегистрировал? Ваше приложение? Или винда? Пойди выясни, и я смогу добавить дополнительные разъяснения к моему ответу.

Я собираюсь остановиться здесь на основе вашего предположения, что эти события должны были каким-то образом регистрироваться Active Directory ... что если ваши пентестеры на самом деле вообще не использовали изъян в вашем приложении, а вместо этого использовали очень известный недостаток в самом Kerberos для перечисления имен пользователей? Сам Kerberos содержит то, что я бы назвал недостатком проекта, в котором злоумышленник может предпринять тысячи и тысячи попыток «предварительной аутентификации» (то есть атаки методом «грубой силы»), и KDC будет реагировать по-разному в зависимости от того, существует учетная запись пользователя или нет. Это не специфичное для Active Directory поведение, но оно также применимо к MIT Kerberos, Heimdal и т. Д. KDC ответитKDC_ERR_PREAUTH_REQUIREDесли действительное имя пользователя было представлено без данных предварительной аутентификации, даже без попытки фактической аутентификации. Таким образом, вы можете перечислять имена пользователей из KDC. Но поскольку злоумышленнику (или инструменту, который использует злоумышленник, например KrbGuess - поскольку пентестеры в своих лучших проявлениях используют чужие инструменты), не нужно переходить к полной попытке аутентификации, ничего не регистрируется, потому что нет фактическая аутентификация была предпринята!

Теперь к вашему следующему вопросу:

2) Если нет, каков наилучший способ отслеживать и активно обнаруживать этот тип атаки в будущем (надеюсь, без необходимости покупать слишком много нового оборудования).

Пара вещей.

Во-первых, существуют платные продукты корпоративного уровня, предназначенные для обнаружения атак такого рода (среди многих других). Многие производители предлагают такие продукты, и рекомендации по продукту не относятся к теме Serverfault, но достаточно сказать, что они отсутствуют. там. Многие из этих продуктов работают, требуя от вас настройки зеркалирования портов между контроллерами домена и этими «сборщиками данных», чтобы они видели и анализировали буквально каждый пакет, который входит или выходит из контроллеров домена.

(Извините, это как бы относится к вашему предложению «не покупать слишком много нового».)

Еще одна вещь, которая может вам помочь, это запись в реестре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

Документировано здесь .

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

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

Но это может помочь, а может и не помочь, если не будет указано, откуда именно поступает запрос цунами Kerberos. Это возвращает нас к тем продуктам для обнаружения вторжений на предприятиях, о которых я упоминал ранее.

И не забывайте о пересылке событий Windows, которая позволяет вашим серверам пересылать события в централизованное место для анализа любым инструментом, который у вас есть.

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

Райан Райс
источник
Спасибо за ваш ответ. Я проверю в понедельник дважды, но я верю, что журналы событий являются стандартными событиями Windows для неудачного входа на локальный сервер (например, они будут эквивалентны неудачному входу через RDP с неверным именем пользователя). Это определенно ничего конкретного приложения. Я считаю, что для проверки подлинности Kerberos тестеры пера должны быть в нашей локальной интрасети. Они не были. Приложение общедоступно в Интернете со стандартной аутентификацией на основе форм, которая вызывает ОС под прикрытием.
Даг
0

Это интересный вопрос, на который я бы хотел услышать правильный ответ. Я натолкнулся на некоторую информацию, которая может оказаться полезной для Дуга, однако я чувствую, что она может быть немного неадекватной. Кто-то еще может дать расширенный ответ:

Войдите на сервер, на котором вы хотите сохранить данные аудита, запустите -> RSOP.MSC -> Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Политика аудита -> «Аудит событий входа в учетную запись» & » Аудит входа в систему событий »

Объяснение для «событий входа в систему» ​​гласит:

Аудит событий входа в аккаунт

Этот параметр безопасности определяет, проверяет ли ОС каждый раз, когда этот компьютер проверяет учетные данные учетной записи.

События входа в учетную запись генерируются всякий раз, когда компьютер проверяет учетные данные учетной записи, для которой он является доверенным. Члены домена и не присоединенные к домену машины являются полномочными для своих локальных учетных записей; все контроллеры домена являются полномочными для учетных записей в домене. Проверка учетных данных может поддерживать локальный вход в систему или, в случае учетной записи домена Active Directory на контроллере домена, может поддерживать вход на другой компьютер. Проверка учетных данных не имеет состояния, поэтому для событий входа в учетную запись нет соответствующего события выхода из системы.

Если этот параметр политики определен, администратор может указать, следует ли проверять только успехи, только неудачи, как успехи, так и неудачи, или вообще не проверять эти события (т.е. ни успехи, ни неудачи).

Объяснение для «событий входа в систему» ​​гласит:

Аудит событий входа

Этот параметр безопасности определяет, будет ли ОС проверять каждый экземпляр пользователя, пытающегося войти или выйти на этот компьютер.

События выхода из системы генерируются всякий раз, когда завершается сеанс входа в систему с учетной записью пользователя. Если этот параметр политики определен, администратор может указать, следует ли проверять только успехи, только неудачи, как успехи, так и неудачи, или вообще не проверять эти события (т.е. ни успехи, ни неудачи).

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

Если вас беспокоят аналогичные конфигурации, в которых ваши системы могут быть уязвимы, я бы порекомендовал изучить параметры STIG ( ссылка ), если они используются вместе со сканером SCAP, это может реально помочь выделить некоторые риски, которые могут быть связаны с вашей организацией. облицовка. STIG Viewer имеет тенденцию вызывать несколько ложных срабатываний, но если вы прочитаете специфику каждой проблемы, вы можете обнаружить, что она не является началом.

Sawta
источник
1
Я бы предложил MSFT или исходные данные, DISA делает предположения об окружающей среде, а не защищает хост как единое целое. Да, необходим надлежащий аудит. Я также ознакомился с рекомендациями по обеспечению безопасности документа Active Directory.
Джим Би
Отличный момент, Джим Б! Я не рассматривал этот аспект.
Савта