Invoke-TheHash
Описание Invoke-TheHash
Invoke-TheHash содержит функции PowerShell для выполнения pass the hash (передача хеша) в WMI и SMB задачи.
Технология pass the hash (передача хеша) позволяет проходить аутентификацию не имя пароля в виде простого текста, а имея только его хеш. Для этого программа запускает процесс с поддельной идентификацией, затем заменяет фальшивую информацию (NTLM хеш фальшивого пароля) на реальную информацию (NTLM хеш реального пароля).
WMI и SMB подключения доступны через .NET TCPClient.
Аутентификация выполняется передачей NTLM хеша в протокол аутентификации NTLMv2. Привилегии локального администратора на клиентской стороне не требуются.
Домашняя страница: https://github.com/Kevin-Robertson/Invoke-TheHash
Автор: Kevin Robertson
Лицензия: BSD-3-Clause
Справка по Invoke-TheHash
Invoke-TheHash включает в себя 5 функций:
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Справка по Invoke-WMIExec
Функция выполнения команд через WMI.
Использование:
Invoke-WMIExec -Target ЦЕЛЬ -Domain ДОМЕН -Username ПОЛЬЗОВАТЕЛЬ -Hash ХЕШ -Command "КОМАНДА" -verbose
Параметры:
-Target — Имя хоста или IP адрес цели.
-Username — Имя пользователя для использования в аутентификации.
-Domain — Домен для использования в аутентификации. Этот параметр не нужен с локальными аккаунтами или когда используется @domain после имени пользователя.
-Hash — NTLM хеш пароля для аутентификации. Эта функция примет как LM:NTLM, так и NTLM формат.
-Command — Команда для выполнения на цели. Если команда не указана, то функция просто проверит, имеет ли пользователь и хеш доступ к WMI на целевой системе.
-Sleep — По умолчанию = 10 миллисекунд: Устанавливает значение функции Start-Sleep в миллисекундах.
Справка по Invoke-SMBExec
Функция выполнения команд через SMB (PsExec) поддерживающая SMB1, SMB2.1, с входом или без по SMB.
Использование:
Invoke-SMBExec -Target ЦЕЛЬ -Domain ДОМЕН -Username ПОЛЬЗОВАТЕЛЬ -Hash ХЕШ -Command "КОМАНДА" -verbose
Параметры:
-Target — Имя хоста или IP адрес цели.
-Username — Имя пользователя для использования в аутентификации.
-Domain — Домен для использования в аутентификации. Этот параметр не нужен с локальными аккаунтами или когда используется @domain после имени пользователя.
-Hash — NTLM хеш пароля для аутентификации. Эта функция примет как LM:NTLM, так и NTLM формат.
-Command — Команда для выполнения на цели. Если команда не указана, то функция просто проверит, имеет ли пользователь и хеш доступ к SCM на целевой системе.
-CommandCOMSPEC - По умолчанию = enabled: Добавлять %COMSPEC% /C к Команде.
-Service — По умолчанию = 20 случайных символов: Имя службы для создания или удаления на цели
-Sleep — По умолчанию = 150 миллисекунд: Устанавливает значение функции Start-Sleep в миллисекундах.
-Version — По умолчанию = Auto: (Auto,1,2.1) Принудительно указывает версию SMB. Поведением по умолчанию является выполнить переговоры о версиии SMB и использовать SMB2.1 если она поддерживается целью.
Справка по Invoke-SMBEnum
Invoke-SMBEnum выполняет перечисление пользователей, групп, сетевых сессий и совместных ресурсов (принтеров и сетевых папок) по SMB2.1 с или без входа по SMB.
Использование:
Invoke-SMBEnum -Target ЦЕЛЬ -Domain ДОМЕН -Username ПОЛЬЗОВАТЕЛЬ -Hash ХЕШ -verbose
Параметры:
-Target — Имя хоста или IP адрес цели.
-Username — Имя пользователя для использования в аутентификации.
-Domain — Домен для использования в аутентификации. Этот параметр не нужен с локальными аккаунтами или когда используется @domain после имени пользователя.
-Hash — NTLM хеш пароля для аутентификации. Эта функция примет как LM:NTLM, так и NTLM формат.
-Action - (All,Group,NetSession,Share,User) По умолчанию = Share: Какое действие по перечислению выполнить.
-Group — По умолчанию = Administrators: Group to enumerate.
-Sleep — По умолчанию = 150 миллисекунд: Устанавливает значение функции Start-Sleep в миллисекундах.
-Version — По умолчанию = Auto: (Auto,1,2.1) Принудительно указывает версию SMB. Поведением по умолчанию является выполнить переговоры о версиии SMB и использовать SMB2.1 если она поддерживается целью. Обратите внимание, что только проверка входа работает с SMB1.
Справка по Invoke-SMBClient
Функция клиента SMB поддерживающая вход по SMB2.1 и SMB. Эта функция в первую очередь обеспечивает функции работы с файлами на совместно используемых папках по SMB протоколу для работы с хешами, которые не имеют привилегии удалённого выполнения команд. Эта функция может также использоваться для доставки полезной нагрузки для использования с Invoke-WMIExec и Invoke-SMBExec. Обратите внимание, что Invoke-SMBClient встроен в .NET TCPClient и не использует клиент Windows SMB. Invoke-SMBClient намного медленнее, чем клиент от Windows.
Использование:
Invoke-SMBClient -Domain ДОМЕН -Username ПОЛЬЗОВАТЕЛЬ -Hash ХЕШ -Action ДЕЙСТВИЕ -Source \\СЕРВЕР\ПАПКА -Destination ПАПКА -verbose
Параметры:
-Username — Имя пользователя для использования в аутентификации.
-Domain — Домен для использования в аутентификации. Этот параметр не нужен с локальными аккаунтами или когда используется @domain после имени пользователя.
-Hash — NTLM хеш пароля для аутентификации. Эта функция примет как LM:NTLM, так и NTLM формат.
-Action — По умолчанию = List: (List/Recurse/Delete/Get/Put) Действие для выполнения.
List: Выводит список содержимого директории.
Recurse: Выводит список содержимого директории и всех поддиректорий.
Delete: Удаляет файл.
Get: Загружает файл.
Put: Выгружает файл и устанавливает метки времени создания, доступа и последней записи для соответствия исходного файлу.
-Source
List и Recurse: UNC путь к директории.
Delete: UNC путь к файлу.
Get: UNC путь к файлу.
Put: Файл для выгрузки. Если полный путь не указан, то файл должен быть в текущей директории. Когда используется переключатель 'Modify', 'Source' должен быть массивом байтов.
-Destination
List и Recurse: Не используется.
Delete: Не используется.
Get: Если используется, значение будет новым именем загруженного файла. Если полный путь не указан, то файл будет создан в текущей директории.
Put: UNC путь для выгружаемого файла. Имя файла должно быть указано.
-Modify
List и Recurse: Эта функция выведет объект состоящий из содержимого каталога.
Delete: Не используется.
Get: Эта функция выведет массив байт загруженного файла вместо записи файла на диск. Рекомендуется использовать это только с небольшими файлами и отправлять вывод в переменную.
Put: Выгрузить массив байт в новый файл.
-NoProgress — Не выводить бар выгрузки и загрузки.
-Sleep — По умолчанию = 100 миллисекунд: Устанавливает значение функции Start-Sleep в миллисекундах.
-Version — По умолчанию = Auto: (Auto,1,2.1) Принудительно устанавливает версию SMB. Поведением по умолчанию является выполнить переговоры о версиии SMB и использовать SMB2.1 если она поддерживается целью. Обратите внимание, что только проверка входа работает с SMB1.
Справка по Invoke-TheHash
Функция для запуска функций Invoke-TheHash в отношении множества целей.
Использование:
Invoke-TheHash -Type ТИП -Target СЕТЬ -TargetExclude ИСКЛЮЧЕНИЕ -Username ПОЛЬЗОВАТЕЛЬ -Hash ХЕШ
Параметры:
-Type — Установить желаемую функцию Invoke-TheHash. Установить на SMBClient, SMBEnum, SMBExec или WMIExec.
-Target — Список имён хостов, IP адресов, CIDR нотация или диапазоны IP в качестве целей.
-TargetExclude — Список имён хостов, IP адресов, CIDR нотация или диапазоны IP для исключения из списка целей.
-PortCheckDisable — (Переключатель) Отключить проверку портов WMI или SMB. Поскольку эта функция ещё не сделана многопоточной проверка портов нужна для ускорения работы этой функции путём проверки на открытый порт WMI или SMB перед попыткой полного синхронного TCPClient соединения.
-PortCheckTimeout — По умолчанию = 100: Устанавливает таймаут ответа в милисекундах для WMI или SMB проверки портов.
-Username — Имя пользователя для использования в аутентификации.
-Domain — Домен для использования в аутентификации. Этот параметр не нужен с локальными аккаунтами или когда используется @domain после имени пользователя.
-Hash — NTLM хеш пароля для аутентификации. Эта функция примет как LM:NTLM, так и NTLM формат.
-Command — Команда для выполнения на цели. Если команда не указана, то функция просто проверит, имеет ли пользователь и хеш доступ к WMI или SCM на целевой системе.
-CommandCOMSPEC — По умолчанию = Enabled: Только для типа SMBExec. Добавляет %COMSPEC% /C к Команде.
-Service — По умолчанию = 20 случайных символов: только для типа SMBExec. Имя службы для создания и удаления на цели.
-SMB1 - (Переключатель) Принудительный выбор SMB1. Только для типа SMBExec. Поведение по умолчанию — это выполнить переговоры по версии SMB и использовать SMB2 если она поддерживается целью.
-Sleep — По умолчанию = WMI 10 миллисекунд, SMB 150 миллисекунд: Устанавливает значение функции Start-Sleep в миллисекундах.
Руководство по Invoke-TheHash
Страница man отсутствует.
Примеры запуска
Использовать функцию для выполнения команды (-Command "whoami") на удалённой системе (-Target 192.168.100.20) с помощью WMI (Invoke-WMIExec), пройдя аутентификацию с именем пользователя (-Username TEST) и используя хеш (-Hash F6F38B793DB6A94BA04A52F1D3EE92F0), включить подробный вывод (-verbose):
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "whoami" -verbose
Проверить, возможен ли вход на удалённый компьютер (-Target 192.168.100.20) по протоколу SMB (Invoke-SMBExec) без пароля:
Invoke-SMBExec -Target 192.168.100.20
Перечислеть совместные папки (Invoke-SMBEnum) на цели (-Target 192.168.100.20), пройдя аутентификацию с именем пользователя (-Username TEST) и используя хеш (-Hash F6F38B793DB6A94BA04A52F1D3EE92F0), включить подробный вывод (-verbose):
Invoke-SMBEnum -Target 192.168.100.20 -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Установка Invoke-TheHash
Установка в Kali Linux
Начните с установки PowerShell:
sudo apt install powershell
Затем скачайте файлы скриптов:
git clone https://github.com/Kevin-Robertson/Invoke-TheHash cd Invoke-TheHash/
Для запуска импортируйте функции:
Import-Module ./Invoke-TheHash.psd1
И используйте эти функции для запуска:
Invoke-WMIExec Invoke-SMBExec Invoke-SMBEnum Invoke-SMBClient Invoke-TheHash
Либо запускайте непосредственно файлы скриптов:
./Invoke-WMIExec.ps1 ./Invoke-SMBExec.ps1 ./Invoke-SMBEnum.ps1 ./Invoke-SMBClient.ps1 ./Invoke-TheHash.ps1
Установка в BlackArch
Установите PowerShell, для помощи смотрите инструкцию «Настройка рабочего окружения PowerShell в Windows и Linux», а затем скачайте (https://github.com/Kevin-Robertson/Invoke-TheHash/archive/master.zip) и запускайте скрипты в соответств
Установка в Windows
Скачайте файлы скриптов: https://github.com/Kevin-Robertson/Invoke-TheHash/archive/master.zip
Для запуска импортируйте функции:
Import-Module ./Invoke-TheHash.psd1
И используйте эти функции для запуска:
Invoke-WMIExec Invoke-SMBExec Invoke-SMBEnum Invoke-SMBClient Invoke-TheHash
Дополнительную помощь вы найдёте в статье «Настройка рабочего окружения PowerShell в Windows и Linux».
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты Invoke-TheHash
Инструкции по Invoke-TheHash
- Как взломать пароль Windows
- Атака Pass-the-hash (как использовать NTLM без взлома пароля)
- Настройка рабочего окружения PowerShell в Windows и Linux
Comments are Closed