В этой статье мы представим новый минималистичный инструмент для локальных атак повышения привилегий в системах 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
2) Теперь, чтобы запустить инструмент localbrute, просто выполните:
Import-Module .\localbrute.ps1
# Usage:
localbrute <username> <path-to-wordlist> [debug]
# Example:
localbrute Administrator .\rockyou.txt
Вот пример:
Учтите, что поиск пароля может занять много времени. Смотрим ниже..
Как это работает?
Инструмент просто перебирает предоставленный список слов (список паролей) построчно и пытается аутентифицироваться как указанная учетная запись пользователя локально в системе.
Он использует внутренние функции 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) инструмент запишет последний найденный пароль из заданного списка слов для данного имени пользователя. Это позволяет инструменту продолжить (возобновить) атаку после перезапуска инструмента.
В файле состояния также хранятся записи об уже взломанных учетных записях.
Вы можете включить режим отладки, чтобы увидеть, что именно делает инструмент. Вот пример:
Ограничения скорости
Что касается скорости, инструмент может выполнять около 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, чтобы не пропустить никаких новых дополнений!