Brute Force атака локального администратора Windows

Brute Force атака локального администратора Windows

В этой статье мы представим новый минималистичный инструмент для локальных атак повышения привилегий в системах Microsoft Windows. Инструмент называется localbrute.ps1 и представляет собой простой инструмент грубой силы для локальной учетной записи Windows, написанный на чистом PowerShell. Он не требует каких-либо сторонних модулей и очень мал по размеру, что делает его жизнеспособным дополнением к традиционным атакам повышения привилегий, применимым к различным сценариям тестирования на проникновение. 

Зачем атаковать локальные учетные записи Windows?

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

Мы можем буквально попробовать столько попыток входа в систему, сколько захотим.

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

      • Отключите любые средства защиты и безопасности в системе
      • Извлечь учетные данные в виде открытого текста из памяти и других мест (файлы, реестр и т. д.)
      • Создавайте необработанные сетевые пакеты и запускайте эксплойты для атак на другие системы в сети.
      • Получите доступ к защищенным областям системы, чтобы найти конфиденциальную информацию и многое другое.

Все это может помочь нам продвинуться дальше в инфраструктуру и продемонстрировать влияние на клиента.

В атаке на локальные учетные записи Windows нет ничего нового, но здесь мы НЕ стремимся делать это удаленно, используя типичные инструменты тестирования на проникновение, такие как Metasploit smb_login scanner, Nmap smb-brute script, CrackMapExec или любые другие аналогичные инструменты.

Представленный здесь инструмент localbrute PowerShell выполняет брутфорс локально в самой целевой системе, поэтому его использование весьма специфично.

Куда подходит этот инструмент?

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

Мы также могли бы использовать этот инструмент в случае, когда мы тестируем какую-то ограниченную или изолированную среду — например, среда VDI, где нам был предоставлен доступ только на уровне пользователя, и теперь мы должны проводить тестирование оттуда с ограниченным доступом к нашим любимым утилитам для тестирования на проникновение.

Другой вариант использования — это имитация недовольного сотрудника. Имея доступ к образцу рабочей станции сотрудника, возможно, усиленному и защищенному различными мерами безопасности. Можем ли мы что-то сделать и нанести потенциальный ущерб организации?

Во всех этих случаях инструмент localbrute.ps1 может помочь нам повысить наши привилегии.

Особенности инструмента

Вкратце, инструмент localbrute.ps1 выполняет автоматические попытки входа в систему локально в системе, используя встроенные функции Windows. Вот основные особенности инструмента:

      • Выполняет атаки входа в систему против любой выбранной локальной учетной записи, используя предоставленный список слов
      • Маленький и минималистичный — легко набирается вручную (на клавиатуре)
      • Написано на чистом PowerShell — дополнительных модулей не требуется
      • Не является вредоносным — не обнаруживается решениями AV / EDR

В настоящее время в репозитории GitHub доступны две версии инструмента localbrute.ps1 — экстра-мини и обычная версия. Единственное отличие состоит в том, что обычная версия немного длиннее и имеет следующие дополнительные функции:

      • Поддерживает возобновление, если его прервали
      • Обнаруживает уже взломанные учетные записи пользователей

В следующих разделах подробно описано, как использовать инструмент и как он работает.

Использование инструмента LocalBrute.ps1

1) Первое, что нам нужно сделать, это определить учетные записи администраторов в системе. К ним обычно относятся:

      • Члены локальной группы администраторов
      • Сама учетная запись локального администратора

Вот как мы можем найти членов локальной группы администраторов:

net localgroup administrators

List of local Administrator group members

2) Теперь, чтобы запустить инструмент localbrute, просто выполните:

Import-Module .\localbrute.ps1

# Usage:

localbrute <username> <path-to-wordlist> [debug]

# Example:

localbrute Administrator .\rockyou.txt

Вот пример:

Local account login bruteforce with loginbrute.ps1

Учтите, что поиск пароля может занять много времени. Смотрим ниже..

Как это работает?

Инструмент просто перебирает предоставленный список слов (список паролей) построчно и пытается аутентифицироваться как указанная учетная запись пользователя локально в системе.

Он использует внутренние функции Windows DirectoryServices.AccountManagement в контексте локального компьютера. Фактически, это позволяет нам тестировать аутентификацию для любой локальной учетной записи.

Вот фрагмент автономного кода PowerShell для локальной проверки одной пары учетных данных:

$u = 'Administrator'

$p = 'Pa$$w0rd!'

Add-Type -AssemblyName System.DirectoryServices.AccountManagement

$t = [DirectoryServices.AccountManagement.ContextType]::Machine

$a = [DirectoryServices.AccountManagement.PrincipalContext]::new($t)

$a.ValidateCredentials($u,$p)

Используя немного сценариев PowerShell, мы просто обернули этот код в цикл, и именно так работает инструмент localbrute.

Расширенная (более длинная) версия имеет некоторые дополнительные функции для повышения удобства использования при работе с большими списками слов. А именно, он хранит файл состояния (localbrute.state) в текущем рабочем каталоге, чтобы отслеживать прогресс.

После прерывания (^ C) инструмент запишет последний найденный пароль из заданного списка слов для данного имени пользователя. Это позволяет инструменту продолжить (возобновить) атаку после перезапуска инструмента.

В файле состояния также хранятся записи об уже взломанных учетных записях.

Вы можете включить режим отладки, чтобы увидеть, что именно делает инструмент. Вот пример:

Local account login bruteforce with loginbrute.ps1 in debug mode

Ограничения скорости

Что касается скорости, инструмент может выполнять около 100-200 попыток входа в систему в секунду, в зависимости от производительности системы.

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

Вот лучший обзор скорости атаки в зависимости от продолжительности выполнения:

Runtime duration Number of login attempts
1 second 100 – 200
1 minute 6k – 12k
1 hour 360k – 720k
1 day 8.6M – 17.3M

 

Это означает, что мы могли бы, например, обработать весь список слов rockyou.txt (14,3 млн записей) за 19,9–39,8 часов (1-2 дня). Это не так уж и плохо, и в описанных выше сценариях определенно реалистично проводить атаку методом грубой силы в течение длительного периода времени.

Обратите внимание, что если включен режим отладки, скорость снижается примерно на 20-30%.

 Запускаете параллельно localbrute?

ВНИМАНИЕ: параллельный запуск нескольких экземпляров сценария localbrute НЕ увеличит скорость. Фактически, очень скоро это приведет к следующему исключению:

Исключение, вызывающее «ValidateCredentials» с аргументом (ами) «2»: «Множественные подключения к серверу или общему ресурсу одним и тем же пользователем с использованием более одного имени пользователя не разрешены. Отключите все предыдущие подключения к серверу или общему ресурсу и попробуй снова.

Итак, НЕ запускайте сценарий параллельно, потому что в любой момент времени только один экземпляр может вызывать системный метод ValidateCredentials ().

Вывод

Представленный сценарий localbrute.ps1 представляет собой простой инструмент грубой силы при входе в систему, который может предложить дополнительный метод атак повышения привилегий в системах Windows.

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

Благодаря своему компактному размеру, он может пригодиться во время различных тестов на проникновение и наступательных симуляций, так же, как и другие минималистичные инструменты, выпущенные ранее:

Надеюсь, вы найдете это иногда полезным!

Если вам нравятся наши инструменты и вы хотите большего, пожалуйста, подпишитесь на наш список рассылки и подпишитесь на нас в Twitter, Facebook или Github, чтобы не пропустить никаких новых дополнений!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 1 Average: 1]

Leave a reply:

Your email address will not be published.