Invoke-TheHash
Invoke-TheHash содержит функции PowerShell для выполнения задач WMI и SMB с передачей хэша (pass the hash). Подключения WMI и SMB осуществляются через .NET TCPClient. Аутентификация выполняется путем передачи NTLM-хэша в протокол аутентификации NTLMv2. Привилегии локального администратора на стороне клиента не требуются.
Требования
Минимум PowerShell 2.0
Импорт
Import-Module ./Invoke-TheHash.psd1
или
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
Функции
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- Функция выполнения команд через WMI.
Параметры:
- Target - Имя хоста или IP-адрес цели.
- Username - Имя пользователя для аутентификации.
- Domain - Домен для аутентификации. Этот параметр не требуется для локальных учетных записей или при использовании @domain после имени пользователя.
- Hash - NTLM-хэш пароля для аутентификации. Эта функция принимает формат LM:NTLM или NTLM.
- Command - Команда для выполнения на цели. Если команда не указана, функция просто проверит, имеет ли имя пользователя и хэш доступ к WMI на цели.
- Sleep - По умолчанию = 10 миллисекунд: Задает значения Start-Sleep функции в миллисекундах.
Пример:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Скриншот:

Invoke-SMBExec
- Функция выполнения команд через SMB (PsExec) с поддержкой SMB1, SMB2.1, с подписью SMB и без.
Параметры:
- Target - Имя хоста или IP-адрес цели.
- Username - Имя пользователя для аутентификации.
- Domain - Домен для аутентификации. Этот параметр не требуется для локальных учетных записей или при использовании @domain после имени пользователя.
- Hash - NTLM-хэш пароля для аутентификации. Эта функция принимает формат LM:NTLM или NTLM.
- Command - Команда для выполнения на цели. Если команда не указана, функция просто проверит, имеет ли имя пользователя и хэш доступ к SCM на цели.
- CommandCOMSPEC - По умолчанию = Включено: Добавляет %COMSPEC% /C к команде.
- Service - По умолчанию = 20 случайных символов: Имя службы для создания и удаления на цели.
- Sleep - По умолчанию = 150 миллисекунд: Задает значения Start-Sleep функции в миллисекундах.
- Version - По умолчанию = Auto: (Auto,1,2.1) Принудительно задает версию SMB. Поведение по умолчанию — выполнить согласование версии SMB и использовать SMB2.1, если он поддерживается целью.
Пример:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Пример:
Проверка требований подписи SMB на цели.
Invoke-SMBExec -Target 192.168.100.20
Скриншот:

Invoke-SMBEnum
- Invoke-SMBEnum выполняет задачи перечисления пользователей, групп, сетевых сессий и общих ресурсов через SMB2.1 с подписью SMB и без.
Параметры:
- Target - Имя хоста или IP-адрес цели.
- Username - Имя пользователя для аутентификации.
- Domain - Домен для аутентификации. Этот параметр не требуется для локальных учетных записей или при использовании @domain после имени пользователя.
- Hash - NTLM-хэш пароля для аутентификации. Эта функция принимает формат LM:NTLM или NTLM.
- Action - (All,Group,NetSession,Share,User) По умолчанию = Share: Действие перечисления.
- Group - По умолчанию = Administrators: Группа для перечисления.
- Sleep - По умолчанию = 150 миллисекунд: Задает значения Start-Sleep функции в миллисекундах.
- Version - По умолчанию = Auto: (Auto,1,2.1) Принудительно задает версию SMB. Поведение по умолчанию — выполнить согласование версии SMB и использовать SMB2.1, если он поддерживается целью. Обратите внимание, что проверка подписи работает только с SMB1.
Пример:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Скриншот:

Invoke-SMBClient
- Функция SMB-клиента с поддержкой SMB2.1 и подписи SMB. Эта функция в основном предоставляет возможности SMB-файлового обмена для работы с хэшами, не имеющими привилегий удаленного выполнения команд. Эта функция также может использоваться для подготовки полезных нагрузок для Invoke-WMIExec и Invoke-SMBExec. Обратите внимание, что Invoke-SMBClient построен на .NET TCPClient и не использует клиент Windows SMB. Invoke-SMBClient работает значительно медленнее, чем клиент Windows.
Параметры:
- Username - Имя пользователя для аутентификации.
- Domain - Домен для аутентификации. Этот параметр не требуется для локальных учетных записей или при использовании @domain после имени пользователя.
- Hash - NTLM-хэш пароля для аутентификации. Эта функция принимает формат LM:NTLM или NTLM.
- Action - По умолчанию = List: (List/Recurse/Delete/Get/Put) Выполняемое действие.
-
- List: Выводит содержимое каталога.
-
- Recurse: Выводит содержимое каталога и всех подкаталогов.
-
-
-
- Put: Загружает файл и устанавливает время создания, доступа и последней записи, соответствующее исходному файлу.
- Source
-
- List и Recurse: UNC-путь к каталогу.
-
- Delete: UNC-путь к файлу.
-
-
- Put: Файл для загрузки. Если полный путь не указан, файл должен находиться в текущем каталоге. При использовании ключа 'Modify' параметр 'Source' должен быть массивом байтов.
- Destination
-
- List и Recurse: Не используется.
-
-
- Get: Если используется, значение будет новым именем загруженного файла. Если полный путь не указан, файл будет создан в текущем каталоге.
-
- Put: UNC-путь для загружаемого файла. Имя файла должно быть указано.
- Modify
-
- List и Recurse: Функция выводит объект, содержащий содержимое каталога.
-
-
- Get: Функция выводит массив байтов загруженного файла вместо записи на диск. Рекомендуется использовать только для небольших файлов и направлять вывод в переменную.
-
- Put: Загружает массив байтов в новый файл назначения.
- NoProgress - Отключает отображение индикатора выполнения загрузки и выгрузки.
- Sleep - По умолчанию = 100 миллисекунд: Задает значения Start-Sleep функции в миллисекундах.
- Version - По умолчанию = Auto: (Auto,1,2.1) Принудительно задает версию SMB. Поведение по умолчанию — выполнить согласование версии SMB и использовать SMB2.1, если он поддерживается целью. Обратите внимание, что проверка подписи работает только с SMB1.
Пример:
Вывод содержимого корневого каталога общего ресурса.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose
Пример:
Рекурсивный вывод содержимого общего ресурса, начиная с корня.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share
Пример:
Рекурсивный вывод содержимого подкаталога общего ресурса с сохранением только содержимого в переменную.
$directory_contents = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share\subdirectory -Modify