В этой статье я познакомлю вас с интересным инструментом для локальных атак повышения привилегий в Windows. Инструмент называется localbrute.ps1 и представляет собой простую тулзу, написанную на PowerShel для брутфорса локальной учетной записи администратора Windows.
Еще по теме: Рабочие техники повышения привилегий в Windows
Инструмент не требует каких-либо сторонних модулей и мало весит, что делает его отличным дополнением к традиционным методам повышения привилегий, применимым к различным сценариям тестирования на проникновение.
Брутфорс учетной записи администратора Windows
Атака на локальные административные учетные записи, такие как встроенная учетная запись «Администратор» или любая другая учетная запись, входящая в локальную группу «Администраторы», может быть весьма интересным вектором атаки, главным образом из-за отсутствия политики блокировки учетных записей.
Мы можем попробовать столько попыток входа в систему, сколько захотим. Если удастся подобрать пароль, получим полный контроль над системой и сможем:
- Отключить любые средства защиты и безопасности в системе.
- Извлечь учетные данные.
- Создать необработанные сетевые пакеты и запускать эксплойты для атак на другие системы локальной сети..
- Получить доступ к защищенным областям системы, чтобы найти конфиденциальную информацию
Инструмент localbrute PowerShell выполняет брутфорс локально в самой целевой системе, поэтому его использование весьма специфично.
Этот инструмент может быть полезен в тех случаях, когда есть учетные данные пользователя с низким уровнем привилегий и когда есть возможность запускать команды — например, через сеанс RDP или через терминал.
Мы также можем использовать этот инструмент при тестировании какой-то ограниченной или изолированной среды — например, VDI, где есть доступ только на уровне пользователя.
Во всех этих случаях инструмент localbrute.ps1 может помочь повысить привилегии.
Особенности localbrute.ps1
localbrute.ps1 выполняет попытки входа в систему локально в системе, используя встроенные функции Windows. Вот основные особенности инструмента:
- Выполняет атаки входа в систему против любой выбранной локальной учетной записи, используя предоставленный список слов.
- Написан на чистом PowerShell — дополнительных модулей не требуется.
- Не является вредоносным — не обнаруживается антивирусами и EDR.
- Маленький размер.
В настоящее время в репозитории GitHub доступны две версии localbrute.ps1 — мини и обычная версия. Единственное отличие состоит в том, что обычная версия немного длиннее и имеет следующие дополнительные функции:
- Поддерживает возобновление перебора паролей.
- Находит уже взломанные учетные записи пользователей.
Давайте разбираться, как использовать и как работает тулза.
Использование LocalBrute.ps1
Первое, что надо сделать, это определить учетные записи администраторов в системе. Обычно к ним относятся:
- Члены локальной группы администраторов
- Сама учетная запись локального администратора
Вот как мы можем найти учетные записи локальной группы администраторов:
1 |
net localgroup administrators |
Теперь, запустите localbrute:
1 |
Import-Module .\localbrute.ps1 |
Использование:
1 |
localbrute [debug] |
Пример:
1 |
localbrute Administrator .\rockyou.txt |
Учтите, что перебор пароля может занять много времени.
Как это работает?
Инструмент просто перебирает методом брутфорс предоставленный список слов словаря и пытается аутентифицироваться. Он использует внутренние функции Windows DirectoryServices.AccountManagement в контексте локального компьютера. Фактически, это позволяет тестировать аутентификацию для любой локальной учетной записи.
Вот фрагмент кода PowerShell для локальной проверки учетных данных:
1 2 3 4 5 6 |
$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) |
Расширенная (более длинная) версия имеет некоторые дополнительные функции для повышения удобства использования при работе с большими списками слов. А именно, он хранит файл состояния (localbrute.state) в текущем рабочем каталоге, чтобы отслеживать прогресс.
После прерывания ( ^ C) тулза запишет последний найденный пароль из заданного списка слов для данного имени пользователя. Это позволяет продолжить (возобновить) атаку после перезапуска.
В файле состояния также хранятся записи об уже взломанных учетных записях.
Вы можете включить режим отладки, чтобы увидеть процесс перебора:
Скорость перебора паролей учетной записи администратора Windows
Скорость около 100-200 попыток входа в систему в секунду, в зависимости от производительности системы.
Конечно, это не быстро, но все же намного быстрее, чем другие подобные инструменты.
Скорость перебора:
Продолжительность работы | Количество попыток входа в систему |
---|---|
1 секунда | 100 – 200 |
1 минута | 6k – 12k |
1 час | 360k – 720k |
1 день | 8.6M – 17.3M |
Т.е. мы могли бы, например, перебрать весь список слов из популярного словаря rockyou.txt (14,3 млн записей) за 19,9–39,8 часов (1-2 дня). Это не так уж и плохо.
Параллельно запускаете localbrute
Параллельное запуск нескольких экземпляров сценария localbrute не увеличит скорость перебора. Не запускайте сценарий параллельно, потому, что только один процесс может вызывать ValidateCredentials ().
Заключение
Сценарий localbrute.ps1 представляет собой простой инструмент для брутфорса локальной учетной записи администратора Windows.
Из-за отсутствия политики блокировки учетных записей для локальных учетных записей мы можем использовать его для проверки надежности пароля локально привилегированных учетных записей и обнаружения учетных записей, настроенных со слабыми паролями.
Еще по теме: Поиск учетных записей и служб в сетях Windows
у меня после комманды Import-Module .\localbrute.ps1 пишет:
Import-Module : Указанный модуль «.\localbrute.ps1» не был загружен, так как ни в одном из каталогов модулей не был обнаружен действительный файл модуля.
строка:1 знак:1
+ Import-Module .\localbrute.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (.\localbrute.ps1:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
что делать?
Проверь, что файл находится в том же каталоге, в котором запускаешь команду, и убедись в правильности указания имени файла и расширения. Если файл находится в другом каталоге, укажи полный путь к файлу в команде Import-Module.